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

下载本文档

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

文档简介

1、Matlab的卷积码译码器的设计与仿真540802 112008111郭林 基于Matlab的卷积码译码器的设计与仿真第1页共17页Matlab*本课程设计主要解决对一个输入信号进行卷积码编码,以及维特比(Viterbi) 译码/出,并通过Matlab软件进行设计与仿真,并进行误码率分析。程序设计与仿真均采用Matlab R2007a(7.4),最后仿真详单与理论分析一致。卷积码编码器;卷积码译码器;Matlab;设计与仿真1本课程设计主要解决对一个信号进行信道编解码,采用卷积码编码,维特比(Viterbi) 译码/出,并通过Matlab软件进行设计与仿真。卷积码的译码有两 种方法软判决和硬判

2、决,此课程设计采用硬判决的维特比译码。1.1卷积码是一种向前纠错控制编码。它将连续的信息比特序列映射为连续的编码器输出符号。这种映射是高度结构化的,使得卷积码的译码方法与分组码译 码所采用的方法完全不同。可以验证的是在同样复杂度情况下,卷积码的编码增 益要大于分组码的编码增益。对于某个特定的应用,采用分组编码还是采用卷积 编码哪一种更好则取决于这一应用的具体情况和进行比较时可用的技术。本课程设计便是通过Matlab,构造了一个卷积码编码后,通过产生加性高斯 白噪声的信道,再进行译码的过程,译码后计算误码率,并进行分析。郭 林 基于Matlab的卷积码译码器的设计与仿真第2页 共17页1.22卷

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

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

5、上一次比较所有可能的2 条路径 ( 序列 ),而是接收一段,计算和比较一段,选择一段最大似然可能的码段,从而达到整个码序列是一个最大似然值得序列。2.1 的 (2, 1, 3)卷积码编码器所编出的码为例,来说明维特比解码2.2的方法和运作过程。为了能说明解码过程,这里给出该码的状态图,如图01 01 c郭林 基于Matlab的卷积码译码器的设计与仿真第3页共17页b y ij01 00 11 输入序列 m m m jj-lj-2d a 00 10 输 m,m,5, 12j 出序 y1101 歹 U 2jc图2.2 (2,1,3) 卷积码状态图 图2.1 (2,1,3) 卷积码编码器 示。维特比

6、译码 需要利用图来说明移码过程。根据卷积码画网格的方法,我们可以画出该码的网格图,如图2.3所示。该图设/&入信息数目L=5,所以画 L+N=8个时间单位,图中分别标以0至7。这里设编码器从a状态开始运作。该网 格图的每一条路径都对应着不同的输入信息序列。由于所有可能输入信息序列共有2kLkL个,因而网格图中所有可能的路径也为 2条。这里节点a=00, b=01, c=10, d=11o节点号0 1 2 3 4 5 6 700 00 00 00 00 00 00a 11 11 11 11 1111 11 11 11 11b 00 00 10 10 10 1001 01 01 01 c图2.3

7、(2,1,3)卷积码网格图设输入编码器的信息序列为(11011000),则由编码器对应输出的序列为Y二(1101010001011100),编码器的状态转移路线为 abdcbdca。若收到的序列R二(0101011001011100),对照网格图来说明维特比译码的方法。由于该卷积码的约束长度为6位,因此先选择接收序列的前 6位序列R=(010101)同到达第3时刻的可能的8个码序列(即8条路径)进行比较,并计算1出码距。该例中到达第3时亥ij a点的路径序列是(000000)和(111011),他们与R1郭 林 基于Matlab的卷积码译码器的设计与仿真第4页 共17页 的距离分别为3和4;到

8、达第3时刻b点的路径序列是(000011)和(111000),他们与R 的距离分别为3和4;到达第3时刻c点的路径序列是(001110)和(110101) , 1他们与R的距离分别为4和1;到达第3时刻d点的路径序列是(001101)和1(110110),他们与R的距离分别为2和3。上述每个节点都保留码距较小的路径1作为幸存路径,所以幸存路径码序列是 (000000)、(000011)、(1101001)和 (001101),如图2.4所示。用于上面类似白方法可以得到第 4、5、6、7时刻的幸 存路径。节点号012 300 00 00a 11 11 11 b3.1 Matlab01 d需要指出

