毕设设计基于.-matlab的信道编码仿真_第1页
毕设设计基于.-matlab的信道编码仿真_第2页
毕设设计基于.-matlab的信道编码仿真_第3页
毕设设计基于.-matlab的信道编码仿真_第4页
毕设设计基于.-matlab的信道编码仿真_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

...wd......wd......wd...毕业论文〔设计〕题目:基于matlab的信道编码仿真学号:姓名:年级:学院:信息科学技术学院系别:电子信息工程专业:电子信息工程指导教师:完成日期:摘要通信技术的飞速开展,信道编码已经成功地应用于各种通信系统中。以及各种传输方式对可靠性要求的不断提高,信道编码技术作为抗干扰技术的一种重要的手段,在数字通信技术领域和数字传输系统中显示出越来越重要的作用。信道编码的目的是为了改善通信系统的传输质量。由于实际信道存在噪声和干扰,使发送的码字与信道传输后所接收的码字之间存在差异,称这种差异为过失。一般情况下,信道噪声、干扰越大,码字产生过失的概率也就越大。本文利用matlab对二进制对称信道(BSC),高斯白噪声信道(AWGN)两种信道的仿真,〔7,4〕Hamming码对信道的仿真,通过误码率的曲线图来了解信道的编码。并利用matlab的simulink模块仿真,运用simulink里的卷积码viterbi译码器来对二进制对称信道和高斯白噪声信道的仿真,观察误码率的曲线图来了解2个信道的不同。关键字:matlab,信道,编码,译码,Simulink。AbstractWiththerapiddevelopmentofcommunicationtechnology,channelcodinghasbeensuccessfullyappliedtovariouscommunicationssystems.Andavarietyoftransmissionofthecontinuousimprovementofreliabilityrequirements,anti-jammingchannelcodingtechnologyasanimportantmeansoftechnologyinthefieldofdigitalcommunicationstechnologyanddigitaltransmissionsystemsinamoreandmoreimportantrole.

