基于Matlab的Turbo码仿真研究
2009-03-19邢莉王忠李兴国任昊
邢 莉 王 忠 李兴国 任 昊
摘 要:为了使Turbo码仿真更容易,研究并建立了基于Matlab中Simulink通信模块的Turbo码仿真模型。Turbo码编码器采用两个相同的分量编码器通过交织器并行级联而成。Turbo码译码器采用不同的译码算法,这些算法由S函数调用m文件实现。使用所建立的模型进行仿真,结果表明,在信噪比相同的情况下,交织长度越大、迭代次数越多、译码算法越优,Turbo码性能越好。设计实际系统时,应综合考虑各因素。
关键词:Turbo码;Simulink仿真;交织长度;迭代次数;译码算法
中图分类号:TN914文献标识码:A
文章编号:1004-373X(2009)03-019-03
Study of Turbo Code Simulation Based on Matlab
XING Li WANG Zhong LI Xingguo2,REN Hao3
(1.College of Electrial Engineering Information,Sichuan University,Chengdu,610065,China;
2.College of Mechanism Electronic Engineering,University of Electronic Sience and Technology of China,Chengdu,610054,China;
3.System Planning Department,Sichuan Electric Power Design & Consulting Co.Ltd.,Chengdu,610016,China)
Abstract:In order to make the Turbo Code simulation easier,a Turbo code simulation model based on Simulink module of Matlab is studied.Turbo encoder concatenates two same sub-encoder in parallel through interleaver.Turbo decoder can use different decoding algorithm,which are embodied by m-file S-function.Simulation result using the established model shows that the longer interleaving length,the more iteration times and the better decoding algorithm bring the better Turbo code performance with the same SNR value.
Keywords:Turbo code;Simulink simulation;interleaving length;iteration times;decoding algorithm
0 引 言
Shannon编码[1]定理指出:如果采用足够长的随机编码,就能逼近Shannon信道容量。而Turbo码以其接近Shannon理论极限的译码性能,已被采纳为3G移动通信系统的信道编码标准之一。Turbo码巧妙地将两个简单分量码通过伪随机交织器并行级联来构造具有伪随机特性的长码,并通过在两个软输入/软输出(SISO)译码器之间进行多次迭代实现了伪随机译码。采用迭代译码的方法来提高通信系统的译码性能是Turbo码的最大特点。
Turbo码的编码器、译码器结构繁琐,是一种非常复杂的信道编码方案,这使得对Turbo码的理论分析十分困难,且只能对运算复杂度作宏观分析,对Turbo码的具体实现并没有一个清楚的度量[2]。因此,使用计算机对Turbo码进行仿真分析是十分必要的。
本文分析了Turbo码编码译码的原理,考虑到Turbo码系统编译码的数据处理量很大,利用生成矩阵对信息序列进行编码、译码时的迭代计算等等,都涉及了矩阵运算,故采用Matlab/Simulink来进行建模仿真[3],同时分析了迭代次数、交织长度及不同译码算法对Turbo码性能的影响。
1 Turbo码的编码器和译码器原理
1.1 Turbo码编码器组成[4]
Turbo码的编码器的基本结构如图1所示。
Turbo码编码器主要由两个递归系统卷积编码器(RSC)、一个交织器与一个删余和复用单元组成。递归系统卷积编码器是指带有反馈的系统卷积编码器,其码率可设为R=k/n;交织器用来改变信息序列的排列顺序,获得与原始信息序列内容相同,但排列不同的信息序列;删余和复用单元的作用是从总体上改善Turbo码码率,因此通过删余和复用单元,Turbo码可以获得不同码率的码字。编码器的码字通过信道输出到译码器内。
1.2 Turbo码译码器原理
Turbo码译码器基本结构如图2所示。
Turbo码译码器由两个软输入/软输出(SISO)译码器DEC1和DEC2串行级联组成,交织器与编码器中所使用的交织器相同。译码器DEC1对分量码RSC1进行最佳译码,产生关于信息序列中每一比特的似然信息,并将其中的“新信息”经过交织送给DEC2,译码器DEC2将此信息作为先验信息,对分量码RSC2进行最佳译码,产生关于交织后的信息序列中每一比特的似然比信息,然后将其中的“外信息”经过解交织送给DEC1,进行下一次译码。这样,经过多次迭代,DEC1或DEC2的外输出信息趋于稳定,似然比渐近值逼近于对整个码的最大似然译码,然后对此似然比进行硬判决,即可得到信息序列的最佳估计值。
2 仿真模型的建立
仿真模型包括信源、编码器、信道、译码器和信宿五个部分。
在模型中,可以任意改变的参数值为:
N:交织器的大小,即Turbo码的分组长度,也即每个分组所包含的信息序列的长度。
信道类型选择:Simulink模块中可以选择设置高斯白噪声信道(AWGN)或多径瑞利衰落信道(Reyleigh Fading)。
译码算法选择:Log-MAP,Max-Log-MAP和SOVA三种译码算法。
SNR:信号与噪声强度比值。
迭代次数:迭代次数的不同对译码器输出有着一定的影响。
2.1 Turbo编码模块
本模型中Turbo码编码器采用两个相同的分量编码器通过交织器并行级联而成。分量编码器是码率为R=1/2的循环系统卷积码。
首先用贝努利发生器(Bernoulli Binary Generator)产生序列,从参数面板调节帧大小和采样率。原始序列进入第1卷积编码器(Convolutional Encoder),并经过随机交织器(Random Interleaver)后进入第2卷积编码器(Convolutional Encoder1)。删余模块1,2同时接在第1卷积编码器的后面。删余模块1(puncture1)的输出为第1卷积编码输出的奇序列,删余模块2(puncture2)的输出为第1卷积编码输出的偶序列。第3个删余模块(puncture3)接在第2卷积编码器的后面,其输出第2卷积编码输出的偶序列。这3路序列经过串并变换后合成一路序列,作为Turbo编码输出。
2.2 信道模块
信道模块包含有调制模块、信道及噪声模型、解调模块。调制方式可以采用四相相移键控(QPSK)。噪声模型可以选择设置为高斯白噪声信道(AWGN)或多径瑞利衰落信道(Reyleigh Fading)。
2.3 Turbo译码模块
Turbo码的编码部分由两个子编码器组成,因此在其译码部分也就相应有两个子译码器。该模块可以调用Log-MAP译码子程序、Max-Log-MAP算法译码子程序、SOVA算法子程序[5]供译码模块调用。这些算法通过仿真模块中的S函数实现。
3 仿真结果分析
3.1 交织器大小对Turbo码性能的影响
仿真过程中,选取译码算法为Max-Log-MAP,分别设置交织长度为150,600,1 200。三种交织长度的误码率如图3所示。
从图3中很明显看出,当信噪比SNR比较小时,不同的交织长度下译码性能的区别并不是很明显,由此可见,信噪比对译码的影响是很大的。当信噪比大于1 dB时,交织长度越大,译码器的性能就越优越,Turbo码的纠错性能也就越好。这是因为交织器产生的交织增益使得Turbo码的性能随帧长呈指数增长。同时,交织长度的增大使帧长变长,迭代译码的复杂程度也随之增加。一系列问题如编码时延、传输时延、译码时延等就明显。在实际系统中,需要综合考虑选定最佳交织长度。
3.2 迭代次数对Turbo码性能的影响
迭代译码结构是Turbo码具有良好译码性能的一个重要原因。在交织长度为600、采用Max-Log-MAP译码算法的情况下,分别迭代1次、2次、4次进行比较。译码器性能如图4所示。
可以看出,迭代次数越多,误码率越低,译码性能优越。同时,进一步可以发现迭代次数存在一个饱和值,一般5~10次即饱和,当达到饱和时,即使次数增加,译码的性能也不会明显改进,反而是迭代次数的增加会造成不必要的计算负担,所以在实际系统中要考虑饱和点来设计迭代次数。
3.3 不同译码算法比较
图5是不同算法译码性能的比较,其中交织长度设定为600,迭代次数为3次。比较来说,Log-MAP算法的译码效果最好,Max-Log-MAP算法译码效果比较差,但是具有较快的运算速度。SOVA算法效果不错,是较优方案。因此,在信噪比比较低的情况下,为了要获得较好的纠错效果,最好基于Log-MAP算法进行修正。
4 结 语
提出一种基于Simulink模块和S函数共同构建的Turbo码仿真模型。在编码器中,分量码采用循环系统卷积码,使分量码的奇序列与原始信息相同;在译码器中,三个算法子程序可以任意选择比较,使Turbo码的仿真易于实现,方便了对Turbo码的分析和应用研究。利用仿真结果分析了迭代次数、交织长度、不同算法对译码性能的影响,对实际系统设计有一定的指导作用。
参考文献
[1]王会,王忠.Turbo码性能分析与仿真.成都:四川大学,2002.
[2]陈朝,陈芳,周峰.一种基于Matlab的Turbo码编码仿真实现.信息与电子工程,2005,3(3):179-181.
[3]邓华.Matlab通信仿真及应用实例详解.北京:人民邮电出版社,2003.
[4]周贤伟,赵欣,王丽娜.使用Simulink构建Turbo码仿真系统.微计算机信息,2006,22(15):202-204.
[5]钟麟,王峰.Matlab仿真技术与应用教程.北京:国防工业出版社,2004.
[6]Giulietti A,Vander Perre L,Strum M.Parallel Turbo Coding Interleavers:Avoiding Collisions in Accesses to Storage Elements[J].Electronics Letters,2002,38(5):232 -233.
[7]杜海明.Turbo码及其应用研究的最新进展[J].郑州轻工业学院学报,2006(2):71-74.
[8]曹雪红,张宗橙.信息论与编码.北京:清华大学出版社,2004.
[9]熊华,曾常安,王峰.分组、随机交织器相关系数仿真分析[J].华北电力大学学报,2007(1):106-110.
[10]魏景新,王琳.Turbo码编译码原理与应用新进展[J].华北科技学院学报,2007(1):58-61.
[11]朱仁峰,邵菲,周辉.交织技术在信源信道联合编译码中的应用[J].装备指挥技术学院学报,2006(5):74-77.
作者简介
邢 莉 女,1984年出生,硕士研究生。主要研究方向为现代信号处理,无线通信。