自从1993年Berrou等人提出Turbo码的编译码方案后,许多学者对其译码算法及物理实现进行了研究。到目前为止,主要有以下几种算法:
1.最大后验估计算法:这是对Bahl软输出算法做了一定修正后的算法;它的运算量为对于约束长度为K的卷积码,每比特需做6×2K-1次乘法和5×2K-1次加法;这种算法由于有大量的乘法运算,因而限制了译码的规模和速度。
2.对数域算法:该算法实际上是把上述最大后验估计算法中的似然函数用对数来表示,这样乘法就转变为加法运算,其总的运算量为对于约束长度为K的卷积码,每比特需进行16×2K-1次加法、5×2K-1次求最大值运算和5×2K-1次查表运算。
3.软输出维特比(Viterbi)译码算法:在专利号为US5,537,444的美国专利“Extended list output and soft symbol output Viterbialgorithms”中介绍了这种算法,它与前面的最大后验估计算法类似,但该算法的运算量为标准维特比(Viterbi)算法的两倍,而且其性能损失最大,约1-2dB左右。
在专利号为US5,563,897的美国专利“Method for detectinginformation bits processed by concatenated block codes”中涉及到了迭代译码方法,它是针对至少两个分组码的乘积的,在每个码字搜寻中,这种方法需要确定一个数据矩阵和一个判决矩阵,它的译码速度较慢。
在专利号为US5,446,747的美国专利“Error-correction coding methodwith at least two systematic convolutional codings in parallel,corresponding iterative decoding method,decoding module anddecoder”中介绍了一种卷积码和分组码并联纠错编码方法,该方法的译码性能无论怎样加长码组长度,均不能象Turbo码那样接近Shannon限,而且时延也将随码组长度增加而增加。
虽然有一些发明人根据上述这些算法用DSP或FPGA实现了Turbo码译码,但由这些芯片构成的Turbo码译码器都不能满足第三代移动通信系统中的要求,其主要的缺陷是译码算法的运算量太大,译码延迟也很大,结果造成译码速度慢。
关于用于第三代数字移动通信系统的高速Turbo码译码器的研究现处于起步阶段,尚未发现有这方面的相关文献。
本发明的目的之一在于提供一种高速的Turbo码译码方法。
本发明的目的之二在于提供一种采用上述高速的Turbo码译码方法的译码器,它以适应高速率数据的实时译码满足第三代移动通信系统的要求。
一种高速Turbo码译码方法,包括以下步骤:
1)接收信息比特;
2)计算所有时刻的支路度量;
3)计算所有时刻的前向状态度量和反向状态度量;
4)计算对数似然比输出;
5)校正对数似然比输出。
为实现本发明的目的,构造一种高速Turbo码译码器,它包括第一级译码器、第二级译码器、交织器和解交织器;
所述第一级译码器的输入信号为需要译码的信息比特,其输出端通过所述交织器与所述第二级译码器的输入端相连,所述第二级译码器的输出端与所述解交织器相连,由所述解交织器输出译码后的信号。
所述第一级译码器与所述第二级译码器的结构一样,均包括软输入/软输出基本译码器、加法器、延时器和标度因数校正电路;
所述加法器的输出端与所述软输入/软输出基本译码器的输入端相连;所述加法器和所述软输入/软输出基本译码器的输出端接至所述标度因数校正电路的输入端;所述标度因数校正电路的输出端一端接所述延时器,另一端输出译码信号;所述延时器的输出端接所述加法器。
所述软输入/软输出基本译码器包括支路度量计算单元、支路度量存贮单元、前向/反向状态度量计算单元、状态度量存贮单元和对数似然比计算单元;
所述支路度量计算单元的输入来自所述加法器与外来信号,其输出端分别与所述前向/反向状态度量计算单元的输入端、所述支路度量存贮单元的输入端相连;所述支路度量存贮单元的输出端与所述前向/反向状态度量计算单元的输入端相连;所述前向/反向状态度量计算单元的输出端分别与所述对数似然比计算单元的输入端、所述状态度量存贮单元的输入端相连;所述状态度量存贮单元的输出端与所述对数似然比计算单元的输入端相连;所述对数似然比计算单元的输出端与所述标度因数校正电路相连。
下面结合附图对本发明进行进一步的详细描述。
在图1所示的译码器结构中,它由第一级译码器10、第二级译码器11、交织器12和解交织器13组成;
每一级译码器对应于Turbo码编码器的一个基本编码器,其结构完全一样,因此图1中只给出第二级译码器11的结构,包括软输入/软输出基本译码器101、加法器102、延时器103和标度因数校正电路104;
所述第一级译码器10与所述第二级译码器11之间通过所述交织器12连接;所述第二级译码器11的输出经所述解交织器13后输出;图1中的虚线是在迭代译码时采用的。
图1中各符号表示的含义如下:X表示未编码的信息比特;Y1表示由Turbo码编码器的第一个基本编码器产生的校验比特;Y2表示由Turbo码编码器的第二个基本编码器产生的校验比特;Li in(i=1,2)为系统输入;Li out(i=1,2)为第i个软输入/软输出基本译码器101输出的对数似然比;Li ex是(i=1,2)由标度因数校正电路104输出的校验比特获得的信息;Li ex,old(i=1,2)是Li ex经过延时器103后得到的信息;L2为一次迭代后由解交织器13输出的对数似然比。
由于软输入/软输出基本译码器101有译码延时,所以在每一级译码器中增加了延时器103以保证时间同步;交织器12、解交织器13的作用与Turbo码编码器中交织器的作用相对应。
在每一时刻,Turbo码译码器有三个不同的软输入,即输入至第一级译码器10的X、Y1和输入至第二级译码器11的Y2;软输入/软输出基本译码器101也有三个输入,即X、Y1(Y2)和反映信息比特的先验分布信息L1 ex,old(L2 ex,old)。
软输入/软输出基本译码器101的作用是处理上述三种信息,产生对数似然比输出Li out;该输出Li out同时也能为另外的软输入/软输出(SISO)译码单元所用。
在每一时刻,输入X与信号L1 ex,old在第一级译码器10中的加法器102中相加得到信号L1 in,此信号与输入Y1进入软输入/软输出基本译码器101中,所产生的对数似然比输出L1 out经过标度因数校正电路104和交织器12后,作为第二级译码器11的先验信息输入,此输入信号经第二级译码器11中的加法器102与信号L2 ex,old相加后,得到信号L2 in,此信号与输入Y2一起进入软输入/软输出基本译码器101中译码,其输出L2 out经过标度因数校正电路104和解交织器13输出后,完成一次迭代,输出信息比特的对数似然比L2。
上述译码过程在进行判决之前还可重复n次,即迭代n次,直到输出满足性能要求为止。
图2为软输入/软输出基本译码器101的结构图,可以看出,所述软输入/软输出基本译码器101主要由四部分组成:支路度量计算单元201;支路度量存贮单元202;前向/反向状态度量计算单元203;状态度量存贮单元204;对数似然比计算单元205;
所述支路度量计算单元201的输入来自所述加法器102和外来信号Y1(Y2),输出端分别与所述支路度量存贮单元202的输入端、所述前向/反向状态度量计算单元203的输入端相连,用于接收信息比特,根据接收的比特计算每个支路度量;
所述支路度量存贮单元202的输出端与所述前向/反向状态度量计算单元203的输入端相连,主要用于存贮由支路度量计算单元201计算得到的支路度量;
所述前向/反向状态度量计算单元203的输出端分别与所述状态度量存贮单元204的输入端、所述对数似然比计算单元205的输入端相连;所述支路度量计算单元201计算得到的支路度量送入所述支路度量存贮单元202和所述前向/反向状态度量计算单元203中计算前向状态度量,所述支路度量存贮单元202中的支路度量反向读出送入前向/反向状态度量单元203中计算反向状态度量;
所述状态度量存贮单元204的输出端与所述对数似然比计算单元205的输入端相连,用于存贮由所述前向/反向状态度量计算单元203产生的新的状态度量;
所述对数似然比计算单元205的输出端与所述标度因数校正电路104相连,用于计算信息比特的对数似然比,并输出译码数据Li out。
高速Turbo码译码器的核心是软输入/软输出基本译码器101,它采用本发明所述的高速Turbo码译码方法在对数域中实现Turbo码的迭代译码。为提高译码速度,采用了一次计算所有状态度量的方法,即采用并行处理的方法。
软输入/软输出基本译码器101采用的高速Turbo码译码方法详述如下:
首先,接收由上一级编码器或上一级译码器输入的信息比特;在按下面所给的支路度量和状态度量的递推公式计算所有时刻的支路度量和状态度量。
其中Am i表示时刻i时状态m的前向状态度量;Bm i表示时刻i时状态m的反向状态度量;Dd,m i表示抽样时刻i时,给定当前状态m和输入比特d∈{0,1的支路度量;b(d,m)表示给定当前状态m和输入比特d∈{0,1时的前一状态;xi表示第i个未编码信息比特抽样,yi表示第i个校验比特抽样;cd,m表示给定状态m和比特d的编码比特;
d′=1-2d及c′d,m=1-2cd,m。
根据计算所得的支路度量和状态度量,按下式计算对数似然比输出Li out: 其中i为抽样时刻;m∈{0,Λ,Ns-1为当前状态,Ns表示Turbo码编码器状态数;f(d,m)表示给定当前状态m和输入比特d∈{0,1时的下一状态;
下面对对数似然比输出Li out进行校正。
信息Li ex的计算公式为
Li ex=sf·(Li out-Li in)其中,sf为标度因数,校正后对数似然比为L2=Lcor=(Lin+Lex)。
前向/反向状态度量计算单元203包括两个加法器301a、301b,如图3所示。在计算前向状态度量的过程中,在进行选择操作之前,需要将在支路度量计算单元201中计算得到的两个待选择的路径度量与当前状态的反向状态度量相加,这样分别得到“0”分支度量和“1”分支度量,将两组度量的最大值相减即得当前比特的对数似然比输出。
造成Turbo码译码器译码延迟的主要原因之一是译码器须在接收整个数据分组之后,才能开始译码。解决这个问题的一个方法是在Turbo码译码器的接收端采用交迭分组译码,其原理示意图如图4所示。采用交迭分组译码的方法可将减小译码延迟,且减小的程度与分组的组数成反比,但相应的每一数据分组的计算量会增加。选取适当的组数,既可以有效地减小延迟,又可以使计算量不会增加太大。
假设整个数据分组被分成三部分。在接收整个数据分组之前,反向状态度量的递推计算从一未知状态开始。图4所示的是接收1/3数据分组后开始译码的情况。由于此时存在反向状态度量递推计算数据误差,所以第一组的λ个软输出不要;当第二个1/3数据分组接收后,将上述λ个软输出重新计算;接收最后1/3数据分组后,整个数据分组为已知状态,所以这时计算出的软输出是可信的。
交迭分组译码的具体做法是:将长为N的输入信息符号序列分解成长度为K的数段,最后一段可短于K,再分别求每段的软输出。在每段的计算中采用先计算反向状态度量,再计算前向状态度量的方法,其中前向状态度量的初值可由上一段的计算结果给出;为了得到基本正确的反向状态度量,需要多计算λ个符号,这λ个符号在下一段的反向状态度量计算中重新计算。在后续序列未知的情况下,由反向状态度量的定义可知其初值应设为均匀分布,当然,对最后一段例外。
这时,简化的LOG-MAP算法应修正为:1)对每一段,同时考虑下一段的前λ个符号,令反向状态度量在此时为均匀分布,对最后一段,令最后时刻的反向0状态度量为1,其余状态的度量值为0。2)用递推公式计算每个时刻的反向状态度量,一直算到本段的第一个符号,将本段中的各时刻的反向度量值存贮下来。3)利用上一段计算出的最后时刻的前向状态度量作为本段的初值,用前向状态度量递推公式计算本段各时刻的前向状态度量值并及时与对应时刻的反向状态度量值相加得出相应的似然比输出。
本发明所述高速Turbo码译码器与现有的通用Turbo码译码器相比,其主要优点在于它是针对第三代移动通信系统的建议而设计的,通过采用交迭分组译码、数据反向输入或输出、改进度量合并方法及迭代并行处理等措施来减小计算量和整个译码器的延迟时间;在一定的延时条件下,能够实现对高速率数据的实时译码;在第三代移动通信系统中采用本发明所述译码器,能大为改善编码增益,满足高质量业务的需要,同时也使通信系统的抗干扰性能大大增强,降低扩频解调设备所需的信噪比,从而使系统的容量得以提高。