1第六章Turbo码6.1Turbo码的编码6.2Turbo码的译码6.3Turbo码性能分析6.4Turbo码在移动通信中的应用2第六章Turbo码在1993年介绍Turbo码的首篇论文里,发明者Berrou仅给出了Turbo码的基本组成和迭代译码的原理,而没有严格的理论解释和证明。因此,在Turbo码提出之初,其基本理论的研究就显得尤为重要。J.Hagenauer首先系统地阐明了迭代译码的原理,并推导了二进制分组码与卷积码的软输入软输出译码算法。S.Benedetto等人提出了均匀交织(UI,Uniforminterleaver)的概念,并利用联合界技术给出了Turbo码的平均性能上界。D.Divsalar等人也根据卷积码的转移函数,给出了Turbo码采用MLD时的误比特率上界。一开始,Turbo码只应用于卫星链路等特殊的场合。当Turbo码与第三代移动通信标准结合时,它就成为应用最广泛的就错码之一。研究人员还在研究把Turbo码用于数字音频和视频广播,以及用于增强型无线互联网,以提高数据传输速率。由于Turbo码的这种巨大前景,它已经成为通信研究的前沿。在全世界各大公司和大学的成百个小组都聚焦在这个领域。其中有电信巨子如法国电信、NTT(日本电话电报公司)、DoCoMo;有高技术公司巨头如索尼、NEC(日本电气)、朗讯、三星、爱立信、诺基亚、摩托罗拉和高通(Qualcomm);有硬件和芯片制造商如Broadcom、Conexant、ComtechAHA等;还有新兴高技术企业如Turboconcept和iCoding。目前,Turbo码逐渐完善并被多种通信标准所采纳,如第三代移动通信系统伙伴项目(3GPP)、802.16等组织。36.1Turbo的编码Turbo编译码方案能够拥有极强的纠错能力,是因为它有二个重要的特点:编码器由两个递归系统卷积码(RSC)通过交织器以并行级联的方式结合而成,以较小的编译码复杂度,生成码重分布优良的长码译码器采用迭代的方式,充分利用码字的约束信息Turbo码的编码结构(如图6-1)并行级联卷积码(PCCC)串行级联卷积码(SCCC)混合级联卷积码(HCCC)46.1Turbo的编码图6-1Turbo码的编码方案56.1Turbo的编码1并行级联卷积码1993年,C.Berrou提出的Turbo码就是PCCC结构,主要由分量译码器、交织器、凿孔矩阵和复接器组成。分量码一般选择为递归系统卷积码(RSC),当然也可以选择分组码、非递归卷积(NRC)码以及非系统卷积(NSC)码。通常两个分量码采用相同的生成矩阵(也可不同)。若两个分量码的码率分别为R1和R2,则Turbo码的码率为:121212RRRRRRR66.1Turbo的编码图6-2是由两个分量码都是(2,1,2)系统反馈编码器构成的Turbo码,这两个分量编码器具有相同的生成矩阵,为:系统包括输入信息序列u,两个(2,1,2)系统反馈(递归)卷积编码器,一个交织器(用π表示)。假设信息序列含有K*个信息比特以及v个结尾比特(以便返回到全0状态),其中v是第一个编码器的约束长度,因此有K=K*+v,信息序列可表示为:221()11DGDDD011(,,,)KuuuU76.1Turbo的编码011(,,,)KuuuU(0)(0)(0)011(,,,)Kvvv(0)V(1)(1)(1)011(,,,)Kvvv(1)V(2)(2)(2)011(,,,)Kvvv(2)V图6-2基于(2,1,2)RSC的PCCCTurbo编码器86.1Turbo的编码由于编码器是系统的,因此信息序列就等于第一个输出序列,即:第一个编码器输出的校验序列为:交织器对K个比特进行交织处理,得到u’,第二个编码器输出的校验序列为:(0)(0)(0)011(,,,)Kvvv(0)v=u(1)(1)(1)011(,,,)Kvvv(1)v(2)(2)(2)011(,,,)Kvvv(2)v96.1Turbo的编码从而最终的发送序列(码字)为:因此,对该编码器来说,码字长度N=3K,Rt=K*/N=(K-v)/3K,当K比较大时,约为1/3。(0)(1)(2)(0)(1)(2)(0)(1)(2)000121121(,,,)KKKvvvvvvvvvv106.1Turbo的编码对于Turbo码来说,需要注意以下几点:为了得到靠近仙农极限的系统性能,信息分组长度(交织器大小)K一般比较大,通常至少几千个比特。对于分量码来说,一般选择相同结构,且约束长度较短,通常v≤4。RSC分量码(由系统反馈编码器产生)会比非递归分量码(前馈编码器)有更好的性能;高码率可通过凿孔矩阵产生,如图6-2中,可通过交替输出和得到1/2的编码速率。通过增加分量码和交织器也可得到较低编码速率的Turbo码,如图6-3所示。最好的交织器能够对比特以伪随机的方式进行排序,传统的块交织器(行-列)在Turbo码中性能不好,除非block长度很短;由于交织器只是对比特位置进行重新排序,因此,交织后的序列u’与原始序列u具有相同的重量;对每个分量码来说,用BCJR(或MAP)算法作为SISO译码器能够获得最好的性能;因为MAP译码器使用了前向-后向算法,信息是以block的形式进行的,因此,对第一个分量译码器来说,附加v个0比特能够让它返回到全0态;但对于第二个译码器来说,由于交织器的作用,将不能返回到全0态。116.1Turbo的编码图6-3具有3个分量编码器的PCCCTurbo码126.1Turbo的编码例6.1对基于图6-2结构的Turbo码,假设输入信息序列为,交织后的信息序列为试求:(1)编码输出序列(2)如果使用的删余矩阵,求输出序列。(1011001)U(1101010)U'解:根据图6-2可以得到(1011001)(0)v=u(1100100)(1)v(1000000)(2)v1001P136.1Turbo的编码没有删余的时候,码率是1/3,根据公式6-2有:当使用删余矩阵P时,码率是1/2,因此有输出:(111,010,100,100,010,000,100)v(0)(1)(0)(2)(0)(1)(0)(2)00112233(,,,,)vvvvvvvvv(11,00,10,10,01,00,10)v有146.1Turbo的编码2串行级联卷积码(SCCC)通过对并行级联卷积码(PCCC)构成的Turbo码在AWGN信道上的仿真证明,误比特率会随着信噪比的增加而下降,但是当误比特率下降到一定的程度后,信噪比增加所起的影响就几乎没有了,或者叫信噪比下降出现了平台效应。为了解决这种问题,S.Benedetto等人于1996年提出了所谓的串行级联卷积码的Turbo码方案。该方案集合了串行级联码和基于PCCC的Turbo码的特点,在适当的范围信噪比范围内,通过迭代译码可以得到优异的译码性能。具体SCCC编码结构如图6-1(b)所示。156.1Turbo的编码3混合级联卷积码(HCCC)经过过上两节的描述,我们了解了PCCC和SCCC,也就容易想到将两者结合起来的编码方案。这样就即可以保证在低信噪比的情况下优异的译码性能,又可以有效消除PCCC的平台效应。这种结合方案就称作混合级联卷积码。图6-1(c)、(d)给出了2种常见的HCCC编码方案。很显然,HCCC的实现要比PCCC和SCCC要复杂的多。166.1Turbo的编码4Turbo的交织器交织器的作用从码重层次看交织器增大了校验码重,尤其是改善了低码重输入信息序列的输出校验码重,从而增大了码的最小自由距离,提高了纠错能力从相关性层次看交织器最大可能地置乱输入信息序列的顺序,降低了输入/输出数据的相关性,使得邻近码元同时被噪声淹没的可能性都大大减小,从而增强了抗突发噪声的能力17第六章Turbo码6.1Turbo码的编码6.2Turbo码的译码6.3Turbo码性能分析6.4Turbo码在移动通信中的应用186.2Turbo码的译码经典的Turbo译码结构如图6-4所示,两个软输入软输出(SoftInputSoftOutput)分量译码器通过交织器和解交织器互相连接、传递和反馈译码信息。Turbo码的性能能够逼近仙农极限,它的迭代译码结构起着至关重要的作用。并且这种迭代的思想已经深刻的影响了很多研究领域,像解调、同步、均衡等等。Turbo码这个名字本身就来源于这种让信息像涡轮机中的尾气一样充分的流动和利用的思想。196.2Turbo码的译码ˆkukxky()kLLRu图6-3并行级联卷积译码器206.2Turbo码的译码每个SISO译码器有3个输入:信息比特;相应的校验比特,其中,对应不同的译码器;从另外一个译码器过来的先验信息(a-prioriinformation)。每个SISO译码器的输出是每一个信息比特的软信息,它不仅给出了输出比特是0还是1,同时给出了这个比特被正确译码的概率,换言之,它不仅提供了一个答案,而且还提供了对这个答案的可靠程度。常用的SISO译码器BJCR译码器Log-MAP译码器Max-Log-MAP译码器SOVA译码器kxiky1,2i216.2Turbo码的译码SISO译码器输出的软信息通常使用似然比的对数值(LogLikelihoodRatios,LLR)来表示,它的符号代表了译码比特的符号,它的绝对值表示了正确译码的概率。比如,译码输出的LLR值就定义为其中,和分别表示了等于+1和-1的概率。kd(1)()ln()(1)kkkPuLuPu(1)kPu(1)kPuku226.2Turbo码的译码译码器中有两个问题需要注意:第一,由于在编码器端存在交织器,所以必须在反馈和传送之前,正确的调整分量译码器的输出。第二,由于译码器是多次迭代的,所以务必小心不要重复使用相同的信息。236.2Turbo码的译码1MAP算法MAP(MaximumAPosteriorProbability)算法在1974年,由BahlL.R.等人提出,又名BCJR算法,该算法最初是用来估计无记忆噪声下的马尔可夫过程的,它是一种最优的算法。MAP算法不仅能译出序列的比特值,在译码的同时还能输出关于每比特译出的可靠性信息。这种特点正好符合了Turbo码的迭代译码特性,所以才被用于Turbo码的译码中。下面我们来看看MAP算法是如何用于二进制Turbo码的译码的。246.2Turbo码的译码MAP算法是要根据接收到的序列y,找出每信息比特是“+1”或“-1”的概率,这等同于计算序列下的对数似然比值(LLR):在网格图中假设前一状态、当前状态,输入比特引起的状态转移,根据贝叶斯(Bayes)准则,可根据式6-9有:kuYku1ln1kkkPuLuPuyyy(6-9)1kSskSskuss1,11,1,,ln,,kkkkssukkkssuPSsSsLuPSsSsyyy(6-10)256.2Turbo码的译码其中:表示所有由引起状态转移的集合;表示由引起的状态转移的集合。接收序列y可以被分成三部分:、和,分别表示时刻之前接收码字序列、当前接收码字和之后接收码字序列。所以,,1kssu1kuss,1kssu1kujkykyjky1,,,,,,kkjkkjkPSsSsPssyyyy(6-11)266.2Turbo码的译码1111111|(';;)(';;;;)(|';;;)(';;;)(|)(';;;)(|)(;|';)(';)(jkjkjkjkjkjkjkjkjkjkjkkkkkkkkkkkkkkkkkkkkkkSPSsSsP