9、的是,对于某个节点,如果比较两条路径与接收序列的累计码距值图2.4维特比译码第3时刻幸存路径相等时,则可以任意选者一条路径作为幸存路径,吃时不会影响最终的译码结 果。在码的终了时刻a状态,得到一条幸存路径。如果 2.5所示。由此可看到译码 器节点号0 1 2 3 4 5 6 7 8a 00 1111b 000101 c01 01 d图2.5第8时刻幸存路径郭林 基于Matlab的卷积码译码器的设计与仿真第5页共17页输出是R =(1101010001011100),即可变换成序列(11011000),恢复了发端原始信息。比较R和R序列,可以看到在译码过程中已纠正了在码序列第1和第7位上的差错。

10、当然如果差错出现太频繁,以致超出卷积码的纠错能力,还是会发生纠误的。在Matlab软件的Simulink组件库中包含有的两种卷积码译码模块,即后验概率卷积译码器和维特比译码器。图 3.1 ,图3.2所示是维特比译码器参数设对话框和模块,它通过维特比译码还原出二进制信号序列图3.1维特比译码器参数设置郭林 基于Matlab的卷积码译码器的设计与仿真第6页共17页3.2 维特比译码器模块如果卷积编码器的输入长度为k,输出信号的长度为n,则维特比译码器的输入好输出信号长度分别是n 和 k 的整数倍。维特比译码器模块主要有以下几个参数:(1)Trellis structure(Trellis结构 )与

11、维特比一冒起相对应的卷积编码器的Trellis 结构。它既可以是Matlab 工作区中的一个Trellis 变量,也可以是通过poly2trellis() 函数产生的 Trellis 结构。(2)Decision Type( 判决类型)维特比译码器德判决类型有3 种: Unquantized( 非量化 )、 HardDecision( 硬判决 ) 和 Soft Decision( 软判决 ),如表 3.1 所示。3.1判决类型解码器的输出类型说明 Unquantized 实数 +1 表示逻辑0; -1 表示逻辑 1 Hard Decision 0 表示逻辑0; 1 表示逻辑1 0 , 1Sof

12、t Decision 介于 0 和 2b-1 之间的 0 表示具有取值为0 的最大概率;2b-1整数,其中b 是软判决表示具有取值为1 的最大概率;介于两位的个数者之间的数表示取0 和 1 的相对概率。(3)Number of softdecision bits( 软判决的个数)当 Decision type 设置为 Soft Decision 时 , 本参数有效, 并且当它的取值为 b 时 , 维特比译码器的输出是介于0 和 2b-1 之间的一个整数。(4)Traceback depth( 反馈深度)反馈深度D影响着维特比译码的精度,同时也影响着解码的时延(即在输出第一个解码数据之前输出的0

13、 的个数 ) 。(5)Operation mode(操作模式)维特比译码器有 3种操作模式:Continuous、Terminated或Truncated。如果维特比译码器德输出信号是抽样信号,则应该把本参数设置为郭林 基于Matlab的卷积码译码器的设计与仿真第7页共17页Continuous模式;当输入信号时帧数据时,操作模式可以是Continuous Terminated或Truncated。对于Continuous模式,维特比译码器在每帧数 据结束时保存译码器的内部状态,用于对下一帧实施解码;在 Truncated 模式下,解码器在每帧数据结束的时候总能恢复到全零状态,它对应于 卷积编

14、码器的On each frame复位方式;Terminated模式适用于卷积编码 器的每帧输入信号的末尾有足够多的零,能够把卷积编码器在完成一帧 数据的编码之后把内部状态恢复为 00 (6)Enable rest input port(启用复位信号端口)当Operation mode参数设置为Continuous并且选中了本选项前面的 复选框之后,维特比译码器增加一个输出信号端口Rsto同时当Rst的输入信号不等于0时,维特比译码器复位到初始状态。33.2 Matlab整个设计的结构框图如图3.3编译码器约定参数信号噪声信道信号信号信源模块信宿模块图3.3整体设计结构模块框图可见,本设计由3个

15、子系统组成:信源模块对随机二进制信号进行卷积码和二进制相位调制,输出基带调制信号;信道模块是一个有噪声信道;信宿模块对调制信号进行软判决译码,得到原始信息序列,并且计算调制信号的误码率。信源模块由贝努利二进制序列产生器、卷积码编码器以及二进制相位调制3个模块组成,如图3.4所示郭林 基于Matlab的卷积码译码器的设计与仿真第8页共17页图3.4信源模块系统框图各个模块的参数设置分别如表 3.2表3.4所示3.2 Bernoulli Binary Generator参数名称参数值Bernoulli Binary Generator模块类型Probability of zero 0.5Initi

