Matlab的卷积码译码器的仿真_第1页
Matlab的卷积码译码器的仿真_第2页
Matlab的卷积码译码器的仿真_第3页
Matlab的卷积码译码器的仿真_第4页
Matlab的卷积码译码器的仿真_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于 Matlab 的卷积码译码器的设计与仿真学生姓名:指导老师: *摘要本课程设计主要解决对一个卷积码序列进行维特比(Viterbi) 译码输出 ,并通过 Matlab 软件进行设计与仿真,并进行误码率分析。在课程设计中,系统开发平台为 Windows Vista Ultimate,程序设计与仿真均采用Matlab R2007a(7.4),最后仿真详单与理论分析一致。关键词课程设计;卷积码译码器;Matlab;Simulink ;设计与仿真1 引言本课程设计主要解决对一个卷积码序列进行维特比(Viterbi) 译码输出 ,并通过 Matlab 软件进行设计与仿真。 卷积码的译码有两种方法软判

2、决和硬判决,此课程设计采用硬判决的维特比译码。1.1 课程设计目的卷积码是一种向前纠错控制编码。 它将连续的信息比特序列映射为连续的编码器输出符号。 这种映射是高度结构化的, 使得卷积码的译码方法与分组码译码所采用的方法完全不同。 可以验证的是在同样复杂度情况下, 卷积码的编码增益要大于分组码的编码增益。 对于某个特定的应用, 采用分组编码还是采用卷积编码哪一种更好则取决于这一应用的具体情况和进行比较时可用的技术1 。本课程设计便是通过 Matlab 设计一个硬判决维特比译码输出的完整电路, 并进行误码率分析。1.2 课程设计的原理卷积码,又称连环码,是由伊莱亚斯(P.elias)于 1955

3、 年提出来的一种非分组码。卷积编码的最佳译码准则为: 在给定已知编码结构、 信道特性和接收序列的情况下,译码器将把与已经发送的序列最相似的序列作为传送的码字序列的估值。对于二进制对称信道, 最相似传送序列就是在汉明距离上与接收序列最近的序列。卷积码的译码方法有两大类:一类是大数逻辑译码,又称门限译码 (硬判决,编者注 );另一种是概率译码 (软判决,编者注 ),概率译码又分为维特比译码和序列译码两种。门限译码方法是以分组码理论为基础的, 其译码设备简单,速度快,但其误码性能要比概率译码法差 2 。当卷积码的约束长度不太大时,与序列译码相比,维特比译码器比较简单,计算速度快。维特比译码算法是 1

4、967 年由 Viterbi 提出,近年来有大的发展。目前在数字通信的前向纠错系统中用的较多, 而且在卫星深空通信中应用更多, 该算法在卫星通信中已被采用作为标准技术。2 维特比译码原理采用概率译码的基本思想是:把已接收序列与所有可能的发送序列做比较,选择其中码距最小的一个序列作为发送序列。如果发送L 组信息比特,那么对于 (n,k)卷积码来说,可能发送的序列有2kL 个,计算机或译码器需存储这些序列并进行比较,以找到码距最小的那个序列。当传信率和信息组数L 较大时,使得译码器难以实现。 维特比算法则对上述概率译码做了简化,以至成为了一种实用化的概率算法。它并不是在网格图上一次比较所有可能的2

5、kL条路径 (序列 ),而是接收一段, 计算和比较一段, 选择一段最大似然可能的码段,从而达到整个码序列是一个最大似然值得序列。下面以图 2.1 的 (2,1,3)卷积码编码器所编出的码为例,来说明维特比解码的方法和运作过程。为了能说明解码过程,这里给出该码的状态图,如图2.2 所by1j001101 入序列mjm j-1 mj-2m1,m 2, mj ,输a0010dy2j出序列1101c图 2.1(2,1,3)卷积码编码器图 2.2(2,1,3)卷积码状态图示。维特比译码需要利用图来说明移码过程。根据卷积码画网格的方法,我们可以画出该码的网格图,如图2.3 所示。该图设输入信息数目L=5,

