您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > TURBO码的编译码原理及matlab仿真
Turbo码的编译码原理及MATLAB仿真2摘要纠错码技术作为改善数字通信可靠性的一种有效手段,在数字通信的各个领域中获得极为广泛的应用。Turbo码是并行级联递归系统卷积码,在接近Shannon限的低信噪比下能获得较低的误码率,现已被很多系统所采用。本文分析了Turbo码编码译码的原理,为了使Turbo码仿真更容易,研究并建立了基于Matlab中Simulink通信模块的Turbo码仿真模型。使用所建立的模型进行仿真,结果表明,在信噪比相同的情况下,交织长度越大、迭代次数越多、译码算法越优,Turbo码性能越好,设计实际系统时,应综合考虑各因素。关键词:Turbo码;Simulink仿真;交织长度;迭代次数AbstractAsaneffectivemeanstoimprovethereliabilityofdigitalcommunication,errorcorrectingcodetechnologyiswidelyusedinthefieldofdigitalcommunication.Turbocodeisaparallelconcatenatedrecursivesystematicconvolutionalcode,whichcanobtainlowerbiterrorrateinthelowSNRnearShannonlimit,whichisnowusedbymanysystems.Inthispaper,theprincipleofTurbocodinganddecodingisanalyzed,inordertomaketheTurboCodesimulationeasier,aTurbocodesimulationmodelbasedonSimulinkmoduleofMatlabisstudied.Simulationresultusingtheestablishedmodelshowsthatthelongerinterleavinglength,themoreiterationtimesandthebetterdecodingalgorithmbringthebetterTurbocodeperformancewiththesameSNRvalue.Keywords:Turbocode;Simulinksimulation;Interleavinglength;Iterationtimes;3引言根据Shannon[1]有噪信道编码定理,在信道传输速率R不超过信道容量C的前提下,只有在码组长度无限的码集合中随机地选择编码码字并且在接收端采用最大似然译码算法时,才能使误码率接近为零。但是最大似然译码的复杂性随编码长度的增加而加大,当编码长度趋于无穷大时,最大似然译码是不可能实现的。所以人们认为随机性编译码仅仅是为证明定理存在性而引人的一种数学方法和手段,在实际的编码构造中是不可能实现的。直到Turbo的出现,人们才改变了这种看法。1993年,ClaudBernou等人在国际通信会议(ICC'93)上提出了并行级联卷积码(PCCC)即Turbo码,由于它很好地应用了Shannon信道编码定理中的随机性编译码条件,从而获得了几乎接近Shannon理论极限的译码性能。Turbo码巧妙地将两个简单分量码通过伪随机交织器并行级联来构造具有伪随机特性的长码,并通过在两个软输入/软输出(SISO)译码器之间进行多次迭代实现了伪随机译码。采用迭代译码的方法来提高通信系统的译码性能是Turbo码的最大特点。Turbo码的编码器、译码器结构繁琐,是一种非常复杂的信道编码方案,这使得对Turbo码的理论分析十分困难,且只能对运算复杂度作宏观分析,对Turbo码的具体实现并没有一个清楚的度量。因此,使用计算机对Turbo码进行仿真分析是十分必要的。本文分析了Turbo码编码译码的原理,考虑到Turbo码系统编译码的数据处理量很大,利用生成矩阵对信息序列进行编码、译码时的迭代计算等等,都涉及了矩阵运算,故采用Matlab/Simulink来进行建模仿真。1Turbo码编码原理1.1Turbo码的编码结构Turbo码的典型编码器如图1所示,Turbo码编码器主要由分量编码器、交织器复接器组成。分量码一般选择为递归系统卷积(RSC,RecursiveSystematicConvolutional)码[2],当然也可以是分组码(BC,BlockCode)、非递归卷积(NRC,Non-RecursiveConvolutional)码以及非系统卷积(NSC,Non-SystematicConvolutional)码,但从后面的分析将看到,分量码的最佳选择是递归系统卷积码。通常两个分量码采用相同的生成矩阵,当然分量码也可以是不同的。以分量码为RSC为例,分量编码器为递归系统卷积码(RSC)编码器。第一个RSC之前不使用交织器,后续的每个RSC之前都有一个交织器与之对应。一个Turbo编码器中原则上可采用多个RSC,但通常只选用2个,因为过多的RSC分量编码器将使得译码非常复杂而难以实现。通常的Turbo码编码器中,长度为N的信息序列ku在送入第一个分量编码器的同时作为系统输出skx直接送至复接器,同时ku经过一个N位交织器,形成一个新序列'ku(长度与内容没变,但比特位置经过重新排列。ku与'ku分别传送到两个分量码编器(RSC1与RSC2)。一般情况下,两个分量码编码器的结构相同,生成分量码校验序列pkx1和pkx2。ku'ku与未编码的信息序列skx经过复接后,生成Turbo码序列kc,将编码序列调制后,即可发射进入信道传输。4kuskxkcpkx1'ku图1Turbo码的编码器结构2.2递归系统卷积码(RSC)纠错编码是将k位的输入信息码元编成n位的输出信道码元,在编码中,可以采用一定的算法,使输出码元中的k位与输入码元一致。这样,输入码元与输出码元有明显的对应关系,这种码称为系统码[。系统码中一致的这k位数据称为信息位[3],输出码元其余的n-k位称为校验位,不满足这种关系的码称为非系统码。同样的,卷积码可以分为系统卷积(SC,SystematicConvolutional)码与非系统卷积(NSC,Non-SystematicConvolutional)码两大类。以下图2的(2,1,2)卷积码为例,设时刻k的输入码元为kd,输出码元为kX和kY,则输出码元与输入码元的关系为kYkdkX图2卷积码10121KiikikkkkdgdddX(2-1)1022KiikikkkdgddY(2-2)式中,ig1—1G的系数,ig2—2G的系数。非递推系统卷积码,约束长度K=3,但码生成多项式为Gl=4,G2=5。它的输出码元与输入码元的关系为kkdX(2-3)分量编码器CRS1分量编码器CES2交织器复接器D1D251022KiikikkkdgddY(2-4)系统码的结构比非系统码的简单,模2加法器和连线的数量都比非系统码的要少。RSC码是由一个NSC码编码器通过反馈,并使kX等于输入信息比特kd而构成的。对RSC编码器,移位寄存器输入不再是数据比特kd,而是一个新的二元变量ka。如果kX=kd,输出kY为式(2-4),其中kd由代替ka,而ka由下式递推计算11Kiikikkarda(2-5)式中iigr1(2-6)式(2-5)可写为10Kiikikard(2-7)下面讨论为什么选择RSC编码器作为Turbo码的子编码器。首先,RSC码具有系统码的优点。因为系统码在从码字恢复出信息序列时无需求逆,这一特性使用户在译码时无需变换码字而直接对接收的码序列进行译码。所以,RSC码对于NSC码而言译码简单、快速。其次,还可以从Turbo码重量分布的角度给予解释。通过观察递归卷积码与非递归卷积码的低重量信息序列所产生的码字的分布情况,可以发现二者之间有明显的不同,低重量的输入信息序列经过非递归卷积编码器之后,只能产生低重量的监督码元序列,低重量码字的增加将严重影响Turbo码的性能,而低重量的信息序列经过递归卷积编码之后,输出的监督码元的重量分布在一个很宽的范围之内,这是由其反馈特性所造成的。因此,用非递归卷积码所构造的Turbo码的性能比较差,Turbo码需要递归卷积码实现。最后,从差错控制编码[4]的相关文献中也可知,在对比实验中,非系统卷积码(NSC)的BER性能在高信噪比时比约束长度相同的非递归系统码要好,而在低信噪比时情况却正好相反[13]。递归系统卷积(RSC)码综合了NSC码和系统码的特性,虽然它与NSC码具有相同的trellis结构和自由距离,但是在高码率32R的情况下,对任何信噪比,它的性能均比等效的NSC码要好。由于系统递归卷积码具有以上特点,并且能改善误码率,所以通常选择RSC码作为Turbo码的子编码器。NSC的可由生成算子1111g和1012g来描述,也可将其表示为矩阵形式21,ggG.RSC可以表示为12,1ggG。NSC中的第一个支路输出被反馈到了输入端,从而引起了生成矩阵形式上的变化。RSC的矩阵表达式中,1对应着输出的系统信息序列,2g对应着编码器的前馈输出,1g对应着反馈到输入端的成分。研究指出RSC的原始生成多项式的基础上加上适当的反馈,往往能获得好码,因为应用了反馈之后,可以获得最大长度的编码序列,根据分组码的知识,我们知道这给码序列增加了随机性,从而能获得更好的误比特率。62.3交织器交织器其实是通信系统中进行数据处理而采用的一种技术,交织器从其本质上来说就是一种实现最大限度的改变信息结构而不改变信息内容的器件,也就是使在信道传输过程中所突发产生集中的错误最大限度的分散化[4],不规则化。我们设X为交织器的输入,Y为交织器的输出,I就是交织器,所以XIY。一般的应用交织器往往都是有延时的,我们有必要引入一个新的概念:交织器的延时,它是指在时刻i,输出的iy与此时此刻或以前的输入ijxj有关,且iiI,用式子来表示就是0iIi,相应的iIiti0minmin为交织器的最小延时。交织器是Turbo码编码器主要的组成部分,也是Turbo码的重要特征之一。线性码的纠错译码性能实质上是由码字的重量分布决定的,Turbo码也是线性码,所以其性能也是由码字重量分布决定的,由于交织器实际上决定了Turbo码的重量分布,所以,给定了卷积编码器后,Turbo码的性能主要是由交织器决定的。在低SNR时,交织器的大小将直接影响着Turbo码的差错性能。因为交织长度大时,两个子编码器接收的输入序列的相关性就可以很低,就越有利于译码迭代,从而使得迭代结果越准确。在高SNR时,是Turbo码的低重量码字、最小汉明距离或距离谱决定着它可以达到的BER性能,所以交织器的设计显著的影响着低重量码字或距离谱,重量分布是反映纠错码性能的重要指标[5],所谓具有好的重量分布,就是要尽量减少低重量的码字的数量。如果没有交织器的作用,Turbo码的两个子编码器的输入就相同。如果其中一个经编码后产生低重量的码字,那么该序列在经过第二个字编码器输出后也会产生低重量的码字。反之,加入交织器,由于交织器对输入序列进行了置换,使得数据在进入第二个编码器之前被打乱,也就改变了原来信息的排列方式,所以Turbo码的两个子编码器同时产生低重量输出的可能性就更小了,也就是说交织器减小了Turbo码产生低重量码字的概率,从而可以使Turbo码有比较好的纠错性能[6]。在Turbo码中,交织器的这种使输入码元符号的顺序尽可能随机分布的作用,将使码元符号之间的相关性减弱,使进入各个子译码器的信息序列之间不相关。这种去相关的结果使得各个子译码器可以彼此独立的工作。彼此独立进行译码的结果是,软判决信息可以互相利用,判决结果也因此逐渐准确。从而
本文标题:TURBO码的编译码原理及matlab仿真
链接地址:https://www.777doc.com/doc-4088704 .html