16、al seed 25741Sample time 0.0001Frame-based output CheckedSamples per frame 10000参数名称参数值Convolutional Encoder模块类型Trellis Poly2trellis(7 , 171 133) Reset On each frame郭林 基于Matlab的卷积码译码器的设计与仿真 第9页共17页3.4 BPSK Modulator Baseband。参数名称参数值BPSK Modulator Baseband 模块类型Phase offset(rad) 0Samples per symbol 1本

17、设计使用相对较简单的一个加性高斯白噪声信道作为噪声信道,它在二进制相位调制信号中叠加高斯白噪声。加性高斯白噪声模块的参数设置如表3.5。3.5 AWGN Channel参数名称参数值AWGN Channe模块类型Initial seed 1237Mode Signal to noise ratio(SNR) SNR(dB) SNRInput signal power(watts) 1信道模块如下图3.6所示。图3.6信道模块示意图郭林 基于Matlab的卷积码译码器的设计与仿真第10页共17页信宿模块在接收到二进制相位调制信号后,首先由 BPSK DemodulatorBaseband (二进

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

19、SK Demodulator Baseband 模块类型Phase offset(rad) 0Decision type Hard decisionOutput data type Inherit via internal rule郭 林 基于Matlab的卷积码译码器的设计与仿真第11页 共17页3.7 Viterbi Decoder参数名称参数值Viterbi Decoder模块类型Trellis structure poly2trellis(7, 171 133)Decision type Hard decisionTreceback depth 1000Operation mode T

20、runcated 将此完整设计保存,命名为 convh.mdl。3.3为了验证译码模块的正确性,便让其进行最简模式运行,为此,临时设计一个简化信号系统,关闭信道噪声,不进行二进制相位的调制与解调,去掉误比特率统计模块。为了能看到输入二进制码和译码输出二进制码,增加了两个 ToWorkspace(结果输入到工作区模块),整个系统模块框图如图3.8所示。曲 射 切般s 皆hujIh匕rrTgofc &R 10 Q * A口 r ilmU三)!明 Ul 的号! 1图3.8简化译码模块框图同时,为了便于观察,将 Bernoulli Binary Generator(贝努利二进制序列产生器)的参数设置为

21、如表3.8所示,以产生简单的15位二进制随机码,也将Viterbi Decoder 的 Trceback depth 值改为 5。将 To Workspacel 模块和 To Workspace模块的变量名分别设置为 pdata和data。郭林 基于Matlab的卷积码译码器的设计与仿真第12页共17页3.8 Bernoulli Binary Generator参数名称参数值Bernoulli Binary Generator模块类型Probability of zero 0.5Initial seed 5Sample time 10Frame-based output CheckedSamp

22、les per frame 5运行仿真(),在matlab的命令窗口中输入pdata和data分别得到相应的二进制序列。对所得序列分别截图,可得如图3.9所示结果。可见,译码器能够正确进行译码,所设计简化译码器正确,因而,从理论上可推导,原设计正 确。Command indowOTci get 比art启& select MATLAB Help or D pdatapdata =Command Wndg*Q Tq get started, MATLAB Helm c data dats = 1 1 0 1 I 0 1 1 0 0 0 0 1 1 1图3.9简化译码器仿真结果通过对convh.m

23、dl文件进行仿真,证明设计正确,但因所得二进制码太多, 此处便不进行截图证明。郭林 基于Matlab的卷积码译码器的设计与仿真第13页共17页4 Matlab编制M文件convolutionh.m ,使convh.mdl在不同的信噪比条件下重复执行前面建立的项目convh.mdl。然后绘制信道的信噪比与编码信号误比特率之间的关系曲线图M文件代码如下:%x表示信噪比x=-10:5;%y表示信号的误比特率y=x;嘛备一个空白图形hold off;%1复运行convh.mdl ,检验不同条件下硬判决译码的性能for i=1:length(x)%言道的信噪比依次取x中的元素SNR=x(i);%zt行仿

