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所示。

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所示。

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所示。

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所示。

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算法进行修正。

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

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

  1. matlab对信号进行AM调制与解调(仿真)

    matlab对信号进行AM调制与解调(仿真) 用matlab仿真AM模拟调制.解调过程 AM调制与解调过程 子函数程序 T2F 子函数程序 F2T 子函数程序 lpf 结果如下所示 用matlab仿真 ...

  2. 基于MATLAB的turbo码代码,一种基于Simulink的Turbo码仿真实现

    一种基于Simulink的Turbo码仿真实现 Implementation of Turbo Code Simulation Based on Simulink DOI: 10.12677/HJWC ...

  3. matlab编写信号采集程序,MATLAB语音信号采集课程设计

    MATLAB语音信号采集课程设计 数字信号处理 课程设计报告 课设题目:语音信号的采集与处理 学 院:信息科学与工程学院 专 业:电子信息工程 班 级:电子0903 姓 名: 学 号: 指导教师:张海 ...

  4. 离散冲激函数matlab,表示信号系统的matlab函数工具箱.doc

    电孑科技丈学 实验报告 学生姓名:学号:指导教师: 一.实验室名称:信号与系统实验室 二.实验项目名称:表示信号.系统的matlab函数.工具箱 三.实验原理: 1?对于离散时间信号的加法与乘法,表达 ...

  5. matlab做频域,如何使用matlab进行频域分析

    Matlab可以说是一个非常有用且功能齐全的工具,在通信.自控.金融等方面有广泛的应用. 本文讨论使用Matlab对信号进行频域分析的方法. 说到频域,不可避免的会提到傅里叶变换,傅里叶变换提供了一个 ...

  6. 基于matlab的信号去噪,基于matlab的信号去噪研究.doc

    基于matlab的信号去噪研究.doc 学 生 毕 业 设 计(论 文) 课题名称 基于 MATLAB 的信号去噪研究 姓 名 陈文 学 号 051220206 院 系 物电系 专 业 电子信息工程 ...

  7. 阶跃信号的matlab,单位阶跃信号的表示-matlab

    <单位阶跃信号的表示-matlab>由会员分享,可在线阅读,更多相关<单位阶跃信号的表示-matlab(5页珍藏版)>请在人人文库网上搜索. 1.单位阶跃信号单位阶跃信号的定义 ...

  8. matlab随机信号分析,基于MATLAB的随机信号分析方法.ppt

    <基于MATLAB的随机信号分析方法.ppt>由会员分享,可在线阅读,更多相关<基于MATLAB的随机信号分析方法.ppt(31页珍藏版)>请在人人文库网上搜索. 1.基于MA ...

  9. matlab做飞机气动加热,MATLAB在航空航天器飞行仿真中的应用.pdf

    中国交通研究与探柬(2005)一第六J蓐全目交通运输领域青卑学术会讧论文亲 Ⅵ 7· : {-+¨''一 ÷e .',p 天器1行仿真中的应用木 刘瑞华 (中国民航学院天津市智能信号与图像处理重点实验 ...

  10. 信号与系统Matlab M6-2,信号与系统matlab实验与答案

    频率越高,图像更加密集. 用 MATLAB 产生音阶信号 1 2 3 4 5 6 7 1,并播放,抽样频率可设为 8000 Hz. 利用 MATLAB 产生信号 x1 t cost 和 x1 t co ...

最新文章

  1. Go 学习笔记(11)— 切片定义、切片初始化、数组和切片差异、字符串和切片转换、len()、cap()、空 nil 切片、append()、copy() 函数、删除切片元素
  2. java 实现汉字转换拼音_JAVA实现汉字转拼音功能代码实例
  3. 30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用
  4. python爬虫面试遇到的问题
  5. 【转】C#开发奇技淫巧二:根据dll文件加载C++或者Delphi插件
  6. char的测试和含义
  7. Linux 数据重定向
  8. 【matlab】 GMSK的调制与解调【附详尽注释】
  9. bzoj2286【SDOI2011】消耗战
  10. PHP控制连接打印机
  11. Django实现adminx后台网站访问的IP记录统计
  12. 集群系统性能测试Linpack-HPL安装
  13. npm学习(十七)之node_modules中的bin文件夹
  14. Imbalance data——数据不平衡问题
  15. 中国古代木制机器发展简史
  16. 在有n个学生的成绩表里,每条信息由姓名与分数组成,要求:1按分数高低次序,输出每个学生的名字,分数相同的为同一名次,2按名次输出每个学生的姓名与分数。
  17. 什么是winpe,winpe系统有什么作用?
  18. kali liunx使用心得之命令行模式下如何配置连接无线网络
  19. Linux 创建线程 段错误,linux下线程池,出现Segmentation fault (core dumped) 问题
  20. getcontext方法 getactivity方法的区别

热门文章

  1. 单溶水箱串级控制计算机控制,单容水箱液位控制系统
  2. Xposed 之旅 -- 微信防撤回
  3. vim插件-对齐插件tabular
  4. IDEA eclipse快捷键大全
  5. eterm 350转443转接器
  6. Abaqus 两套常用单位
  7. matlab 关联矩阵,(案例)利用Matlab实践关联矩阵与邻接矩阵的转换
  8. 冷凝器换热效果变差后果
  9. android listview viewstub,Android中使用ViewStub提高布局性能
  10. 线性代数第3章思维导图