turbo编译码误码率性能matlab仿真
时间:2022-09-25 06:30:00
目录
1.算法描述
2.部分程序
3.预览部分仿真图
4.获取源码的方式
1.算法描述
Turbo代码是一种极其复杂的信道编码技术,由于硬件实现的复杂性过高或译码延迟过长,译码算法往往难以实现。现目前Turbo代码领域的主要问题是如何在复杂性和延迟可接受的前提下获得最佳的系统性能。Turbo代码由交织器级联的分量码组成。因此,重量码和交织设计的质量取决于Turbo代码性能的关键因素。在实际的通信系统中,为了提高系统的带宽效率,一种方法是通过删除部分验证比特来提高编码速率,称为删除剩余。
Turbo编码过程实际上是一个使用强约束短码构建伪随机长码的过程。Turbo编码算法主要有两类。基于最大后验概率(MAP)软输出算法主要包括标准MAP算法,对数域Log.MAP算法和Max. Log-MAP算法,修正MAP算法(M-MAP)、滑动窗MAP(SW-MAP)算法和只向前推进的算法MAP算法(OSA)。其中,MAP算法是MAP通过将大量乘法运算转化为加法运算,简化算法的复杂性。
Turbo该代码由两个循环系统并行组成:迭代串行解码交织器Turbo 代码是独一无二的,它可以使信息序列随机化,增加每个代码字之间的重量,从而提高代码的保护能力。
Turbo如图1所示:
从图1的模拟结果可以看出,Turbo编码器主要由重量删除矩阵、交织器、两个重量编码器和复接器组成。
重量编码器是Turbo编码器的重要组成部分。Turbo使用代码的重量编码器RSC由于循环编码器可以提高代码的比特误码率性能。
删余矩阵是通过删除冗余的校验位来调节码率,Turbo码采用两个成员编器。
交织器的作用是改变信息结构,分散和不规则传输过程中的突发错误。可以改变交织器Turbo 因此,交织器对重量分布Turbo 代码性能的质量起着重要的作用。在Turbo 在代码中,交织器尽可能随机地分布输入代码符号的顺序,削弱代码符号之间的相关性,从而使进入每个子代码器的信息序列无关。
Turbo代码的译码使用迭代码。EXIT图可以跟踪迭代码的过程,从而估计迭代码的收敛性。EXIT在实现一定性能要求时,还可以预测必要的迭代翻译次数。它为分析迭代翻译过程和设计迭代翻译方案提供了有力的工具。
Turbo译码器主要包括两个重量译码器模块、交织器模块、解交织器模块和硬判断模块。
Turbo如图2所示:
Turbo译码器的工作原理是:将接收到的串行数据串行转换,并填写虚拟比特。将信息序列r0以及RSC1生成的验证序列r输入软输出译码器1,软输出译码器1生成的外部信息序列Z1k交织后作为下一个软输出译码器2的输入。信息序列r0通过交织器输入到译码器2,同时输入RSC2生成的验证序列r2。
译码器2的输出外信息Z2k解交织器后,作为反馈输入到译码器1,重复上述软判断过程,直到最终译码输出性能不再提高,最终结果作为判断输出。
这种解码器结构的优点是,每个解码器不仅可以使用解码器的信息比和验证比,还可以使用前一个解码器提供的信息进行解码,从而提高解码的准确性。它的缺点是迭代需要更多的时间和延迟Turbo代码在一些对延迟要求较高的通信系统(如数字电话等)中应用有限。
Turbo基于最大后验概率的编码算法(MAP)软输出维特比算法或(SOVA)算法。MAP算法是最小化符号或比特差错概率,SOVA算法是最小化序列错误概率。SNR环境下,MAP算法比SOVA算法的性能有所提高,但是MAP算法每时每刻都要考虑所有的路径,其运算是乘法和指数运算,比较复杂。
2.部分程序
N = 512;%设置奇偶校验矩阵大小 M = 256; SNR = 0:0.5:4; max_iter = 50; TJL = 10000; for i=1:length(SNR) Bit_err(i) = 0; Num_err = 0; Numbers = 0; %误码率累加器 N0 = 2*10^(-SNR(i)/10); while Num_err <= TJL Num_err fprintf('Eb/N0 = %f\n', SNR(i)); Trans_data = round(rand(1,N-M)); %产生需要发送的随机数 turbo_code = turbo_encode(Trans_data); Trans_BPSK = 2*turbo_code-1; %BPSK %通过高斯信道 Rec_BPSK = awgn(Trans_BPSK,SNR(i),'measured'); %turbo译码 x_hat = round(turbo_decode(Rec_BPSK)); [nberr,rat]= biterr(x_hat,Trans_data); Num_err = Num_err nberr; Numbers = Numbers 1; end Bit_err(i)=Num_err/(N*Numbers); end
3.预览部分仿真图
4.获取源码的方式
点击下载链接:
turbo编码误码率性能matlab仿真 word版说明文档 程序操作视频
获取方式2:
博客资源项,搜索与博文同名资源。
获取方式3:
如果下载链接失效,请添加博客微信联系。
A_047