解码方法和装置
技术领域
本发明涉及通信领域,尤其涉及一种解码方法和装置。
背景技术
在通信系统中,对于对时延要求较高的CS语音业务或者比较小量控制数据的发送过程如图1所示,一般包含如下几个步骤:
1)CRC添加,对原始数据进行CRC保护,如果接收端CRC校验错误,可能会让发送端重发一包数据。
2)卷积编码,一种信道编码方式,在发送的数据加入冗余信息,使得在接收端可以利用这些冗余信息来纠正一些错误。
3)交织,把发送数据的顺序打乱,主要是防止在发送过程中某一个时间段由于突发干扰而成片地数据错误的情况,通过交织,可以把错误数据随机化。
4)速率匹配,通信系统中支持可变速率业务的一种基本方式。比如语言编码可以为12.2Kbps,也可以为7.95Kbps,5.9Kbps,4.75Kbps。通过速率匹配,可以把这些业务的数据适配到适当的物理信道上去。
5)物理信道映射,调制:把数据匹配后的数据流映射到物理信道承载的bit流上去,并且按照调制模式,调制到相应的符号(或者子载波)。
同样,在接收端,处理则是反方向进行,其流程如图2所示。
以UTRA FDD为例,HS-SCCH信道承载了对HS-DSCH的控制信息(比如,占用的码道O和P,调制模式,RV,ndi信息,具体在TS25.212);同时HS-SCCH是共享信息,NodeB如果要调度哪个UE,便会在相应的控制信息的CRC中用该UE的H-RNTI进行加扰,其中H-RNTI是UE在该网络中的一共临时身份标识。在TS25.214中规定,UE在单载波下最多需要检测4路HS-SCCH,在双载波下最多需要检测6路HS-SCCH,在四载波下,最多需要监测12路HS-SCCH,在八载波下最多需要监测24路HS-SCCH,但是HS-SCCH part1收完到HS-DSCH接收仅有1个slot的时间(大约666us),因此加快系统处理速度显得非常重要。
发明内容
本发明提供了一种解码方法和装置,解决了加快系统处理速度的问题。
一种解码方法,包括:
使用最大似然算法反向计算Trellis结构图的度量值;
使用回溯算法对所述Trellis结构图的度量值进行处理,得到解码结果。
优选的,所述使用最大似然算法反向计算Trellis结构图的度量值具体为:
根据Viterbi算法反向计算Trellis结构图数据的度量值。
优选的,根据Viterbi算法反向计算Trellis结构图后数据的度量值的步骤之前,还包括:
确定卷积编码器的约束长度,默认为数据的尾端有相应个0。
优选的,使用最大似然算法反向计算Trellis结构图的度量值的步骤之前,还包括:
解交织数据,得到硬比特或软比特的解交织后的数据。
优选的,根据Viterbi算法反向计算Trellis结构图数据的度量值包括:
生成Trellis结构图;
以所述解交织后的数据作为所述Trellis结构图的输入;
经过所述Trellis结构图逐级计算后,输出度量值。
优选的,得到的解码结果是正向的,所述使用回溯算法对计算得到的度量值进行处理,得到解码结果的步骤之后,还包括:
直接输出所述解码结果。
本发明还提供了一种解码装置,包括:
解码模块,用于使用最大似然算法反向计算Trellis结构图的度量值;
回溯模块,用于使用回溯算法对所述Trellis结构图的度量值进行处理,得到解码结果。
优选的,所述解码模块具体用于根据Viterbi算法反向计算解交织后数据的度量值,所述解码模块包括:
结构图生成单元,用于生成Trellis结构图;
输入获取单元,用于以所述解交织后的数据作为所述Trellis结构图的输入;
计算单元,用于经过所述Trellis结构图逐级计算后,输出度量值。
优选的,该装置还包括:
解交织模块,用于解交织数据,得到硬比特或软比特的解交织后的数据。
优选的,该装置还包括:
输出模块,用于在得到正向的解码结果后直接输出所述解码结果。
本发明提供了一种解码方法和装置,使用最大似然算法反向计算Trellis结构图的度量值,然后使用回溯算法对所述Trellis结构图的度量值进行处理,得到解码结果,直接得到正向的解码结果,不需要对解码结果进行缓存后再输出,节省了处理时间,实现了高效的解码,解决了加快系统处理速度的问题。
附图说明
图1为对时延要求较高的CS语音业务或者比较小量控制数据的发送过程图;
图2为对时延要求较高的CS语音业务或者比较小量控制数据的接收过程图;
图3为本发明的实施例所使用的卷积编码器的结构示意图;
图4为本发明的实施例一提供的一种解码方法的流程图;
图5为本发明的实施例一中所使用的Trellis结构图;
图6为本发明的实施例二提供的一种解码装置的结构示意图;
图7为图6中解码模块601的结构示意图。
具体实施方式
在TS25.214中规定,UE在单载波下最多需要检测4路HS-SCCH,在双载波下最多需要检测6路HS-SCCH,在四载波下,最多需要监测12路HS-SCCH,在八载波下最多需要监测24路HS-SCCH,但是HS-SCCH part1收完到HS-DSCH接收仅有1个slot的时间(大约666us),因此加快系统处理速度显得非常重要。
为了解决上述问题,本发明的实施例提供了一种解码方法和装置。下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
为了更好的阐述本发明的实施例所提供的技术方案,首先,对Viterbi算法进行简单说明。
在TS25.212里,定义了卷积编码的编码器结构,UMTS使用的卷积编码器有两种,一种是码率为1/2的填0卷积码,另一种是码率为1/3的填0卷积码。卷积编码器结构如图3所示。
Viterbi解码是基于最大似然估计算法。
假设发送端发送的数据为+1(原始数据为0)和-1(原始数据为1),在高斯白噪声信道下,接收端接收的某比特表示为x,那么LLR表示为:
Viterbi利用了卷积码的Trellis结构对最大似然算法进行了简化,但本质上是基于最大似然算法,Viterbi解码算法的特点是找到一条路径使得这条路径的比特输出(比如码率1/3的卷积码,系统比特,校验比特1和校验比特2共3个bit的输出)和解码器相对于该级的输入的度量值最大,或者说是汉明距离最小。
下面结合附图,对本发明的实施例一进行说明。
本发明实施例提供了一种解码方法,使用Viterbi算法反向计算度量值,实现了高效率的解码流程。使用该方法完成解码的流程如图4所示,包括:
步骤401、对接收到的数据流进行物理信道解映射,然后根据相应的解调模式对数据解调制。
步骤402、解交织数据,得到硬比特或软比特的解交织后的数据;
优选的,本步骤中,还可在数据流的后面填0,即在发送数据后面填0,使得Viterbi解码器的最终状态也是0。从图5也可以看到,在Trellis结构图的最后三级,状态数逐渐减少,直到回到零状态。
步骤403、使用最大似然算法反向计算Trellis结构图的度量值;
本发明实施例中,以8个状态的Viterbi为例进行说明,对每一个状态进行加比选ACS操作。8个状态分别以S0至S7标识。
本步骤具体包括:
1、生成Trellis结构图;
该Trellis结构图如图5所示。该Trellis结构有7级,每一级有sys,p1,p2三个输入。实线表示卷积编码器输入为0,虚线表示输入为1。卷积编码器输出是要看卷积编码器的结构的。一般来说是输入为0和输入为1的输出是相反的。同时,卷积编码器有1/2的编码率和1/3的编码率的区别。如果是1/2的编码率,那么输出就只有系统比特和第一路校验比特.如果是1/3的编码率,那么输出还有第二路校验比特。
2、以所述解交织后的数据作为所述Trellis结构图的输入;
Sys,p1,p2的值是指经过解交织之后的输入值,可以是硬比特(二进制数0,1),也可以是软比特(如果是软比特,那么Viterbi解码器就是软输入Viterbi解码器)。
3、经过所述Trellis结构图逐级计算后,输出度量值。
首先对于每一级的三个输入,对于里面的任意一条路径,计算器度量值,度量值的计算公式为
M=a*LLRsys+b*LLRp1+c*LLRp2
其中a,b,c对应于该条路径的系统比特输出,校验比特1输出和校验比特2输出。如果输出为0时,a,b,c等于+1。如果输出为1时,a,b,c表示为-1。对于图中每一个状态都有一个状态值度量,如果某一级(比如第四级)的状态输入有2个,那么需要去掉度量值较小的那一个,保留较大的那一个。同时,确定卷积编码器的约束长度,默认为数据的尾端有相应个0。对于填0卷积码,最后面的几个输入固定为0,这样使得卷积码的最后状态仍然为0。
a,b,c的值为+1和-1.具体值是多少要看对应的Trellis结构图。比如图5中,实线对应的a,b,c=+1,+1,+1;那么虚线对应的a,b,c=-1,-1,-1。或者实线对应的a,b,c=+1,-1,+1;那么虚线对应的是-1,+1,-1。
在本发明实施例中,是从右到左计算状态的。下面给了个及其简单的例子。假设为1/2码率的编码器,那么输入为2个,分别为系统比特和第一路校验比特。从右往左看,第一级输入为-100,+150;第二级输入为80,-120.因此第一级计算之后的S0,S1的状态可能就是250,-250。第二级的4个状态分别为50,-290,450,-210。依此类推,可以根据输入数据和Trellis结构图算出所有状态的状态值。
步骤404、使用回溯算法对所述Trellis结构图的度量值进行处理,得到解码结果;
本步骤中,回溯,根据最后一个状态的最大值,从前往后回溯,得到解码结果,同时该解码结果是正向的,所以解码结果可以直接输出,不需要缓存buffer,也不需要进行后续的正序操作。
步骤405、直接输出所述解码结果。
需要说明的是,本发明实施例中仅以8状态的Viterbi解码器为例进行说明,在实施应用时并不局域于8状态的Viterbi解码器,实际上的Viterbi解码器的状态个数也远大于8,如UMTS的Viterbi解码器是128个状态。尽管存在多种不同数量状态的Viterbi解码器,但其算法原理是相同的,在些不再一一列举说明。
下面结合附图,对本发明的实施例二进行说明。
本发明实施例提供了一种解码装置,其结构如图6所示,包括:
解码模块601,用于使用最大似然算法反向计算Trellis结构图的度量值;
回溯模块602,使用回溯算法对所述Trellis结构图的度量值进行处理,得到解码结果。
优选的,所述解码模块601具体用于根据Viterbi算法反向计算解交织后数据的度量值,所述解码模块601如图7所示,包括:
结构图生成单元6011,用于生成Trellis结构图;
输入获取单元6012,用于以所述解交织后的数据作为所述Trellis结构图的输入;
计算单元6013,用于经过所述Trellis结构图逐级计算后,输出度量值。
优选的,该装置还包括:
解交织模块603,用于解交织数据,得到硬比特或软比特的解交织后的数据,当所述数据的末尾为非0时,在所述数据后面填一个或多个0。
优选的,该装置还包括:
输出模块604,用于在得到正向的解码结果后直接输出所述解码结果。
优选的,本发明实施例中所涉及的解码模块601具体为Viterbi解码器。本发明实施例所提供的解码装置适用于通信系统中使用Viterbi解码器+交织器的情形,特别是编码时编码器的初始状态为0,编码结束状态也为0的解码器装置。
本发明的实施例提供了一种解码方法和装置,使用最大似然算法反向计算Trellis结构图的度量值,然后使用回溯算法对所述Trellis结构图的度量值进行处理,得到解码结果。直接得到正向的解码结果,不需要对解码结果进行缓存后再输出,节省了处理时间,实现了高效的解码,解决了加快系统处理速度的问题。由于反向计算度量值,得到的解码结果是正向的,故不需要再进行一次缓存操作,即加快了Viterbi解码器的译码速度,也可以节省一个buffer(原用于存储反向的解码结果)。
本领域普通技术人员可以理解上述实施例的全部或部分步骤可以使用计算机程序流程来实现,所述计算机程序可以存储于一计算机可读存储介质中,所述计算机程序在相应的硬件平台上(如系统、设备、装置、器件等)执行,在执行时,包括方法实施例的步骤之一或其组合。
可选地,上述实施例的全部或部分步骤也可以使用集成电路来实现,这些步骤可以被分别制作成一个个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
上述实施例中的各装置/功能模块/功能单元可以采用通用的计算装置来实现,它们可以集中在单个的计算装置上,也可以分布在多个计算装置所组成的网络上。
上述实施例中的各装置/功能模块/功能单元以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。上述提到的计算机可读取存储介质可以是只读存储器,磁盘或光盘等。
任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求所述的保护范围为准。