6、所以画 L+N=8个时间单位,图中分别标以0 至 7。这里设编码器从a 状态开始运作。该网格图的每一条路径都对应着不同的输入信息序列。由于所有可能输入信息序列共有2kL 个,因而网格图中所有可能的路径也为2kL 条。这里节点 a=00,b=01,c=10,d=11。节点号01234567a000000000000001111111111bcd11111111110010001010100101010101010101010101图 2.3 (2,1,3)卷积码网格图设输入编码器的信息序列为 (11011000),则由编码器对应输出的序列为Y=(1101010001011100),编码器的状态转

7、移路线为 abdcbdca。若收到的序列R=(0101011001011100),对照网格图来说明维特比译码的方法。由于该卷积码的约束长度为6 位,因此先选择接收序列的前6 位序列R1=(010101)同到达第 3 时刻的可能的 8 个码序列 (即 8 条路径 )进行比较,并计算出码距。该例中到达第3 时刻 a 点的路径序列是 (000000)和(111011),他们与 R1的距离分别为 3 和 4;到达第 3 时刻 b 点的路径序列是 (000011)和(111000),他们与 R1 的距离分别为 3 和 4;到达第 3 时刻 c 点的路径序列是 (001110)和(110101),他们与

8、R1 的距离分别为 4 和 1;到达第 3 时刻 d 点的路径序列是 (001101)和(110110),他们与 R1 的距离分别为 2 和 3。上述每个节点都保留码距较小的路径作为幸存路径,所以幸存路径码序列是 (000000)、(000011)、(1101001)和(001101),如图 2.4 所示。用于上面类似的方法可以得到第 4、5、 6、 7 时刻的幸存路径。节点号0123abc0000001111111 0101d图 2.4维特比译码第 3 时刻幸存路径需要指出的是, 对于某个节点, 如果比较两条路径与接收序列的累计码距值相等时,则可以任意选者一条路径作为幸存路径,吃时不会影响最

9、终的译码结果。在码的终了时刻a 状态,得到一条幸存路径。如果2.5 所示。由此可看到译码器节点号012345678a110011b00c01010101d图 2.5第 8 时刻幸存路径输出是 R=(1101010001011100),即可变换成序列 (11011000),恢复了发端原始信息。比较 R和 R 序列,可以看到在译码过程中已纠正了在码序列第1 和第 7 位上的差错。当然如果差错出现太频繁, 以致超出卷积码的纠错能力,还是会发生纠误的。3 Matlab 中卷积码译码器的设计与仿真3.1 Matlab 维特比译码器模块介绍在 Matlab 软件的 Simulink 组件库中包含有的两种卷

10、积码译码模块,即后验概率卷积译码器和维特比译码器。图 3.1,图 3.2 所示是维特比译码器参数设置对话框和模块,它通过维特比译码还原出二进制信号序列。图 3.1维特比译码器参数设置图 3.2 维特比译码器模块如果卷积编码器的输入长度为 k,输出信号的长度为 n,则维特比译码器的输入好输出信号长度分别是n 和 k 的整数倍。维特比译码器模块主要有以下几个参数:(1)Trellis structure(Trellis 结构 )与维特比一冒起相对应的卷积编码器的 Trellis 结构。它既可以是 Matlab 工作区中的一个 Trellis 变量,也可以是通过 poly2trellis() 函数产

11、生的 Trellis 结构。(2)Decision Type(判决类型 )维特比译码器德判决类型有3 种: Unquantized(非量化 ) 、 HardDecision(硬判决 )和 Soft Decision(软判决 ),如表 3.1 所示。表 3.1 维特比译码器的判决类型判决类型解码器的输出类型说明Unquantized实数+1 表示逻辑 0; -1 表示逻辑 1Hard Decision0,10表示逻辑;1表示逻辑10Soft Decision介于 0 和 2b-1 之间的0表示具有取值为0 的最大概率; 2b-1整数,其中 b 是软判决表示具有取值为1 的最大概率;介于两位的个数

