|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Lx00591 于 2020-3-3 13:40 编辑 : C6 v3 i2 l. f( N: l& J
+ C2 E) g3 f9 |2 I
摘 要:为了使Turbo码仿真更容易,研究并建立了基于Matlab中Simulink通信模块的Turbo码仿真模型。Turbo码编码器采用两个相同的分量编码器通过交织器并行级联而成。Turbo码译码器采用不同的译码算法,这些算法由s函数调用m文件实现。使用所建立的模型进行仿真,结果表明,在信噪比相同的情况下,交织长度越大、迭代次数越多、译码算法越优,Turbo码性能越好。设计实际系统时,应综合考虑各因素。! [9 r; S5 U8 @# f3 d0 [
关键词:Turbo码;Simulink仿真;交织长度;迭代次数;译码算法
5 E8 r- [. a5 @' J3 V 1 R6 \4 Z4 p% a' q
/ {: w: p7 c' Q* I9 O. _
0 引 言
2 U0 ~# i& R! W! C7 { Shannon编码定理指出:如果采用足够长的随机编码,就能逼近Shannon信道容量。而Turbo码以其接近Shannon理论极限的译码性能,已被采纳为3G移动通信系统的信道编码标准之一。Turbo码巧妙地将两个简单分量码通过伪随机交织器并行级联来构造具有伪随机特性的长码,并通过在两个软输入/软输出(SISO)译码器之间进行多次迭代实现了伪随机译码。采用迭代译码的方法来提高通信系统的译码性能是Turbo码的最大特点。& `8 z V5 O' B1 S
Turbo码的编码器、译码器结构繁琐,是一种非常复杂的信道编码方案,这使得对Turho码的理论分析十分困难,且只能对运算复杂度作宏观分析,对Turbo码的具体实现并没有一个清楚的度量。因此,使用计算机对Turbo码进行仿真分析是十分必要的。
; N% V; x# T4 q5 w8 v' ~8 ^ 本文分析了Turbo码编码译码的原理,考虑到Turbo码系统编译码的数据处理量很大,利用生成矩阵对信息序列进行编码、译码时的迭代计算等等,都涉及了矩阵运算,故采用Matlab/Sireulink来进行建模仿真,同时分析了迭代次数、交织长度及不同译码算法对Turbo码性能的影响。$ f; F( R0 g2 k4 H5 G% S* {
$ ]% R* n/ s, H! l& M5 B 7 l3 W8 ]* r5 @" _$ d5 g% W
l Turbo码的编码器和译码器原理
1 _. L: c" n8 H& ?1 z0 F 1.1 Turbo码编码器组成' F# W! z; d8 {8 ^$ Z8 X
Turbo码的编码器的基本结构如图1所示。
/ f: W, u z; ~0 _' i
8 `0 `/ m, e+ N- T( ]
/ U- e2 g- U; P3 p( K
- w: z3 P' `+ O4 t6 }
# q& @; n* d+ ?+ F" O$ I
3 `4 x' b( S1 M( ?- l% u" g - p+ Z" `5 u# h4 v9 E+ A
Turbo码编码器主要由两个递归系统卷积编码器(RSC)、一个交织器与一个删余和复用单元组成。递归系统卷积编码器是指带有反馈的系统卷积编码器,其码率可设为R=k/n;交织器用来改变信息序列的排列顺序,获得与原始信息序列内容相同,但排列不同的信息序列;删余和复用单元的作用是从总体上改善Turbo码码率,因此通过删余和复用单元,Turbo码可以获得不同码率的码字。编码器的码字通过信道输出到译码器内。
3 x+ Y" E9 J5 i0 V' Z 1.2 Turbo码译码器原理
( q* ?/ v- h" M* V/ E Turbo码译码器基本结构如图2所示。
3 p/ V. K) a# h% Z1 r7 f: K6 ~- v : l) C' l% B9 g2 Y7 {5 a
, |' M- n* V( s4 v( [* L% q
1 ?+ t" N/ r7 z$ d% |6 ~1 a: W
/ m% Z8 x. Q- M! t) K: v; n1 g
; `, s* ?5 b: x1 U: a X& Q* K
Turbo码译码器由两个软输入/软输出(SISO)译码器DECl和DEC2串行级联组成,交织器与编码器中所使用的交织器相同。译码器DECl对分量码RSCl进行最佳译码,产生关于信息序列中每一比特的似然信息,并将其中的“新信息”经过交织送给DEC2,译码器DEC2将此信息作为先验信息,对分量码RSC2进行最佳泽码,产生蓉于交织后的信息序列中每一比特的似然比信息,然后将其中的“外信息”经过解交织送给DECl,进行下一次译码。这样,经过多次迭代,DECl或DEC2的外输出信息趋于稳定,似然比渐近值逼近于对整个码的最大似然译码,然后对此似然比进行硬判决,即可得到信息序列的最佳估计值。 $ V# }/ N7 t1 o9 {3 R/ }' s9 `
2 仿真模型的建立
- s% A. Z, H( ` 仿真模型包括信源、编码器、信道、译码器和信宿五个部分。 + g- H; {+ ]. I- c8 H2 s0 \/ N
在模型中,可以任意改变的参数值为: , k4 X# D% i# v& r: B n7 w4 N
N:交织器的大小,即Turbo码的分组长度,也即每个分组所包含的信息序列的长度。 ) m+ u6 Z) M/ z9 H" B
信道类型选择:Sireulink模块中可以选择设置高斯白噪声信道(AWGN)或多径瑞利衰落信道(ReyleighFading)。 * A0 {2 ^. M1 S: R
译码算法选择:Log—MAP,Max—Log—MAP和SOVA三种译码算法。
3 N7 H' K/ ?1 d+ @( h SNR:信号与噪声强度比值。
# W6 I) `, o- \- y( B7 Z% _ 迭代次数:迭代次数的不同对译码器输出有着一定的影响。 / ~4 }- `# I4 B3 h
2.1 Turbo编码模块
. O) K, @" \$ }) Y1 ` 本模型中Turbo码编码器采用两个相同的分量编码器通过交织器并行级联而成。分量编码器是码率为R=1/2的循环系统卷积码。
6 D* @6 x, e8 h) m/ M7 j5 z+ z 首先用贝努利发生器(Bernoulli Binary Genera—tor)产生序列,从参数面板调节帧大小和采样率。原始序列进入第1卷积编码器(ConvoluTIonal Encoder),并经过随机交织(Random Interleaver)后进入第2卷积编码器(ConvoluTIonal Encoderl)。删余模块1,2同时接在第1卷积编码器的后面。删余模块1(puncturel)的输出为第1卷积编码输出的奇序列,删余模块2(puncture2)的输出为第1卷积编码输出的偶序列。第3个删余模块(puncture3)接在第2卷积编码器的后面,其输出第2卷积编码输出的偶序列。这3路序列经过串并变换后合成一路序列,作为Turbo编码输出。
$ n0 F5 `, H: R# _* |" M" J
. ~- s/ d- V1 K+ W
$ O e2 d; C r* i) A" U! _4 d |
|