matlab做信号完整性,关于Matlab的Turbo码仿真研究

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

摘 要:为了使Turbo码仿真更容易,研究并建立了基于Matlab中Simulink通信模块的Turbo码仿真模型。Turbo码编码器采用两个相同的分量编码器通过交织器并行级联而成。Turbo码译码器采用不同的译码算法,这些算法由s函数调用m文件实现。使用所建立的模型进行仿真,结果表明,在信噪比相同的情况下,交织长度越大、迭代次数越多、译码算法越优,Turbo码性能越好。设计实际系统时,应综合考虑各因素。

; E6 Q$ P, F( j( y. h关键词:Turbo码;Simulink仿真;交织长度;迭代次数;译码算法

: L- b: H8 C, [. {* T, c0 引 言

! Y* D4 T3 l9 T8 IShannon编码定理指出:如果采用足够长的随机编码,就能逼近Shannon信道容量。而Turbo码以其接近Shannon理论极限的译码性能,已被采纳为3G移动通信系统的信道编码标准之一。Turbo码巧妙地将两个简单分量码通过伪随机交织器并行级联来构造具有伪随机特性的长码,并通过在两个软输入/软输出(SISO)译码器之间进行多次迭代实现了伪随机译码。采用迭代译码的方法来提高通信系统的译码性能是Turbo码的最大特点。$ A2 ~3 S& E6 ]: ~3 l( E$ i0 I/ B, u

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

- {  w" E6 y4 G' j) c' O* J- m+ X$ S$ k2 O本文分析了Turbo码编码译码的原理,考虑到Turbo码系统编译码的数据处理量很大,利用生成矩阵对信息序列进行编码、译码时的迭代计算等等,都涉及了矩阵运算,故采用Matlab/Sireulink来进行建模仿真,同时分析了迭代次数、交织长度及不同译码算法对Turbo码性能的影响。

4 {1 U) k' ^, A% q2 V, p

l Turbo码的编码器和译码器原理; j+ ]* ~+ b* F

1.1 Turbo码编码器组成" G7 \4 T; H/ T6 |. a; Y

Turbo码的编码器的基本结构如图1所示。

none.gif

21.jpg (17.16 KB, 下载次数: 1)

2021-3-15 11:01 上传

Turbo码编码器主要由两个递归系统卷积编码器(RSC)、一个交织器与一个删余和复用单元组成。递归系统卷积编码器是指带有反馈的系统卷积编码器,其码率可设为R=k/n;交织器用来改变信息序列的排列顺序,获得与原始信息序列内容相同,但排列不同的信息序列;删余和复用单元的作用是从总体上改善Turbo码码率,因此通过删余和复用单元,Turbo码可以获得不同码率的码字。编码器的码字通过信道输出到译码器内。

/ t) Z" f3 y* f- @( D* X# Q1.2 Turbo码译码器原理4 h6 G* M' E3 J/ `! y) A' y

Turbo码译码器基本结构如图2所示。

none.gif

22.jpg (32.63 KB, 下载次数: 1)

2021-3-15 11:01 上传

Turbo码译码器由两个软输入/软输出(SISO)译码器DECl和DEC2串行级联组成,交织器与编码器中所使用的交织器相同。译码器DECl对分量码RSCl进行最佳译码,产生关于信息序列中每一比特的似然信息,并将其中的“新信息”经过交织送给DEC2,译码器DEC2将此信息作为先验信息,对分量码RSC2进行最佳泽码,产生蓉于交织后的信息序列中每一比特的似然比信息,然后将其中的“外信息”经过解交织送给DECl,进行下一次译码。这样,经过多次迭代,DECl或DEC2的外输出信息趋于稳定,似然比渐近值逼近于对整个码的最大似然译码,然后对此似然比进行硬判决,即可得到信息序列的最佳估计值。

% h( M* S( ]" s: R5 r% I. v2 仿真模型的建立$ z% r, T+ r4 H" E- l9 L% v

仿真模型包括信源、编码器、信道、译码器和信宿五个部分。

( E$ M/ M; ~7 \3 m1 _2 L在模型中,可以任意改变的参数值为:7 C6 _$ I* x- \/ e) R% J

N:交织器的大小,即Turbo码的分组长度,也即每个分组所包含的信息序列的长度。

! Y2 }5 N$ l0 J$ V2 u6 ?: p信道类型选择:Sireulink模块中可以选择设置高斯白噪声信道(AWGN)或多径瑞利衰落信道(ReyleighFading)。

2 f: _: k7 R' q  F译码算法选择:Log—MAP,Max—Log—MAP和SOVA三种译码算法。

8 R$ w, {. m/ o) {; C9 BSNR:信号与噪声强度比值。. Y2 O) Q" T# w) S

迭代次数:迭代次数的不同对译码器输出有着一定的影响。

: e3 o3 }3 ^" d2.1 Turbo编码模块

+ e1 Q3 ^8 i- W' |! t本模型中Turbo码编码器采用两个相同的分量编码器通过交织器并行级联而成。分量编码器是码率为R=1/2的循环系统卷积码。0 `; T, f4 n6 i4 E' R1 }

首先用贝努利发生器(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编码输出。

7 q! A  e8 Q9 a0 q2.2 信道模块( M" y" k( C8 W1 }

信道模块包含有调制模块、信道及噪声模型、解调模块。调制方式可以采用四相相移键控(QPSK)。噪声模型可以选择设置为高斯白噪声信道(AWGN)或多径瑞利衰落信道(Reyleigh Fading)。: Y0 \6 H, ^5 I+ }- {- O4 p

2.3 Turbo译码模块/ n9 b$ X+ v2 }. S# P. Z, [

Turbo码的编码部分由两个子编码器组成,因此在其译码部分也就相应有两个子译码器。该模块可以调用Log—MAP译码子程序、Max—Log—MAP算法译码子程序、SOVA算法子程序供译码模块调用。这些算法通过仿真模块中的S函数实现。

1 V( J# u# F: k0 [3 仿真结果分析

5 x6 B# d7 t8 a0 |. h/ ?3.1 交织器大小对Turbo码性能的影响

$ a; R: z- R5 s0 _* h: l仿真过程中,选取译码算法为Max—Log—MAP,分别设置交织长度为150,600,1 200。三种交织长度的误码率如图3所示。

none.gif

23.jpg (30.24 KB, 下载次数: 1)

2021-3-15 11:01 上传

从图3中很明显看出,当信噪比SNR比较小时,不同的交织长度下译码性能的区别并不是很明显,由此可见,信噪比对译码的影响是很大的。当信噪比大于1 dB时,交织长度越大,译码器的性能就越优越,Turbo码的纠错性能也就越好。这是因为交织器产生的交织增益使得Turbo码的性能随帧长呈指数增长。同时,交织长度的增大使帧长变长,迭代译码的复杂程度也随之增加。一系列问题如编码时延、传输时延、译码时延等就明显。在实际系统中,需要综合考虑选定最佳交织长度。4 V2 M" _& P, v; A" ]( I

3.2 迭代次数对Turbo码性能的影响

) f2 F" g* t' H0 D0 T7 Y. i迭代译码结构是Turbo码具有良好译码性能的一个重要原因。在交织长度为600、采用Max—Log—MAP译码算法的情况下,分别迭代1次、2次、4次进行比较。译码器性能如图4所示。

none.gif

24.jpg (25.85 KB, 下载次数: 1)

2021-3-15 11:01 上传

可以看出,迭代次数越多,误码率越低,译码性能优越。同时,进一步可以发现迭代次数存在一个饱和值,一般5~10次即饱和,当达到饱和时,即使次数增加,译码的性能也不会明显改进,反而是迭代次数的增加会造成不必要的计算负担,所以在实际系统中要考虑饱和点来设计迭代次数。

' L3 e; f9 R6 q; c$ M/ J) b4 v% ]8 ^3.3 不同译码算法比较

, B( j. j9 l* o. L图5是不同算法译码性能的比较,其中交织长度设定为600,迭代次数为3次。比较来说,Log—MAP算法的译码效果最好,Max—Log—MAP算法译码效果比较差,但是具有较快的运算速度。SOVA算法效果不错,是较优方案。因此,在信噪比比较低的情况下,为了戛获得较好的纠错效果,最好基于Log—MAP算法进行修正。

none.gif

25.jpg (27.9 KB, 下载次数: 0)

2021-3-15 11:01 上传

4 结 语5 C5 J2 h$ A, T6 {% M1 _

提出一种基于Simulink模块和S函数共同构建的Turbo码仿真模型。在编码器中,分量码采用循环系统卷积码,使分量码的奇序列与原始信息相同;在译码器中,三个算法子程序可以任意选择比较,使Turbo码的仿真易于实现,方便了对Turbo码的分析和应用研究。利用仿真结果分析了迭代次数、交织长度、不同算法对译码性能的影响,对实际系统设计有一定的指导作用。

- z0 t/ O% m$ J6 P: X

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Turbo码是一种利用迭代解码算法来实现极高误码纠正能力的编码技术。它包括了两个相互协作的卷积码,相比传统的卷积码具有更好的编码效率和纠错能力。 Turbo码的编码过程主要分为三个步骤。首先,将待编码的信息数据按照一定的规则分组,形成多组子块。其次,将每组子块输入到第一个卷积码器中,经过卷积编码得到第一个输出码字。然后,将该码字输入到第二个卷积码器中继续编码,得到最终的编码结果。 在卷积编码过程中,Turbo码引入了一个关键的组成部分,即交互串扰(Interleaver)。交互串扰器通过改变输入序列的顺序,将可能出现的连续错误分散到不同子块中,从而提高了系统的纠错能力。该部分非常重要,因为它是保证Turbo码能够达到较低误码率的关键之一。 在Matlab中,我们可以使用通用编码原理来实现Turbo码编码。首先,需要设计两个卷积码器,并设置好每个卷积码器的多项式。然后,构建交互串扰器,并将待编码的信息数据输入到交互串扰器中。接下来,将串扰后的数据分别输入到两个卷积码器中,并得到两个码字输出。最后,将两个码字按照一定规则组合起来,形成最终的编码结果。 在实现的过程中,我们需要注意设置好交互串扰器和卷积码器的参数,包括多项式、码长和约束长度等。此外,还需要进行调制操作,将二进制编码转换为模拟信号,方便实际传输。最后,通过输出的编码结果,可以进行信道传输和解码等后续操作。 以上是关于Turbo码编码原理在Matlab中的简要介绍,希望对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值