版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2010年本科毕业设计:Turbo码的编译码算法研究 2010届毕业生 毕业论文题目:Turbo码研究学号:指导教师:教师职称:教授2010年6月2日
摘要在现代数字通信系统中,信道编码常用来保护系统免遭噪声和外界干扰,并用于降低系统的比特误码率,提高系统的可靠性。Turbo码,由于性能接近香农理论限,在低信噪比的应用环境下比其他编码好,因而在第三代移动通信系统多种方案中,考虑将Turbo码作为无线信道的编码标准之一。本文讨论了Turbo码的编译码基本原理,对Turbo码的几种常用的编译码算法进行了分析,并在给出编译码器模型的基础上,用MATLAB语言实现了整个系统的计算机仿真并给出参考设计程序。关键词:Turbo码、软判决Viterbi译码、交织器Title:TurbocodeencodinganddecodingalgorithmAbstractInmoderndigitalcommunicationsystems,channelcodingsystemusedtoprotectagainstnoiseandinterference,andusedtoreducethesystem'sbiterrorrateandimprovesystemreliability.Turbocode,AstheperformanceapproachestheShannontheoreticallimit,theapplicationofalowSNRenvironmentbetterthantheotherencodings,andthusthethirdgenerationmobilecommunicationsystemsinavarietyofprograms,considertheTurbocodeasthewirelesschannelofthecodingstandard.ThisarticlediscussesthebasicprinciplesofTurboCodesEncodingandDecodingofTurboCodesEncodingandDecodingofseveralcommonlyusedalgorithmsareanalyzedandpresentedcodecbasedonthemodel,withtheMATLABlanguagetoimplementthecomputersimulationofthesystemandtothereferencedesignprogram.Keywords:RecursivesystematicconvolutionalcodeSoft-decisionViterbidecodingInterleaver1引言 12Turbo码概述 22.1Turbo码简介 22.2Turbo码的优缺点 22.3Turbo码的发展 33Turbo码的编码原理 43.1编码器组成 43.2编码原理 63.3编码算法 74Turbo码译码原理 94.1 译码器组成 94.2译码原理 114.3MAPimumaposteriori算法 124.4 Log-MAP算法和-Log-MAP算法 144.5 SOVA算法 155Turbo码的性能仿真 165.1仿真软件介绍 165.2仿真系统构建 185.3编码子系统 185.4译码子系统 195.5仿真结果与分析 20结论 24致谢 25参考文献 26附录 271引言在数字通信系统中,根据不同的目的,编码可分为信源编码和信道编码。信源编码是为了提高数字信号的有效性以及为了使模拟信号数字化而采取的编码。信道编码是为了降低误差率,提高数字通信的可靠性而采取的编码。数字信号在传输过程中,加性噪声、码间串扰等都会生产误码。为了提高系统的抗干扰性能,可以加大发射功率,降低接受设备本身的噪声,以及合理选择调制、解调方法等。此外,还可以采用信道编码技术。长期以来,编码界一直致力于寻找编码率接近香农理论极限值、误码率小、解码复杂度可以忍受的信道前向差错控制编码方法,提出了可重复解码的编码技术,包括乘积码、级联码、多级码及其推广。在重复解码、软入软出解码、递归系统卷积码和非均匀交织等概念的基础上,1993年C.Berrou等在国际通信会议上最先提出了Turbo码,它是并行级联带反馈系统卷积码Parallelconcatenationofrecursivesystematicconvolutionalcodes的简称。仿真结果表明,在AWGN信道中,Turbo码的纠错性能接近香农极限。从此Turbo码的研究成为了编码界的一个研究热点,并开始在各种通信系统中实现应用。MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作,而且利用MATLAB产品的开放式结构,可以非常容易地对MATLAB的功能进行扩充。MATLABSimulink是MATLAB提供的动态仿真工具,它采用模块组合的方法来创建动态系统的计算机模型,其最突出的特点就是它的开放性,用户可以通过S一函数定制自己的模块和模块库,本文本文首先介绍了Turbo码编译码的基本原理以及研究较深的几种算法,在这个基础上使用MATLAB建立仿真模型,最后给出仿真结果。2Turbo码概述2.1Turbo码简介著名的Shannon信道编码定理指出,每一信道都有一定的信道容量C,对任何RC的传信率,都存在有速率为R的码,用最大似然(ML)译码可达到任意小的错误概率P。该定理包含两方面的含义:一是Shannon用随机编码方式证明,当RC时,若n趋近于无穷,则使P趋近于0的好码是存在的;二是为了达到理论值,应该利用最大似然译码。Turbo码由两个二元卷积码并行级联而成。Turbo码编译码器采用流水线结构,其编译码基本思想是,采用软输入/软输出(SISO)的迭代译码算法,编码时将短码构成长码,译码时再将长码转为短码。译码算法的特点是,利用两个子译码器之间信息的往复迭代递归调用,加强后验概率对数似然比,从而提高判决可靠性,Turbo码由此而得名,这种算法也被称为最大后验概率(MAP)算法。由于Turbo码很好地应用了Shannon信道编码定理中的随机性编译码条件,从而获得几乎接近Shannon理论极限的译码性能。2.2Turbo码的优缺点Turbo码可以在译码复杂性与码率之间达到较好的平衡,而且在中高噪声的应用环境中,性能比以往其它信道编码好很多。通过数值模拟表明,在AWGN信道下,码率为12的Turbo码在达到误比特率BER≤10时,仅为约0.7dB这种情况下达到信道容量的理想值为0dB,远远超过了其他的编码方式Turbo码在某些对时延要求高的通信系统中的应用受到限制;(3)理论分析困难,至今对于Turbo码的译码复杂性、比特误码率,尚未形成完整的理论分析和估计。2.3Turbo码的发展对Turbo码的研究进展大体有三个方面:1主要涉及到Turbo码理论的研究。大多数研究集中在算法的改进,包括分量码的选择,交织器的设计,译码算法的改进,终止技术等Turbo码的各个环节,取得了大量的成果,为Turbo码的实现和在其它领域的应用打下了坚实的基础。2随着Turbo码技术的成熟,最新研究大多集中在Turbo码和其它技术结合的应用上,并且取得了很大的进展。如Turbo码和其它纠错码的级联,Turbo码和调制技术的结合即TTCM技术,Turbo码均衡技术,Turbo码多用户检测技术等。3由于Turbo码时延问题的限制,应用最先集中在对时延不敏感的场合,如卫星通信和一些非实时的场合。随着硬件技术的发展,Turbo码在实时领域的应用成为可能,值得一提的是Turbo码已经成为3G方案中高速数据的纠错技术之一,可见其应用的潜力是很大的。但Turbo码在衰落信道中的应用还有很多问题需要解决,是目前研究的热点。Turbo码理论的出现是信道编译码史上的一个里程碑。它可以相当接近信道容量的极限,在高速效据传递中有着传统码无可比拟的优势,以其优良的性能引起了广泛的重视。目前Turbo码技术已经从理论研究和仿真实验开始走向应用,其许多关键的技术已经有了多种改进的方案,使其性能更加提高,更有利于软件和硬件的实现。Turbo码和其它技术的结合以及在其它领域的应用也是最近研究的热点,并取得了大量的成果。相信随着软件和硬件技术的发展,Turbo码技术的时延和算法复杂性等问题会得到极大地改善,并逐步取代业已成熟的分组码和卷积码技术,而且还会进一步与其它的技术结合,广泛应用于数字通信的各个领域。3Turbo码的编码原理3.1编码器组成(1)编码器结构Turbo码的基本思想是利用短码构造等效长度意义上的长码。Turbo一个典型的Turbo码编码器如图所示。编码是通过两个相同的编码器和一个交织器组成。第一个编码器直接对信源信息序列进行编码,第二个编码器则对经过交织器后的信息序列进行编码,交织器对输入的原信息序列进行随机交织后输出。Uu1,u2......un经过―个N位交织器,形成―个新序列UI长度与内容没变,但比特位置经过重新排列。U与UI分别经由两个相同结构的子编码器(分量码编码器)编码,生成序列X1,X2。X1,X2再与未编码的序列经过复用,即生成Turbo码序列X。在实际应用中,为了提高Turbo码的码率,经常增加一个删余过程,对校验序列X1,X2进行删余,周期的删除一些校验位,形成新的校验序列,再与未编码序列经过复用调制后,生成Turbo码序列X。(2)子编码器子编码器(componentencoder)也叫。一般一个Turbo码编码器由两个可以多个子编码器和通过交织器的作用并行级联组成子编码器的结构可以不同但一般取相同结构,以简化译码子码可以是卷积码或者是分组码Turbo码中级联的两个子编码器必须是系统码,所以一般选择递归系统卷积码(RSC)。(3)RSC码RSC码是与Turbo码同时提出的一类新的递归型系统卷积码,该码在高码率时比最好的NSC(非系统卷积码)还要好。Turbo码既然要求采用系统码,理所当然就选上了递归型系统卷积码RSC。RSC与NSC的状态转移图对比如下图:图3-2RSC与NSC的状态转移图(4)交织器交织器Turbo码中的主要作用是减少校验比特间的相关性进而在迭代译码过程中降低误比特。其基本的原则是通过增加交织器的长度可使译码性能得到提高交织器应该使输入序列尽能地随机化从而避免编码生成码字的信息序列交织后编码仍旧生成低重码字导致Turbo码的自由距离减少。随机交织器反映的实际上是一种映射关系。其工作过程是:对于长为n的信息序列,首先标记每个比特的位置,然后生成n个[0,1]之间的随机数,按产生的顺序排列成序列X,每个随机数都对应于信息序列中的信息比特。然后把X中元素按一定的规则重新排列得到新的序列Y,并按Y中元素的顺序读出相应的信息比特,这样就完成了交织。比如随机序列[0.76210.45650.01850.82140.4447],它对应信息序列X为[]。将随机序列按升序排列得到[0.01850.44470.45650.76210.8214],则现在对应的信息序列Y为[]。这样,就完成了交织。如果一个码率为的卷积码的生成矩阵为:式3-1则其对应的递归系统卷积码的生成矩阵为:式3-2如以生成矩阵为(也可以表示为g=[1101;1111])的递归系统卷积码作为子码,它对应的Turbo码结构如图图3-3Turbo码的编码结构图输入编码器的信息序列为,它一方面直接输入到进行编码,生成系统序列和校验序列,另一方面,U经过交织器后,输入到中进行编码,产生另一个校验序列,这三个序列经复用单元复用后完成编码,得到发送序列。复用单元的作用是调整编码速率,并将并行数据变换为串行数据流。通常系统序列全部传送,校验序列按照收缩矩阵收缩。图示Turbo码编码器可以采用收缩矩阵将编码速率调整到1/2,矩阵的每行对应一个子编码器,第一列和第二列分别对应子编码器输出的第偶数个码元和第奇数个码元。1表示该码元需要传送,0表示不需传送。如果称对原始信息序列编码为水平方向的编码,称对经过交织器后的信息序列编码为垂直方向的编码。在每个方向上,个信息比特经过编码器输出为 式3-3其中,或表示信息比特,表示与该信息比特对应的校验比特,校验比特数取决于系统卷积码的生成多项式。显然式3-4传输前经过收缩,有一部分校验比特将不予传送,在接收端未被传送的比特位用零填充。从上面的介绍我们可以看到,Turbo码编码部分级联结构和交织器的共同作用,使Turbo编码接近随机编码,从而保证了Turbo码必定是一种好码。g的理解。图递归系统码对照递归系统卷积码的一般的编码结构图。,其中[1,m+1](其中m是寄存器的数目)。是矩阵g的第一行,可以看成是对应的图中的反馈环支路;是矩阵g的第二行,可以看成对应的是输出的支路。和分别对应两点的信息。无论还是中的后m个信息位的每一位都分别对应一个寄存器。它们可以看成是标志着一种状态。第一行中的后m位表示产生反馈信息所用到的寄存器,比如说第j+1位,它对应于第j个寄存器,该位为1表示用到了该寄存器内的信息,即该寄存器有反馈到输出信息的那个加法器,为零则表示没有反馈回去。同理,中的后m位表示产生信息所用到的寄存器。对于encoder1:d=input;L_infolengthd;L_totalL_info+m;goto3;Y(1,:)=X;Y2,:=Y;对于encoder2:d=Y(1,:)(alpha);%alpha为随机交织图样%(是L_total列行向量)L_total=length(d);L_info=L_total;goto3;Y3,:=Y;Goto(4)。①state为一m列行向量。初始化为零②ifL_info,=;elseifL_infoL_total=[2:m+1]state;=;endif③[state];=[state];state[state1:m-1];k=k+1;ifkL_totalgoto②;令Y2Y-1(把0和1信号调制成-1和1信号)然后进行并/串变换:如果没有删余,则对矩阵Y按列的顺序取,取完第一列,取第二列,直到最后一列(第L_total列);如果有删余,则对于Y的第一行系统码,当取第奇数个系统码时,取对应列第二行的校验码,当取第偶数个系统码时,取对应列第三行的校验码。4Turbo码译码原理译码算法的研究是Turbo码研究的一个主要方面,因为它决定整个系统能否充分发挥Turbo码的固有性能。选择算法的基本原则是在一定的复杂性和时延要求下保持一定的性能,并且利于硬件实现。选择合适的译码算法,对于使Turbo码能在实用系统中充分发挥其性能优势是非常重要的。Turbo码译码器采用反馈结构,以迭代方式译码,而迭代(iterative)译码思想是Turbo码的一大特色。Turbo编码器的两个子编码器对应,译码器也采用两个子译码器,通过交换称为边信息(外部信息)的辅助信息相互支持,从而提高译码性能。边信息的交换在迭代的过程中实现,前一次迭代产生的边信息经交换后将作为下一次迭代的先验信息。Turbo码译码器结构如图所示的是Turbo码译码器结构。每个子译码器将从本身的译码过程中得到的外部信息ExtrinsicInformation提供给另一个子译码器,作为其译码的辅助信息,从而提高整体译码性能。在执行软输入/软输出的迭代译码过程中,子译码器之间相互配合,从而达到一种全局译码的效果,充分挖掘了码的固有纠错性能。Turbo码的译码策略,在于使用简单的译码单元的迭代来替代复杂的一次性译码,相对于长约束长度的卷积码来说,Turbo码每个译码单元的状态数要少得多,因而译码复杂性减少,其缺点是迭代过程带来的不可避免的时延,因为从时间的角度看,它相当于n级(n等于迭代次数)具有相同结构得译码单元相连为了产生和利用边信息(外部信息),子译码单元必须具有软输入/软输出的能力。适合于这种译码思想的算法以Bahl的算法最具有代表性,应用也最广。这是一种对具有有限状态马尔可夫特性的码及离散无记忆特性的信道提供逐符号或逐比特似然值的最优算法。图Turbo码迭代译码形式1、似然函数设是元素为+1,-1的GF2即二元伽罗华域的元素,在模2加下,+1表示零元。随机变量的对数似然函数定义为式4-1其中表示随机变量取值为的概率。似然函数称为随机变量的软值。的符号代表硬判决值,的绝对值表示该判决的可靠性。没有特殊说明,对数取自然对数。在已知另一随机变量的条件下,条件似然函数比定义为式4-22、软信道值对一个软值为的二进制变量进行编码,可得到一个软值为的码元。对于一个系统码,前个码元和信息比特相等。经过一个二进制对称信道或高斯/衰落信道,在接收端匹配滤波器输出为的条件下,有:式4-3运用前面定义,有式4-4其中称为信道可靠性能。表示衰落因子,在高斯信道中,我们令。是信号能量,是高斯白噪声的单边带功率密度谱。在通常情况下,如衰落信道,是时变的,而在高斯信道中是恒定不变的。以下部分我们假定信道是高斯信道。软信道值中包含了关于信道的信息。编码器的输出码字序列为:,在经过离散无记忆高斯信道的传输后,码字变为,其中,。设为时刻编码器所处的状态,是时刻到时刻转移时的输入比特,时刻和时的状态分别用m和m表示。译码的数据比特的后验概率可以从联合概率得到,其中,由下式定义: (-5)这样,译码的数据比特的后验概率则等于:(-6)由(),与解码比特相联系的对数似然比可写成: (-7)最后,解码器通过对和一个等于0的门限值比较后,作出以下判决:若 若(-8)为了计算概率,我们引入概率函数,和:(-9)(-10)= (-11)这里,表示从格栅起始时刻到时刻收到的符号序列,表示从时刻到格栅终止收到的符号序列。其中中得q(??|??)取值为“0”或“1”,最后一项(??|??)为译码器的状态转移概率,由于编码比特以等概率1/2取“0”和“1”,所以这一项就等于1/2。则联合概率可用贝叶斯定理重写为: (-12)这样,我们得到(-13)考虑到如果状态已知,时刻k后的事件不受观察值和比特的影响,则概率等于: (-14)MAP算法从概率采用前、后向递推的方式来计算和。最后我们可得: (-15)及 (-16)显然在的递推过程中,要知道格栅最后时刻所处的状态,我们通常假设格栅的起始和终止状态都为零。这样和可初始化为: (-17) (-18)运用(-7)式所定义的对数似然比公式及(-14)、(-15)和(-16),为: (-19)由于编码器是系统码(),表达式中的转移概率是与状态值和无关的。因此,将这个条件代入(-19)式的分子和分母,则有: (-20)根据条件(或,变量是均值为1或-1和方差为的高斯变量,因此对数似然比依然是等于: (-21)其中, (-22)是一个由编码器引入的冗余信息函数,一般情况下和的符号一样,因此可以改进每一个解码器数据比特的对数似然比。这个数值代表了解码器提供的外在信息,但它并不依赖于解码器的输入,这个性质可以用来对两个并行级连编码器进行解码。MAP算法非常复杂,运算量极大,运算中不仅有大量的乘法和加法,还有在数字电路中较难实现的指数和对数运算,这极大的影响了MAP算法的实用。Koch和Baier及Erfanian等人提出-Log-MAP算法,大大地简化了MAP算法的复杂性,由于计算中做了一定地近似,这种算法不是最优的。Robertson等人对-Log-MAP算法做了一定地修正,被称作Log―MAP算法。本文中只对Log-MAP算法进行了仿真。Log-MAP算法在MAP算法中将似然值运算全部用对数似然值表示,通过一定的简化,可将乘法运算变成加法运算,即(式4-23)在该式中?(*)是一个相关函数。-Log-MAP算法-Log-MAP对MAP所做的修改是直接在对数域里进行计算省去了许多指数和对数运算,大大简化了运算量。在―Log―MAP译码过程中主要忽略了(式4-23)式中的对数分量,令(式4-24)则有(式4-25)SOVA算法SOVASoftOutputViterbiAlgorithm是对原Viterbi算法做了一定的修改,使其适合于Turbo码的迭代译码。所作的修改主要有两个方面:1在栅格图中选择最大似然路径时要把先验信息考虑进去;2不仅要把每个比特UK是+l或一1译码出来,同时也要给出Uk译码的可靠度,以LLR形式给出LUk|Y,作为“Softoutput”,从中可以获得一些关于UK的先验信息,为下次迭代所使用。这正是此算法被命名为SOVA的原因。SOVA算法在删除低似然路径是保留必要的信息,以给每个输出比特提供一个可信度,其基本思想是利用最优路径和被删路径的度量差,差值越小意味着这次选取的可靠性越低。5Turbo码的性能仿真在本文的设计中,主要通过基于MATLAB自带的Simulink工作环境进行仿真。5.1仿真软件介绍计算机对科学技术的几乎一切领域产成了极其深远的影响。熟练掌握并利用计算机进行科学计算研究及工程应用已是广大科研设计人员所必备的基本技能之一。从事科学研究和工程应用时候所遇到的最大的困扰大抵是我们在计算涉及矩阵运算或画图时,采用Fortran、C及C++等计算机语言进行程序设计是一项十分麻烦的工作,不仅需要对所利用的有关算法有深刻的了解,还需要掌握所用语言的语法及编程技巧。为了准确的把一个控制系统的复杂模型输入计算机,然后对之进行进一步的分析与仿真,1990年Mathworks公司为Matlab提供了新的控制系统模型图形输入与仿真工具Simulab,该工具很快在控制界得到了广泛的使用。但因其名字与著名的软件公司Simula相似,所以在1992年正式改名为Simulink,此软件有两个明显的功能:仿真与连接,亦即利用鼠标在模型窗口上画出所需的控制系统模型,然后利用该软件提供的功能对系统直接进行仿真处理。很明显,这种做法使得一个很复杂的系统的输入相当容易。Simulink的出现,使得Matlab为控制系统的仿真及其在CAD等中的应用打开了崭新的局面。1、Matlab的特点Matlab作为一种数值计算和与图形处理工具软件,其特点是语法结构简明、数值计算高效、图形处理完备、易学易用,它在矩阵代数数值计算、数字信号处理、震动理论、神经网络控制、动态仿真等领域都有广泛的应用。与C、C++、Fortran等高级语言相比,Matlab不但在数学语言的表达与解释方面表现出人机交互的高度一致,而且具有优秀高技术计算环境所不可缺少的如下特征:高质量、高可靠的数值计算能力;基于向量、数组和矩阵的高维设计语言;高级图形和可视化数据处理的能力;广泛解决各学科各专业领域内复杂问题的能力;拥有一个强大的非线性系统仿真工具箱――Silmulink;支持科学和工程计算标准的开放式、可交互结构;跨平台兼容。2、Matlab工具箱和内容目前Matlab已经成为国际上最流行的软件之一,它除了传统的交互式编程外,还提供了丰富可靠的矩阵运算。图形绘制、数据处理、图象处理、方便的Windows编程等便利工具。出现了各种以Matlab为基础的使用工具箱,广泛的应用于自动控制、图象信号处理、生物医学工程、语言处理、雷达工程、信号分析、震动理论、时序分析与建模、化学统计学、优化设计等领域,并表现出一般高级语言难以比拟的优势。较为常见的工具箱主要包括:控制系统工具箱(Contorlsystemstoolbox)系统识别工具箱(Systemsidentificationtoolbox)多变量频率设计工具箱(Multivariablefreguencydesigntoolbox)鲁棒控制工具箱(Robustcontroltoolbox)分析与综合工具箱(analysisandsynthesistoolbox)神经网络工具箱(Neuralnetworktoolbox)最优化工具箱(Optimizationtoolbox)信号处理工具箱(Signalprocessingtoolbox)模糊推理数据工具箱(Fuzzyinferencesystemtoolbox)小波分析工具箱(Wavelettoolbox)通信工具箱(Communicationstoolbox)3、Simulink简介Simulink是实现动态系统模型仿真的一个集成环境,她的存在使Matlab的功能得到进一步的扩展。这种扩展的意义表现在:(1)实现可视化建模。在Windws环境下,用户通过简单的鼠标操作就可以建立直观的系统模型,并进行仿真;(2)实现多工作环境内文件互用和数据交换,如Sinulink与Matlab,Simulink与Fortran、C和C++,Simulink与实时硬件工作环境的信息交换都可以方便的实现;(3)把理论研究和工程实现有利地结合在一起。Simulink为用户提供了用方框图进行建模的图形接口,采用这种结构化模型就像纸和笔一样容易,它与系统仿真软件包用微分方程和差分方程建模相比具有更直观、方便、灵活的优点。由于Matlab与Simulink是集成在一起的,因此用户可以在这两种环境下对自己的模型进行仿真。BernoulliBinaryGenerator来表示,产生序列中0和1出现的概率基本相等,该模块以1秒为周期。信宿为一个输出口,将得到的数据输出到工作区内。Turbo编码器、Turbo译码器、信道与噪声则是Simulink子系统,复杂的算法由S函数调用M文件实现。信道子系统有各种不同的信道可供选取,可以方便的仿真Turbo码在不同信道下的性能,本文中只选用了AWGN信道模型对Turbo码的编译码算法进行了仿真研究。Turbo码译码器部分则采用不同的译码子程序,比较各种译码算法对Turbo码性能的影响。交织子程序在Turbo编码子系统中被调用,主要完成对信息比特序列进行位置的随机置换;抽取子程序在Turbo编码子系统中被调用,实现数据的抽取和重复过程;Log-MAP译码子程序、MAP算法译码子程序、SOVA在该Turbo码仿真系统中选择的部分参数如下:交织器类型选择:伪随机交织器。N:交织器的大小,也等于Turbo码的分组长度,即每个分组所包含的信息序列的长度。信道类型选择:加性高斯白噪声信道AWGN。译码算法选择:Log-MAP,MAP和SOVA三种译码算法。5.3编码子系统在本系统中,Turbo码的编码器由两个分量码编码器通过交织器并行级联而成,其码率可以选择1/2、1/3等。Turbo编码器的输入信号在进入卷积编码器之前首先通过零填充模块ZeroPad,在输入数据帧中添加6个0,使在输入数据帧编码结束之后,分量码编码器的寄存器回到全零状态。分量码编码器采用的是两个相同的带反馈的卷积码编码器,Turbo编码就是这两个卷积码编码器的输出信号经过信号抽取和重复之后得到的输出信号。卷积码编码器反馈多项式为dD1+D2+D3。在仿真当中,选择码率为1/2,卷积码的两个生成多项式分别是n0D1+D+D3和n1D1+D+D2+D3,八进制就分别为15、17,约束长度为4。首先用贝努利发生器BernoulliBinaryGenerator产生序列,从参数面板调节帧大小和采样率。原始序列进入第1卷积编码器ConvolutionalEncoder,并经过随机交织器RandomInterleaver后进入第2卷积编码器ConvolutionalEncoderl。两个删余模块同时接在第1卷积编码器的后面。第一个删余模块puncture的输出为第1卷积编码输出的奇序列,第二个删余模块puncture1的输出为第1卷积编码输出的偶序列。第三个删余模块puncture2接在第2卷积编码器的后面,其输出第2卷积编码输出的偶序列。这3路序列经过串并变换后合成一路序列,作为Turbo编码输出。图5-1Turbo码编码仿真的Simulink模块示意5.4译码子系统由于Turbo码的编码部分由两个子编码器组成,在其译码部分也就相应有两个子译码器。该模块可以调用Log―MAP译码子程序、MAP算法译码子程序、SOVA算法子程序口3供译码模块调用。这些算法通过仿真模块中的S函数实现,并且用参数误码率BER对三种算法的性能进行了比较。图5-2Turbo码译码仿真的Simulink模块示意5.5仿真结果与分析图5-3Turbo码系统仿真的Simulink模块示意1.交织长度对Turbo码的影响选择不同的交织长度的比较图如图5-4所示。由图可见,交织长度越大,Turbo码的纠错性能也就越好,这是因为交织器产生的交织增益,使得Turbo码的性能随帧长呈指数增长。但是,随着交织器的增大,帧长越长,迭代译码的复杂程度也随之增加,编码时延、传输时延、译码时延等越大,所以在实际应用中,需要根据系统要求选定最佳交织长度。图5-4不同交织长度对Turbo码性能的影响2.不同译码算法对Turbo码的影响图5-5给出了在其它条件相同时采用MAP、LogMAP、SOVA译码算法的结果。从图中可以看出,在三种算法中,Log-MAP算法的性能最好,但是,Log-MAP的实现也是三种算法中最复杂的,特别在实际应用中要在硬件上实现是很难的,这才导致了SOVA这些简化算法的产生。MAP算法的性能与Log-MAP算法的性能大致相当。在这三种算法中,SOVA算法最简单,同时其性能也最差。所以在实际应用中,需要根据系统要求选择合适的译码算法。在比较低的信噪比情况下,SOVA只是次优的算法,如果要获得比较好的纠错效果,最好是基于Log-MAP算法进行修正。图5-5不同译码算法的对比3.不同迭代次数对Turbo码的性能的影响迭代译码结构是Turbo码具有良好译码性能的一个重要原因。在交织长度为640、采用Log―MAP译码算法的情况下,分别迭代1次、2次、3次进行比较。可以看出,迭代次数越多,误码率越低,译码性能优越。同时,进一步可以发现迭代次数存在一个饱和值,一般5~10次即饱和,当达到饱和时,即使次数增加,译码的性能也不会明显改进,反而是迭代次数的增加会造成不必要的计算负担,所以在实际系统中要考虑饱和点来设计迭代次数。图5-6不同迭代次数对Turbo码性能的影响结论利用MATLAB的强大运算功能,基于MATLAB/Simulink进行Turbo码的编译码系统仿真,设计方便、快捷,极大的减轻了工作量。在设计过程中可以对信噪比特性,随时更改参数,以达到对各种算法优缺点的理解。经过近三个月的摸索和学习,在老师的指导和同学的帮助下我完成了此研究。在研究的实现中我主要做了如下工作:Turbo码编译码算法的理解;(2)设计仿真系统模型加以分析比较;(3)分析比较各种算法,特别是三种译码算法的性能比较。通过自行设计系统模型与仿真,加深了对Turbo码的理解。从理论上进行分析比较,再从仿真图形中进行对比,对自己在学习中的误区改善具有良好的指导作用。致谢参考文献O.TakeshiaandD.Costello.Newdeterministicinterleaverdesignsforturbocodes.IEEETransactionInformationTheory,2000,Vol.46:1988-2006.X.Liu,G.Zhang,Thedesignofanewinterleaverforturbocodes.JournalofSunYat-SenUniversityNaturalScienceEdition,2000,396:39-43.王会.王忠.Turbo码性能分析与仿真.2002袁东风,张海霞.宽带移动通信中的先进信道编码技术.北京邮电大学出版社,2004曹雪红.张宗橙信息论与编码.2004(美)传特.通信系统仿真原理与无线应用.机械工业出版社,2005周建兴.MATLAB从入门到精通.人民邮电出版社,2008张德丰.MATLAB/Simulink建模与仿真.电子工业出版社,2009邵玉斌.MATLAB/SIMULINK通信系统建模与仿真实例分析.清华大学出版社,2008冯镔,刘文予,朱光喜,马展.AWGN信道下Turbo码误比特率模型.计算机科学,2006,334:114-117.(美)麦克伊利斯著,李斗等译.信息论与编码理论(第二版).电子工业出版社,北京,2004年2月.王丙义编著.信息分类与编码.国防工业出版社,北京,2003年7月.袁东风,张海霞等编著.?宽带移动通信中的先进信道编码技术.北京邮电大学出版社,北京,2004年03月.?付永庆,刘雅琴,杜海明.Turbo码译码的收敛性与停止迭代判据.计算机工程,2004,3019:164-165.傅祖芸,赵建中编著.信息论与编码.电子工业出版社,北京,2006年04月附录functionen_outputencodermx,g,alpha,puncture%usesinterleavermap'alpha'%ifpuncture1,unpunctured,producesarate1/3outputoffixedlength%ifpuncture0,punctured,producesarate1/2output%multiplexerchoosesoddcheckbitsfromRSC1%andevencheckbitsfromRSC2%determinetheconstraintlengthK,memorym%andnumberofinformationbitsplustailbits.[n,K]sizeg;mK-1;L_infolengthx;L_totalL_info+m;%generatethecodewordcorrespondingtothe1stRSCcoder%end1,perfectlyterminated;inputx;output1rsc_encodeg,input,1;%makeamatrixwithfirstrowcorresponingtoinfosequence%secondrowcorresponsingtoRSC#1'scheckbits.%thirdrowcorresponsingtoRSC#2'scheckbits.y1,:output11:2:2*L_total;y2,:output12:2:2*L_total;%interleaveinputtosecondencoderfori1:L_totalinput11,iy1,alphai;endoutput2rsc_encodeg,input11,1:L_total,-1;y3,:output22:2:2*L_total;%paralelltoserialmultiplextogetoutputvector%puncture0:rateincreasefrom1/3to1/2;%puncture1;unpunctured,rate1/3;ifpuncture0%unpuncturedfori1:L_totalforj1:3en_output1,3*i-1+jyj,i;endendelse%puncturedintorate1/2fori1:L_totalen_output1,n*i-1+1y1,i;ifremi,2%oddcheckbitsfromRSC1en_output1,n*iy2,i;else%evencheckbitsfromRSC2en_output1,n*iy3,i;endendend%antipodalmodulation:+1/-1en_output2*en_output-onessizeen_output;functionyrsc_encodeg,x,terminated%encodesablockofdatax0/1witharecursivesystematic%convolutionalcodewithgeneratorvectorsing,and%returnstheoutputiny0/1.%ifterminated0,thetrellisisperfectlyterminated%ifterminated0,itisleftunterminated;%determinetheconstraintlengthK,memorym,andrate1/n%andnumberofinformationbits.[n,K]sizeg;mK-1;ifterminated0L_infolengthx;L_totalL_info+m;elseL_totallengthx;L_infoL_total-m;end%initializethestatevectorstatezeros1,m;%generatethecodewordfori1:L_totalifterminated0|terminated0&iL_infod_kx1,i;elseifterminated0&iL_info%terminatethetrellisd_kremg1,2:K*state',2;enda_kremg1,:*[d_kstate]',2;[output_bits,state]encode_bitg,a_k,state;%sincesystematic,firstoutputisinputbitoutput_bits1,1d_k;yn*i-1+1:n*ioutput_bits;endfunction[output,state]encode_bitg,input,state%Thisfunctiontakesasaninputasinglebittobeencoded,%aswellasthecoeficientsofthegeneratorpolynomialsand%thecurrentstatevector.%Itreturnsasoutputnencodeddatabits,where1/nisthe%coderate.%therateis1/n%kistheconstraintlength%mistheamountofmemory[n,k]sizeg;mk-1;%determinethenextoutputbitfori1:noutputigi,1*input;forj2:koutputixoroutputi,gi,j*statej-1;end;endstate[input,state1:m-1];functionL_alllogmaporec_s,g,L_a,ind_dec%Log_MAPalgorithmusingstraightforwardmethodtocomputebranchmetrics%noapproximationisused.%Canbesimplifiedto-Log-MAPbyusingapproximationlne^x+e^yx,y.%Input:rec_s:scaledreceivedbits.%rec_s0.5*L_c*yk2*a*rate*Eb/N0*yk%g:codegeneratorforthecomponentRSCcode,inbinarymatrixform.%L_a:aprioriinfo.forthecurrentdecoder,%scrambledversionofextrinsicInftyo.ofthepreviousdecoder.%ind_dec:indexofdecoder.Either1or2.%Encoder1isassumedtobeterminated,whileencoder2isopen.%%Output:L_all:log-likelihoodratioofthesymbols.Completeinformation.%Totalnumberofbits:Inftyo.+tailL_totallengthrec_s/2;[n,K]sizeg;mK-1;nstates2^m;%numberofstatesinthetrellis%Setupthetrellis[next_out,next_state,last_out,last_state]trellisg;Infty1e10;%InitializationofAlphaAlpha1,10;Alpha1,2:nstates-Infty*ones1,nstates-1;%InitializationofBetaifind_dec1BetaL_total,10;BetaL_total,2:nstates-Infty*ones1,nstates-1;elseifind_dec2BetaL_total,1:nstateszeros1,nstates;elsefprintf'ind_decislimitedto1and2!\n';end%Traceforward,computeAlphafork2:L_total+1forstate21:nstatesgamma-Infty*ones1,nstates;gammalast_statestate2,1-rec_s2*k-3+rec_s2*k-2*last_outstate2,2....-log1+expL_ak-1;gammalast_statestate2,2rec_s2*k-3+rec_s2*k-2*last_outstate2,4....+L_ak-1-log1+expL_ak-1;ifsumexpgamma+Alphak-1,:1e-300Alphak,state2-Infty;elseAlphak,state2logsumexpgamma+Alphak-1,:;endendtempkAlphak,:;Alphak,:Alphak,:-tempk;end%Tracebackward,computeBetaforkL_total-1:-1:1forstate11:nstatesgamma-Infty*ones1,nstates;gammanext_statestate1,1-rec_s2*k+1+rec_s2*k+2*next_outstate1,2....-log1+expL_ak+1;gammanext_statestate1,2rec_s2*k+1+rec_s2*k+2*next_outstate1,4....+L_ak+1-log1+expL_ak+1;ifsumexpgamma+Betak+1,:1e-300Betak,state1-Infty;elseBetak,state1logsumexpgamma+Betak+1,:;endendBetak,:Betak,:-tempk+1;end%Computethesoftoutput,log-likelihoodratioofsymbolsintheframefork1:L_totalforstate21:nstatesgamma0-rec_s2*k-1+rec_s2*k*last_outstate2,2....-log1+expL_ak;gamma1rec_s2*k-1+rec_s2*k*last_outstate2,4...+L_ak-log1+expL_ak;temp0state2expgamma0+Alphak,last_statestate2,1+Betak,state2;temp1state2expgamma1+Alphak,last_statestate2,2+Betak,state2;endL_allklogsumtemp1-logsumtemp0;endfunctionL_allsovarec_s,g,L_a,ind_dec%ThisfunctionimplememtsSoftOutputViterbiAlgorithmintracebackmode%Input:%rec_s:scaledreceivedbits.rec_sk0.5*L_ck*yk%L_c4*a*Es/No,reliabilityvalueofthechannel%y:receivedbits%g:encodergeneratormatrixinbinaryform,g1,:forfeedback,g2,:forfeedforward%L_a:aprioriinformationabouttheinfo.bits.Extrinsicinfo.fromtheprevious%componentdecoder%ind_dec:indexofthecomponentdecoder.%1:componentdecoder1;Thetrellisisterminatedtoallzerostate%2:componentdecoder2;Thetrellisisnotperfectlyterminated.%Output:%L_all:logPx1|y/Px-1|y%%Framesize,info.+tailbitsL_totallengthL_a;[n,K]sizeg;mK-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年高速公路ETC系统升级改造合同
- 2025年度智能物流平台合作返点合同范本4篇
- 2025年度现代农业设施承揽合同补充协议4篇
- 2025年度油气储罐安全检测与改造合同4篇
- 2025年10kv线路施工绿色环保与节能减排合同3篇
- 2025年度智能车位租赁合同转让协议书(全新版)4篇
- 2024年车辆购销合同示范文本
- 2025年度智能储煤场租赁管理服务合同4篇
- 2024矿用设备租赁合同
- 2025年度城市更新改造项目承包合同签约与历史文化保护协议(2024版)3篇
- 2024年海口市选调生考试(行政职业能力测验)综合能力测试题及答案1套
- 六年级数学质量分析及改进措施
- 一年级下册数学口算题卡打印
- 2024年中科院心理咨询师新教材各单元考试题库大全-下(多选题部分)
- 真人cs基于信号发射的激光武器设计
- 【阅读提升】部编版语文五年级下册第三单元阅读要素解析 类文阅读课外阅读过关(含答案)
- 四年级上册递等式计算练习200题及答案
- 法院后勤部门述职报告
- 2024年国信证券招聘笔试参考题库附带答案详解
- 道医馆可行性报告
- 视网膜中央静脉阻塞护理查房课件
评论
0/150
提交评论