当前位置:文档之家› 关于信道编码中Turbo码的原理与实现

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

Turbo码的编码原理及实现摘要纠错码技术作为改善数字通信可靠性的一种有效手段,在数字通信的各个领域中获得极为广泛的应用。

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;引言根据Shanno噪信道编码定理,在信道传输速率R不超过信道容量C的前提下,只有在码组长度无限的码集合中随机地选择编码码字并且在接收端采用最大似然译码算法时,才能使误码率接近为零。

但是最大似然译码的复杂性随编码长度的增加而加大,当编码长度趋于无穷大时,最大似然译码是不可能实现的。

所以人们认为随机性编译码仅仅是为证明定理存在性而引人的一种数学方法和手段,在实际的编码构造中是不可能实现的。

直到Turbo的出现,人们才改变了这种看法。

1993年,Claud Bernou等人在国际通信会议(ICC' 93)上提出了并行级联卷积码(PCCC)即Turbo码,由于它很好地应用了Shannon信道编码定理中的随机性编译码条件,从而获得了几乎接近Shannon理论极限的译码性能。

Turbo码巧妙地将两个简单分量码通过伪随机交织器并行级联来构造具有伪随机特性的长码,并通过在两个软输入/软输出( SISO)译码器之间进行多次迭代实现了伪随机译码。

采用迭代译码的方法来提高通信系统的译码性能是Turbo 码的最大特点。

Turbo码的编码器、译码器结构繁琐,是一种非常复杂的信道编码方案,这使得对Turbo码的理论分析十分困难,且只能对运算复杂度作宏观分析,对Turbo码的具体实现并没有一个清楚的度量。

因此,使用计算机对Turbo 码进行仿真分析是十分必要的。

本文分析了Turbo码编码译码的原理,考虑到Turbo码系统编译码的数据处理量很大,利用生成矩阵对信息序列进行编码、译码时的迭代计算等等,都涉及了矩阵运算,故采用Matlab/Simulink来进行建模仿真。

1 Turbo 码编码原理Turbo 码的典型编码器如图1所示,Turbo 码编码器主要由分量编码器、交织器复接器组成。

分量码一般选择为递归系统卷积(RSC ,Recursive SystematicConvolutional)码[2],当然也可以是分组码(BC, Block Code)、非递归卷积(NRC ,Non-Recursive Convolutional)码以及非系统卷积(NSC ,Non-SystematicConvolutional)码,但从后面的分析将看到,分量码的最佳选择是递归系统卷积码。

通常两个分量码采用相同的生成矩阵,当然分量码也可以是不同的。

以分量码为RSC 为例,分量编码器为递归系统卷积码(RSC)编码器。

第一个RSC 之前不使用交织器,后续的每个RSC 之前都有一个交织器与之对应。

一个Turbo 编码器中原则上可采用多个RSC ,但通常只选用2个,因为过多的RSC 分量编码器将使得译码非常复杂而难以实现。

通常的Turbo 码编码器中,长度为N的信息序列{}k u 在送入第一个分量编码器的同时作为系统输出{}s k x 直接送至复接器,同时{}k u 经过一个N 位交织器,形成一个新序列{}'k u (长度与内容没变,但比特位置经过重新排列。

{}k u 与{}'k u 分别传送到两个分量码编器(RSC1与RSC2)。

一般情况下,两个分量码编码器的结构相同,生成分量码校验序列{}p k x 1和{}p k x 2。

{}k u {}'k u 与未编码的信息序列{}s k x 经过复接后,生成Turbo 码序列{}k c ,将编码序列调制后,即可发射进入信道传输。

}k u {}s k x{}k c{}pk x 1分量编码器CRS1 分量编码器CES2交织器复接器2 Matlab仿真及结果2.1 Turbo码仿真系统的实现Turbo码是经过模拟仿真来的,而不是根据既定的设计准则得到的。

许多研究者正寻找其工作机理以便更好为Turbo码的构造提供理论依据。

至到现在Turbo 码的研究成果很大一部分是通过对各种参数的模拟性能结果中得到的。

模拟仿真时,衡量其编码性能的好坏主要以误码率BER(Bit Error Rate)来的。

