Turbo码的编译码算法仿真汇总
- 格式:doc
- 大小:307.00 KB
- 文档页数:10
Turbo码原理及仿真1993 年C.Berrou、A.GIavieux 和P.Thitimajshiwa 首先提出了称之为Turbo 码的并行级联编译码方案。
Turbo码性能取决于码的距离特性。
线性码的距离分布同于重量分布,如果低重量的输入序列经编码得到的还是低重量的输出序列,则距离特性变坏。
该特性对于块码来说不存在问题;然而对于卷积码,则是个非常严重的问题。
因为卷积码的距离特性是影响误码率的一个非常重要的因素。
在Turbo码中,利用递归系统卷积码(RSC)编码器作为成员码时,低重量的输入序列经过编码后可以得到高重量的输出序列。
同时交织器的使用,也能加大码字重量。
实际上,Turbo码的目标不是追求高的最小距离,而是设计具有尽可能少的低重量码字的码。
Turbo 码由两个递归系统卷积码(RSC)并行级联而成。
译码采用特有的迭代译码算法。
1 Turbo码编码原理編码M 2 Turbo典型的Turbo码编码器结构框图如图2所示:由两个反馈的编码器(称为成员编码器)通过一个交织器I并行连接而成。
如果必要,由成员编码器输出的序列经过删余阵,从而可以产生一系列不同码率的码。
例如,对于生成矩阵为g=[g1,g2]的(2,1, 2)卷积码通过编码后,如果进行删余,则得到码率为1/2的编码输出序列;如果不进行删余,得到的码率为1/3。
一般情况下,Turbo码成员编码器是RSC编码器。
原因在于递归编码器可以改善码的比特误码率性能。
32编码图了 Tbrtw 码怕码曙方案中使用的Turbo 码为1/3码率的并行级联码,它的编码器由两个相同的码率为 1/2的RSC 编码器及交织器组成,如图4所示。
由于与非递归卷积码相比,递归卷积码产生的码字重量更大,所以这里采用了两个相同的系统递归卷积码(RSC)。
信息序列分成相同的两路,第一路经过 RSC 编码器1,输出系统码A及校验码C 2。
另一路先通过交织器进行交织,使信息序列在1帧内重新排列顺序,然后经过 RSC 编码器2得到系统码和对应的校验码,由于该系统码和A 实际上都是原信息序列,只是排列顺序不同,在接收端完全可以通过对进行交织得到,因此在传输过程中可以省去,而只保留对应的校验位q。
Turbo码的编译码原理及仿真内容摘要:Turbo 码是巧妙地将两个简单分量码通过伪随机交织器并行级联来构造具有伪随机特性的长码,并通过在两个输入/输出(SISO)译码器之间进行多次迭代实现了伪随机译码。
目前Turbo 码的大部分研究致力于在获得次优性能的情况下减小译码复杂度和时延,从而得到可实现的Turbo码系统。
Turbo码具有极其广阔的应用前景,是信道编码界的一个重大突破,被称为二十一世纪的纠错编码。
本文介绍了Turbo 码的产生背景,研究意义,研究现状(编译码技术、Turbo码的设计和分析、Turbo码在CDMA系统中的研究及应用、面向分组的Turbo码、Turbo码与其它通信技术的结合),编码原理、译码原理及Turbo码的性能仿真及设计。
通过对Turbo编译码原理的介绍及性能仿真的波形、频谱图的结果,本文对系统进行性能分析,并作了进一步的改进和调试。
仿真结果证明了整个设计系统的正确性。
由频谱特性可以看出:Turbo码不仅能够有效地抵御加性高斯噪声,而且具有很强的抗衰落和抗干扰特性。
可以看出,Turbo码在现代通信中具有较大的优越性和重要作用。
关键词:turbo码编码译码仿真Turbo Code principle And SimulationAbstract: The Turbo code is ingeniously two simple component code by pseudo random interleaver parallel cascade constructs has random characteristic of long code, and through the two input / output ( SISO ) decoder between iteration realized pseudorandom decoding. At present, most of research devoted to the Turbo code in obtaining suboptimal performance in the absence of reducing decoding complexity and delay, thus can realize Turbo code system. Turbo code has extremely broad application prospect, is the channel coding community a major breakthrough, known as the twenty-first Century error correction coding.This paper introduces the Turbo code generation background, research significance, research status ( compiled code technology, design of Turbo code and Turbo code analysis, in the CDMA system research and application, a packet-oriented Turbo code, Turbo code and other communications technologies ), encoding, decoding principle of principle and performance simulation of Turbo codes and design.Based on the Turbo compiler code principle introduction and performance simulation waveform, the result of spectrum, the system performance analysis, and made a further improvement and debugging. The simulation results prove that the design scheme is correct. The spectral character can see: Turbo code can not only effectively against the Gauss noise, but also has strong resistance to fading and interference properties. As can be seen, the Turbo code in modern communication has more advantages and important role.Keywords: the turbo code encoding decoding simulation目录前言 (1)1 绪论 (2)1.1T URBO码的研究背景及发展 (2)1.2本文的论文结构安排 (4)2 TURBO码的编码原理 (5)2.1T URBO码的编码器的组成 (5)2.2T URBO码的删余矩阵 (6)2.3T URBO码的交织器 (7)2.4本章小结 (9)3 TURBO码的译码原理 (9)3.1T URBO码的译码结构 (9)3.2T URBO码的LOG-MAP算法 (11)3.3SOVA译码算法 (13)3.4各种译码算法的比较 (14)3.5本章小结 (15)4 TURBO码的性能仿真及设计 (15)4.1T URBO码仿真系统的实现 (15)4.2T URBO码的仿真结果及分析 (19)4.2.1 不同码率对Turbo码的性能影响 (19)4.2.2 不同译码算法对Turbo 码的性能影响 (19)4.2.3 迭代次数 (20)4.2.4 交织长度 (21)4.3本章小结 (22)5 结束语 (22)参考文献 (24)Turbo码的编译码原理及仿真前言随着社会、经济的快速发展,Turbo码的应用越来越广泛。
Turbo码仿真报告系(部)名称通信工程学院姓名XXXX学号XXXX课程名称通信系统的计算机模拟Turbo 码1: turbo 码的编码介绍 1.1:框图一个常见的Turbo 码编码器如图所示。
两个分量编码器之间通过交织器相连,分量编码器对相同的输入信息进行编码,交织器保证两个分量编码器输出信息尽量不相关。
通常输出的信息比特序列只需要从任何一个分量编码器中选取即可,但考虑到实现问题,选取不经过交织的那一路比特序列要方便得多。
另外,为了能够提高编码速率,两个分量编码器输出的校验比特序列经删余和复用后输出,信息比特序列一般不进行删余处理。
1.2:分量编码器介绍上图给出编码约束度K=3,生成多项式12(,)(7,5)g g 的RSC 编码框图。
若k 时刻的输入比特位k u ,则输出的字码k x 是一个二进制比特对(,)s p k k x x ,其中,sk k x u =称为信息比特,p k x 称为校验比特。
记位移寄存器的输入k a ,则:111k k k u k i a u g a --==+∑ 1210k p ki k i x g a --==∑对K=3的RSC 码,他的状态转移和时间的关系可以形象用网格图表示,对于K=3的情况一共有4个状态,而且没一个状态有两个转移状态,分别对应+1或-1的情况,分支上的数据分别表示K 时刻RSC 编码器的输入和输出,若k-1时刻RSC 编码器处于0状态,并输入0时,则k 时刻编码器仍处于0状态,并输出00,当输入1时,则k 时刻编码器转到2状态,并输出11.1.3:交织器介绍交织器是Turbo 码编码器主要的组成部分,也是Turbo 码的重要特征之一。
线性码的纠错译码性能实质上是由码字的重量分布决定的,Turbo 码也是线性码,所以其性能也是由码字重量分布决定。
在传统的信道编码中,所使用的交织器一直是分组交织器或卷积交织器,其目的主要是抗信道突发错误,即将信道或级联码内码译码器产生的突发错误随机化,把由于受到噪声干扰而导致具有相关性的数据恢复成相互独立的交织器是一个映射函数优点:1:作用:将输入信息序列中的比特位置进行重置,以减小分量码输出校验序列的相关性和提高码重。
卷积码(或者Turbo码)的交织与解交织的仿真编程和仿真实验一、实验目的实现卷积码(或者Turbo码)的交织与解交织的仿真编程和仿真实验,观察交织编码分别在白噪声信道和衰落信道下系统误码率的影响,分析原因。
二、实验原理信道编码中采用交织技术,可打乱码字比特之间的相关性,将信道中传输过程中的成群突发错误转换为随机错误,从而提高整个通信系统的可靠性。
交织编码根据交织方式的不同,可分为线性交织、卷积交织和伪随机交织。
其中线性交织编码是一种比较常见的形式。
所谓线性交织编码器,是指把纠错编码器输出信号均匀分成m个码组,每个码组由n段数据构成,这样就构成一个n×m的矩阵。
这里把这个矩阵称为交织矩阵。
如图1所示,数据以a11,a12,…,a1n,a21,a22,…,a2n,…,aij,…,am1,am2,…,amn(i=1,2,…,m;j=1,2,…,n)的顺序进入交织矩阵,交织处理后以a11,n21,…,am1,a12,a22,…,am2,…,a1n,a2n,…,amn的顺序从交织矩阵中送出,这样就完成对数据的交织编码,如图1所示。
还可以按照其他顺序从交织矩阵中读出数据,不管采用哪种方式,其最终目的都是把输入数据的次序打乱。
如果aij只包含1个数据比特,称为按比特交织;如果aij包含多个数据比特,则称为按字交织。
接收端的交织译码同交织编码过程相类似。
图 1 交织编码矩阵一般来说,如果有n个(m,k)码,排成,n×m矩阵,按列交织后存储或传送,读出或接收时恢复原来的排列,若(m,k)码能纠t个错误,那么交织后就可纠m个错误。
对纠正信道传输过程中出现的突发错误效果明显,如图2所示。
图2 交织编码示例GSM中使用这种比特交织器。
其交织方式为将信道编码后的每20ms的数据块m=456b拆分到8组中,每组57b,然后这每组57 b分配到不同的Burst中三、实验流程卷积交织解卷积交织四、源程序1、交织程序1)卷积交织function [aa]=jiaozhi(bb,n)%jiaozhi.m 卷积交织函数n=28; %分组长度%bb 卷积交织前原分组序列%aa 卷积交织后分组序列%序号重排方式:cc=[ 1 23 17 11 5 17 21; 8 2 24 18 12 6 28; 15 9 3 25 19 13 7; 22 16 10 4 26 20 14 ];%交织矩阵bb=[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28];for i=1:naa(i)=bb(cc(i));end(2)循环等差交织function [aa]=jiaozhi_nocnv(bb,n)%jiaozhi_nocnv.m 循环等差交织函数n=28; %分组长度%bb 循环等差交织前原分组序列%aa 循环等差交织后还原分组序列%序号重排方式:bb=[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ]; j=1;for i=1:nj=rem(j+5-1,n)+1; %序号重排方式迭代算法aa(n+1-i)=bb(j);end2、解交织程序(1)解卷积交织function [bb]=jiejiaozhi(aa,n)%jiejiaozhi.m 解卷积交织函数n=28;% 分组长度%aa 解卷积交织前原分组序列%bb 解卷积交织后分组序列%序号重排方式:cc=[ 1 23 17 11 5 27 21; 8 2 24 18 12 6 28; 15 9 3 25 19 13 7 ;22 16 10 4 26 20 14 ]; aa=[ 1 8 15 22 23 2 9 16 17 24 3 10 11 18 25 4 5 12 19 26 27 6 13 20 21 28 7 14 ]; for i=1:nbb(cc(i))=aa(i);end(2)解循环等差交织function [bb]=jiejiaozhi_nocnv(aa,n)%jiaozhi_nocnv.m 解循环等差交织函数n=28;% 分组长度%aa 解循环等差交织前原分组序列%bb 解循环等差交织后还原分组序列%序号重排方式:aa=[ 1 24 19 14 9 4 27 22 17 12 7 2 25 20 15 10 5 28 23 18 13 8 3 26 21 16 11 6];j=1;for i=1:nj=rem(j+5-1,n)+1; %序号重排方式迭代算法bb(j)=aa(n+1-i);End交织码通常表示为(M,N),分组长度L=MN,交织方式用M行N列的交织矩阵表示。
PCCC码(Turbo码)的编码和译码算法目录一、概述 .................................................................... 1 二、PCCC码的编码算法 ........................................................................... ......................................... 3 三、 PCCC码的译码算法 ........................................................................... (13)一、概述虽然软判决译码、级联码和编码调制技术都对信道码的设计和发展产生了重大影响,但是其增益与Shannon 理论极限始终都存在2~3dB 的差距。
因此,在Turbo 码提出以前,信道截止速率R0 一直被认为是差错控制码性能的实际极限,shannon 极限仅仅是理论上的极限,是不可能达到的。
根据shannon 有噪信道编码定理,在信道传输速率R 不超过信道容量C 的前提下,只有在码组长度无限的码集合中随机地选择编码码字并且在接收端采用最大似然译码算法时,才能使误码率接近为零。
但是最大似然译码的复杂性随编码长度的增加而加大,当编码长度趋于无穷大时,最大似然译码是不可能实现的。
所以人们认为随机性编译码仅仅是为证明定理存在性而引入的一种数学方法和手段,在实际的编码构造中是不可能实现的。
在1993 年于瑞士日内瓦召开的国际通信会议(1CC,93)上,两位任教于法国不列颠通信大学的教授C.Berrou、A.Glavieux 和他们的缅甸籍博士生P.thitimajshima 首次提出了一种新型信道编码方案――Turbo 码,由于它很好地应用了shannon 信道编码定理中的随机性编、译码条件,从而获得了几乎接近shannon 理论极限的译码性能。
Turbo码的编译码原理及MATLAB仿真摘要纠错码技术作为改善数字通信可靠性的一种有效手段,在数字通信的各个领域中获得极为广泛的应用。
Turbo码是并行级联递归系统卷积码,在接近Shannon限的低信噪比下能获得较低的误码率,现已被很多系统所采用。
本文分析了Turbo码编码译码的原理,为了使Turbo码仿真更容易,研究并建立了基于Matlab中Simulink通信模块的Turbo码仿真模型。
使用所建立的模型进行仿真,结果表明,在信噪比相同的情况下,交织长度越大、迭代次数越多、译码算法越优,Turbo码性能越好,设计实际系统时,应综合考虑各因素。
关键词:Turbo码;Simulink仿真;交织长度;迭代次数AbstractAs an effective means to improve the reliability of digital communication, 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 bit error rate in the low SNR near Shannon limit,which is now used by many systems.In this paper,the principle of Turbo coding and decoding is analyzed,in order to make the Turbo Code simulation easier,a Turbo code simulation model based on Simulink module of Matlab is studied. 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;引言根据Shannon[1]有噪信道编码定理,在信道传输速率R不超过信道容量C的前提下,只有在码组长度无限的码集合中随机地选择编码码字并且在接收端采用最大似然译码算法时,才能使误码率接近为零。
暑期实习报告——Turbo码的编译码原理及仿真研究一、研究背景 (2)二、研究内容 (2)三、研究过程及结果 (2)1.卷积码及交织器 (2)(一)研究AWGN信道 (2)<实例1> (2)(二)卷积码 (3)<实例2> (4)(三)交织器 (5)<实例3> (5)2.Turbo码编码 (7)3. Turbo码译码 (8)<实例4> (9)<1>不同迭代次数对Turbo码性能的影响: (11)<2>不同交织长度对Turbo码性能的影响: (13)<3>不同码率对Turbo码性能的影响: (15)四、Turbo码的应用 (17)1.Turbo 码在直扩(CDMA) 系统中的研究及应用 (17)2.Turbo码在3G中的应用 (17)(一)RSC 编码器的设计 (18)(二)交织长度的选择 (18)(三)译码器的设计 (18)3.Turbo 码与其它通信技术的结合 (18)五、收获与感悟 (19)一、研究背景Turbo码通过对子码的伪随机交织实现大约束长度的编码,具有接近随机编码的特性,采用迭代译码取得了中等的译码复杂度,它的误码性能逼近了Shannon极限。
Turbo码相对以前的编码方式大大提高了功率的利用率,因此特别适用于信噪比受限的信道,同时Turbo 码在衰落信道中也具有很好的编译码性能。
二、研究内容1.学习卷积码原理及交织器设计,进行相关仿真分析。
2.阅读Turbo码相关文献资料,进行Turbo码编码仿真。
3.学习Turbo译码算法,进行Turbo码译码仿真,并分析不同码率、不同交织长度、不同迭代次数下的性能。
三、研究过程及结果1.卷积码及交织器(一)研究AWGN信道<实例1>clear allt=0:0.001:10;x=sin(2*pi*t);snr=20;y=awgn(x,snr);subplot(2,1,1);plot(t,x);title('正弦信号x')subplot(2,1,2);plot(t,y);title('叠加了高斯白噪声的正弦信号')z=y-x;var(z)ans =0.0098。
Turbo 码的各种译码算法及比较Turbo 码有一重要特点是其译码较为复杂,比常规的卷积码要复杂的多,这种复杂不仅在于其译码要采用迭代的过程,而且采用的算法本身也比较复杂。
这些算法的关键是不但要能够对每比特进行译码,而且还要伴随着译码给出每比特译出的可靠性信息,有了这些信息,迭代才能进行下去。
用于Turbo 码译码的具体算法有:MAP(Maximum A Posterori)、Max-Log-MAP 、Log-MAP 和SOV A(Soft Output Viterbi Algorithm)算法。
MAP 算法是1974年被用于卷积码的译码,但用作Turbo 码的译码还是要做一些修改;Max-Log-MAP 与Log-MAP 是根据MAP 算法在运算量上做了重大改进,虽然性能有些下降,但使得Turbo 码的译码复杂度大大的降低了,更加适合于实际系统的运用;Viterbi 算法并不适合Turbo 码的译码,原因就是没有每比特译出的可靠性信息输出,修改后的具有软信息输出的SOV A 算法,就正好适合了Turbo 码的译码。
这些算法在复杂度上和性能上具有一定的差异,系统地了解这些算法的原理是对Turbo 码研究的基础,同时对这些算法的复杂度和性能的比较研究也将有助于Turbo 的应用研究。
MAP 算法MAP 算法最初是用来估计无记忆噪声下的马尔可夫过程的,它是一种最优的算法。
Bahl 等人于1974年把它用于线性分组码和卷积码的译码中,在用于卷积码的译码时,对于给定接收序列Y ,它不像Viterbi 算法那样以栅格路径上的比特组错误最少为目的,而是以译码出来的符号i x 的错误最少为目的。
即,(){}arg max ii i x x P x Y = (1.1)不过在大多情况下,它和Viterbi 算法的作用是一致的。
由于在卷积码的译码中,MAP 算法要考虑栅格图中的所有可能路径,这样运算量就非常大,实际系统中很少用到。
目录一、概述 (1)二、PCCC码的编码算法 (3)三、PCCC码的译码算法 (13)一、概述虽然软判决译码、级联码和编码调制技术都对信道码的设计和发展产生了重大影响,但是其增益与Shannon 理论极限始终都存在2~3dB 的差距。
因此,在Turbo 码提出以前,信道截止速率R0一直被认为是差错控制码性能的实际极限,shannon 极限仅仅是理论上的极限,是不可能达到的。
根据shannon 有噪信道编码定理,在信道传输速率R 不超过信道容量C 的前提下,只有在码组长度无限的码集合中随机地选择编码码字并且在接收端采用最大似然译码算法时,才能使误码率接近为零。
但是最大似然译码的复杂性随编码长度的增加而加大,当编码长度趋于无穷大时,最大似然译码是不可能实现的。
所以人们认为随机性编译码仅仅是为证明定理存在性而引入的一种数学方法和手段,在实际的编码构造中是不可能实现的。
在1993 年于瑞士日内瓦召开的国际通信会议(1CC,93)上,两位任教于法国不列颠通信大学的教授C.Berrou、A.Glavieux 和他们的缅甸籍博士生P.thitimajshima 首次提出了一种新型信道编码方案——Turbo 码,由于它很好地应用了shannon 信道编码定理中的随机性编、译码条件,从而获得了几乎接近shannon 理论极限的译码性能。
仿真结果表明,在采用长度为65536 的随机交织器并译码迭代18 次情况下,在信噪比E b/N0≥0.7dB 并采用BPSK 调制时,码率为1/2 的Turbo 码在AWGN 信道下的误比特率≤10-5,达到了与Shannon 极限仅相差0.7dB 的优异性能(1/2 码率的Shannon 极限是0dB)。
Turbo 码又称并行级联卷积码(PCCC,Parallel Concatenated Convolutional Code),它巧妙地将卷积码和随机交织器结合在一起,在实现随机编码思想的同时,通过交织器实现了由短码构造长码的方法,并采用软输出迭代译码来逼近最大似然译码。
Turbo 编译码实验一、实验目的1、了解Turbo 码的基本原理。
2、熟悉Turbo 编码演算程序。
3、掌握Turbo 码的编码规则。
二、实验内容1、对信号源模块24位NRZ 码进行Turbo 编码。
2、Turbo 码译码还原。
三、实验仪器1、信号源模块 一块2、信道编码模块 一块3、数字存储示波器 一台四、实验原理1、Turbo 码Turbo 码是一种特殊的链接码,性能接近信息理论上能够达到的最好性能,在编码理论上是带有革命性的进步,但是其解码运算非常复杂。
Turbo 码的编码器在两个并联或串联的分量码(component code )编码器之间增加一个交织器(interleaver ),使之具有很大的码组长度,能在低信噪比条件下得到接近理想的性能。
Turbo 码的译码器有两个分量码译码器,译码在两个分量译码器之间进行迭代译码,故整个译码过程类似涡轮(turbo )工作,所以又形象的称为Turbo 码。
2、Turbo 编码下图28-1为Turbo 码的一种基本结构。
RSCC交织器b ib ic ic i ’RSCCb i ’图28-1 Turbo 码编码器上图中,Turbo 码编码器由一对递归系统卷积码RSCC (Recursive Systematic Convolution Code )编码器和一个交织器组成。
交织器的形式为矩阵交织器,由6×4比特的存储器构成,如下表28-1所示。
表28-1 交织器原理图a11a12a13a14a21a22a23a24a31a32a33a34a41a42a43a44a51a52a53a54a61a62a63a64信号码元按行的方向输入存储器中,再按列的方向输出。
例如,输入码元序列是:a11 a12 a13 a14 a21 a22 a23 a24 a31 a32 a33 a34 a41 a42 a43 a44 a51 a52 a53 a54 a61 a62 a63 a64 ,则输出码元序列是:a11 a21 a31 a41 a51 a61 a12 a22 a32 a42 a52 a62 a13 a23 a33 a43 a53 a63 a14 a24 a34 a44 a54 a64。
Turbo码性能分析与仿真王会王忠(四川大学通信工程系,成都610065)摘要:本文介绍了一种新型差错控制编码——Turbo码,在对其原理分析的基础上,简单介绍了它的译码算法,并且实现了其中两种算法Log-MAP算法和SOV A算法的性能仿真,对不同译码算法下Turbo码的性能进行了分析比较。
关键词:差错编码;Turbo码;交织器;迭代译码;1 引言1948年,现代数字通信的奠基人Shannon在信道编码定理中指出,只要随机编码的码长足够大,就可以进行无限逼近信道容量C的通信并使错误概率任意小。
他证明:对于平稳离散无记忆有噪声信道,如果数据源的速率R低于信道容量C时,则一定存在一种编码方法,使当平均码字长度足够长时,用最大似然译码可达到任意小的错误概率。
但随机编码的译码复杂度随码长指数增长以致于不可实现。
自香农之后,人们不懈地向逼近信道容量的方向努力。
纠错编码理论的发展正是沿着这二条基本路线:一是构造长码;另一是在人们所能接受的范围内,如何实现最大似然译码。
1993年C.Berrou等人提出的Turbo码通过对子码的伪随机交织实现大约束长度的编码,具有接近随机编码的特性,采用迭代译码取得了中等的译码复杂度,它的误码性能在10-5数量级上逼近了Shannon极限。
并行级联递归系统卷积码(Turbo-code)的提出为编码研究带来新的曙光,其基本思想是利用短码来构造长码,在译码时,它使用一种全新的译码思想——迭代译码,将长码化成短码,从而以较小复杂度来获得接近最大似然译码的性能,突破了传统码的约束,真正挖掘了级联码的潜力,获得接近香农极限的性能。
Turbo码自提出之日起就成为信息论与编码界工作者的热切关注的热点,本文给出了Turbo码基本原理的介绍及其性能的仿真。
2 编译码原理图1中给出了Turbo码编码器的一般性结构。
图中d k是输入进行编码的数据块,加入尾随比特的作用是使在一个数据块编码结束之后,保证成员编码器的寄存器回到全零状态,这样的Turbo码就等同于线性分组码,从而通过分析这类分组码的特性来计算Turbo码的译码性能上界,对其性能进行估计与分析。
目录一、简述信道编码 (3)1.信道编码的原理 (3)2.信道编码的码型 (3)2.1分组码 (3)2.2 卷积码 (4)2.3 格型码 (4)2.4 Turbo 码 (4)二、Turbo码介绍 (5)1.Turbo的提出 (5)2. Turbo码编译码原理 (5)3. Turbo码仿真建模 (7)4.仿真结果分析 (9)三、总结 (12)四、参考文献 (12)一、简述信道编码1.信道编码的原理上了信息论与编码这门课我们知道,图像信号信源压缩编码的目的就是要去掉图像中的空间冗余和时间冗余,从而降低了总的数据率,提高了信息量的效率。
这样,容许保证一定图像质量的数字信号能以较少的数据量快速传输出去。
与此同时,经信源编码的去冗余而提高信源的信息熵(每个符号的平均信息量)后,数字信号的抗干扰能力明显下降了,这是不言而喻的,因为未压缩之前每个符号的信息量很低。
因此,压缩后的数字信号很容易受到传输通道中引入的噪声、多径反射和衰落等的影响而造成接收端发生程度不同的误码,有的甚至无法恢复出原始数据。
为解决这个问题,信道编码应运而生了。
所谓信道编码就是为提高信息传输可靠性而进行的编码(在信源编码的基础上以降低传输的信息量为代价来提高可靠性)。
信道编码可以检测、纠正由于传输造成的误码,所以这种编码也常称为差错控制编码。
信道编码是数字通信系统中的重要组成部分,其作用是完成检错纠错,码形变换的任务,从而提高传输信道的可靠性。
信道编码的原理简言之就是要使传输符号间具有某种特定的关系,通常将要传输的信息分组,根据某种规则,使每组信息映射(映射是数学上的一个术语,源于集合论,映射又称为变换,意思是两个集中的元素有某种对应关系。
)到一组信道符号,这组符号相互之间具有某种特定关系,即使其中某些符号在传输中会出错,也会发现这些错误,并进一步纠正它们。
显然,要实现信源具有检错和纠错能力,必需按一定的规则在信源编码的基础上再增加一些冗余码元(又称监督码),使这些冗余码元与被传信息码元之间建立一定的关系,发送端完成这个任务的过程称为纠错编码。
实验五Turbo码编码实验指导一、实验目的1、掌握TURBO码的编解码原理。
2、掌握TURBO码的软件仿真方法。
3、掌握TURBO码的硬件仿真方法。
4、掌握TURBO码的硬件设计方法。
二、预习要求1、掌握TURBO码的编解码原理和方法。
2、熟悉matlab的应用和仿真方法。
3、熟悉Quatus的应用和FPGA的开发方法。
三、实验原理1、Turbo码编码原理Turbo码是1993年法国人Berrou提出的一种新型编码方法。
它巧妙的将卷积码和随机交织器结合在一起;同时,采用软输出迭代译码来逼近最大似然译码。
Turbo码编码原理框图如图所示:a、编码器图中编码器的结构图如图输入为10010001时,输出为11100101、寄存器为00:输入为1,反馈位为1,状态为100,输出为1;2、寄存器为10:输入为0,反馈位为1,状态为110,输出为1;3、寄存器为11:输入为0,反馈位为0,状态为011,输出为1;4、寄存器为01:输入为0,反馈位为1,状态为101,输出为0;5、寄存器为10:输入为1,反馈位为0,状态为010,输出为0;6、寄存器为01:输入为0,反馈位为1,状态为101,输出为0;7、寄存器为10:输入为0,反馈位为1,状态为110,输出为1;8、寄存器为11:输入为1,反馈位为1,状态为111,输出为0;图中,两个方框为移位寄存器,⊕为异或器。
b、交织器交织可以将长的突发错误分散到每个行码中去。
以最常用的交织器-行列交织器为例,它的交织方式是采用行顺序写入、列顺序读出的方式,而解交织列顺序写入,行顺序读出。
交织时,输入序列为:a11 a12 a13 a14a21 a22 a23 a24a31 a32 a33 a34a41 a42 a43 a44通过行列交织后变为:a11 a21 a31 a41a12 a22 a32 a42a13 a23 a33 a43a14 a24 a34 a44上述序列为四组长度为四的码组。
Turbo 码的各种译码算法及比较Turbo 码有一重要特点是其译码较为复杂,比常规的卷积码要复杂的多,这种复杂不仅在于其译码要采用迭代的过程,而且采用的算法本身也比较复杂。
这些算法的关键是不但要能够对每比特进行译码,而且还要伴随着译码给出每比特译出的可靠性信息,有了这些信息,迭代才能进行下去。
用于Turbo 码译码的具体算法有:MAP(Maximum A Posterori)、Max-Log-MAP 、Log-MAP 和SOVA(Soft Output Viterbi Algorithm)算法。
MAP 算法是1974年被用于卷积码的译码,但用作Turbo 码的译码还是要做一些修改;Max-Log-MAP 与Log-MAP 是根据MAP 算法在运算量上做了重大改进,虽然性能有些下降,但使得Turbo 码的译码复杂度大大的降低了,更加适合于实际系统的运用;Viterbi 算法并不适合Turbo 码的译码,原因就是没有每比特译出的可靠性信息输出,修改后的具有软信息输出的SOVA 算法,就正好适合了Turbo 码的译码。
这些算法在复杂度上和性能上具有一定的差异,系统地了解这些算法的原理是对Turbo 码研究的基础,同时对这些算法的复杂度和性能的比较研究也将有助于Turbo 的应用研究。
MAP 算法MAP 算法最初是用来估计无记忆噪声下的马尔可夫过程的,它是一种最优的算法。
Bahl 等人于1974年把它用于线性分组码和卷积码的译码中,在用于卷积码的译码时,对于给定接收序列Y ,它不像Viterbi 算法那样以栅格路径上的比特组错误最少为目的,而是以译码出来的符号i x %的错误最少为目的。
即,(){}arg max ii i x x P x Y =% (1.1)不过在大多情况下,它和Viterbi 算法的作用是一致的。
由于在卷积码的译码中,MAP 算法要考虑栅格图中的所有可能路径,这样运算量就非常大,实际系统中很少用到。
电子信息类实践课III 通信系统仿真题目Turbo码的编译码算法仿真专业学号姓名日期注:本报告仅供参考1、课程设计目的(黑体小三,段前段后个一行)通过完成在在衰落信道下采用不同调制信号进行Turbo码编译码的编程实现,进一步了解了Turbo码的编码解码过程,以及在不同调制方式不同信道下的性能比见。
通过对卷积和交织器的设计,深入了解卷积和交织的作用。
以及熟悉了通信仿真的整体流程。
2、课程设计内容具体叙述课程设计的主要内容和原理。
表1 主要课程设计内容列表在进行本次Turbo仿真时,采用了两种不同编程方式。
在程序一中是直接调用matlab Communications System Toolbox中的Turbo编码和解码工具箱,通过配置参数进行仿真。
而在程序二中则根据Turbo码编译码原理编写。
如果程序一更像是一个黑匣子,只能知道通过编解码模块前、后的数据,而具体做了哪些则不得而知。
a.编码图1 Turbo码编码器结构典型的Turbo码编码器结构框图如图所示:由两个反馈的编码器通过一个交织器并行连接而成。
如果必要,由成员编码器输出的序列经过删余阵,从而可以产1生一系列不同码率的码。
例如,对于生成矩阵为g=[g1,g2]的(2,1,2)卷积码通过编码后,如果进行删余,则得到码率为1/2的编码输出序列;如果不进行删余,得到的码率为1/3。
一般情况下,Turbo码成员编码器是RSC编码器。
原因在于递归编码器可以改善码的比特误码率性能。
通俗理解1/2码率就是信号中有一半都是“无用信号”,这些“无用信号”就是两个分量编码器的生成的校验码,而删余则是各删除一部分校验码,把剩下的再和信息比特合在一块,形成编码好的矩阵。
b.译码图2 Turbo译码结构Turbo码获得优异性能的根本原因之一是使用了迭代译码,通过与分量编码器对应的分量译码器之间软信息的交换来提高译码性能。
对于 Turbo 码这样的并行级联码,如果分量译码器的输出为硬判决,则不可能实现分量译码器之间软信息的交换,从而限制了系统性能的进一步提高。
从信息论的角度来看,任何硬判决都会损失部分信息,因此,如果分量译码器能够提供一个反映其输出可靠性的软输出,则其他分量译码器也可以采用软判决译码,从而系统的性能可以得到进一步提高。
为此,人们提出了软输入软输出译码(SISO)的概念和方法。
Turbo 码的分量码 SISO 译码算法总体上可分为MAP和SOV A 两类主要算法。
其中MAP算法是一种最佳后验概率算法。
SOV A类算法主要包括软输出的维特比算法(SOV A)和连续列表输出维特比算法(SLV A)。
SOV A算法实际上就是veterbi算法的扩展,保留的路径数不是两条而是和状态数有关从所有可行的路径中找最优的是最大似然序列检测。
d.衰落信道由于多径和移动台运动等影响因素,使得移动信道对传输信号在时间、频率2和角度上造成了色散,如时间色散、频率色散、角度色散等等。
根据不同无线环境,接收信号包络一般服从几种典型分布,如瑞利分布、莱斯分布和Nakagami-m 分布。
在仿真衰落信道时,最重要的参数是多径扩展和多普勒频移。
通常在离基站较远、反射物较多的地区,发射机和接收机之间没有直射波路径,存在大量反射波;到达接收天线的方向角随机且在(0~2pi)均匀分布;各反射波的幅度和相位都统计独立。
图3 瑞利分布概率分布密度3、设计与实现过程3图4、程序一框图●具体实现过程:按照流程图中的各方面(模块)内容进行代码级的详细说明,例如:●衰落信道的设计在进行仿真的过程中尝试使用了两种不同的编写方式:a. Create Rayleigh fading channel object.chan_ray = rayleighchan(1/10000,100);fadedSig = filter(chan_ray,modSignal); % Apply the channel effectshChan = comm.AWGNChannel('NoiseMethod', 'Signal to noise ratio (SNR)');hChan.SNR = EbNo_db(n);fadedSig = filter(chan_ray,modSignal); % Apply the channel effectsreceivedSignal = step(chan,fadedSig); % Apply the channel effectsb.调用改进JAKES模型产生单径平坦型瑞利衰落信道子程序nsamp = 8;%脉冲抽样点数ts = 1/(num*nsamp);%抽样时间间隔4t = (0:num*nsamp-1)*ts;%抽样时间序列···h = rayleigh(10,t);%调用瑞利衰落子程序,输入为(最大多普勒频移,抽样时间序列)···modSignal = rectpulse(modSignal,nsamp);%矩形脉冲形成modSignal = h'.*modSignal;%通过瑞利信道receivedSignal = intdump(receivedSignal,nsamp); %匹配滤波相干解调使用matlab函数rayleighchan●程序一:a.调用turbo编码器解码器encoder =comm.TurboEncoder('InterleaverIndicesSource','Inputport');decoder =comm.TurboDecoder('InterleaverIndicesSource','Inputport', ...'NumIterations',4);b.调用AWGN信道chan = comm.AWGNChannel('EbNo',EbNo_db,'BitsPerSymbol',log2(M));c. 进行编码解码Turbo编码:encodedData = step(encoder,msg,index);···调制编码···过信道receivedSignal = step(chan,modSignal);···解调···Turbo译码:receivedBits = step(decoder,-demodSignal,index);●程序二code_length = 1024;%码长rate = 1/2;%码率niter = 4;%迭代次数a.信道:AWGNEbN0_db = 2:6;en = 10^(EbN0_db(nEN)/10);L_c = 4*en*rate;%信道置信度sigma = 1/sqrt(2*rate*en);%AWGN信道标准差5过信道:r = encoder_out + sigma*randn(1,code_length*(2));b.Turbo编码器%第一个分量RSC编码output1 = rsc_encode(G,msg,1);%1*2048y(1,:) = output1(1:2:2*code_length);%系统比特y(2,:) = output1(2:2:2*code_length);%校验比特%第二个分量RSC编码a = reshape(y(1,:),32,32);y_inv = reshape(a',1,1024);output2 = rsc_encode(G,y_inv,-1);%输入1024 输出1*2048y(3,:) = output2(2:2:2*code_length);%校验比特输出删余生成码率为1/2的码encoder_out(1:2:end) = y(1,:);encoder_out(2:4:end) = y(2,1:2:end);encoder_out(4:4:end) = y(3,2:2:end);%删余,奇为系统比特c.Turbo译码器通过解复用生成每个分量译码器的译码输入数据;初始化外部信息L_e(1:code_length)后。
根据迭代次数,循环依次进行第一分量译码、第二分量译码。
%第一分量译码器L_a(index) = L_e; %先验信息L_all = sova(rec_s(1,:),G,L_a,1);L_e = L_all-2*rec_s(1,1:2:2*code_length)-L_a;%计算外部信息%第二分量译码器L_a = L_e(index);L_all = sova(rec_s(2,:),G,L_a,2);L_e = L_all-2*rec_s(2,1:2:2*code_length)-L_a;最后再估计信息比特值。
d.软输入Viterbi算法初始化时,建立网格图,网格中的零状态初始化度量为0,其他为负无穷。
输入先验信息L_a、RSC码生成矩阵以及数据;前向跟踪计算所有路径度量值;第一分量译码器,从零状态开始向后跟踪;第二分量译码器从最可能的状态开始后向跟踪;后向跟踪获得估计比特及最大似然路径;找到相应于不同信息比特估计的竞争路径的最小delta值,得到软输出。
(具体可参看刘向东、向良军编著的《信道编码与matlab仿真》,除SOV A算法外里面还给出了Log_MAP算法)。
64、结论在进行仿真时,发现上述两种衰落信道误码率基本都是50%左右,也就意味着基本上全部都是错的。
在进行了分析之后发现,在不加其他模块进行仿真的时候,光对比经过衰落信道前后的比特流基本就能错一半左右。
图5 衰落信道下程序1仿真结果图6 仿真得出ber值因无法仿真出较好的衰落信道,因此两个程序都放弃衰落信道改用加性高斯白噪声信道。
78图7 程序1结果在16QAM调制信号时在-1dB 便能达到接近-610。
图8 程序2结果程序二是1/2码率,采用BPSK 调制、sova 译码算法,需要到9dB 时,误码率大概能达到-610量级。
两者程序出现如此大的结果差异,最主要的可能与Turbo 译码方式相关。
成绩评定表注:课题设计成绩评定表单独一页,装订在报告的最后9。