24、真程序,得到的误比特率保存在工作区变量BitErrorRate 中sim(convh);%计算BitErrorRate 的均值作为本次仿真的误比特率y(i)=mean(BitErrorRate);end法制x和y的关系曲线图,纵坐标采用对数坐标 semilogy(x,y);%呆持已经绘制的图形hold on执行此M文件,得到如图4.1所示的关系曲线图,由此图可见,随着信道 信噪比的提升,维特比译码所得结果的误比特率越低,信道的可信度越高,信比在大于-2时信道的误码率开始明显降低郭林 基于Matlab的卷积码译码器的设计与仿真第14页共17页蠲I 附*wi .耳明 0他也 量嚅.)81?解力.址

25、*弋I . :* J口Q3|国负。|更| 口后 回 田B日任石图 4.1 convolutionh.m 运行结果5此课程设计对整个通信系统包含的编码、传输和译码都进行了设计与仿真,从这些过程中我们看到了通信系统的基本工作原理。通过整个卷积码系统的设计与仿真,使我们加深了对卷积码的理解,掌握维特比译码的基本思路,知道如何进行误码率分析从而选者合适的信道传输信号,更重要的是学会了使用Matlab作为学习工具来对我们的通信系统进行设计和仿真等操作,这对我们以后的学习和工作有着重要意义。郭 林 基于Matlab的卷积码译码器的设计与仿真第15页共17页1Rodger E.Ziemer , Roger

26、L.Peterson 著.尹长川,郝建军,罗涛 等译.数字通 信基础(Introduction to Digital Communication).原书第 2 版.北京:机械工业出版社,2005.12樊昌信,张甫翊,徐炳祥,吴成柯.通信原理.第5版.北京:国防工业 出版社,2007.13邓华.Matlab通信仿真及应用实例详解.北京:人民邮电出版社,2003.94陈国通.数字通信.哈尔滨:哈尔滨工业大学出版社,2002.45孙祥,徐流美,吴涛.Matlab7.0 基础教程.北京:清华大学出版社,2005.5郭林 基于Matlab的卷积码译码器的设计与仿真第16页共17页附录:convh.mdl

27、详图郭林 基于Matlab的卷积码译码器的设计与仿真第17页共17页附录2: M文件convolutionh.m 程序清单%?序名称:convolutionh.m/程序功能:依次取不同的信噪比,重复对 convh.mdl进行仿真,检验译码性台匕 目匕。/程序作者:郭林%最后修改日期:2008-1-1%x表示信噪比x=-10:5;%y表示信号的误比特率y=x;%6备一个空白图形hold off;%1复运行convh.mdl ,检验不同条件下硬判决译码的性能for i=1:length(x)%言道的信噪比依次取x中的元素SNR=x(i);%zt行仿真程序,得到的误比特率保存在工作区变量BitErr

28、orRate 中sim(convh);%计算BitErrorRate的均值作为本次仿真的误比特率y(i)=mean(BitErrorRate);end法制x和y的关系曲线图,纵坐标采用对数坐标semilogy(x,y);%呆持已经绘制的图形hold on郭林 基于Matlab的卷积码译码器的设计与仿真第18页共17页7.5.3卷积码的应用(一)性能较好的卷积码考虑Viterbi译码,假设卷积码的编码存储 m只是个位数。在每一帧被接收时,译码器km0都必须更新状态,对于每一个状态,都有 2条路径要估算。于是,译码器的计算量大致2vkn, k 与成正比,等于。这是能够用此方式解码的码的约束长度的上

29、限。这个限的大小取22决于要求达到的比特率和技术水平,但是通常情况下,约束度N取79,这些值是目前典型的最大值。更长的约束长度也意味着功能更为强大的码,但只能在合理的码率下用其他技术来译码,例如序贯译码。我们将一些已知的性能良好的码率为1/2 的卷积码的生成多项式用八进制的形式表示,如表 7-17 所示。(1)(2) dm gg2 7 5 53 17 15 64 35 23 75 75 53 86 171 133 107 371 247 108 753 561 12最常见的卷积码的码率为1/2,输入约束度N=7,生成子多项式为:(1)6543gDDDDD()1,,(0)643gDDDD()1,