仿真中使用加性高斯白噪声信道(AWGN)模型,因为它易于构建,也是具有代表性的信道模型之一,同时假设使用BPSK调制方式。

根据Turbo码系统的结构特点,将整个Turbo 编译码系统合理地划分成多个模块,使用MATLAB通过模块化设计实现了可以用于计算机模拟的Turbo编译码系统。

系统所包涵的模块具体划分为:主程序、信道模型子程序、交织子程序、RSC编码子程序、使用不同的算法进行译码的译码子程序等。

仿真中使用加性高斯白噪声信道(AWGN)模型,因为它易于构建,也是具有代表性的信道模型之一,同时假设使用BPSK调制方式。

根据Turbo码系统的结构特点,本文将整个Turbo编译码系统合理地划分成多个模块,使用MATLAB通过模块化设计实现了可以用于计算机模拟的Turbo编译码系统。

系统所包涵的模块具体划分为:主程序、信道模型子程序、交织子程序、RSC编码子程序、使用不同的算法进行译码的译码子程序等。

主程序控制着整个系统的流程。

主程序首先完成对系统的先期设置,包括分量RSC的生成矩阵、帧大小(即交织器的大小)、迭代次数、使用何种译码算法等等。

然后,随即生成{}0,1信息源,调用各子程序完成编码、传输以及译码的过程。

仿真中使用加性高斯白噪声信道(AWGN)模型,因为它易于构建,也是具有代表性的信道模型之一,同时假设使用BPSK调制方式。

根据Turbo码系统的结构特点,本文将整个Turbo编译码系统合理地划分成多个模块,使用MATLAB通过模块化设计实现了可以用于计算机模拟的Turbo编译码系统。

系统所包涵的模块具体划分为:主程序、信道模型子程序、交织子程序、RSC编码子程序、使用不同的算法进行译码的译码子程序等。

交织子程序供主程序调用,主要完成对信息比特序列进行位置的随机置换,并提供给RSC2进行编码。

对每帧进行置换的格式将保存下来,以便在译码过程中进行正确的解交织。

RSC编码子程序供主程序调用,完成编码。

网格图生成子程序供译码子程序调用,用于生成给定生成矩阵对应的网格图。

对一帧编码的子程序供RSC编码子程序调用,用于对一帧的信息比特编码。

对一位信息比特编码子程序供对一帧编码的子程序调用,用于对单个输入比特进行编码。

信道模型及复用调制子程序供主程序调用,用于生成信道模型,将两个RSC分量编码器编码序列和信息序列进行复用,根据需要的码率组成整个编码器的编码结果,然后使用AWGN信道模型将编码序列进行调制,模拟进入信道传输。

译码前解复用子程序供主程序调用,用于从模拟信道接收观测序列,并将观测序列解复用,分解成系统比特序列和两个校验序列。

译码子程序同主程序调用,用于实现具体的译码算法,对观测序列进行译码。

2.2 Turbo码的仿真结果及分析影响Turbo码性能的参数很多,这里分别就不同的译码算法、迭代次数、交织长度对Turbo码性能的影响进行分析,给出仿真结果。

2.2.1 不同译码算法对Turbo 码的性能影响图6给出了采用不同译码算法下的Turbo 码仿真结果。

Turbo 码码率为1/3,Log-Map算法和MAX-Log-Map 算法译码迭代次数为3。

从图中可以观察到Log-MAP 译码算法性能明显要优于MAX-Log-MAP 和SOVA。

在误码率为10-4 时,Log-MAP 译码算法比MAX-Log-Map 译码算法好0.4dB,比SOVA 好2dB 以上。

Max-Log-MAP 算法用到了近似公式,故性能比Log-MAP 有所下降。

验证了译码算法性能MAP>Log-MAP>MAX-Log-MAP>SOVA 的结论。

SOVA 算法虽然性能是几种算法中最差的,但复杂性较低易于实现。

在实际运用中,要结合具体的情况,权衡硬件的复杂度和性能要求,选择合适的译码算法。

图6 不同译码算法对Turbo码的影响2.2.2 迭代次数图7 迭代次数对Turbo码的影响图7给出了不同迭代次数下,Turbo码的误比特率与信噪比的关系曲线,采用MAX-Log-MAP算法,码率为1。

相关主题