12、者之间的数表示取0 和 1 的相对概率。(3)Number of soft decision bits(软判决的个数 )当 Decision type 设置为 Soft Decision 时,本参数有效 ,并且当它的取值为 b 时,维特比译码器的输出是介于(4)Traceback depth(反馈深度 )0 和 2b-1 之间的一个整数。反馈深度 D 影响着维特比译码的精度, 同时也影响着解码的时延 (即在输出第一个解码数据之前输出的 0 的个数 )。(5)Operation mode(操作模式 )维特比译码器有3 种操作模式:Continuous、Terminated或 Truncated。

13、如果维特比译码器德输出信号是抽样信号,则应该把本参数设置为Continuous 模式;当输入信号时帧数据时,操作模式可以是Continuous、Terminated 或 Truncated。对于 Continuous 模式,维特比译码器在每帧数据结束时保存译码器的内部状态,用于对下一帧实施解码;在Truncated模式下,解码器在每帧数据结束的时候总能恢复到全零状态,它对应于卷积编码器的 On each frame 复位方式; Terminated 模式适用于卷积编码器的每帧输入信号的末尾有足够多的零,能够把卷积编码器在完成一帧数据的编码之后把内部状态恢复为0。(6)Enable rest i

14、nput port(启用复位信号端口 )当 Operation mode 参数设置为 Continuous 并且选中了本选项前面的复选框之后,维特比译码器增加一个输出信号端口 Rst。同时当 Rst 的输入信号不等于 0 时,维特比译码器复位到初始状态。 33.2 Matlab 中卷积码维特比译码器的设计整个设计的结构框图如图3.3编译码器约定参数信号噪声信道信信号号信源模块信宿模块图 3.3整体设计结构模块框图可见,本设计由 3 个子系统组成: 信源模块对随机二进制信号进行卷积码和二进制相位调制, 输出基带调制信号; 信道模块是一个有噪声信道; 信宿模块对调制信号进行软判决译码,得到原始信息

15、序列,并且计算调制信号的误码率。信源模块由贝努利二进制序列产生器、 卷积码编码器以及二进制相位调制 3 个模块组成,如图 3.4 所示图 3.4 信源模块系统框图各个模块的参数设置分别如表3.2表 3.4 所示。表 3.2 Bernoulli Binary Generator( 贝努利二进制序列产生器 ) 的参数设置参数名称参数值模块类型Bernoulli Binary GeneratorProbability of zero0.5Initial seed25741Sample time0.0001Frame-based outputCheckedSamples per frame10000表

16、 3.3 Convolutional Encoder( 卷积码编码器 ) 的参数设置参数名称参数值模块类型Convolutional EncoderTrellisPoly2trellis(7 , 171 133)ResetOn each frame表 3.4 BPSK Modulator Baseband(二进制相位调制模块 ) 的参数设置参数名称参数值模块类型BPSK Modulator BasebandPhase offset(rad)0Samples per symbol1本设计使用相对较简单的一个加性高斯白噪声信道作为噪声信道,它在二进制相位调制信号中叠加高斯白噪声。加性高斯白噪声模块

17、的参数设置如表3.5。表 3.5 AWGN Channel( 加性高斯白噪声模块 ) 的参数设置参数名称参数值模块类型AWGN ChannelInitial seed1237ModeSignal to noise ratio(SNR)SNR(dB)SNRInput signal power(watts)1信道模块如下图 3.6 所示。图 3.6 信道模块示意图信宿模块在接收到二进制相位调制信号后,首先由BPSK DemodulatorBaseband 二(进制相位解调模块 )对信号进行量化,得到硬判决量化信号,然后通过 Viterbi Decoder(维特比译码器 )对软判决信号实施译码。译码