Thepurposeofchannelcodingistoimprovethetransmissionqualityofcommunicationssystems.Astheactualexistenceofthechannelnoiseandinterference,thetransmittedcodewordsandchanneltransmissionreceivedafterthedifferencebetweencodewords,saidthisdifferenceiswrong.Undernormalcircumstances,channelnoise,thegreatertheinterference,thecodewordgeneratedthegreatertheprobabilityoferror.Inthispaper,matlabbinarysymmetricchannel(BSC),Gaussianwhitenoisechannel(AWGN)twochannelsimulation,(7,4)Hammingcodesimulationofthechannel,throughthebiterrorratecurvetounderstandthechannelcoding.Usingmatlabtosimulinkblocksimulation,usingsimulinkintheviterbidecodertoconvolutionalcodesonthebinarysymmetricchannelandGaussianwhitenoisechannelsimulation,observationerrorrategraphstounderstandthetwodifferentchannelsKeywords:matlab,channel,coding,decoding,Simulink.目录TOC\o"1-4"\h\z\u1引言11.1选题的目的和意义11.2本选题的理论依据、研究内容12.信道编码以及其运行环境MATLAB的介绍22.1信道编码的概念及分类22.2信道编码定理及信道编码中所包含的各种码类的简介22.2.1卷积码22.2.2线性分组码32.2.3循环码32.3MATLAB语言的简介42.4Simulink53.信道53.1二进制对称信道〔BSC〕53.2二进制删除信道〔BEC〕63.3高斯白噪声信道(AWGN)64.Hamming码74.1汉明码74.2校验方法74.3汉明码编码94.3.1汉明码对高斯白噪声信道94.3.2汉明码对二进制对称信道的仿真115.卷积码155.1卷积码定义与原理155.2维特比译码原理155.3卷积码译码器对高斯白噪声信道的设计与仿真185.3.1卷积码译码器的设计与仿真195.3.2简化维特比译码器的仿真225.3.3卷积码译码器的误码率分析245.4卷积编码器在二进制对称信道〔BSC〕中的性能256.卷积码译码器对二进制对称信道和高斯白噪声信道仿真比拟307.总结31致谢32参考文献33附录1:34附录2:37附录3:40附录4:411引言1.1选题的目的和意义数字信号在传输中往往由于各种原因,使得在传送的数据流中产生误码,从而使接收端产生图象跳跃、不连续、出现马赛克等现象。所以通过信道编码这一环节,对数码流进展相应的处理,使系统具有一定的纠错能力和抗干扰能力,可极大地防止码流传送中误码的发生。误码的处理技术有纠错、交织、线性内插等。提高数据传输效率,降低误码率是信道编码的任务。信道编码的本质是增加通信的可靠性。但信道编码会使有用的信息数据传输减少,信道编码的过程是在源数据码流中加插一些码元,从而到达在接收端进展判错和纠错的目的。1.2本选题的理论依据、研究内容在数字通信系统中由于信道内存在加性噪声及信道传输特性不理想等容易造成码间串扰同时多用户干扰、多径传播和功率限制等也导致错误译码。为了确保系统的误比特率指标通常采用信道编码。信道编码是为了保证信息传输的可靠性、提高传输质量而设计的一种编码。它是在信息码中增加一定数量的多余码元,使码字具有一定的抗干扰能力。提高信息传输的有效性和可靠性始终是通信技术所追求的目标,而信道编码能够显著的提升信息传输的可靠性。简述信道编码理论,详细说明分组码的编译原理、实现方法及检错纠错能力,用MATLAB仿真信道编码条不同信道下的影响。学习卷积码的根本原理和编码方法。学习根本分组码的原理和编码方法。理解二进制对称信道(BSC),二进制擦除信道(BEC),高斯白噪声信道(AWGN)。理解码率(coderate)和误码率(biterrorrate)的意义。利用〔7,4〕Hamming码对不同信道进展仿真。自己设计一个卷积码,并利用Viterbi译码二进制对称信道(BSC),高斯白噪声信道(AWGN)2个信道进展仿真,比拟结果。2.信道编码以及其运行环境MATLAB的介绍2.1信道编码的概念及分类进展信道编码是为了提高信号传输的可靠性,改善通信系统的传输质量,研究信道编码的目标是寻找具体构造编码的理论与方法。从原理上,构造信道码的根本思路是根据一定的规律在待发送的信息码元中人为的参加一定的多余码元,以引入最小的多余度为代价来换取最好的抗干扰性能。信道编码是通过信道编码器和译码器实现的用于提高信道可靠性的理论和方法,是信息论的内容之一。信道编码大致分为两类:①信道编码定理,从理论上解决理想编码器、译码器的存在性问题,也就是解决信道能传送的最大信息率的可能性和超过这个最大值时的传输问题。②构造性的编码方法以及这些方法能到达的性能界限。编码定理的证明,从离散信道开展到连续信道,从无记忆信道到有记忆信道,从单用户信道到多用户信道,从证明过失概率可接近于零到以指数规律逼近于零,正在不断完善。编码方法,在离散信道中一般用代数码形式,其类型有较大开展,各种界限也不断有人提出,但尚未到达编码定理所启示的限度。在连续信道中常采用正交函数系来代表消息,这在极限情况下可到达编码定理的限度,不是所有信道的编码定理都已被证明。2.2信道编码定理及信道编码中所包含的各种码类的简介1948年,信息论的奠基人C.E.Shannon在他的开创性论文“通信的数学理论〞中,提出了著名的有噪信道编码定理。他指出:对任何信道,只要信息传输速率R不大于信道容量C,就一定存在这样的编码方法:在采用最大似然译码时,其误码率可以任意小。该定理在理论上给出了对给定信道通过编码所能到达的编码增益的上限,并指出了为到达理论极限应采用的译码方法。在信道编码定理中,香农提出了实现最正确编码的三个根本条件:(1)采用随机编译码方式;(2)编码长度L→∞,即分组的码组长度无限;(3)译码采用最正确的最大似然译码算法。2.2.1卷积码卷积码(convolutioncode)属于非分组码,它是一种小分组(n,k)多码段相关、纠错能力较强的FEC码。卷积码不同于(n,k)分组码,它将(n,k)变成很短的分组(n,k),如(2,1)、(3,1)(3,2)卷积码等。每一个监视元不仅是由本码段(n,k)的k位信码所决定,而且与其前N-1个码段的信码有关,因此称为卷积码。它适于串行传送,延时较小。本码段(n,k)以及其前(N-1)段构成的N个分组码段称为约束长度:其码元数为Nn比特,而N称为约束度。因此,各码段(n,k)不像(n,k)分组码是一个独立纠错码单元,其过失控制能力由N个码段来决定。所以通常将卷积码写为(n,k,N),其中N=m+1,m是编码电路的移位存放器数目。卷积码分为两种:(1)根本卷积码:根本卷积码编码效率为,η=1/2,编码效率较低,优点是纠错能力强。(2)收缩卷积码:如果传输信道质量较好,为提高编码效率,可以采样收缩截短卷积码。有编码效率为:η=1/2、2/3、3/4、5/6、7/8这几种编码效率的收缩卷积码编码效率高,一定带宽内可传输的有效比特率增大,但纠错能力越减弱。2.2.2线性分组码简单来说,所谓“分组码〞就是指码字的生成只与当前的源数据有关,而与前后的数据无关(相应地,与前后数据相关的码称为卷积码)。分组码将连续的数据比特流分割为长度固定的组;各组进一步以m比特为单位分割为符号(Symbol),通常取3比特或者8比特数据组成一个符号。k个符号一起组成源字(Sourceword),经过编码后变为长度为n的码字(Codeword),称为m比特符号的(n,k)分组码。所谓“线性〞,是指编码过程均为线性变换,即可以通过矩阵变换来表示。目前研究的纠错码大都属于线性码。在线性空间中,所有可能的m比特源字都可以进展编码变换,而无需关心这m比特数据所代表的含义。所谓“系统〞,是指码字中包含了源字和变换所得的校验字。2.2.3循环码循环码的特点是符合(n,k)线形分组码特点在码内(码子集合)的任意两个码字之和为该码中的一个码字,这一特征说明(n,k)循环码属于(n,k)线形分组码的一个子类。(n,k)码中任何一个码字连续位移i位后的码字,仍属于该循环码的一个码字。循环码中的生成多项式的必要条件为某(n,k)码是否位循环的必要条件是:幂为码长n的多项式x+1,可分解出至少有1个因式的最高幂次为n-k=r,即该因式最高次项为x,最低项为常数1。其生成多项式的充分条件是由必要条件得到的g(x),其多项式的非零权系数个数还应等于相应(n,k)分码组的d。之所以补充这一“充分〞条件,是因为符合必要条件的g(x)并不一定能得到与其相应分组码一样(n,k)的过失控制能力。循环编码码步骤:源码为m(x)=mx+…+mx+m,应首先提升n-k位,变为xm(x)。然后以生成多项式g(x)去除,得=q(x)+式(2-1)可得循环码:C(x)=xm(x)+b(x)。2.3MATLAB语言的简介MATLAB是矩阵实验室(MatrixLaboratory)之意,除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作,而且利用MATLAB产品的开放式构造,可以非常容易地对MATLAB的功能进展扩大,从而在不断深化对问题认识的同时,不断完善MATLAB产品以提高产品自身的竞争能力。MATLAB的根本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C、FORTRAN等语言完一样的事情简捷得多。开放性使MATLAB广受用户欢送。除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或参加自己编写程序构造新的专用工具包。Matlab软件最好的教材是它的帮助文件。只要硬盘容量够大,竭力推荐安装完整的帮助文档,即使你对阅读英文不是很有信心,但我相信其足够的实例还是能让你对要查询的命令函数有一定的了解的。有两种方法取得帮助信息:一是直接在命令窗口输入>>help函数名;如helpimread,会得到相应函数的有关帮助信息。二是在帮助窗口中查找相应信息。不同版本的帮助菜单界面有所不同,这只能依赖于自己去熟悉了。但总体上都和windows的界面具有相似的处理过程。2.4SimulinkSimulink是TheMathWorks公司开发的用于动态系统和嵌入式系统的多领域仿真和基于模型的设计工具,常集成于MathWorks公司的另一产品mtlab中与之配合使用。Simulink提供了一个交互式的图形化环境及可定制模块库〔Library〕,可对各种时变系统,例如通讯、控制、信号处理、视频处理和图像处理系统等进展设计、仿真、执行和测试。与MATLAB类似,Simulink的功能可以通过购置或自定义的工具箱不断扩展。另外,Simulink与MATLAB严密集成,可以直接访问MATLAB大量的工具来进展算法研发、仿真的分析和可视化、批处理脚本的创立、建模环境的定制以及信号参数和测试数据的定义。它的主要特点有\l"cite_note-0"[1]:丰富的可扩大的预定义模块库交互式的图形编辑器来组合和管理直观的模块图以设计功能的层次性来分割模型,实现对复杂设计的管理通过ModelExplorer导航、创立、配置、搜索模型中的任意信号、参数、属性,生成模型代码提供API用于与其他仿真程序的连接或与手写代码集成使用EmbeddedMATLAB模块在Simulink和嵌入式系统执行中调用MATLAB算法使用定步长或变步长运行仿真,根据仿真模式(Normal,Accelerator,RapidAccelerator)来决定以解释性的方式运行或以编译C代码的形式来运行模型图形化的调试器和剖析器来检查仿真结果,诊断设计的性能和异常行为可访问MATLAB从而对结果进展分析与可视化,定制建模环境,定义信号参数和测试数据模型分析和诊断工具来保证模型的一致性,确定模型中的错误。3.信道3.1二进制对称信道〔BSC〕二进制对称信道是离散无记忆信道在J=K=2时的特例。它的输入和输出都只有0和1两种符号,并且发送0而承受到1,以及发送1而收到0〔即误码〕的概率一样,所以称信道是对称的。此时条件过失概率由p表示。二进制对称信道的转移概率如图3.1图3.1二进制对称信道3.2二进制删除信道〔BEC〕图3.2二进制删除信道信道的特点是,信源传输0或1时,接收端以1-a的概率正确接收,以概率a被删除。3.3高斯白噪声信道(AWGN)在信号传输的过程中,它会不可防止地受到各种干扰,这些干扰统称为“噪声〞。加性高斯白噪声AWGN是最常见的一种噪声。加性高斯白噪声是最简单的一种噪声,它表现为信号围绕平均值的一种随机波动过程。加性高斯白噪声的均值为o,方差表现为噪声功率的大小。一放情况下,噪声功率越大,信号的波动幅度就越大,接收端接收到的信号的误比特率就越高。在研究通信系统的误码率与信道质量的关系时,一放先研究它在加性高斯白噪声信道下的性能,然后再把它推广到具有快衰落的复杂情况。4.Hamming码4.1汉明码当计算机存储或移动数据时,可能会产生数据位错误,这时可以利用汉明码来检测并纠错,简单的说,汉明码是一个错误校验码码集,由Bell实验室的R.W.Hamming创造,因此定名为汉明码。与其他的错误校验码类似,汉明码也利用了奇偶校验位的概念,通过在数据位后面增加一些比特,可以验证数据的有效性。利用一个以上的校验位,汉明码不仅可以验证数据是否有效,还能在数据出错的情况下指明错误位置。在承受端通过纠错译码自动纠正传输中的过失来实现码纠错功能,称为前向纠错FEC。在数据链路中存在大量噪音时,FEC可以增加数据吞吐量。通过在传输码列中参加冗余位(也称纠错位)可以实现前向纠错。但这种方法比简单重传协议的本钱要高。汉明码利用奇偶块机制降低了前向纠错的本钱。4.2校验方法进展奇偶校验的方法是先计算数据中1的个数,通过增加一个0或1(称为校验位),使1的个数变为奇数(奇校验)或偶数(偶校验)。例如,数据1001总共是4个比特位,包括2个1,1的数目是偶数,因此,如果是偶校验,那么增加的校验位就是一个0,反之,增加一个1作为校验位。通过“异或〞运算来实现偶校验,“同或〞运算来实现奇校验。单个比特位的错误可以通过计算1的数目是否正确来检测出来,如果1的数目错误,说明有一个比特位出错,这表示数据在传输过程中受到噪音影响而出错。利用更多的校验位,汉明码可以检测两位码错,每一位的检错都通过数据中不同的位组合来计算出来。校验位的数目与传输数据的总位数有关,可以通过汉明规则进展计算:d+p+1<=2的p次方d表示传输数据位数目,p表示校验位数目。两局部合称汉明码字,通过将数据位与一个生成矩阵相乘,可以生成汉明码字。2008-07-0519:10针对4位数据的汉明码编码示意图汉明码是一个在原有数据中插入假设干校验码来进展错误检查和纠正的编码技术。以典型的4位数据编码为例,汉明码将参加3个校验码,从而使实际传输的数据位到达7个〔位〕,它们的位置如果把上图中的位置横过来就是:数据位1234567代码P1P2D8P3D4D2D1说明第1个汉明码第2个汉明码第1个数据码第3个汉明码第2个数据码第3个数据码第4个数据码注:Dx中的x是2的整数幂〔下面的幂都是指整数幂〕结果,多少幂取决于码位,D1是0次幂,D8是3次幂,想想二进制编码就知道了。另外,汉明码加插的位置也是有规律的。以四位数据为例,第一个汉明码是第一位,第二个是第二位,第三个是第四位,1、2、4都是2的整数幂结果,而这个幂次数是从0开场的整数。这样我们可以推断出来,汉明码的插入位置为1〔20(注:20表示2的0次幂)〕、2〔21〕、4〔22〕、8〔23〕、16〔24〕、32〔25〕……4.3汉明码编码4.3.1汉明码对高斯白噪声信道随机信号源:function[out,rc]=inform(k)rc=rand(k,1);forn=1:kifrc(n)>=0.5out(n)=1;elseout(n)=0;endend产生高斯噪声:functionout=noise(snr,k,r)snr=10^(snr/10);rate=k/(k+r);q=1/(sqrt(2*snr*rate));out=randn(1,k+r)*q;汉明码编码:functioncode=hamming(ic,k,P)IG=eye(k);G=[IG,P'];code=rem(ic*G,2);汉明码译码:functionout=dehamming(in,k,r,P)m=k+r;IH=eye(r);H=[P,IH];S=rem(in*H',2);n=0;whilen<mn=n+1;h=H(:,n);ifS==h'break;endendin(n)=1-in(n);fori=1:kout(i)=in(i);end调制:functionout=modd(in,k,r)m=k+r;forn=1:mifin(n)<1out(n)=-1;elseout(n)=1;endend解调:functionout=demod(in,k,r)m=k+r;forn=1:mifin(n)<0out(n)=0;elseout(n)=1;endend总程序k=4;%信息位r=3;%监视位P=[1110;%校验矩阵0111;1101;];SNR=1;%信噪比N=1000;%测试的数据包数目w=0;%译码错误码元数目统计的变量n=1;whilen<N%测试数据包[ic,rc]=inform(k);%产生随机信号源hc=hamming(ic,k,P);%汉明码编码mc=modd(hc,k,r);%调制nc=mc+noise(SNR,k,r);%通过带噪声信道dmc=demod(nc,k,r);%解调dhc=dehamming(dmc,k,r,P);%汉明码译码form=1:k%统计译码错误码元数ifdhc(m)~=ic(m)w=w+1;endendn=n+1;endBER=w/(N*k)%计算误码率semilogy(SNR,BER);仿真结果分析:图4.3.1汉明码对AWGN信道仿真的误码率曲线图对图4的观察,我们可以看到,在高斯白噪声信道里当信噪比越来越大时,误码率越来越低,到一定程度,信道的误码率会为0。仿真结果和理论结果根本一致。4.3.2汉明码对二进制对称信道的仿真%(7,4)汉明码仿真%定义变量(7,4)汉明码模拟k=4; %n=7; %p_vector=0.1:0.01:1;%向量P的值,误码率N=length(p_vector);%p_vector的长度RUNS=5000;%运行数%码字表xtable=[0000000;...1101000;...0110100;...1011100;...1110010;...0011010;...1000110;...0101110;...1010001;...0111001;...1100101;...0001101;...0100011;...1001011;...0010111;...1111111;];for(p_i=1:N)error=0;%错误的数p=p_vector(p_i);for(r=1:RUNS)%生成4位的信息块z=unifrnd(0,1,1,4);%0和1的4位串w=round(z);%圆的Z值%找到行的索引,二进制转换:m=w(1)+w(2)*2+w(3)*4+w(4)*8;x=xtable(m+1,:);z=unifrnd(0,1,1,7);%0和1的7位随机字符串zi=find(z<=p);%错误的位置%误比特率e=zeros(1,7);%创立一个0的7位串e(zi)=ones(size(zi));%创立一个字符串的大小Ziy=xor(x,e);%异或X和E%for(q=1:16)dH(q)=sum(xor(y,xtable(q,:)));%比拟接收到的码字矢量if(dH(q)<=1)wh=xtable(q,4:7);endend%计算误码率dHw=sum(xor(w,wh));error=error+dHw;endBER(p_i)=error/(RUNS*4);%误码率计算P(p_i)=p;%存到pendPs=logspace(-4,0,200);Pb_high=1-((1-Ps).^7+7.*(1-Ps).^6.*Ps);Pb_low=(1-((1-Ps).^7+7.*(1-Ps).^6.*Ps))/k;figure(1)plot(P,BER,'bx',Ps,Pb_high,'k-',Ps,Pb_low,'k-')legend('Simulated','Analytical')xlabel('ProbabilityofErrorforBSC(p)')ylabel('BER')title('Figure1-BitErrorRateforHammingcodeoverBSC')仿真出图4.3.2图4.3.2汉明码对BSC信道编码后误码率的曲线图如上图4.3.2中,可以看到蓝色的曲线是模拟后的误码率曲线,黑色的曲线是分析的误码率曲线。上面黑色曲线是概率误差p最大值的误码率,下面黑色的曲线是概率误差p最小值的误码率。从图中可以看出概率误差最大,BSC信道的误码率就越高。5.卷积码5.1卷积码定义与原理卷积码是一种向前纠错控制编码。它将连续的信息比特序列映射为连续的编码器输出符号。这种映射是高度构造化的,使得卷积码的译码方法与分组码译码所采用的方法完全不同。可以验证的是在同样复杂度情况下,卷积码的编码增益要大于分组码的编码增益。对于某个特定的应用,采用分组编码还是采用卷积编码哪一种更好则取决于这一应用的具体情况和进展比拟时可用的技术。卷积编码的最正确译码准则为:在给定编码构造、信道特性和接收序列的情况下,译码器将把与已经发送的序列最相似的序列作为传送的码字序列的估值。对于二进制对称信道,最相似传送序列就是在汉明距离上与接收序列最近的序列。卷积码的译码方法有两大类:一类是大数逻辑译码,又称门限译码(硬判决,编者注);另一种是概率译码(软判决,编者注),概率译码又分为维特比译码和序列译码两种。门限译码方法是以分组码理论为根基的,其译码设备简单,速度快,但其误码性能要比概率译码法差。5.2维特比译码原理采用概率译码的根本思想是:把已接收序列与所有可能的发送序列做比拟,选择其中码距最小的一个序列作为发送序列。如果发送L组信息比特,那么对于(n,k)卷积码来说,可能发送的序列有2kL个,计算机或译码器需存储这些序列并进展比拟,以找到码距最小的那个序列。当传信率和信息组数L较大时,使得译码器难以实现。维特比算法则对上述概率译码做了简化,以至成为了一种实用化的概率算法。它并不是在网格图上一次比拟所有可能的2kL条路径(序列),而是接收一段,计算和比拟一段,选择一段最大似然可能的码段,从而到达整个码序列是一个最大似然值得序列。下面以图5.1的(2,1,3)卷积码编码器所编出的码为例,来说明维特比解码的方法和运作过程。为了能说明解码过程,这里给出该码的状态图,如图5.2所示。mmjmj-1mj-2输出序列m1,m2,…mj,…y1jy2j输入序列00adcb110011010110图5.1(2,1,3)卷积码编码器图5.2(2,1,3)卷积码状态图维特比译码需要利用图来说明移码过程。根据卷积码画网格的方法,我们可以画出该码的网格图,如图5.3所示。该图设输入信息数目L=5,所以画L+N=8个时间单位,图中分别标以0至7。这里设编码器从a状态开场运作。该网格图的每一条路径都对应着不同的输入信息序列。由于所有可能输入信息序列共有2kL个,因而网格图中所有可能的路径也为2kL条。这里节点a=00,b=01,c=10,d=11。aabcd节点号0123456700000000000000111111111111111100000101010101010101010101111110101010图5.3(2,1,3)卷积码网格图设输入编码器的信息序列为(11011000),则由编码器对应输出的序列为Y=(1101010001011100),编码器的状态转移路线为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),他们与R1的距离分别为4和1;到达第3时刻d点的路径序列是(001101)和(110110),他们与R1的距离分别为2和3。上述每个节点都保存码距较小的路径作为幸存路径,所以幸存路径码序列是(000000)、(000011)、(1101001)和(001101),如图5.4所示。用于上面类似的方法可以得到第4、5、6、7时刻的幸存路径。aabcd节点号0123000000111111010101图5.4维特比译码第3时刻幸存路径需要指出的是,对于某个节点,如果比拟两条路径与接收序列的累计码距值相等时,则可以任意选者一条路径作为幸存路径,吃时不会影响最终的译码结果。在码的终了时刻a状态,得到一条幸存路径。如果2.5所示。由此可看到译码器ababcd节点号0123110101456780001011100图5.5第8时刻幸存路径输出是R’=(1101010001011100),即可变换成序列(11011000),恢复了发端原始信息。比拟R’和R序列,可以看到在译码过程中已纠正了在码序列第1和第7位上的过失。当然如果过失出现太频繁,以致超出卷积码的纠错能力,还是会发生纠误的。5.3卷积码译码器对高斯白噪声信道的设计与仿真整个设计的构造框图如以下列图5.3信源模块信源模块信道信宿模块信号编译码器约定参数信号信号5.3构造框图本设计由3个子系统组成:信源模块对随机二进制信号进展卷积码和二进制相位调制,输出基带调制信号;信道模块是一个高斯白噪声信道;信宿模块对调制信号进展软判决译码,得到原始信息序列,并且计算调制信号的误码率。5.3.1卷积码译码器的设计与仿真信源模块由贝努利二进制序列产生器、卷积码编码器以及二进制相位调制3个模块组成,如以下列图5.3.1所示5.3.1信源模块系统框图各个模块的参数设置分别如表5.1~表5.3所示。表5.1BernoulliBinaryGenerator(贝努利二进制序列产生器)的参数设置参数名称参数值模块类型BernoulliBinaryGeneratorProbabilityofzero0.5Initialseed25741Sampletime0.0001Frame-basedoutputCheckedSamplesperframe10000表5.2ConvolutionalEncoder(卷积码编码器)的参数设置参数名称参数值模块类型ConvolutionalEncoderTrellisPoly2trellis(7,[171133])ResetOneachframe表5.3BPSKModulatorBaseband的参数设置参数名称参数值模块类型BPSKModulatorBasebandPhaseoffset(rad)0Samplespersymbol1本设计使用相对较简单的一个加性高斯白噪声信道作为噪声信道,它在二进制相位调制信号中叠加高斯白噪声。加性高斯白噪声模块的参数设置如表5.4。表5.4AWGNChannel(加性高斯白噪声模块)的参数设置参数名称参数值模块类型AWGNChannelInitialseed1237ModeSignaltonoiseratio(SNR)SNR(dB)SNRInputsignalpower(watts)1信道模块如以下列图5.3.2所示。图5.3.2信道模块示意图信宿模块在接收到二进制相位调制信号后,首先由BPSKDemodulatorBaseband(二进制相位解调模块)对信号进展量化,得到硬判决量化信号,然后通过ViterbiDecoder(维特比译码器)对软判决信号实施译码。译码输出信号和信源模块产生的原始信号输入到ErrorRateCalculator(误比特率统计模块)中,统计得到的数据一方面通过Display(显示模块)显示出来,另一方面通过一个Selector(选择器)把其中的第一个元素(即编码信号的误比特率)保存到工作区变量BitErrorRate中。信宿模块如以下列图5.3.3所示。图5.3.3信宿模块Sink各关键模块参数设置如表5.5、表5.6所示。表5.5BPSKDemodulatorBaseband(二进制相位解调模块)的参数设置参数名称参数值模块类型BPSKDemodulatorBasebandPhaseoffset(rad)0DecisiontypeHarddecisionOutputdatatypeInheritviainternalrule表5.6ViterbiDecoder(维特比译码器)的参数设置参数名称参数值模块类型ViterbiDecoderTrellisstructurepoly2trellis(7,[171133])DecisiontypeHarddecisionTrecebackdepth1000OperationmodeTruncated将此完整设计保存,命名为convh.mdl,如以下列图5.3.4图5.3.4完整设计5.3.2简化维特比译码器的仿真为了验证译码模块的正确性,便让其进展最简模式运行,为此,临时设计一个简化信号系统,关闭信道噪声,不进展二进制相位的调制与解调,去掉误比特率统计模块。为了能看到输入二进制码和译码输出二进制码,增加了两个ToWorkspace(结果输入到工作区模块),整个系统模块框图如图5.3.5所示。图5.3.5简化译码模块框图同时,为了便于观察,将BernoulliBinaryGenerator(贝努利二进制序列产生器)的参数设置为如表5.7所示,以产生简单的15位二进制随机码,也将ViterbiDecoder的Trcebackdepth值改为5。将ToWorkspace1模块和ToWorkspace模块的变量名分别设置为pdata和data。表5.7简化译码模块的BernoulliBinaryGenerator的参数设置参数名称参数值模块类型BernoulliBinaryGeneratorProbabilityofzero0.5Initialseed5Sampletime10Frame-basedoutputCheckedSamplesperframe5运行仿真(),在matlab的命令窗口中输入pdata和data分别得到相应的二进制序列。对所得序列分别截图,可得如下所示结果。可见,译码器能够正确进展译码,所设计简化译码器正确,因而,从理论上可推导,原设计正确。>>datadata=11011>>pdatapdata=110115.3.3卷积码译码器的误码率分析编制M文件convolutionh.m,使convh.mdl在不同的信噪比条件下重复执行前面建设的工程convh.mdl。然后绘制信道的信噪比与编码信号误比特率之间的关系曲线图。M文件代码如下:%x表示信噪比x=-10:5;%y表示信号的误比特率y=x;%准备一个空白图形holdoff;%重复运行convh.mdl,检验不同条件下硬判决译码的性能fori=1:length(x)%信道的信噪比依次取x中的元素SNR=x(i);%运行仿真程序,得到的误比特率保存在工作区变量BitErrorRate中sim('convh');%计算BitErrorRate的均值作为本次仿真的误比特率y(i)=mean(BitErrorRate);end%绘制x和y的关系曲线图,纵坐标采用对数坐标semilogy(x,y);%保持已经绘制的图形holdon执行此M文件,得到如以下列图5.3.4所示的关系曲线图,由此图可见,随着信道信噪比的提升,维特比译码所得结果的误比特率越低,信道的可信度越高,信噪比在大于-2时信道的误码率开场明显降低。图5.3.3viterbi译码器对高斯白噪声信道的误码率曲线图5.4卷积编码器在二进制对称信道〔BSC〕中的性能二进制对称信道模块的一个主要用途是用于检验编码的纠锗和检错性能,因为它能够方便地建设信道误比特率与编码信号的误比特率之间的关系。本节以卷积编码为例介绍卷积编码器在二进制信道中的传输性能。卷积编码器以其优良的纠锗性能在移动通信系统中得到了广泛的应用。Is-95的前向信道和反向信道都采用了卷积编码器,这些卷积编码器的约束长度都是9,码率等于1/2或1/3。对于反向业务信道(即从移动台到基站方向的信道),速率集1(RateSet1)采用码率为1/3的卷积编码器(3个码生成多项式分别等于八进制数557、663和711),速率集2(Rateset2)则采用码率为1/2的卷积编码器(码生成多项式分别等于八进制数753和561)。在本实例中我们将使用反向全速业务倍道(数据传输速率等于9600bit/s)速率集1的卷积编码器。图5.4.1所示是本实例的系统组成框图。图5.4.1仿真系统各个模块的参数设置如下各表:表5.4.1BernoulliBinaryGenerator(贝努利二进制序列产生器)的参数设置参数名称参数值模块类型BernoulliBinaryGeneratorProbabilityofzero0.5Initialseed61Sampletime1/9600Frame-basedoutputCheckedSamplesperframe9600表5.4.2ConvolutionalEncoder(卷积码编码器)的参数设置参数名称参数值模块类型ConvolutionalEncoderTrellisPoly2trellis(9,557,663,711[])ResetOneachframe表5.4.3BinarySymmetricChannel〔二进制对称信道〕的参数设置参数名称参数值模块类型BinarySymmetricChannelErrorprobabilityBitErrorRateInitialseed71outputerrorvectorunchecked表5.4.4ViterbiDecoder(维特比译码器)的参数设置参数名称参数值模块类型ViterbiDecoderTrellisstructurepoly2trellis(9,[557,663,711])DecisiontypeHarddecisionTrecebackdepth192OperationmodeTruncated表5.4.5ErrorRateCalculation(误码率统计模块)的参数设置参数名称参数值模块类型ErrorRateCalculationReceivedelay0Computationdelay0Computationmodeentireframeoutputdataportresetportuncheckedstopsimulationunchecked表5.4.6Selector(选择模块)的参数设置参数名称参数值模块类型selectorinputtypevectorsourceofelementindicesinternalelements1inputportwidth3表5.4.7Display(显示模块)的参数设置参数名称参数值模块类型Displayformatshortdecimation1floatingdisplayuncheckedsampletime-1表5.4.8ToWrokspace(工作区写入模块)的参数设置参数名称参数值模块类型ToWrokspacevariablenameDecodedErrorRatelimitdatapointstolastinfdecimation1sampletime-1saveformatArray整个系统已经建造完毕。要运行实例程序,首先在工作区中建设一个变量BitErrorRate,并且把它设置为所需的二进制对称信道的误比特率。在这个程序里我们使用了缺省的运行时间(10秒),运行本实例程序,显示模块中显示的是译码后的误比特率,问时在工作区中可以看到,变量DecodedErrorRate是一个长度为501bit的向量,其中每个元素都表示一帧数据译码之后的误比特率。为了观测二进制对称信道不同的误比特率对卷积编码器性能的影响,我们需要屡次改变BitErrorRat的数值,然后重新运行实例程序。这时我们有程序:%x表示二进制对称信道的误比特率的各种取值x=[0.010.020.030.040.050.10.150.20.250.30.40.5];%y表示卷积编码信号的误码率,它的长度与x的长度相等y=x;%对x中的每一个元素依次执行仿真fori=1:length(x)%将二进制对称信道的误比特率设置为x的第i个元素的数值BitErrorRate=x(i);%运行仿真,仿真结果保存在向量DecodedErrorRatesim('project');%计算DecodedErrorRate的平均值作为卷积编码信号的误码率%为了计算的准确性,舍弃其中的头100个元素y(i)=mean(DecodedErrorRate);%(101:504));end%绘制x和y的对数关系曲线图semilogy(x,y);仿真出图5.4图5.4viterbi译码器对二进制对称信道的误码率曲线图从上图5.4可以看到,当二进制对称信道的误码率小于20%时,卷积编码信号的误码率都远远低于二进制对称信道误码率;而当二进制对称信道的误码率大于20%时,卷积编码信号的误码率近似到达了50%。这说明当信道的误码率高于20%时,卷积编码根本失去了原有的纠错能力。在实际应用中,移动通信系统的调制和解调能够保证信道的误比特率远远低于5%。根据我们的仿真结果.当信道的误比特率等于5%时,卷积编码信号的误码率低于0.03%.从这里可以看出.卷积编码器具有很强的纠错能力。6.卷积码译码器对二进制对称信道和高斯白噪声信道仿真比拟从上述2个仿真中的图5.3.4和图5.4可以看出,高斯白噪声信道中viterbi译码随着信道的信噪比提升,误比特率越低,信道的可信度,纠错能力最高。而在二进制对称信道中,随着信道的误码率提升,viterbi译码的误比特率越高,当二进制对称信道的误码率高到一定程度,viterbi译码几乎会失去纠错能力。然而在二进制对称信道和高斯白噪声信道中可以看出卷积编码viterbi译码有很强的纠错能力。7.总结在这份毕业设计中,主要是对不同信道的仿真中学会一些译码,卷积码和汉明码。通过整个系统的设计与仿真,使我加深了对卷积码和汉明码的理解,掌握维特比译码的根本思路,知道如何进展误码率分析从而选者适宜的信道传输信号,更重要的是学会了使用Matlab作为学习工具来对我们的通信系统进展设计和仿真等操作,这对我们以后的学习和工作有着重要意义。通过参考资料,向同学请教,导师的教诲完成了这份毕业设计,由于本人的能力有限,时间也有限,这份毕业设计的要求并没有完全实现。可是在这次设计中让我体会了matlab的强大功能和应用,让我了解了以后工作中会需要用到matlab,为我以后的工作铺下了奠基石。对过去而言,这是一次总结,对于将来,则是新的迈向更高知识阶梯的又一起点。致谢首先,在这次毕业设计中,在指导教师祝教师的帮助下顺利完成。让我在这次设计中了解到大学4年所没掌握的一些知识,使我获益匪浅。使我对matlab应用有了进一步的结合,这里我对她表示最衷心的感谢。其次,感谢张艾在这次设计中给予我的帮助,让我顺利完成我的毕业设计。最后,在此文即将完成之际,我衷心的感谢在此过程中帮助过我的每个人,在这里请接收我最诚挚的谢意!由于时间仓促、自身等原因,文章错误疏漏之处在所难免,恳请各位教师斧正。参考文献[1]樊昌信等,《通信原理〔第四版〕》国防工业出版社[2]王立宁等,《MATLAB与通信仿真》人民邮电出版社[3]吴伟陵,《信息处理与编码》北京邮电大学出版社[4]刘玉君,信道编码[M].河南科学技术出版社,2001.9[5]王秉钧,冯玉珉,田宝玉.通信原理[M].清华大学出版社[6]王新梅,肖国镇.纠错码[M].西安电子科技大学出版社[7]邓华.MATLAB通信仿真及应用实例详解[M].人民邮电出版社[8]刘宝琴,张芳兰,田立生.Altera可编程逻辑器件及其应用[M]清华大学出版社[9]郝东来.COFDM传输系统中编解码技术的研究[D].西安电子科技大学.[10]R.EBlahut著,徐秉铮等译,过失控制码的理论与实践,华南理工大学出版社,1988出版[11]美.雷格雷伯著高会生译MATLAB原理与工程应用[M].电子工业出版社2002年06月出版[12]桑林,郝建军,刘丹谱编著,数字通信〔第一版〕,北京邮电大学出版社.2002[13]樊昌信,曹丽娜编著,通信原理〔第六版〕,国防工业出版社.2006[14]邵玉斌编著,MATLAB/simulink通信系统建模与仿真实例分析〔第一版〕,清华出版社.2008.6[15]刘辉,刘玉贵,孟德斌,李承延编著,通信世界,CommunicationsWorld2002年16期,中国科技大学[16]樊昌信,徐炳祥,张甫翊,吴成柯编著,通信原理〔第五版〕,国防工业出版社2001[17]孙祥,徐流美,吴清编著,MATLAB根基教程,清华大学出版社2005[18]曹雪虹,张宗橙.信息论与编码[M].清华大学出版社附录1:随机信号源:function[out,rc]=inform(k)rc=rand(k,1);forn=1:kifrc(n)>=0.5out(n)=1;elseout(n)=0;endend产生高斯噪声:functionout=noise(snr,k,r)snr=10^(snr/10);rate=k/(k+r);q=1/(sqrt(2*snr*rate));out=randn(1,k+r)*q;汉明码编码:functioncode=hamming(ic,k,P)IG=eye(k);G=[IG,P'];code=rem(ic*G,2);汉明码译码:functionout=dehamming(in,k,r,P)m=k+r;IH=eye(r);H=[P,IH];S=rem(in*H',2);n=0;whilen<mn=n+1;h=H(:,n);ifS==h'break;endendin(n)=1-in(n);fori=1:kout(i)=in(i);end调制:functionout=modd(in,k,r)m=k+r;forn=1:mifin(n)<1out(n)=-1;elseout(n)=1;endend解调:functionout=demod(in,k,r)m=k+r;forn=1:mifin(n)<0out(n)=0;elseout(n)=1;endend总程序k=4;%信息位r=3;%监视位P=[1110;%校验矩阵0111;1101;];SNR=1;%信噪比N=1000;%测试的数据包数目w=0;%译码错误码元数目统计的变量n=1;whilen<N%测试数据包[ic,rc]=inform(k);%产生随机信号源hc=hamming(ic,k,P);%汉明码编码mc=modd(hc,k,r);%调制nc=mc+noise(SNR,k,r);%通过带噪声信道dmc=demod(nc,k,r);%解调dhc=dehamming(dmc,k,r,P);%汉明码译码form=1:k%统计译码错误码元数ifdhc(m)~=ic(m)w=w+1;endendn=n+1;endBER=w/(N*k)%计算误码率semilogy(SNR,BER);附录2:%(7,4)汉明码仿真%定义变量(7,4)汉明码模拟k=4; %n=7; %p_vector=0.1:0.01:1;%向量P的值,误码率N=len

温馨提示

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

评论

0/150

提交评论