1、Turbo 码的理论分析和研究卢小娜 SY04024541. Turbo 码的提出C.E.Shannon 在其“通信的数学理论 ”一文中提出并证明了著名的有噪信道编码定理,他在证明信息速率达到信道容量可实现无差错传输时引用了 3 个基本条件:1) 采用随机性编译码。2) 编码长度 L 趋于无穷,即分组的码组长度无限。3) 译码过程采用最佳的最大似然译码(ML)方案。在信道编码的研究与发展过程中,基本上是以后两个条件为主要方向的。而对于条件1) ,虽然随机选择编码码字可以使获得好码的概率增大,但是最大似然译码器的复杂度随码字数目的增大而加大,当编码长度很大时,译码几乎不可能实现。因此,多年来随机
2、编码理论一直是作为分析和证明编码定理的主要方法,而如何在构造码上发挥作用却并未引起人们的足够重视。直到 1993 年,Turbo 码的发现,才较好的解决了这一问题,为Shannon 随机码理论的应用研究奠定了基础。Turbo 码,又称为并行级联卷积码(PCCC ) ,它通过在编码器中引入随机交织器,使码字具有近似随机的特性;通过分量码的并行级联实现通过短码(分量码)构造长码(Turbo 码) ;在接受端虽然采用了次最优的迭代算法,但分量码采用的是最优的最大后验概率译码算法,同时通过迭代过程可使译码接近最大似然译码。综合上述分析可见,Turbo码充分考虑了 Shannon 信道编码定理证明时所假
3、设的条件,从而获得了接近 Shannon 理论极限的性能。模拟结果表明,如果采用大小为 65535 的随机交织器,并进行 18 次迭代,则在 Eb/No=0.7dB 时,码率为 1/2 的 Turbo 码在 AWGN 信道上的误码率(BER)=10 -5,接近了 Shannon 限(1/2 码率的 Shannon 限时 0dB) 。Turbo 码就目前而言,已经有了很大的发展,在各方面也都走向了实际应用阶段。同时,迭代译码的思想已经广泛应用于编码、调制、信号检测等领域。本文首先介绍 Turbo 码的基本编码方案以及编码器的各个组成部分,然后简单介绍Turbo 迭代译码方案。2. Turbo 码
4、的编码Turbo 码的最大特点在于它通过在编译码器中交织器和解交织器的使用,有效地实现了随机性编译码的思想,通过短码的有效结合实现长码,达到了接近 Shannon 理论极限的性能。Turbo 码编码器是由两个递归系统卷积码(RSC )编码器通过一个随机交织器并行连接而成的,编码后的校验位经过删余阵,从而产生不同码率的码字。见图 2-1。复接删余矩阵分量编码器 1交织器分量编码器 2图 2-1 Turbo 码编码器结构框图在 Turbo 码编码过程中,信息序列 u=u1,u2,uN经过一个 N 位交织器,形成一个新序列 u1=u1,u2,uN(长度与内容没变,但比特位置经过重新排列) 。u 与
5、u1 分别送到两个分量编码器,同时 u 作为系统输出 Xs 直接送至复接器。一般情况下,这两个编码器结构相同,生成序列 Xp1 与 Xp2。为了提高码率,序列 Xp1 与 Xp2 需要经过删余矩阵,采用删余技术从这两个校验序列中周期地删除一些校验位,形成校验位序列 Xp。X p 与未编码序列Xs 经过复用调制后,生成 Turbo 码序列 X。编码器中交织器的使用是实现 Turbo 码近似随机编码的关键。交织器实际上是一个一一映射函数,作用是将输入信息序列中的比特位置进行重置,以减小分量编码器输出校验序列的相关性和提高码重。删余矩阵的作用是提高编码码率,其元素取自集合0,1。矩阵中每一行分别与两
6、个分量编码器相对应,其中“0”表示相应位置上的校验比特被删除,而“1”则表示保留相应位置的校验比特。下面通过一个具体实例来说明 Turbo 码的编码过程。如图 2-2 是一个码率为 1/3 的 Turbo 码编码器的组成框图:图 2-2 一个码率为 1/3 的 Turbo 码编码器这个编码器是基于(2,1,4)RSC (递归系统卷积码)的 Turbo 码编码器,分量码是码率为 1/2 的寄存器级数为 4 的(2,1,4)RSC 码,生成多项式为(1+D+D 2+D3+D4,1+D4) 。假设输入序列为 (10)kd(2.1)则第一个分量码的输出序列为 (10)kXkY(2.2)假设经过交织器后
7、信息序列变为 (10)kd(2.3)第二个分量码编码器所输出的校验位序列为 2(10)kY(2.4)则得到 Turbo 码序列为(1,0,0,1) (2.5)若要将码率提高到 1/2,可采用一个删余矩阵,如 0P,表示分别删除1kY中位于偶数位的校验比特和 2kY中位于奇数位的校验比特。与系统输出 kX复接后得到Turbo 码序列为 (1,0,0,1)(2.6)同样,也可以通过在码字中增加校验比特的比率来提高 Turbo 码的性能。图 2-3 是 M 维 Turbo 编码器的一般性结构。以下如无特殊说明,所讨论的 Turbo 码均是指由两个分量码构成 PCCC。交织器 1 分量编码器 1分量编
8、码器 M分量编码器 2交织器 M交织器 2图 2-3 Turbo 码编码器的一般性结构3. Turbo 码的译码Turbo 码获得优异性能的根本原因之一是采用了迭代译码,通过分量译码器之间软信息的交换来提高译码性能。一个由两个分量码构成 Turbo 码的译码器是由两个与分量码编码器对应的译码单元和交织器与解交织器组成的,将一个译码单元的软输出信息作为下一个译码单元的输入,为了获得更好的译码性能,将此过程迭代数次。这就是Turbo 码译码器的基本工作原理。3.1 Turbo 码译码器的组成Turbo 码译码器的基本结构如图 3-1 所示。它由两个软输入软输出(SISO)译码器 DEC1 和 DE
9、2 串行级联组成,交织器与编码器中所使用的交织器相同。译码器 DEC1 对分量码 RSC1 进行最佳译码,产生关于信息序列u 中每一比特的似然比信息,并将其中的“外信息”经过交织送给 DEC2,译码器 DEC2 将此信息作为先验信息,对分量码 RSC2 进行最佳译码,产生交织后信息序列中每一比特的似然比信息,然后将其中的“外信息”经过解交织后送给 DEC1,进行下一次译码。这样经过多次迭代,DEC1 或 DEC2 的外信息趋于稳定,似然比渐进值逼近于对整个码的最大似然译码,然后对此似然比进行硬判决,即可得到信息序列 u 的每一比特的最佳估值序列 。在描述具体的迭代译码过程之前,先说明几个符号的
10、意义。 kPA码字符号或信息符号的概率信息;kL码字符号或信息符号的概率对数似然比(LLR)信息;eA外部对数似然比信息;aL先验对数似然比信息;u 信息符号;c 码字符号;以码率为 1/2 的 Turbo 码为例,编码输出信号为图 3-1 Turbo 码译码器框图,spkkXx对于 BPSK 调制,输出信号与编码码字 ,spkkCc之间满足关系 21kskXE(3.1.1)假定接收信号为 ,()spkkYy其中 skkpyxiq(3.1.2)ki和 q是服从均值为 0,方差为 No/2 的独立同分布高斯随机变量。在接收端,接受采样经过匹配滤波之后得到的接收序列 12,NR经过串并转换后得到如
11、下三序列:系统接收信息序列 12,sssNYy用于 DEC1 的接收校验序列 112,ppN和用于 DEC2 的接收校验序列 2221,pppNYyy若其中某些校验比特在编码过程中通过删余矩阵被删除,则在接收校验序列的相应位置以“0”填充。于是,两个译码器的输出序列分别为1122:,spdecY为了使译码后的比特错误概率最小,根据最大后验概率准则,Turbo 译码器的最佳译码策略是,根据接收序列计算后验概率(APP) 12(),kkPuY。但这对于稍长一点的码计算复杂度太高。在 Turbo 码译码方案中,巧妙地采用了一种次最优的译码规则,将 1Y和 2分开考虑,由两个分量译码器分别计算后验概率
12、 和 ,1,akL2,akPuYL然后通过 DEC1 和 DEC2 之间的多次迭代,使他们收敛于 APP 译码的 ,从而1接近 Shannon 极限。3.2 Turbo 码的译码算法关于 和 的求解,目前已有多种方法,它们构成了 Turbo 码1,akPuYL2,akuYL的不同译码算法。下面分别简单介绍。3.2.1 分量码的最大后验概率译码(MAP)如图 3-2 所示 SISO 译码器,它能为每一译码比特提供对数似然比输出。 ()kLuskYpMAP译码器图 3-2 SISO 译码器框图MAP 译码器的输入序列为 ,其中, 。12,NkNYyy ,()spkky是关于 的先验信息, 是关于
13、的对数似然比。它们的定义如下:()akLuk()kLuk(1)ln0akkpu(3.2.1)(3.2.2)1()()lNkkyLupMAP 译码器的任务就是求解式(3.2.2),然后按照下列规则进行判决:(3.2.3)1()0kkuLu下面就对式(3.2.2)的计算方法进行推导。()aLu根据 Bayes 规则,式(3.2.2)可以写为(3.2.4)11111(,)111(,)0(,)/()ln0,)/(l,)/(kk Nkk NksuksupuypLSsypp式中,求和是对所有由 (或 )引起的 的状态转移进行的。1kkS可以按下式计算:11(,)NkkpSsy(3.2.5)11,k Nkk
14、kkkpsypssAA式中:为前向递推;1,kksSs为后向递推;Nkpy为 s和 s 之间的分支转移概率。1,kkss考虑到 RSC 编码器等价于一个马尔可夫源,在状态 已知时,在 k-1 时刻以后发生1kS的事件与以前输入无关。因此,可得(3.2.6)1 11 1 1 (,),kkkks kkkkskkkkks spSsypSysys AA(3.2.7) 11 1(), ,NksNkkkks spSyssySs AA至于分支转移概率 ,可从其定义得到:,(3.2.8)1 1, kkkkkkkspSspysPupy式中, 是 的先验概率, 由信道转移概率决定。Puu为防止溢出,有必要对 和
15、进行归一化。ksk令 (3.2.9)11()kkkkNspy因为 ,所以11(,)kkkspySy(3.2.10)kks将式(3.2.6)带入上式,并分子分母同除以 ,得到1kpy(3.2.11)1 1 1,/ ,kk kks sk ks sy 考虑到 ,于是有1111/NkNkkpypyp (3.2.12)11 1111111 ,()/,/,/,kkskNNkkks kskkskks ssyyppspys 合并式(3.2.5)和(3.2.9) 得:(3.2.13)111 11(,) ,/Nk Nkk kpypyspys A将上式代入(3.2.4),分子分母同乘以因子 ,便得到最终计算公式:k
16、(3.2.14)1(,)1(,)0,(ln,kkkksukkksusLA这样就完成了分量码的 MAP 译码算法的推导。 和 的递推示意图如图 3-3ksk所示。SS1S0S1S0 0,kkkS1kS10kS图 3-3 和 的递推示意图ks10kS1kS假定分量编码器的初始状态和结束状态已知,则递归的初值可设为:和 (3.2.15)01s01Ns若结束状态未知,则后向递推的初值为:(3.2.16)1/2,Nss其中 V 为编码器的寄存单元数。利用 Bayes 规则,从式(3.2.3)可以看出(3.2.17)1 1()()()()lnlnln()000N Nakkkk kpyupupyuLu L式
17、中, 是关于 的先验信息。在迭代译码方案中, 是由前一级译码器的外akk ()ak信息经交织或解交织得到的。为了迭代继续进行,当前译码器应从上式的第一项中提取新的外信息,作为下一级译码器的先验信息。式(3.2.1)可以写为(3.2.18)(1)(1)lnln0akkkpupuL从上式,可得:(3.2.19)exp/2akkPuAuL式中, ,为常量。1expkakAL对于 ,根据 , ,可得kyu,()spky,sppkkxux222222expexpexskkkspspkkkkspkkkuypdyuyuBA结合式(3.2.8),可得(3.2.20)2,exp/2expspakkkkkuysA
18、uL 若定义 ;对于噪声服从分布 N(0,No )的 AWGN 信道,定1,e2epkcky义信道可靠性值 。则上式可以写为:04/csLEN(3.2.21)11,exp22,aspkkkckcksekkckuLyLx A结合式(3.2.14)和上式,得(3.2.22)1,ekkksaskckk sLuyLuA第一项是信道值,第二项是前一级译码器提供的先验信息,第三项是可送给后继译码器的外部信息。对于图 3-1 所示的 Turbo 译码器,如果分量码译码器均采用上述 MAP 算法,则整个迭代中软信息的转移过程为: 1212DECDECMAP 算法的引入使组成 Turbo 码的两个编码器均可采用
19、性能优异的卷积码,同时采用了反馈译码结构,实现了软输入软输出,递推迭代译码,使编译码过程实现了伪随机化,并简化了最大似然译码算法,使其性能达到了逼近 Shannon 限。但 MAP 算法存在几个难以克服的缺点:(1) 译码延迟很大。(2) 计算时既要有前向迭代又要有后向迭代。(3) 与接收一组序列(交织器大小)成正比的存储量等。3.2.2 Log-MAP 算法Log-MAP 算法是 MAP 的一种简化形式,实现比较简单。就是把 MAP 算法中的变量都转换为对数形式,从而把乘法运算转换为加法运算,同时译码器的输入输出相应的修正为对数似然比形式。再把得到的算法进行必要的修改就得到了 Log-MAP
20、 算法。下面简单介绍。在 Log-MAP 算法中, 与 MAP 算法中的 ,,kkkMsAs和 B,ks和 相对应,它们之间满足对数关系。引入 max*()操作,其定义为: ksk()()lnmax*feef从而(3.2.23)1 1,l,n, ,l , ,max*kkkkkksskkk kkssMsA AsMsssB Ak=B根据上式和式(3.2.22)可得计算式:(3.2.24)12ax*mskckkpckkskckksLuyLuAyxBss将 Log-MAP 算法中的 max*()简化为通常的最大值运算,即为 Max-Log-MAP 算法。3.2.3 SOVA 算法SOVA 算法是 Vi
21、terbi 算法的改进类型。它的译码过程是在接受序列的控制下,在码的篱笆图上走编码器走过的路径。运算量较小,适合工程运用;但性能降低。在此不作详细介绍,有需要可参见参考文献。4目前工作总结以上是我对 Turbo 码的一些理论认识和总结。目前,我已经独立用 C 语言编程实现了简单序列的 Turbo 码编译码。但对交织器的设计和 SOVA 算法研究得还不是很深入,另外,还没有在计算机上做性能仿真。希望经过一段时间的学习,我能对 Turbo 码有更深入的认识,把工作做得更完整,更彻底。5. 参考文献(1)纠错码 原理与方法,王新梅、肖国镇 ,西安电子技术大学出版社, 西安.(2)Turbo 码原理应用技术,刘东华,电子工业出版社,北京.