关于信道编码中Turbo码的原理与实.docx

上传人:scccc 文档编号:14419992 上传时间:2022-02-05 格式:DOCX 页数:12 大小:71.09KB
返回 下载 相关 举报
关于信道编码中Turbo码的原理与实.docx_第1页
第1页 / 共12页
关于信道编码中Turbo码的原理与实.docx_第2页
第2页 / 共12页
关于信道编码中Turbo码的原理与实.docx_第3页
第3页 / 共12页
关于信道编码中Turbo码的原理与实.docx_第4页
第4页 / 共12页
关于信道编码中Turbo码的原理与实.docx_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《关于信道编码中Turbo码的原理与实.docx》由会员分享,可在线阅读,更多相关《关于信道编码中Turbo码的原理与实.docx(12页珍藏版)》请在三一文库上搜索。

1、关于信道编码中Turbo 与实现码的原理Turbo码的编码原理及实现摘要纠错码技术作为改善数字通信可靠性的一种有效手段,在数字通信的各个 领域中获得极为广泛的应用。Turbo码是并行级联递归系统卷积码,在接近 Shannon限的低信噪比下能获得较低的误码率,现已被很多系统所采用。本文分 析了 Turbo码编码译码的原理,为了使Turbo码仿真更容易,研究并建立了基 于Matlab中Simulink通信模块的Turbo码仿真模型。使用所建立的模型进行 仿真,结果表明,在信噪比相同的情况下,交织长度越大、迭代次数越多、译 码算法越优,Turbo码性能越好,设计实际系统时,应综合考虑各因素。关键词:

2、Turbo码;Simulink仿真;交织长度;迭代次数AbstractAs an effective means to improve the reliability of digital communication9 error correcting code technology is widely used in the field of digital communication.Turbo code is a parallel concatenated recursive systematic convolutional code, which can obtain lower bi

3、t error rate in the low SNR near Shannon limit,which is now used by many systems.In this papeithe principle of Turbo coding and decoding is analyzed,in order to make the Turbo Code simulation easieia Turbo code simulation model based on Simulink module of Matlab is studied. Simulation result using t

4、he 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 simulationjlnterleaving lengthjteration times;引言根据Shanno噪信道编码定理,在信道传输速率R不超过信道容量C的前 提下

5、,只有在码组长度无限的码集合中随机地选择编码码字并且在接收端采用最 大似然译码算法时,才能使误码率接近为零。但是最大似然译码的复杂性随编码 长度的增加而加大,当编码长度趋于无穷大时,最大似然译码是不可能实现的。 所以人们认为随机性编译码仅仅是为证明定理存在性而引人的一种数学方法和 手段,在实际的编码构造中是不可能实现的。直到Turbo的出现,人们才改变 了这种看法。1993年,Claud Bernou等人在国际通信会议(ICC93)上提出了并 行级联卷积码(PCCC)即Turbo码,由于它很好地应用了 Shannon信道编码定理 中的随机性编译码条件,从而获得了几乎接近Shannon理论极限的

6、译码性能。Turbo码巧妙地将两个简单分量码通过伪随机交织器并行级联来构造具有 伪随机特性的长码,并通过在两个软输入/软输出(SISO)译码器之间进行多次迭 代实现了伪随机译码。采用迭代译码的方法来提高通信系统的译码性能是Turbo 码的最大特点。Turbo码的编码器、译码器结构繁琐,是一种非常复杂的信道编 码方案,这使得对Turbo码的理论分析十分困难,且只能对运算复杂度作宏观 分析,对Turbo码的具体实现并没有一个清楚的度量。因此,使用计算机对Turbo 码进行仿真分析是十分必要的。本文分析了 Turbo码编码译码的原理,考虑到 Turbo码系统编译码的数据处理量很大,利用生成矩阵对信息

7、序列进行编码、译 码时的迭代计算等等,都涉及了矩阵运算,故采用Matlab/Simulink来进行建模 仿真。1 Turbo码编码原理Turbo码的典型编码器如图1所示,Turbo码编码器主要由分量编码器、交 织器复接器组成。分量码一般选择为递归系统卷积(RSC, Recursive Systematic Convolutional)121,当然也可以是分组码(BC, Block Code)、非递归卷积(NRC, Non-Recursive Convolutional)码以及非系统卷积(NSC , Non-Systematic Convolutional)码,但从后面的分析将看到,分量码的最佳