30、,(二)删除卷积码虽然可以为任意码率的卷积码定义性能良好的生成子多项式和使用Viterbi解码,但是在有码率很高时,计算会相当复杂。以码率为 3/4, v=3, K=6的情况为 例。解码器每输出4比特的一帧,就要做64次路径计算,每次都包含对4比特的 比较。现在假设我们使用码率为1/2的码,每3帧去掉2个输出比特。对于这种码,我们保留 v=3,使其具 有可比性,但是由于K=4,因而每帧都要做16次路径计算,同时还需要3帧,作 为初始的4比特输出帧的等价形式。这样,我们要做 48次比较,每次只有1比特 或2比特。经过类似的推理,我们可以得出结论:码率越大,计算增益就越大,计 算增益对于码率为2/

31、3的码来说正好合适。郭林 基于Matlab的卷积码译码器的设计与仿真第19页共17页当然,如果通过上述删除过程产生的码不能产生相当的性能,那么考虑计算量是不值得的。但所幸的是,有很多删除的码的性能(以编码增益计算)可以达到0.ldB或0.2dB (这是最佳码的数据)。表 7-18中表明了码率为1/2的码可以被 删除,产生码率为2/3或3/4的好码。对于2/3码率的码来说,前两个生成子(八 进制表示)用来生成第一个2比特的输出帧,而下一帧只用到了第三个生成子(和 其他两个一样)。对于3/4码率的码来说,紧接着的第三帧要用到第四个生成子。除了运算方面的考虑,删除卷积码还能在只用一个解码器的情况下提

32、供若干不同码率的码,这一点很重要。比如说,我们可以在较好的接收条件下处理3/4码率的码,但当噪声级别加大且要求有较高的d 值时,允许收端和发端在切换到2/3 或 1/2 码率的标准上保持一,致。这种算法就叫做自适应编码(adaptive coding )。生成子 生成子生成子 ddd,v R,(1/2)R,(2/3)R,(3/4)2 7, 5 5 7 , 5, 7 3 7 ,3 15,17615 , 17,4 31 , 33 7 31 , 33 ,4 37 , 25 6 37 , 25 ,5 57 , 65 8 57 , 65 ,5, 5, 7 315 4 15 ,17, 15, 17 431

33、 5 31 , 33 , 31 , 31 331 4 37 , 25 , 37 , 37 46 133 , 171 10 1336 135 , 147 10 1357 237 , 345 10 237(二)应用举例171, 133 6 133147, 147 6 135345, 237 7 237171, 133, 171 5147, 147, 147 6345, 237, 345 657 6 65 , 57 , 57 , 65 4由于卷积码的优异性能,它在很多方面得到了应用,其典型应用是加性高斯白噪声信道,特别是卫星通信和空间通信中,主要是和 PSKJ口 QPSKM制结合,它还是网格编码调制

34、(TCM以及级联码内码的主要码型。表 7-19 列出了一些常用卷积码采用3 比特软判决Viterb 译码的编码增益,其中(2, 1, 7)码及(3, 1, 7)码在二十世纪70 年代末已由美国宇航局制定为人造行星标准码,用于太阳系行星的深空探测器中。二十世纪 80年代中(2, 1, 7)码和(4, 3, 2)码已被国际通信卫星组织(INTELSAT制iT为IDR和旧S业务的标准码。止匕 外,许多小型卫星通信地球站(VSAT中采用了( 2, 1, 6)码或(2, 1, 7)码。7-19nkN dB 00郭林基于Matlab的卷积码译码器的设计与仿真第20页 共17页-3-5-7P=10 P=10

35、 P=10 bbb(3, 1, 7) 4.2 5.7 6.2(2, 1, 7) 3.8 5.1 5.8(2, 1, 6) 3.5 4.6 5.3(2, 1, 5) 3.3 4.3 4.9(3, 2, 4) 3.1 4.6 5.2(3, 2, 3) 2.9 4.2 4.7(4, 3, 3) 2.6 4.2 4.8(4, 3, 2) 2.6 3.6 3.9止匕外,随着卫星通信面临着新挑战,特别是需要非同步轨道来支持移动通信网 络。因止匕,蜂窝移动通信所采用的码对于卫星通信也有很大的吸引力。在蜂窝移动通信中,由于多径干扰(反射)、信号阴影、同波道干扰(在其他蜂窝中复用同一频段)造成很多突发错误,但是我们需要将目标误比特率控制在适度的 范围内,同时获得编码增益,为此卷

温馨提示

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

评论

0/150

提交评论