Turbo码原理及仿真1993年C.Berrou、A.Glavieux和P.Thitimajshiwa首先提出了称之为Turbo码的并行级联编译码方案。Turbo码性能取决于码的距离特性。线性码的距离分布同于重量分布,如果低重量的输入序列经编码得到的还是低重量的输出序列,则距离特性变坏。该特性对于块码来说不存在问题;然而对于卷积码,则是个非常严重的问题。因为卷积码的距离特性是影响误码率的一个非常重要的因素。在Turbo码中,利用递归系统卷积码(RSC)编码器作为成员码时,低重量的输入序列经过编码后可以得到高重量的输出序列。同时交织器的使用,也能加大码字重量。实际上,Turbo码的目标不是追求高的最小距离,而是设计具有尽可能少的低重量码字的码。Turbo码由两个递归系统卷积码(RSC)并行级联而成。译码采用特有的迭代译码算法。1Turbo码编码原理典型的Turbo码编码器结构框图如图2所示:由两个反馈的编码器(称为成员编码器)通过一个交织器I并行连接而成。如果必要,由成员编码器输出的序列经过删余阵,从而可以产生一系列不同码率的码。例如,对于生成矩阵为g=[g1,g2]的(2,1,2)卷积码通过编码后,如果进行删余,则得到码率为1/2的编码输出序列;如果不进行删余,得到的码率为1/3。一般情况下,Turbo码成员编码器是RSC编码器。原因在于递归编码器可以改善码的比特误码率性能。2编码方案中使用的Turbo码为1/3码率的并行级联码,它的编码器由两个相同的码率为1/2的RSC编码器及交织器组成,如图4所示。由于与非递归卷积码相比,递归卷积码产生的码字重量更大,所以这里采图7Turbo码编码器输入信息数据编码器II编码器II删余复接器编码输出图2Turbo码编码原理图2用了两个相同的系统递归卷积码(RSC)。信息序列分成相同的两路,第一路经过RSC编码器1,输出系统码1c及校验码2c。另一路先通过交织器进行交织,使信息序列在1帧内重新排列顺序,然后经过RSC编码器2得到系统码和对应的校验码,由于该系统码和1c实际上都是原信息序列,只是排列顺序不同,在接收端完全可以通过对1c进行交织得到,因此在传输过程中可以省去,而只保留对应的校验位3c。在具体实现中,RSC编码器2的输入是通过对RSC编码器1的系统输出1c进行交织来得到的。321,,ccc再经过并/串转换,作为整个Turbo码编码器的输出。对应于每1位信息比特,该编码器输出3位,因此其码率为1/3。如果采用了奇偶删余,即在并/串转换时,在校验位奇位上取2c,偶位上取3c或反之,则码率可升为1/2。由于RSC编码器不能如非递归编码器一样通过输入连“0”序列来使编码器复位(网格终止),因此通过设计如图8所示的A、B间的开关来控制编码器终止,当一帧结束时,开关由A打到B,则经过m时刻后,编码器复位,可以对下一帧数据进行编码。这里m=2。只有RSC编码器1(外编码器)进行了网络终止,RSC编码器2保持开放。3译码由于Turbo码是由两个或多个成员码经过不同交织后对同一信息序列进行编码。译码时,为了更好地利用译码器之间的信息,译码器应该利用软判决信息,而不是硬判决信息。因此,一个有两个成员码构成的Turbo码的译码器是由两个与成员码对应的译码单元和交织器与解交织器组成的,将一个译码单元的软输出信息作为下一个译码器单元的输入,为了进一步提高译码性能,将此过程迭代数次。这就是Turbo码的迭代译码算法的原理。图8RSC成员编码器3Turbo码可以利用多种译码算法,如最大似然译码MAP、Log-MAP算法、Max-log-MAP算法和SOVA算法等。图所示为Turbo码迭代译码器的结构。Turbo码译码器为串行结构,两个编码器所产生的校验信息通过串并转换被分开,分别送到对应的译码器输入端。首先,第一级译码器根据系统位信息L(ys|u)和第一级编码器的校验位信息L(y1|x1)得到输出信息(此时译码器2外信息Le[C2](u)=0),输出信息包含两部分,一部分是由译码器根据码字相关性提取出来的外信息,用Le[C1](u)表示;另一部分来自于系统位对应的信道输出,在传递给下一级译码器之前,被减去。Le[C1](u)在交织之后被送到译码器2作为先验信息,译码器2因此根据校验位信息、系统位信息和Le[C1](u)这三者共同做出估计,得到输出信息L(u),L(u)在减去Le[C1](u)+L(ys|u)之后,得到译码器2的外信息Le[C2](u),它在解交织之后,反馈给第一级译码器作为先验信息,结合Le[C2](u),译码器1重新做出译码估计,得到改善的外信息。而此时的外信息又可以传递到译码器2,如此往复,形成迭代过程。最终,当达到预先设定的迭代次数或满足迭代结束条件时,译码结束,取L(u)的符号作为最终硬判决输出。a)SOVA译码算法传统Viterbi算法用来计算卷积码的最大似然(ML)序列,只提供硬判决输出。但在级联系统中,前级硬判决实际上相当于丢失了信息,使后级译码器无法从解调得到的软输出中获益。SOVA是改进的Viterbi算法,它可以给出译码结果的可靠性值(软输出),这个可靠性值作为先验信息传递给下级译码器,从而提高译码性能。b)LOG-MAP译码算法LOG-MAP是改进的MAP(最大后验概率)算法,它在对数域进行计算,可以将MAP算法中大量的乘法运算化简为加法运算,从而降低计算量。除此之外,它的基本原理与经典MAP算法相同。MAP算法由Bahl等人于1974年提出,因此又称为BCJR算法。与Viterbi算法不同,它估计出最大似然比特,而前者产生最大似然序列。也就是说Viterbi图9Turbo码迭代译码器结构4算法提供整体最优解,而MAP算法则提供个体最优解。前面已经提到,卷积码编码过程实际就是一个有限状态机的状态转移过程。设t时刻编码器从状态St-1转移到状态St,对应的输入为ut=k,k∈{0,1},输出校验位为xt,它与ut一起传输到接收端,译码器的任务就是根据接收信号yt来尽可能恢复ut。图3.23示意了这一过程。由于ut与状态转移是对应的,因此,有)|,,'()|(111NtttNtykumSmSpykup(3.20)式中Ny1表示接收序列[y1….yN]。因此,只要得到所有的)|,'(11NttymSmSp(3.21)就可以通过对其中那些对应于kut的状态转移概率求和来得到信息比特的后验概率。由贝叶斯定理,)(),,'()|,'(11111NNttNttypymSmSpymSmSp(3.22)上式右侧分子项联合概率可作进一步化简:),,'|(),,'(),,'(1111111tttNttttNttymSmSypymsmSpymSmSp)|(),,'(111mSypymSmSptNtttt)|(),'|,(),'(1111111mSypymSymSpymSptNttttttt)|()'|,(),'(11111mSypmSymSpymSptNtttttt(3.23)以上的化简过程中应用了马尔可夫信源的性质,即t时刻以后的状态只与St及以后的输入有关,而与t时刻之前的状态和输入无关,也就是说得到了t时刻的状态,之后的状态转移就不再依赖于ty1以及t-1时刻的状态。(3.23)式分为三部分,可以分别定义如下,令:图3.23编码网格中一次状态转移5),()(1tttymSpm)|()(1mSypmtNtt)'|,(),'(1mSymSpmmtttt则联合概率可写为:)(),'()'(),,'(111mmmmymSmSptttNtt(3.24)其中,)(mt和)(mt可以用递归方法求出:'11),,'()(mttttymSmSpm'111111),'|,(),'(mttttttymSymSpymSp'1),'()'(mttmmm(3.25)''11)|,''()(mtNtttmSymSpm''11211),'',|()|,''(mtttNttttymSmSypmSymSp''11)''()'',(mttmmm(3.26)通常,编码器的初始状态已知,对于编码器1,帧结束时网络终止,因此其终了状态了也是已知的,因此有其它0010iimma以及其它001iiNmm对于编码器2,由于网格不终止,可以认为它的终了状态是平均分布的。另外,有),'|()'|(),'(11mSmSypmSmSpmmtttttt)),'(|()),'((mmxypmmupttt(3.27)式中),'(mmut为信息符号,),'(mmxt为对应于状态转移),'(mm的编码输出符号。上式中)(tup为信息符号的先验概率,而条件概率)|(ttxyp可由如前所述的信道模型得到。6MAP算法可按以下步聚实现:1.对于每个时刻t,根据解调软输出y和信息符号u计算式(3.27);2.根据式(3.25)及式(3.26)递归计算)(mt及)(mt;3.根据式(3.24)计算联合概率),,'(11NttymSmSp;4.根据式(3.20)得到)|(1Ntykup;5.计算每个信息符号的对数似然比)|1()|1(log)(11NtNttyupyupuL式(3.22)中的分母)(1Nyp在第5步中被约去,因此不必求得具体数值。另外,在具体实现中,上述概率计算都是在对数域中进行的,因此乘法运算都变成了加法运算。3.5.4SOVA和LOG-MAP译码算法性能比较在实现过程中,选用了SOVA和LOG-MAP两种译码算法,并对两者的性能进行了仿真比较。图3.24SOVA和LOG-MAP译码算法在不同迭代次数下的误码率曲线仿真中采用1/3码率的Turbo码,共传输了20000帧(每帧210比特,共2百万比特),采用与软件中相同的螺旋交织方案,通过高斯白噪声(AWGN)信道,分别采用LOG-MAP和SOVA译码,迭代1-5次。图3.24,3.25分别表示了两种译码算法的误码率和误帧率曲线。由图3.24,3.25可得到如下结论:(1)在相同的迭代次数和信噪比条件下,LOG-MAP译码的误码率和误7帧率性能都明显优于SOVA。(2)迭代次数越高,误码率性能越好。但是,大部分迭代增益都出现在前两次迭代中。(3)在信噪比较小时(低于0dB),SOVA迭代译码误码率随信噪比增大降低较快,信噪比较大时误码率改善较缓慢。因此,在信道噪声比较弱时,减少迭代次数不会对误码率性能造成太大影响,却可以降低译码时延;而信道环境比较差时,可增加迭代次数来提高误码率性能。(4)LOG-MAP译码的性能非常优异,2次迭代在信噪比为-0.5dB时误码率即可达到10-6。图3.25SOVA和LOG-MAP译码算法在不同迭代次数下的误码率曲线从误码率性能看,Log-MAP优于SOVA。从实现复杂度看,SOVA译码算法实现比较容易,更简单。因此,可以根据实际需要来选择译码方式。3.5.5译码迭代终止条件Turbo码的迭代译码终止条件的设计是个很重要的问题,因为迭代译码是个很耗资源的计算,另一方面,过多的迭代可能会造成溢出或者振荡,从而得到错误的输出结果。最简单的终止方法就是指定迭代次数,实验表明经过5次左右迭代之后,能够从以后的迭代过程中获得的好处就很少了,因此可以指定迭代次数,使译码过程在达到设定数值时结束。这是本项目中采取的方法之一。然而,固定迭代次数有两个弊端。当信道特性较好时,多余的迭代造成了计算资源的浪费,另一方面,当信道特性差,误码率高时,又不能充分发挥出Turbo码的性能。理想的情况下,迭代次数应随着误码情况动态的变化。8另一种译码终止算法是在信息序列中加入CRC校验字,每次迭代之后即检测信息序列是否有错,无错时译码即结束,为防止误码率很高时不能完全纠错的情