18、输出信号和信源模块产生的原始信号输入到 Error Rate Calculator(误比特率统计模块 )中,统计得到的数据一方面通过 Display( 显示模块 )显示出来,另一方面通过一个 Selector(选择器 ) 把其 中的第一个元 素 ( 即 编码信号 的误 比特率 ) 保存到工 作区 变量BitErrorRate 中。信宿模块如下图3.7 所示。图 3.7 信宿模块 Sink各关键模块参数设置如表3.7、表 3.8 所示。表 3.7 BPSK Demodulator Baseband( 二进制相位解调模块 ) 的参数设置参数名称参数值模块类型BPSK Demodulator Bas

19、ebandPhase offset(rad)0Decision typeHard decisionOutput data typeInherit via internal rule表 3.7 Viterbi Decoder( 维特比译码器 ) 的参数设置参数名称参数值模块类型Viterbi DecoderTrellis structurepoly2trellis(7, 171 133)Decision typeHard decisionTreceback depth1000Operation modeTruncated将此完整设计保存,命名为convh.mdl。3.3 简化维特比译码器的仿真为

20、了验证译码模块的正确性,便让其进行最简模式运行, 为此,临时设计一个简化信号系统, 关闭信道噪声, 不进行二进制相位的调制与解调,去掉误比特率统计模块。为了能看到输入二进制码和译码输出二进制码,增加了两个ToWorkspace(结果输入到工作区模块),整个系统模块框图如图3.8 所示。图 3.8 简化译码模块框图同时,为了便于观察,将 Bernoulli Binary Generator(贝努利二进制序列产生器 )的参数设置为如表 3.8 所示,以产生简单的 15 位二进制随机码,也将 Viterbi Decoder 的 Trceback depth值改为 5。将 To Workspace1模

21、块和 To Workspace模块的变量名分别设置为 pdata 和 data。表 3.8 简化译码模块的 Bernoulli Binary Generator 的参数设置参数名称参数值模块类型Bernoulli Binary GeneratorProbability of zero0.5Initial seed5Sample time10Frame-based outputCheckedSamples per frame5运行仿真 (),在matlab的命令窗口中输入pdata 和data 分别得到相应的二进制序列。对所得序列分别截图,可得如图3.9 所示结果。可见,译码器能够正确进行译码,

22、所设计简化译码器正确,因而,从理论上可推导,原设计正确。图 3.9 简化译码器仿真结果通过对 convh.mdl 文件进行仿真,证明设计正确,但因所得二进制码太多,此处便不进行截图证明。4 Matlab 中卷积码译码器的误码率分析编制 M 文件 convolutionh.m ,使 convh.mdl 在不同的信噪比条件下重复执行前面建立的项目convh.mdl。然后绘制信道的信噪比与编码信号误比特率之间的关系曲线图。M 文件代码如下:%x表示信噪比x=-10:5;%y表示信号的误比特率y=x;%准备一个空白图形holdoff;%重复运行 convh.mdl,检验不同条件下硬判决译码的性能for

23、i=1:length(x)%信道的信噪比依次取x 中的元素SNR=x(i);%运行仿真程序, 得到的误比特率保存在工作区变量BitErrorRate中sim(convh);%计算 BitErrorRate的均值作为本次仿真的误比特率y(i)=mean(BitErrorRate);end%绘制 x 和 y 的关系曲线图,纵坐标采用对数坐标semilogy(x,y);%保持已经绘制的图形holdon执行此 M 文件,得到如图4.1 所示的关系曲线图,由此图可见,随着信道信噪比的提升, 维特比译码所得结果的误比特率越低,信道的可信度越高, 信噪比在大于 -2 时信道的误码率开始明显降低。图 4.1 convolutionh.m 运行结果5 结束语此课程设计对整个通信系统包含的编码、传输和译码都进行了设计与仿真,从这些过程中我们看到了通信系统的基本工作原理。通过整个卷积码系统的设计与仿真,使我们加深了对卷积码的理解,掌握维特比译码的基本思路,知道如何进行误码率分析从而选者合适的信道传输信号,更重要的是学会了使用Matlab作

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论