基于matlab编译码器的仿真与设计

上传人:无*** 文档编号:96083059 上传时间:2022-05-25 格式:DOC 页数:43 大小:823KB
返回 下载 相关 举报
基于matlab编译码器的仿真与设计_第1页
第1页 / 共43页
基于matlab编译码器的仿真与设计_第2页
第2页 / 共43页
基于matlab编译码器的仿真与设计_第3页
第3页 / 共43页
点击查看更多>>
资源描述
摘 要摘 要 本课程设计主要解决信源编码和信道编码中的卷积码的数字调制,信源输出的模拟信号要转换成数字信号,就需要对信源信道进行编码译码操作,并通过Simulink软件进行设计与仿真,进行误码率分析。卷积码是一种性能优越的信道编码。它的编码器和译码器都比较容易实现,同时它具有较强的纠错能力。随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。本文简明地介绍了卷积码的编码原理和译码原理。并在SIMULINK模块设计中,完成了对卷积码的编码和译码以及误比特统计整个过程的模块仿真。最后,通过在仿真过程中分别改变卷积码的重要参数来加深理解卷积码的这些参数对卷积码的误码性能的影响。经过仿真和实测,并对测试结果作了分析。得出了以下三个结论: (1)当改变卷积码的码率时,系统的误码性能也将随之发生变化。 (2)对于码率一定的卷积码,当约束长度N 发生变化时,系统的误码性能也会随之发生变化。 (3)回溯长度也会不同程度上地影响误码性能。关键词 : 编译码器;simulink;设计与仿真 卷积码;码率39目录ABSTRACTThis course is designed to solve source coding and channel coding convolutional codes in the digital modulation, the source output analog signals into digital signals to be converted to the need for the source and channel coding and decoding operations, and through the Simulink software design and simulation, and the bit error rate analysis. Convolutional code is a superior performance of channel coding. Its encoder and decoder are relatively easy to implement, and it has a strong error correction capability. Error-correcting coding theory research with the deepening of the practical application of convolutional codes more widely. This concise introduction to the principles of convolutional coding and decoding principles. SIMULINK module in the design, completed the coding and decoding convolutional code and bit error statistics of the whole process simulation module. Finally, changes in the simulation process of convolutional codes, respectively, to deepen our understanding of the important parameters of these parameters on convolutional codes convolutional codes error performance. The simulation and measurement, and test results are analyzed. Reached the following three conclusions: (1) When the change rate convolutional code, the system error performance will subsequently change. (2) For a certain rate convolutional codes, when the constraint length N changes, the system BER performance also will be changed. (3) back length will be affected to varying degrees, error performance. Keywords: codec; simulink;design and simulation of convolutional code目 录目 录第1章 引言11.1 课题背景11.2 国内外研究现状11.3 本课题的意义11.4 本课题的研究方法2第2章 MATLAB组件介绍及通信系统概述32.1 MATLAB与通信仿真的发展现状及应用32.2 通信系统概述与组成32.3 通信仿真42.4 Simulink仿真及工作原理6第3章 信源编码83.1 A律律编码特性83.1.1 A律编码83.1.2 律编码83.1.3 A律13折线93.2 A律、律的特性比较11第4章 信道编码及译码154.1 卷积码的概念介绍154.2 卷积码的编码过程介绍154.3 卷积码译码过程的概述164.4 卷积码的最大似然译码194.5 输入与同步单元21第5章 卷积码的仿真225.1 Simulink仿真模块的参数设置以及重要参数的意义225.2 简化维特比译码器的仿真26第6章 卷积码译码器的误码率分析286.1信噪比与误码率的关系286.2.不同回溯长度对卷积码性能的影响296.3 不同码率对卷积码误码性能的响316.4 不同约束长度对卷积码的误码性能影响32第7章 结论35参考文献36致 谢37第1章 引言第1章 引言1.1 课题背景随着现代通信的发展,高速信息传输和高可靠性传输成为信息传输的两个主要方面,而可靠性尤其重要。A律编码、律编码以及卷积码以其高速性和可靠性在实际应用中越来越广泛。其中1967年Viterbi译码算法的提出,使卷积码成为信道编码中最重要的编码方式之一1。1.2 国内外研究现状在对A律、律研究中,随着数字化技术的发展,逐步形成了使用折现分段近似压扩特性的方法,这类方法简单且准确,因而获得了广泛的应用,并被采纳为相应的国际建议。而在对卷积码的研究中,其中编码器较简单,模式也很统一。主要是研究提高卷积码的译码速度和可靠度。译码算法中最重要的卷积码的Viterbi算法问世以来,软件仿真和实现都得到了迅速发展。目前,利用计算机仿真Viterbi算法,模拟在各种不同情况下卷积编码时的译码性能,寻找Viterbi算法的最佳适用信道和不同要求(如误码率)下最优编码。1.3 本课题的意义在信源编码中,随着数字化技术的发展,逐步形成了使用折现分段近似压扩特性的方法,这类方法简单且准确,因而获得了广泛的应用,并被采纳为相应的国际建议。在卷积码中,因为Viterbi算法效率高,速度快,结构相对简单等特点,被广泛应用于各种数据传输系统。在现代信息处理系统中,需要处理的信息量越来越大,实时性要求越来越高。为减少对主处理器各种资源的占用,要求通信模块方面的大部分工作能独立完成。因此采用Viterbi译码算法具有非常现实的意义。1.4 本课题的研究方法本文通过基于MATLAB的SIMULINK下的模块对A律和律码以及卷积编码,解码进行仿真。通过仿真可以更清楚的认识到卷积码的编码,解码的各个环节,并对仿真结果进行了分析。得出卷积码Viterbi译码的误比特性能和回溯长度,码率,约束长度的关系。第2章 MATLAB组件介绍及通信系统概述第2章 MATLAB组件介绍及通信系统概述2.1 MATLAB与通信仿真的发展现状及应用MATLAB是由美国的Math Works 公司推出的一种科学计算和工程仿真软件,它的名字院子Matrix Laboratory,专门以矩阵的形式处理数据。MATLAB将高性能的科学计算、结果可视化和编程集中在一个易于操作的环境中,并提供大量的内置函数,具有强大的矩阵计算和绘画功能,是用于科学计算、控制系统、信息处理等领域分析、仿真和设计工作。目前,在世界范围内被科研工作者、工程技术人员和院校师生广泛应用。Simulink是MATLAB中的一种可视化仿真工具,广泛应用于线性系统、数字控制、非线性系统以及数字信号处理的建模和仿真中。Simulink采用模块化建模方式,每个模块都有自己的输入/输出端口,实现其功能5。 本课题能避开硬件系统的不足,巧妙的运用软件来仿真硬件才能实现的实验结果,大大降低了实验设备要求,节约了人力和财力,而且有很多的库函数可以在实验时直接调用,避免了用硬件做实验的局限性。可以更方便的做信号系统实验,为教学和研究提供了方便。还能够锻炼一个人在面对一个具体的项目时,遇到问题,分析问题,解决问题的能力;获得独立策划、实施课题,并按照既定计划进行开发的经验,以及查找相关文献的能力。通过自己的努力使得对于Matlab有一个全面的、深刻的认识,并且对Matlab做界面的软件有了一定的了解,对系统规划有了初步的认识。为以后研发工作打下坚实的基础,积累宝贵的经验。 2.2 通信系统概述与组成通信系统(Communication System)是用以完成信息传输过程的技术系统的总称。现代通信系统主要借助电磁波在自由空间的传播或导引媒体中的传输机理来实现,前者成为无线通信系统,后者成为有线通信系统。由于人们对通信容量要求越来越高,对通信的业务要求越来越多样化,所以通信系统正迅速向着宽带化方向发展,而光纤通信系统将在通信网中发挥越来越重要的作用2。通信是将信息从发信者传递给在另外一个时空点的收信者。通信流程可用下图2-1所示基本模型图来表示。整个流程是由信源、发送设备、信道(或传输媒质)、接收设备和收信者(信宿)五部分组成。 图2-1 通信系统的基本模型(1) 信源信源是信息的产生者或信息的形成者。根据信源所产生信号的性质不同,可分为模拟信源和离散信源。(2)发送设备发送设备的基本功能是将信源和传输媒介匹配起来,即将信源产生的消息信号变换为有利于传送的信号形式送往传输媒介。(3)信道信道是指信号传输的媒介,信号是经过信道传送到接收设备的。在信号传输过程中,必然会引入发送设备、接收设备和传输媒介的热噪声和各种干扰和衰减,及信号在信道中传输时,会产生信道噪声。(4)接收设备接收设备的主要作用是将来自信道的带有干扰的发送信号加以处理,并从中提取原始信息,完成发送变换过程的逆变换解调和译码。(5)信宿信宿是将复原的原始信号转换成相应的消息。2.3 通信仿真通信仿真是衡量通信系统性能的工具。实际的通信系统是一个功能结构相当复杂的系统,对这个系统作出的任何改变都可能影响到整个系统的性能和稳定。因此,在对原有的通信系统作出改进或建立一个新系统之前,通常对这个系统进行建模和仿真,通过仿真结果衡量方案的可行性,从中选择最合理的系统配置和参数设置,然后在应用到实际系统中,这个过程就叫通信仿真2。通信系统仿真一般分为3个步骤,即仿真建模、仿真实验、仿真分析。由于仿真过程是一个螺旋式发展的过程,因此,这3个步骤可能需要循环执行多次之后才能够获得令人满意的仿真结果。(1)仿真建模仿真建模是根据实际通信系统建立仿真模型,它是整个通信仿真过程中的一个关键步骤,因为仿真模型的好坏直接影响着仿真的结果以及仿真结构的真实性和可靠性。仿真模型是对实际系统的一种模拟和抽象。过于简单的仿真模型会忽略实际系统的细节,在一定程度上会影响仿真结果的可靠性。但过于复杂的仿真模型会产生很多相互因素,从而大大延长仿真时间和增加仿真结果分析的复杂度。因此,仿真模型的建立需要综合考虑其可行性和简单性。在仿真建模过程中,可以先建立一个相对简单的仿真模型,然后再根据仿真结果和仿真过程的需要逐步增加仿真模型的复杂度。在仿真建模过程中,首先需要分析实际系统存在的问题或设立系统改造的目标,并把这些问题和目标转化成数学变量和公式。确定了方针目标后,下一步是获取实际通信系统的各种运行参数。在以上工作准备好仿真模型后,就是仿真软件的选择了,使用仿真软件建立好模型后,仿真建模的这一步骤就基本完成了。(2)仿真实验仿真实验是一个或一系列针对仿真模型的测试。在仿真实验过程中,通常需要多次改变仿真模型输入信号的数值,以观察和分析仿真模型对这些输入信号的反应,以及仿真系统在这个过程中表现出来的性能。在明确了仿真系统对输入/输出信号的要求之后,最好把这些设置整理成一份简单的文档。(3)仿真分析仿真分析是一个通信仿真流程的最后一个步骤。在仿真过程中,用户已经从仿真过程中获得了足够多的关于系统性能的消息,但是这些信息只是一些原始数据,一般还需要经过数值分析和处理才能获得衡量系统性能的尺度,从而获得对仿真性能的一个总体评价。仿真分析并不一定意味着通信仿真过程的完全结束。如果仿真分析得到的结果打不到预期的目标,用户还需要重新修改通信仿真模型,这时候仿真分析就成为了一个新的循环的开始2.4 Simulink仿真及工作原理Simulink是MATLAB提供的用于对动态系统进行建模、仿真和分析的工具包。Simulink提供了专门用于显示输出信号的模块,可以在仿真过程中随时观察仿真结果。同时,通过Simulink的存储模块,仿真数据可以方便地以各种形式保存到工作空间或文件中,以供用户在仿真结束后对数据进行分析和处理。另外Simulink把具有等级结构的子系统,因此具有内在的模块化设计要求。基于以上优点,Simulink作为一种通用的仿真建模工具,广泛用于通信仿真、数字信号处理、机械控制和虚拟现实等领域中2。作为一款专业仿真软件,Simulink具有以下特点:基于矩阵的数值计算;高级编程语言已经可视化的图形操作界面;包含各领域的仿真工具箱,使用方便快捷并可以扩展;丰富数据的I/O接口;提供与其他高级语言的接口;支持多平台(PC/UNIX)根据输出信号与输入信号的关系,Simulink提供三种类型的模块:连续模块、离散模块和混合模块。连续模块是指输出信号随着输入信号发生连续变化的模块;离散模块则是输出信号以固定间隔变化的模块。对于连续模块,Simulink采用积分方式计算输出信号的数值,因此,连续模块主要涉及数值的计算及其积分。离散模块的输出信号在下一个抽样到来之前保持恒定,这时候Simulink只需要以一定的间隔计算输出信号的数值。混合模块是根据输入信号的类型来确定输出信号类型的,它既能差生连续输出的信号,也能够产生离散输出信号。Simulink仿真包括两个阶段:初始化阶段和模型执行阶段。(1) 初始化阶段在初始化阶段,Simulink内部主要完成以下工作。模型参数传给MATLAB进行估值,得到的数值结果将作为模型的实际参数。展开模型的各个层次,每一个非条件执行的子系统被它包含的模块代替。模型中模块按更新的次序进行排序。决定模型由无显示设定的信号属性。决定所有无显示设定才采样的时间的模块的采样时间。分配和初始化用于储存每个模块的状态和输入当前值的存储空间。完成以上工作后就可以进行下一步工作了,也就是模块执行阶段(2) 模块执行阶段一般模型是使用数值积分来进行仿真的,所运用的仿真解法器(仿真算法)依赖于模型提供它的连续积分能力。计算微分可分为以下两步来进行。首先,按照排列所确定的次序计算每个模块的输出。然后,根据当前时刻的输入和状态来决定状态的微分;得到微分向量后再把它返回给解法器;后者用它来计算下一个采样点的状态向量。一旦新的状态向量计算完毕,被采样的数据模块和接收模块才被更新。在仿真开始时,模型设定待仿真系统的初始状态和输出。在每个时间步中,Simulink计算系统的输入、状态和输出,并更新模块来反映计算出的值。在仿真结束时,模型得出系统的输入、状态和输出。在每个时间步中,Simulink所采取的动作依次如下:(1)按照排列好的次序更新模型中的输出。Simulink通过调用模块的输出函数计算模块的输出。Simulink只把当前值、模块的输入以及状态量传给这些函数计算模块的输出。对于离散系统,Simulink只有在当前时间是模块采样时间的整数倍时,才会更新模块的输出。(2)按照排列好的次序更新模块中模块的状态。Simulink计算一个模块的离散状态的方法是调用模块的离散状态更新函数。而对于连续状态,则对连续状态的微分进行数值积分来获得当前的连续状态。(3)检查函数连续状态的不连续点。Simulink使用过零检测来检测连续状态的不连续点。(4)计算下一个仿真时间步的时间。这是通过调用模块获得下一个采样时间函数来完成的。第3章 信源编码第3章 信源编码3.1 A律律编码特性信源编码也称为量化或信号格式化,它一般是为了减少冗余度或为后续的处理做准备而进行的数据处理。在Simulink中,包含了A律编码、律编码等,这里分别进行介绍。3.1.1 A律编码如果输入信号为x,输出信号为y,则A律压缩满足式3-1。sgn(x) (3-1) sgn(x) 式中,A为A律压缩参数,最常采用的A值为87.6;V为输入信号的峰值;log为自然对数;sgn函数当输入为正时,输出1,当输出为负时,输出0。模块的输入并无限制。如果输入为向量,则向量中的每一个分量将被单独处理7。A律压缩编码模块及其参数及其设定框如图3-1所示。A律压缩编码模块中包含两个参数:A value:用于指定浓缩参数A的值Peak signal magnitude:用于指定能输入信号的峰值V。3.1.2 律编码和A律压缩编码类似,律压缩编码中如果输入信号为x,输出信号为y,则律压缩满足式3-2。 sgn(x) (3-2)式中,为律压缩参数;V为输入信号的峰值;log为自然对数;sgn函数当输入为正时,输出1,当输入为负时,输出0模块的输入并无限制。如果输入为向量,则向量中的每一个分量将会被单独处理7。律压缩编码中包含两个参数:mu value:用于指定律压缩参数的值Peak signal magnitude:用于指定能输入信号的峰值V,也是输出信号的峰值。3.1.3 A律13折线13段折线的压缩特性如下图3-3所示。过程为:第一步:把x(x0 部分)划分为不均匀的8段。第一分点取在V/2处,然后每段都是剩下部分的1/2。;依次取第八段为VV/2,第七段为V/2V/4;第一段为V/1280。第二步:把每段均匀划分为16等份,每一份表示一个量化级,显然8段共16x8=128= 个量化级,需要二进制7位编码表示。可以看出每个量化级是不均匀的。在小信号的量化台阶很小,使小信号时量化噪声减小。如果按均匀量化计算,以最小台阶 为单位,最大信号需用L=128X16=2048个量化级表示,既需要11位编码。这样非均匀编码使小信号量化台阶缩小了16倍,相当于小信号信噪比改善了20dB。第三步:把y轴均匀划分为8段,每段均匀分为16分。这样y也分为128个量化级,与x轴的128个量化级对应。因此,压扩特性各段的斜率 是不同的。第一段斜率 其他段为7: 以上分段为x取正值时的情况。而x取负值时,压扩特性与x取正值成奇对称。在正8段和负8段中,正1,2段和负1,2段斜率相同,合为一段。所以原来的16段折线变为13段折线。图3-1 13折线A律压扩特性实际中,往往都采用近似于A律函数规律的13折线(A=87.6)的压扩特性。这样,它基本上保持了连续压扩特性曲线的优点,又便于用数字电路实现。折线形成的方法是把x轴的0-1分成8个不均匀段,而y轴的01均匀地分成八段,与x轴的八段一一对应。至于当x在-10及y在-10的第三象限中,压缩特性的形状与以上讨论的第一象限压缩特性的形状相同,且它们以原点为奇对称,所以负方向也有八段直线,合起来共有16个线段。由于正向一、二两段和负向一、二两段的斜率相同,这四段实际上为一条直线,因此正、负双向的折线总共由13条直线段构成,故称其为13折线。13折线和A律(A=87.6)压扩特性的近似程度,可以由表3-1看出:表 3-1 A律13折线y01/82/83/84/85/86/87/81x101/1281/60.61/30.61/15.41/7.791/3.931/1.981x201/1281/641/321/161/81/41/21段落12345678斜率161684211/21/4u律15折线形成如下。把y坐标从0到1之间划分为八个均匀等分,对应于分界点y坐标i/8的x坐标,根据律压缩特性得到(u255),共14个斜率发生变化的分界点,将其分成15段直折线。其具体值可见表3-2: 表 3-2 u律15折线i012345678y=i/801/82/83/84/85/86/87/81x=(2i-1)/25501/2553/2557/25515/25531/25563/255127/2551相对斜率8/255(y/x)11/21/41/81/161/321/641/128段落123456783.2 A律、u律的特性比较画出A律13折线近似的压缩特性曲线,与A=87.56对应的压缩特性曲线进行比较。2 画出u律15折线近似的压缩特性曲线,与u=255对应的压缩特性曲线进行比较。MATLAB程序:clear allclose alldx=0.01;x=-1:dx:1;u=255;A=87.6;% u Law yu=sign(x).*log(1+u*abs(x)/log(1+u);% A Lawfor i=1:length(x)if abs(x(i)1/Aya(i)=A*x(i)/(1+log(A);elseya(i)=sign(x(i)*(1+log(A*abs(x(i)/(1+log(A);endendfigure(1)plot(x,yu,k.:)title(u Law)xlabel(x)ylabel(y)grid onhold onxx=-1,-127/255,-63/255,-31/255,-15/255,-7/255,-3/255,-1/255,1/255,3/255,7/255,15/255,31/255,63/255,127/255,1;yy=-1,-7/8,-6/8,-5/8,-4/8,-3/8,-2/8,-1/8,1/8,2/8,3/8,4/8,5/8,6/8,7/8,1;plot(xx,yy,r)stem(xx,yy,b-.)legend(u 律压缩特性,折线近似u 律,4)figure(2)plot(x,ya,k.:)title(A Law)xlabel(x)ylabel(y)grid onhold onxx=-1,-1/2,-1/4,-1/8,-1/16,-1/32,-1/64,-1/128,1/128,1/64,1/32,1/16,1/8,1/4,1/2,1;yy=-1,-7/8,-6/8,-5/8,-4/8,-3/8,-2/8,-1/8,1/8,2/8,3/8,4/8,5/8,6/8,7/8,1;plot(xx,yy,r)stem(xx,yy,b-.)legend(A 律压缩特性,折线近似A 律,4)图3-2 A律13折线图33 律15折线 如图3-2所示,13折线各段落的分界点A=87.56曲线十分逼近,并且两特性起始段的斜率均为16,这就是说,13折线非常逼近A=87.56的对数压缩特性。在A律特性分析中可以看出,取A=87.56有两个目的:一是使特性曲线原点附近的斜率凑成16;二是使13折线逼近时,x的八个段落量化分界点近似于按2的幂次递减分割,有利于数字化。如图3-3所示,15折线非常逼近=225的对数压缩特性。第4章 信道编码及译码第4章 信道编码及译码4.1 卷积码的概念介绍卷积码是一种性能优越的信道编码。(n ,k ,N) 表示把k个信息比特编成n个比特,N 为编码约束长度,说明编码过程中互相约束的码段个数。卷积码编码后的n 个码元不仅与当前组的k 个信息比特有关,而且与前N - 1 个输入组的信息比特有关6。编码过程中相互关联的码元有N n 个。R = k/ n 是卷积码的码率,码率和约束长度是衡量卷积码的两个重要参数1。4.2 卷积码的编码过程介绍以(2,1,4)为例,如图4-1所示,详细介绍卷积码的编码流程。图4-1 (2,1,4)卷积码编码器方框图 (4-1) (4-2) 由(4-1)式和(4-2)式可以看出:输出的数据位V1,V2和寄存器D0,D1,D2,D3之间的关系。根据模2加运算特点可以得知奇数个1模2运算后结果仍是1,偶数个1模2运算后结果是0。在实际应用中,根据模2加的特点,将所要处理的数据直接相加后除2求余,这样得到的结果和模2 运算结果相同。这样可以得到: (4-3) (4-4)编码程序流程图图4-2 卷积码编码程序流程图4.3 卷积码译码过程的概述卷积码的译码方式有三种3:(1)1963年由梅西(Massey)提出的门限译码,这是一种基于码代数结构的代数译码,类似于分组码中的大数逻辑译码;(2) 1963年由费诺(Fano)改进的序列译码,这是基于码的树状图结构上的一种准最佳的概率译码;(3) 1967年由维特比提出的Viterbi算法。这是基于码的网(trellis)图基础上的一种最大似然译码算法,是一种最佳的概率译码方法8。其中,代数译码,利用编码本身的代数结构进行译码,不考虑信道本身的统计特性。该方法的硬件实现简单,但性能较差,其中具有典型意义的是门限译码。另一类是概率译码,这种译码通常建立在最大似然准则的基础上。由于计算是用到了信道的统计特性.因而提高了译码性能,但这种性能的提高是以增加硬件的复杂度为代价的。常用的概率译码方法有维特比译码和序列译码。维特比译码具有最佳性能,但硬件实现复杂;门限译码性能最差,但硬件简单;序列译码在性能和硬件方面介于维特比译码和门限译码之间。 (1)译码原理: 卷积码译码方法主要有两类:代数译码和概率译码。代数译码主要根据码本身的代数特性进行译码,而信道的统计特性并没有考虑在内。目前,代数译码的主要代表是大数逻辑解码。该译码方法对于约束长度较短的卷积码有较好的效果,并且设备较简单。概率译码,又称最大似然译码,是基于信道的统计特性和卷积码的特点进行计算。在现代通信系统中,维特比译码是目前使用最广泛的概率译码方法。 维特比译码算法基本原理是:将接收到的信号序列和所有可能的发送信号序列比较,选择其中汉明距离最小的序列认为是当前发送序列。 具体步骤如下:1.从时间单元j=m开始,计算进入每个状态的路径的汉明距离。存储每个状态的路径(即幸存路径)以及最小汉明距离。这里存储的路径通常是该状态所对应的幸存路径上的前一状态值。2.j增加1。计算进入每一个状态所有路径的汉明距离。这个汉明距离是进入该状态的分支度量加上在与该分支相连的前一步的幸存路径的度量值。对于每个状态,共有 个这样的度量值,从中选出并存储最优路径(汉明距离最小的路径)并保存最小汉明距离。3.如果jL+m.重复步骤2,知道结束。在整个过程中,这样就可以得到一条汉明距离最小的最优路径。同样以(2,1,4)为例,具体分析维特比译码过程。维特比译码的前提是建立合适的网格图,以便寻找最优路径。或者可以认为,维特比译码的关键是寻找最优路径。在实际的译码操作过程中,怎样建立网格以及建立网格后的路径的选择是译码的关键问题。图4-3 (2,1,4)码状态转移图如图所示,图4-3为(2,1,4)码的状态转移图,图4-5为 (2,1,4)码的网格图。注意:由于D1D2D3表示的顺序不同,所产生的网格图和状态转移图也不同,并且译码过程是根据网格图实现,所以本文所以涉及的维特比译码方法具有一定的特殊性,但是整体过程还是具有研究价值。 (2)编程实现 维特比译码可分为网格图建立,寻找最优路径,译码这三部分。译码程序流程如图4-4所示:图4-4译码流程图 网格图建立根据图4-5所示的(2,1,4)码的网格图,可以发现D1D2D3决定了从000111的8个状态。并且进一步观察网格图可以发现从状态000-011是由输入的信息位0产生,从状态100-111是由输入的信息位1产生。此外,以001状态为例,可以看出状态001是由状态010和状态011产生。由上面可知,假设当前状态为i,那么在前一时刻中,产生状态i的两个状态是2*i和2*i+1。根据i是否小于4,来判断状态i是由信息位0还是信息位1生成。进一步可以推知指向状态i的前一时刻的两个状态生成的码组,这样便于以判断汉明距离。图4-5 (2,1,4)码网格图 寻找最优路径 网格图建立之后,根据接收码组和网格图中生成的码组比较,判断最优路径。假设某一时刻的状态i,首先判断前一时刻所有状态中,是哪两个状态指向当前状态i;其次,根据这两个指向当前状态i的状态生成的码组和前一时刻接收的码组比较,保留汉明距离最小的那条路径以及到达状态i时的最小汉明距离。下一时刻,同样操作,但是保留的最小汉明距离是前面最小汉明距离累加。在所有的接收码组处理完之后,会得到一组汉明距离以及所对应的最优路径。比较选择出最小的汉明距离,那么该最小汉明距离所对应的路径即为最优路径。 译码如图4-5所示,其中红线表示计算得到的最优路径。观察其变化规律,可以发现,假设i时刻的状态和第(i+1)时刻比较得知,若第(i+1)时刻小于第i时刻,那么对应代表实际信息中0;若大于,则为1。然后逐次比较译出信息值。4.4 卷积码的最大似然译码卷积码概率译码的基本思路是4:以接收码流为基础,逐个计算它与其他所有可能出现的、连续的网格图路径的距离,选出其中可能性最大的一条作为译码估值输出。概率最大在大多数场合可解释为距离最小,这种最小距离译码体现的正是最大似然的准则。卷积码的最大似然译码与分组码的最大似然译码在原理上是一样的,但实现方法上略有不同。3主要区别在于:分组码是孤立地求解单个码组的相似度,而卷积码是求码字序列之间的相似度。基于网格图搜索的译码是实现最大似然判决的重要方法和途径。用格图描述时,由于路径的汇聚消除了树状图中的多余度,译码过程中只需考虑整个路径集合中那些使似然函数最大的路径。如果在某一点上发现某条路径已不可能获得最大对数似然函数,就放弃这条路径,然后在剩下的“幸存”路径中重新选择路径。这样一直进行到最后第L级(L为发送序列的长度)。由于这种方法较早地丢弃了那些不可能的路径,从而减轻了译码的工作量,Viterbi译码正是基于这种想法。 对于(n, k, K )卷积码,其网格图中共2kL种状态。由网格图的前K-1条连续支路构成的路径互不相交,即最初2k_1条路径各不相同,当接收到第K条支路时,每条路径都有2条支路延伸到第K级上,而第K级上的每两条支路又都汇聚在一个节点上。在Viterbi译码算法中,把汇聚在每个节点上的两条路径的对数似然函数累加值进行比较,然后把具有较大对数似然函数累加值的路径保存下来,而丢弃另一条路径,经挑选后第K级只留下2K条幸存路径。选出的路径同它们的对数似然函数的累加值将一起被存储起来。由于每个节点引出两条支路,因此以后各级中路径的延伸都增大一倍,但比较它们的似然函数累加值后,丢弃一半,结果留存下来的路径总数保持常数。由此可见,上述译码过程中的基本操作是,“加-比-选”,即每级求出对数似然函数的累加值,然后两两比较后作出选择。有时会出现两条路径的对数似然函数累加值相等的情形,在这种情况下可以任意选择其中一条作为“幸存”路径。卷积码的编码器从全零状态出发,最后又回到全零状态时所输出的码序列,称为结尾卷积码。因此,当序列发送完毕后,要在网格图的终结处加上(K-1)个己知的信息作为结束信息。在结束信息到来时,由于每一状态中只有与已知发送信息相符的那条支路被延伸,因而在每级比较后,幸存路径减少一半。因此,在接收到(K-1)个己知信息后,在整个网格图中就只有唯一的一条幸存路径保留下来,这就是译码所得的路径。也就是说,在己知接收到的序列的情况下,这条译码路径和发送序列是最相似的。由上述可见,Viterbi译码过程并不复杂,译码器的运行是前向的、无反馈的。它接收一段,计算一段,选择一段最可能的码段(分支),从而达到整个码序列是一个有最大似然函数的序列。传输序列很长时,判决需要的长延时和相当大的存储量是我们无法承受的。因此,实际应用中采用截短Viterbi算法,即不需要接收到所有序列才进行判决,当译码器接收并处理完了固定的T (T L)个码段后,在接收第(T+1)个码段的时候,它将比较前T级的路径量度,然后从中选取最小者,由此得到与最小量度对应的幸存路径,将此路径对应的T个码段判决输出。T称为截短深度,T选的足够大时,则对译码器输出的译码错误概率影响很小。4.5 输入与同步单元输入同步单元为译码器提供正确的支路同步,每次正确地输出属于一条支路的n个比特。显然,当支路定时失步时,译码过程中将会出现大量的差错,只要能检测出这种状态,即能有效地调整支路同步。一种方法是监视路径量度的增长率;另一种方法是检查网格图的路径合并性质。当译码器出现失步时,网格图中幸存路径合并的速率比同步时慢得多9。每当接收到一条新支路的一组n个量度值(硬判决时为n比特),支路量度计算单元就对网格图中每一条不同的支路确定一新的量度值。对R=k/n码来说,每次将有2个不同的量度值。在软判决Viterbi译码时,支路量度值不但随支路不同而异,而且还与接收信号的量化值有关。在此单元中,支路量度与以前所存储的路径量度相加,然后对汇聚到同一节点处的支路进行路径量度比较,选择一条路径量度最小的路径保留下来。一种最佳的也是最常用的方法是基于最大似然译码。对于R=1/n卷积码而言,每接收一组新的支路信息,在各个状态的路径存储器中存入经“加一比一选”电路选出的一位假想信息比特,同时将最先存入路径存储器的一位比特输出给判决单元。因此,每接收到一条新支路,路径存储器就更新一次它所存储的假想信息序列10。第5章 卷积码的仿真第5章 卷积码的仿真5.1 Simulink仿真模块的参数设置以及重要参数的意义在建立如图5-1的仿真模块后,对各个模块分别一一进行设置后并运行仿真。图5-1贝努利二进制序列产生器模块的设置框图如上图5-1是贝努利二进制序列产生器模块的设置框图,其中参数有三项:第一项probability of a zero取值为0.5,表示0和1出现的概率相等。Initial seed 表示随机种子数。不同的随机种子数将产生不同的二进制序列,特定的随机种子数可以产生一个特定的二进制序列。Sample time=0.0001表示抽样时间,也就是说输出序列中每个二进制符号的持续时间是0.0001秒。Samples per frame 表示每帧的抽样数用来确定每帧的抽样点的数目。Frame-based outputs 是用来确定帧的输出格式。图5-2 BPSK调制器模块的设置框图如上图5-2是BPSK调制器模块的设置框图中有二项,第一项是Phase offset(rad)(相位偏移),这里设置为0。第二项是Samples per symbol(输出信号采样数)这里设置为1。图5-3卷积编码器模块的设置框图如上图5-3是卷积编码器模块的设置框图。其中Trellis structure( Trellis结构)中通过poly2trellis()函数把卷积码的约束长度,生成多项式以及反馈多项式转换成Trellis结构的形式。如上面是(2,1,3)卷积码的参数设置。(3,6,7)说明约束长度是3,生成多项式是(八进制)6和7,无反馈多项式。后面还要用到的(2,1,7)的参数是(7,171,133)是约束长度是7,生成多项式是171和133。Reset是复位方式,这里设置为on each frame,它表示卷积码编码器在每帧数据开始之前自动对寄存器复位。图5-4误比特统计模块的设置框图如上图5-4是误比特统计模块的设置框图。其中Receive delay表示的是接收延迟,意思是在通信接收的端口需要对已经接收到的信号进行解调,解码或解交织而带来一定的延迟,使得到达误码统计模块接收端的信号滞后于发送端的信号。为了补偿这种延迟这里设置为0。Computation delay表示计算延迟,在仿真过程中,有时间需要忽略最初的若干个输入数据就通过计算延迟来实现。这里设置为0。Computation mode表示计算模式,帧的计算模式(Entire frame),误码统计模块对发送端和接收端的所有输入数据进行统计。output data是输出数据,这里设置为Port的意思是表示把统计数据从端口中输出。workspace表示把统计数据输出到工作区。图5-5数据选通器模块的设置框图如上图5-5是数据选通器模块的设置框图。对应图4-1看Elements是指输出端口的个数为1。Input port width表示输入端口的个数为3。图5-6卷积码译码器模块的设置框图如上图5-6是卷积码译码器模块的设置框图。Trellis structure: Trellis结构(前面已说明)。Decision type是指判决类型,有3种:(1)Unquantized(非量化)(2)Hard Decision(硬判决),(3)Soft Decision(软判决) Traceback depth表示反馈深度。它的值会影响译码精度和解码延迟。Operation mode是指操作模式。在Truncated模式下,解码器在每帧数据结束的时候总能恢复到全0状态,它与卷积编码器的on each frame复位方式相对应。5.2 简化维特比译码器的仿真为了验证译码模块的正确性,便让其进行最简模式运行,为此,临时设计一个简化信号系统,关闭信道噪声,不进行二进制相位的调制与解调,去掉误比特率统计模块。为了能看到输入二进制码和译码输出二进制码,增加了两个To Workspace(结果输入到工作区模块),整个系统模块框图如图5-7所示。图5-7 简化译码模块框图同时,为了便于观察,将Bernoulli Binary Generator(贝努利二进制序列产生器)的参数设置为如表5-1所示,以产生简单的15位二进制随机码,也将Viterbi Decoder的Trceback depth值改为5。将To Workspace1模块和To Workspace模块的变量名分别设置为pdata和data。表5-1 简化译码模块的Bernoulli Binary Generator的参数设置参数名称参数值模块类型Bernoulli Binary GeneratorProbability of zero0.5Initial seed5Sample time10Frame-based outputCheckedSamples per frame5运行仿真(),在matlab的命令窗口中输入pdata和data分别得到相应的二进制序列。对所得序列分别截图,可得如图5-8所示结果。可见,译码器能够正确进行译码,所设计简化译码器正确,因而,从理论上可推导,原设计正确。图5-8 简化译码器仿真结果通过对convh.mdl文件进行仿真,证明设计正确,但因所得二进制码太多,此处便不进行截图证明。第6章 卷积码译码器的误码率分析第6章 卷积码译码器的误码率分析6.1信噪比与误码率的关系编制M文件convolutionh.m,使convh.mdl在不同的信噪比条件下重复执行前面建立的项目convh.mdl。然后绘制信道的信噪比与编码信号误比特率之间的关系曲线图。M文件代码如下:%x表示信噪比x=-10:5;%y表示信号的误比特率y=x;%准备一个空白图形hold off;%重复运行convh.mdl,检验不同条件下硬判决译码的性能 for i=1:length(x) %信道的信噪比依次取x中的元素 SNR=x(i); %运行仿真程序,得到的误比特率保存在工作区变量BitErrorRate中 sim(convh); %计算BitErrorRate的均值作为本次仿真的误比特率 y(i)=mean(BitErrorRate); end%绘制x和y的关系曲线图,纵坐标采用对数坐标semilogy(x,y);%保持已经绘制的图形hold on执行此M文件,得到如图6-1所示的关系曲线图,由此图可见,随着信道信噪比的提升,维特比译码所得结果的误比特率越低,信道的可信度越高,信噪比在大于-2时信道的误码率开始明显降低。图 6-1 convolutionh.m运行结果6.2. 不同回溯长度对卷积码性能的影响下面将以(2,1,7)卷积码来建立模块仿真。将译码模块中的Traceback depth分别设置为20,35,45并在一个图中画出这三种方式下的误码性能曲线得到下图6-2。从上到下的三条曲线分别是Traceback depth为20,35,45。可以看出:回溯长度是在Viterbi 译码过程中一个很重要的参数,他决定了译码延迟,随着他的不断变化,误码性能也随误比特率曲线可以清楚地看到,当回溯长度一定时,随着信道噪声的逐渐减小,系统的误比特率逐渐降低;当回溯长度逐渐增加,系统的误比特率随之逐渐降低,但是当回溯程度增加到5 N 时( N 为编码的约束长度) ,误比特率数值趋于稳定,因此,在确定回溯长度时既要考虑到随着的增加误比特率随之降低的趋势,也要考虑到译码延迟会变大,在选取回溯长度时,通常取= 5 N。图 6-2 不同回溯长度对误码性能的影响分析不同回溯长度对卷积码误码性能的影响时用到的程序如下:x=-10:5; y=x; for i=1:length(x) SNR=x(i); sim(yima); y(i)=mean(BitErrorRate); end semilogy(x,y); hold on; for i=1:length(x) SNR=x(i); sim(yima1); y(i)=mean(BitErrorRate); end semilogy(x,y); hold on; for i=1:length(x) SNR=x(i); sim(yima2); y(i)=mean(BitErrorRate); end semilogy(x,y);6.3 不同码率对卷积码误码性能的响下面图6-3是通过改变卷积码的码率为1/2和1/3而得到的二条对比曲线。上面的一条曲线是码率为1/2,下面的是码率为1/3。卷积码的码率R = k/ n,他是卷积码的一个重要参数,当改变卷积码的码率时,系统的误码性能也将随之发生变化。从图6-3中的误比特率曲线可以看出,当码率一定时,随着信道噪声的逐渐减小,系统的误比特率也逐渐减小,当改变系统码率时,随着卷积码码率的逐渐提高,系统的误比特率也呈现出增大的趋势,也就是说码率越低,系统的误比特率就越小,误码性能就越好。图 6-3 卷积码不同码率对误码性能的影响分析不同码率对卷积码误码性能的影响时用到的程序如下:x=0:5; y=x; for i=1:length(x) SNR=x(i); sim(yima1); y(i)=mean(BitErrorRate); end semilogy(x,y); hold on; for i=1:length(x) SNR=x(i); sim(yima2); y(i)=mean(BitErrorRate);end semilogy(x,y);6.4 不同约束长度对卷积码的误码性能
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!