8、选择是递归系统卷积 码。通常两个分量码采用相同的生成矩阵,当然分量码也可以是不同的。以分量码为RSC为例,分量编码器为递归系统卷积码(RSC)编码器。第一个 RSC之前不使用交织器,后续的每个RSC之前都有一个交织器与之对应。一个 Turbo编码器中原则上可采用多个RSC,但通常只选用2个,因为过多的RSC 分量编码器将使得译码非常复杂而难以实现。通常的Turbo码编码器中,长度 为N的信息序列怎在送入第一个分量编码器的同时作为系统输出代直接送 至复接器,同时/经过一个N位交织器,形成一个新序列(长度与内容没 变,但比特位置经过重新排列。包与忆分别传送到两个分量码编器(RSC1与 RSC2)。

9、一般情况下,两个分量码编码器的结构相同,生成分量码校验序列苗0 和姬。 J化与未编码的信息序列依经过复接后,生成Turbo码序列鼠, 将编码序列调制后,即可发射进入信道传输。交织匕2 Matlab仿真及结果2.1 Turbo码仿真系统的实现Turbo码是经过模拟仿真来的,而不是根据既定的设计准则得到的。许多研 究者正寻找其工作机理以便更好为Turbo码的构造提供理论依据。至到现在 Turbo码的研究成果很大一部分是通过对各种参数的模拟性能结果中得到的。模 拟仿真时,衡量其编码性能的好坏主要以误码率BER(Bit Error Rate)来的。仿 真中使用加性高斯白噪声信道(AWGN)模型,因为它

10、易于构建,也是具有代表性 的信道模型之一,同时假设使用BPSK调制方式。根据Turbo码系统的结构特点, 将整个Turbo编译码系统合理地划分成多个模块,使用MATLAB通过模块化设计 实现了可以用于计算机模拟的Turbo编译码系统。系统所包涵的模块具体划分 为:主程序、信道模型子程序、交织子程序、RSC编码子程序、使用不同的算法 进行译码的译码子程序等。仿真中使用加性高斯白噪声信道(AWGN)模型,因为它易于构建,也是具有 代表性的信道模型之一,同时假设使用BPSK调制方式。根据Turbo码系统的结 构特点,本文将整个Turbo编译码系统合理地划分成多个模块,使用MATLAB通 过模块化设计

11、实现了可以用于计算机模拟的Turbo编译码系统。系统所包涵的 模块具体划分为:主程序、信道模型子程序、交织子程序、RSC编码子程序、使 用不同的算法进行译码的译码子程序等。主程序控制着整个系统的流程。主程序首先完成对系统的先期设置,包括 分量RSC的生成矩阵、帧大小(即交织器的大小)、迭代次数、使用何种译码算 法等等。然后,随即生成1,0信息源,调用各子程序完成编码、传输以及译码 的过程。仿真中使用加性高斯白噪声信道(AWGN)模型,因为它易于构建,也是具有 代表性的信道模型之一,同时假设使用BPSK调制方式。根据Turbo码系统的结 构特点,本文将整个Turbo编译码系统合理地划分成多个模块

12、,使用MATLAB通 过模块化设计实现了可以用于计算机模拟的Turbo编译码系统。系统所包涵的 模块具体划分为:主程序、信道模型子程序、交织子程序、RSC编码子程序、使 用不同的算法进行译码的译码子程序等。交织子程序供主程序调用,主要完成对信息比特序列进行位置的随机置换,并提供给RSC2进行编码。对每帧进行置换的格式将保存下来,以便在译码过程 中进行正确的解交织。RSC编码子程序供主程序调用,完成编码。网格图生成子 程序供译码子程序调用,用于生成给定生成矩阵对应的网格图。对一帧编码的 子程序供RSC编码子程序调用,用于对一帧的信息比特编码。对一位信息比特 编码子程序供对一帧编码的子程序调用,用

13、于对单个输入比特进行编码。信道 模型及复用调制子程序供主程序调用,用于生成信道模型,将两个RSC分量编 码器编码序列和信息序列进行复用,根据需要的码率组成整个编码器的编码结 果,然后使用AWGN信道模型将编码序列进行调制,模拟进入信道传输。译码前 解复用子程序供主程序调用,用于从模拟信道接收观测序列,并将观测序列解 复用,分解成系统比特序列和两个校验序列。译码子程序同主程序调用,用于 实现具体的译码算法,对观测序列进行译码。2.2 Turbo码的仿真结果及分析影响Turbo码性能的参数很多,这里分别就不同的译码算法、迭代次数、 交织长度对Turbo码性能的影响进行分析,给出仿真结果。2. 2.

14、1不同译码算法对Turbo码的性能影响图6给出了采用不同译码算法下的Turbo码仿真结果。Turbo码码率为 1/3, Log-Map算法和MAX-Log-Map算法译码迭代次数为3。从图中可以观察到 Log-MAP译码算法性能明显要优于MAX-Log-MAP和SOVA。在误码率为104时, Log-MAP译码算法比MAX-Log-Map译码算法好0.4dB,比SOVA好2dB以上。 Max-Log-MAP算法用到了近似公式,故性能比Log-MAP有所下降。验证了译码 算法性能MAPLog-MAPMAX-Log-MAPSOVA的结论。SOVA算法虽然性能是几种 算法中最差的,但复杂性较低易于实

15、现。在实际运用中,要结合具体的情况, 权衡硬件的复杂度和性能要求,选择合适的译码算法。60.20.406088幽tn化法悭 /丁 111x6图6不同译码算法对Turbo码的影响迭代次数0J 0406081214EM力闽2J 24d J J。 相 丁 1 1 4 11 4图7迭代次数对Turbo码的影响图7给出了不同迭代次数下,Turbo码的误比特率与信噪比的关系曲线,采 用MAX-Log-MAP算法,码率为1/3。从图7所示的仿真结果可以看出,随着迭代次数的增加,Turbo码的误比特 率曲线不断降低并趋于收敛;而且随着信噪比的增加,迭代对误比特率性能的 影响越来越明显。这是Turbo码通过迭代

16、译码充分利用冗余信息来提高编译码 性能这一特点的反映。最初,迭代译码的增益较高,但随着迭代次数的增加, 译码增益增长相对缓慢,虽然继续增加迭代次数可以提高Turbo码的性能,但 权衡迭代所需要的时间、性能改善的幅度,我们通常都选取合适的迭代次数。 2. 2.3交织长度a忑自3图8交织长度对Turbo码的影响图8给出了不同交织长度下,Turbo码的误比特率与信噪比的关系曲线。从图8 中可以看出,交织长度越大,性能就越好,而且交织长度对性能的影响是很大 的,这是由于交织器的存在所产生的所谓交织增益,使得Turbo码的性能随交 织长度的增长而改善且在交织长度足够长时接近信道容量。交织长度是决定 Tu

17、rbo码性能的一个重要因素。但是与Turbo码不同,卷积码的一个优点在于只 要帧长远大于码的约束长度,其性能就与帧长没有关系,另外,Turbo码性能的 另一个重要因素是迭代译码所产生的译码复杂度,所以我们有必要在短帧的情 况下,将Turbo码与采用最大似然译码算法的卷积码纠错性能和复杂度作一个 比较。在高斯信道环境下作了仿真比较,得到在同样信噪比的条件下,要达到IO 级BER的要求时,卷积码的复杂度小于Turbo码,在瑞利衰落信道下,结论也 相似。短帧传输有着广泛的应用,诸如在移动通信中,话音和控制信息通常采 用小于300比特的短帧,通常话音和信令的误码率要求在5x10-到5x10-之间。 由

18、上述结论可知,在对帧长有要求的移动通信系统中,在一定的误码率要求下, Turbo码并不是最佳的准则,在考虑译码复杂度的情况下,卷积码反而比Turbo 码具有更好的性能。反之,对于帧长较长的情况下,采用Turbo码将更有优势。同时,我们还应该注意到交织深度和编译码时延之间还存在着一个兼顾的 问题。Turbo码的时延包括编码时延、码组传输时延、译码器时延及交织和解交 织时延。交织长度越长,时延也越大。通信系统中,时延是个很重要的因素, 实时的通信系统中总是对时延提出了较高的要求。在实际的应用中,需要根据 时延的要求来确定最佳的码长。5结束语Turbo码的出现为信道编码理论和实践带来了一场革命,在理

19、论上,它有着 不同于以往的结构,使通过可译码编码逼近信道容量成为可能;在实践上,只 要时延和复杂度允许,Turbo码可在各种恶劣条件下提供接近极限的通信能力。 Turbo码在中高噪声的应用环境中的性能比以往其他的信道编码要好很多,这是 它的一大优点。但是,Turbo码也有自己的不足:(1)计算量大,要得到高码率,往往需要很大的交织器,这就增加了译码 的复杂性,而较短的交织器不可能达到高码率,因此往往要根据实际需要来确 定码率和计算复杂性之间的平衡来设计相应的Turbo码。(2)由交织和迭代译码造成的时延使Turbo码在某些对时延要求高的通信 系统(如数字电话、数字音像广播、数据包通信、太空通信

20、等)中的应用受到 限制。(3)理论分析困难,至今尚未有对Turbo码译码复杂性,比特误码率完整 的理论分析和估计。一般是通过数值模拟与单个卷积码、乘积码、级联码比较 或不同译码方法之间的性能比较。参考文献1王会,王忠.Turbo码性能分析与仿真D.成都:四川大学,2002.2陈朝,陈芳,周峰.一种基于Matlat的Turbo码编码仿真实现J.信息与电子 工程,2005, 3(3) : 179181.3邓华.Matlat,通信仿真及应用实例详解国.北京:人民邮电出版社2003.4周贤伟,赵欣,王丽娜.使用Simulink构建Turbo码仿真系统J.微计算机信 息,2006, 22( 1s) :

21、202-204.5钟麟,王峰.M atlal,仿真技术与应用教程M .北京:国防工业出版社,2004.附录:核心源码展示:Logmap. mfunction L_all = logmapo(rec_s,g,L_a,ind_dec)Ljotal = length(re c_s)/2;%系统信息/校验信息的长度nJK = size(g);m = K-l; %编码器移位寄存器个数nstates = 2Am;%编码网格图状态数 %建立网格图,得到网格图上前一个输出比特及状态、下一个输出比特及状态next out, next-state, last_out, last_state = trellis(g

22、);Infh- = lelO;%定义无穷大%初始化AlphaAlpha。)=0;Alpha(l92:nstates) = -Infty *ones(l,nstates-l);%初始化beta,第一个分量码的网格图归零,第二个不归零if ind_dec=lBeta(L_total,l) = 0;Beta(L jotal,2 :nstates) = Infh*ones(l,nstates-1);elseif ind_dec=2Beta(L Jotal,l :n$tates) = zeros(l,nstates);end%前向递推计算alpha值for k= 2:L_total+lfor state

23、! = Instatesgamma = -Infty*ones(l,nstates);%计算输入为0时的gamma值;gamma(last_state(state2,l)=(-rec_s(2*k-3)+rec_s(2*k2)*last_out(state24).-.-log(l+exp(L_a(k-l);%计算输入为1时的gamma的值;gamma(last_state(state2,2)= (rec_s(2*k-3)+rec_s(2*k-2)*last_out(state2,4).+L_a(k-l)-log(l+exp(L_a(k-l);%根据gamma值和前一时刻的alpha值计算前向递推

24、计算当前时刻的alpha值if(sum(exp(gamma4-Alpha(k-l,:)le-300)Alpha(k,state2)=-Infty;elseAlphaCKstatel) = log( sum( exp( gamma+Alpha(k-l9:);endend%alpha值归一化,对数形式为减去最大值tempmax(k) = max(Alpha(K:);Alpha(k,:) = Alpha(k,:) - tempmax(k);end%后向递推计算beta值for k =for statel = Lnstatesgamma = -Infty*ones(l,nstates);%输入为0时的

25、gamma值gamma(next_state(statel,l) = (-rec_s(2*k+l)+rec_s(2*k+2)*next_out(statel,2)-log(l+exp(L_a(k+l);%输入为1时的gamma值gamma(next_state(statel,2) = (rec_s(2*k+l)+rec_s(2*k+2)*next_out(statel,4).+L_a(k+l)-log(l+exp(L_a(k+l);%根据gamma值和前一时刻的beta值计算前向递推计算当前时刻的beta值if(sum(exp(gamma+Beta(k+l,:)le-300)Beta(k,st

26、atel)=-Infty;elseBeta(k,statel) = log(sum(exp(gamma+Beta(k+l,:);endend%beta值归一化,对数形式为减去最大值Beta(L:) = Beta(k,:) - tempmax(k+l);end%计算对数似然比形式的软输出for k= l:L_totalfor statel = LnstatesgammaO = (-rec_s(2*k-l)+rec_s(2*k)*last_out(state2,2).-log(l+exp(L_a(k);gammal = (rec_s(2*k-l)+rec_s(2*k)*last_out(state2,4).+L_a(k)-log(l+exp(L-a(k);temp0(state2) = exp(gammaO + Alpha(kJast_state(state2J) + Beta(k,state2);templ(state2) = exp(gammal + Alpha(k,last_state(state2,2) + Beta(k,state2);endL_all(k) = log($um(templ) - log(sum(tempO);end

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1