为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于matlab的信道编码仿真(可编辑)

2017-09-20 27页 doc 60KB 185阅读

用户头像

is_511210

暂无简介

举报
基于matlab的信道编码仿真(可编辑)基于matlab的信道编码仿真(可编辑) 基于matlab的信道编码仿真 海 南 大 学 毕 业 论 文(设计) 题 目:基于matlab的信道编码仿真 学 号: 姓 名: 年 级: 学 院:信息科学技术学院 系 别:电子信息工程 专 业:电子信息工程 指导教师: 完成日期: 摘要 通信技术的飞速发展,信道编码已经成功地应用于各种通信系统中。以及各种传输方式对可靠性要求的不断提高,信道编码技术作为抗干扰技术的一种重要的手段,在数字通信技术领域和数字传输系统中显示出越来越重要的作用。 信道编码的目的是为了...
基于matlab的信道编码仿真(可编辑)
基于matlab的信道编码仿真(可编辑) 基于matlab的信道编码仿真 海 南 大 学 毕 业 论 文(设计) 题 目:基于matlab的信道编码仿真 学 号: 姓 名: 年 级: 学 院:信息科学技术学院 系 别:电子信息工程 专 业:电子信息工程 指导教师: 完成日期: 摘要 通信技术的飞速发展,信道编码已经成功地应用于各种通信系统中。以及各种传输方式对可靠性要求的不断提高,信道编码技术作为抗干扰技术的一种重要的手段,在数字通信技术领域和数字传输系统中显示出越来越重要的作用。 信道编码的目的是为了改善通信系统的传输质量。由于实际信道存在噪声和干扰,使发送的码字与信道传输后所接收的码字之间存在差异,称这种差异为差错。一般情况下,信道噪声、干扰越大,码字产生差错的概率也就越大。 本文利用matlab对二进制对称信道BSC,高斯白噪声信道AWGN两种信道的仿真,(7,4)Hamming码对信道的仿真,通过误码率的曲线图来了解信道的编码。并利用matlab的simulink模块仿真,运用simulink里的卷积码viterbi译码器来 对二进制对称信道和高斯白噪声信道的仿真,观察误码率的曲线图来了解2个信 道的不同。 关键字:matlab,信道,编码,译码,Simulink。 Abstract With the rapid development of communication technology, channel coding has been successfully applied to various communications systems. And a variety of transmission of the continuous improvement of reliability requirements, anti-jamming channel coding technology as an important means of technology in the field of digital communications technology and digital transmission systems in a more and more important role The purpose of channel coding is to improve the transmission quality of communications systems. As the actual existence of the channel noise and interference, the transmitted codewords and channel transmission received after the difference between code words, said this difference is wrong. Under normal circumstances, channel noise, the greater the interference, the code word generated the greater the probability of errorIn this paper, matlab binary symmetric channel BSC, Gaussian white noise channel AWGN two channel simulation, 7,4 Hamming code simulation of the channel, through the bit error rate curve to understand the channel coding. Using matlab to simulink block simulation, using simulink in the viterbi decoder to convolutional codes on the binary symmetric channel and Gaussian white noise channel simulation, observation error rate graphs to understand the two different channels Keywords: matlab, channel, coding, decoding, Simulink. 目录 1引言 1 1.1选题的目的和意义 1 1.2本选题的理论依据、研究内容 1 2.信道编码以及其运行环境MATLAB的介绍 2 2.1 信道编码的概念及分类 2 2.2 信道编码定理及信道编码中所包含的各种码类的简介 2 2.2.1卷积码 2 2.2.2线性分组码 3 2.2.3循环码 3 2.3 MATLAB语言的简介 4 2.4 Simulink 5 3.信道 5 3.1二进制对称信道(BSC) 5 3.2二进制删除信道(BEC) 6 3.3高斯白噪声信道AWGN 6 4. Hamming码 7 4.1汉明码 7 4.2校验方法 7 4.3汉明码编码 9 4.3.1汉明码对高斯白噪声信道 9 4.3.2汉明码对二进制对称信道的仿真 11 5.卷积码 15 5.1卷积码定义与原理 15 5.2维特比译码原理 15 5.3卷积码译码器对高斯白噪声信道的设计与仿真 18 5.3.1卷积码译码器的设计与仿真 19 5.3.2简化维特比译码器的仿真 22 5.3.3卷积码译码器的误码率分析 24 5.4卷积编码器在二进制对称信道(BSC)中的性能 25 6.卷积码译码器对二进制对称信道和高斯白噪声信道仿真比较 30 7.总结 31 致谢 32 参考文献 33 附录1: 34 附录2: 37 附录3: 40 附录4: 41 1引言 1.1选题的目的和意义 数字信号在传输中往往由于各种原因,使得在传送的数据流中产生误码, 从而使接收端产生图象跳跃、不连续、出现马赛克等现象。所以通过信道编码这一环节,对数码流进行相应的处理,使系统具有一定的纠错能力和抗干扰能力,可极大地避免码流传送中误码的发生。误码的处理技术有纠错、交织、线性内插等。 提高数据传输效率,降低误码率是信道编码的任务。信道编码的本质是增加通信的可靠性。但信道编码会使有用的信息数据传输减少,信道编码的过程是在源数据码流中加插一些码元,从而达到在接收端进行判错和纠错的目的。 1.2本选题的理论依据、研究内容 在数字通信系统中由于信道内存在加性噪声及信道传输特性不理想等容易造成码间串扰同时多用户干扰、多径传播和功率限制等也导致错误译码。为了确保系统的误比特率指标通常采用信道编码。信道编码是为了保证信息传输的可靠性、提高传输质量而设计的一种编码。它是在信息码中增加一定数量的多余码元,使码字具有一定的抗干扰能力。 提高信息传输的有效性和可靠性始终是通信技术所追求的目标,而信道编码能够显著的提升信息传输的可靠性。简述信道编码理论,详细说明分组码的编译原理、实现方法及检错纠错能力,用MATLAB仿真信道编码条不同信道下的影响。学习卷积码的基本原理和编码方法。学习基本分组码的原理和编码方法。理解二进制对称信道BSC,二进制擦除信道BEC,高斯白噪声信道AWGN。理解码率code rate和误码率bit error rate的意义。利用(7,4)Hamming码对不同信道进行仿真。自己设计一个卷积码,并利用Viterbi译码二进制对称信道BSC,高斯白噪声信道AWGN2个信道进行仿真,比较结果。 2.信道编码以及其运行环境MATLAB的介绍 2.1 信道编码的概念及分类 进行信道编码是为了提高信号传输的可靠性,改善通信系统的传输质量,研究信道编码的目标是寻找具体构造编码的理论与方法。从原理上,构造信道码的基本思路是根据一定的规律在待发送的信息码元中人为的加入一定的多余码元,以引入最小的多余度为代价来换取最好的抗干扰性能。信道编码是通过信道编码器和译码器实现的用于提高信道可靠性的理论和方法,是信息论的内容之一。信道编码大致分为两类:?信道编码定理,从理论上解决理想编码器、译码器的存在性问题,也就是解决信道能传送的最大信息率的可能性和超过这个最大值时的传输问题。?构造性的编码方法以及这些方法能达到的性能界限。编码定理的证明,从离散信道发展到连续信道,从无记忆信道到有记忆信道,从单用户信道到多用户信道,从证明差错概率可接近于零到以指数规律逼近于零,正在不断完善。编码方法,在离散信道中一般用代数码形式,其类型有较大发展,各种界限也不断有人提出,但尚未达到编码定理所启示的限度。在连续信道中常采用正交函数系来代消息,这在极限情况下可达到编码定理的限度,不是所有信道的编码定理都已被证明。 2.2 信道编码定理及信道编码中所包含的各种码类的简介 1948年,信息论的奠基人C.E.Shannon在他的开创性论文“通信的数学理论”中,提出了著名的有噪信道编码定理。他指出:对任何信道,只要信息传输速率R不大于信道容量C, 就一定存在这样的编码方法:在采用最大似然译码时,其误码率可以任意小。该定理在理论上给出了对给定信道通过编码所能达到的编码增益的上限,并指出了为达到理论极限应采用的译码方法。在信道编码定理中,香农提出了实现最佳编码的三个基本条件 :1采用随机编译码方式 ;2编码长度L?? ,即分组的码组长度无限;3译码采用最佳的最大似然译码算法。 2.2.1卷积码 卷积码convolution code属于非分组码,它是一种小分组n ,k多码段相关、纠错能力较强的FEC码。卷积码不同于n, k分组码,它将n, k变成很短的分组n, k,如2 ,1、3, 13, 2卷积码等。每一个监督元不仅是由本码段n, k的k位信码所决定,而且与其前N-1个码段的信码有关,因此称为卷积码。它适于串行传送,延时较小。 本码段n,k以及其前N-1段构成的N个分组码段称为约束长度:其码元数为Nn比特,而N称为约束度。因此,各码段n, k不像n, k分组码是一个独立纠错码单元,其差错控制能力由N个码段来决定。所以通常将卷积码写为n, k,N,其中Nm+1,m是编码电路的移位寄存器数目。卷积码分为两种: 1基本卷积码: 基本卷积码编码效率为,η=1/2, 编码效率较低,优点是纠错能力强。 2收缩卷积码: 如果传输信道质量较好,为提高编码效率,可以采样收缩截短卷积码。有编码效率为:η=1/2、2/3、3/4、5/6、7/8这几种编码效率的收缩卷积码编码效率高,一定带宽内可传输的有效比特率增大,但纠错能力越减弱。 2.2.2线性分组码 简单来说,所谓“分组码”就是指码字的生成只与当前的源数据有关,而与前后的数据无关相应地,与前后数据相关的码称为卷积码。分组码将连续的数据比特流分割为长度固定的组;各组进一步以m比特为单位分割为符号Symbol,通常取3比特或者8比特数据组成一个符号。k个符号一起组成源字Source word,经过编码后变为长度为n的码字Code word,称为m比特符号的n , k分组码。 所谓“线性”,是指编码过程均为线性变换,即可以通过矩阵变换来表示。目前研究的纠错码大都属于线性码。在线性空间中,所有可能的m比特源字都可以进行编码变换,而无需关心这m比特数据所代表的含义。所谓“系统”,是指码字中包含了源字和变换所得的校验字。 2.2.3循环码 循环码的特点是符合n, k线形分组码特点---在码内码子集合的任意两个码字之和为该码中的一个码字,这一特征表明n, k循环码属于n, k线形分组码的一个子类。n, k码中任何一个码字连续位移i位后的码字,仍属于该循环码的一个码字。循环码中的生成多项式的必要条件为某n, k码是否位循环的必要条件是:幂为码长n的多项式x+1,可分解出至少有1个因式的最高幂次为n-kr,即该因式最高次项为x,最低项为常数1。其生成多项式的充分条件是由必要条件得到的gx,其多项式的非零权系数个数还应等于相应n, k分码组的d。之所以补充这一“充分”条件,是因为符合必要条件的gx并不一定能得到与其相应分组码相同n, k的差错控制能力。 循环编码码步骤:源码为mxmx+„+mx+m,应首先提升n-k位,变为xmx。然后以生成多项式gx去除,得 qx+ 式2-1可得循环码:Cxxmx+bx。 2.3 MATLAB语言的简介 MATLAB是矩阵实验室Matrix Laboratory之意,除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。MATLAB 将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真 和设计工作,而且利用MATLAB产品的开放式结构,可以非常容易地对 MATLAB的功能进行扩充,从而在不断深化对问题认识的同时,不断完善MATLAB 产品以提高产品自身的竞争能力。 MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C、FORTRAN等语言完相同的事情简捷得多。 开放性使MATLAB广受用户欢迎。除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。Matlab软件最好的是它的帮助文件。只要硬盘容量够大,极力推荐安装完整的帮助文档,即使你对阅读英文不是很有信心,但我相信其足够的实例还是能让你对要查询的命令函数有一定的了解的。有两种方法取得帮助信息:一是直接在命令窗口输入help 函数名;如help imread,会得到相应函数的有关帮助信息。二是在帮助窗口中查找相应信息。不同版本的帮助菜单界面有所不同,这只能依赖于自己去熟悉了。但总体上都和windows的界面具有相似的处理过程。 2.4 Simulink Simulink是The MathWorks公司开发的用于动态系统和嵌入式系统的多领域仿真和基于模型的设计工具,常集成于MathWorks公司的另一产品mtlab中与之配合使用。 Simulink提供了一个交互式的图形化环境及可定制模块库(Library),可对各种时变系统,例如通讯、控制、信号处理、视频处理和图像处理系统等进行设计、仿真、执行和测试。 与MATLAB类似,Simulink的功能可以通过购买或自定义的工具箱不断扩展。 另外,Simulink与MATLAB紧密集成,可以直接访问MATLAB大量的工具来进行算法研发、仿真的分析和可视化、批处理脚本的创建、建模环境的定制以及信号和测试数据的定义。它的主要特点有[1]: 丰富的可扩充的预定义模块库 交互式的图形编辑器来组合和管理直观的模块图 以设计功能的层次性来分割模型,实现对复杂设计的管理 通过Model Explorer 导航、创建、配置、搜索模型中的任意信号、参数、属性,生成模型代码 提供API用于与其他仿真程序的连接或与手写代码集成 使用Embedded MATLAB模块在Simulink和嵌入式系统执行中调用MATLAB算法 使用定步长或变步长运行仿真,根据仿真模式Normal,Accelerator,Rapid Accelerator来决定以解释性的方式运行或以编译C代码的形式来运行模型 图形化的调试器和剖析器来检查仿真结果,诊断设计的性能和异常行为 可访问MATLAB从而对结果进行分析与可视化,定制建模环境,定义信号参数和测试数据 模型分析和诊断工具来保证模型的一致性,确定模型中的错误 。 3.信道 3.1二进制对称信道(BSC) 二进制对称信道是离散无记忆信道在JK2时的特例。它的输入和输出都只有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实验室的//.ming发明,因此定名为汉明码。与其他的错误校验码类似,汉明码也利用了奇偶校验位的概念,通过在数据位后面增加一些比特,可以验证数据的有效性。利用一个以上的校验位,汉明码不仅可以验证数据是否有效,还能在数据出错的情况下指明错误位置。在接受端通过纠错译码自动纠正传输中的差错来实现码纠错功能,称为前向纠错FEC。在数据链路中存在大量噪音时,FEC可以增加数据吞吐量。 通过在传输码列中加入冗余位也称纠错位可以实现前向纠错。但这种方法比简单重传的成本要高。汉明码利用奇偶块机制降低了前向纠错的成本。 4.2校验方法 进行奇偶校验的方法是先计算数据中1的个数,通过增加一个0或1称为校验位,使1的个数变为奇数奇校验或偶数偶校验。例如,数据1001总共是4个比特位,包括2个1,1的数目是偶数,因此,如果是偶校验,那么增加的校验位就是一个0,反之,增加一个1作为校验位。通过“异或”运算来实现偶校验,“同或”运算来实现奇校验。单个比特位的错误可以通过计算1的数目是否正确来检测出来,如果1的数目错误,说明有一个比特位出错,这表示数据在传输过程中受到噪音影响而出错。利用更多的校验位,汉明码可以检测两位码错,每一位的检错都通过数据中不同的位组合来计算出来。校验位的数目与传输数据的总位数有关,可以通过汉明规则进行计算: d+p+12的p次方 d表示传输数据位数目,p表示校验位数目。两部分合称汉明码字,通过将数据位与一个生成矩阵相乘,可以生成汉明码字。 2008-07-05 19:10 针对4位数据的汉明码编码示意图 汉明码是一个在原有数据中插入若干校验码来进行错误检查和纠正的编码技术。以典型的4位数据编码为例,汉明码将加入3个校验码,从而使实际传输的数据位达到7个(位),它们的位置如果把上图中的位置横过来就是: 数据位 1 2 3 4 5 6 7 代码 P1 P2 D8 P3 D4 D2 D1 说明 第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]informk rcrandk,1;for n1:k if rcn0.5 outn1; else outn0; end end 产生高斯噪声: function outnoisesnr,k,r snr10^snr/10; ratek/k+r; q1/sqrt2*snr*rate; outrandn1,k+r*q; 汉明码编码: function codehammingic,k,P IGeyek; G[IG,P']; coderemic*G,2; 汉明码译码: function outdehammingin,k,r,P mk+r; IHeyer; H[P,IH]; Sremin*H',2; n0; while nm nn+1; hH:,n; if Sh'break; end end inn1-inn; for i1:koutiini; end 调制: function outmoddin,k,r mk+r; for n1:m if inn1 outn-1; elseoutn1; end end 解调: function outdemodin,k,r mk+r; for n1:m if inn0 outn0; elseoutn1; end end 总程序 k4; %信息位 r3; %监督位 P[1 1 1 0; %校验矩阵 0 1 1 1; 1 1 0 1;]; SNR1; %信噪比 N1000; %测试的数据包数目 w0; %译码错误码元数目统计的变量 n1; while nN%测试数据包[ic,rc]informk; %产生随机信号源 hchammingic,k,P;%汉明码编码mcmoddhc,k,r;%调制ncmc+noiseSNR,k,r; %通过 带噪声信道dmcdemodnc,k,r; %解调dhcdehammingdmc,k,r,P; %汉明码译码 for m1:k %统计译码错误码元数 if dhcm~icm ww+1; endend nn+1; end BERw/N*k %计算误码率 semilogySNR,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 lengthp_vector; % p_vector的长度 RUNS 5000; % 运行数 % 码字表 xtable [0 0 0 0 0 0 0;1 1 0 1 0 0 0;0 1 1 0 1 0 0;1 0 1 1 1 0 0;1 1 1 0 0 1 0;0 0 1 1 0 1 0;1 0 0 0 1 1 0;0 1 0 1 1 1 0;1 0 1 0 0 0 1;0 1 1 1 0 0 1;1 1 0 0 1 0 1;0 0 0 1 1 0 1;0 1 0 0 0 1 1;1 0 0 1 0 1 1;0 0 1 0 1 1 1;1 1 1 1 1 1 1;]; for p_i1:N error 0; % 错误的数 pp_vectorp_i; for r1:RUNS % 生成4位的信息块 z unifrnd0, 1, 1, 4; %0和1的4位串 w roundz;%圆 的Z值 %找到行的索引,二进制转换: m w1 + w2*2 + w3*4 + w4*8; x xtablem + 1, :; z unifrnd0, 1, 1, 7; % 0和1的7位随机字符串 zi findz p; % 错误的位置 % 误比特率 e zeros1,7; % 创建一个0的7位串 ezi onessizezi; % 创建一个字符串的大小Zi y xorx,e;% 异或X和E % forq1:16 dHq sumxory, xtableq,:;% 比较接收到的码字矢量 ifdHq1 wh xtableq, 4:7; endend % 计算误码率dHw sumxorw,wh;error error + dHw; end BERp_i error/RUNS*4; % 误码率计算 Pp_ip; % 存到p end Pslogspace-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; figure1 plotP, BER, 'bx', Ps, Pb_high, 'k-', Ps, Pb_low, 'k-' legend'Simulated','Analytical' xlabel'Probability of Error for BSC p' ylabel'BER' title'Figure 1 - Bit Error Rate for Hamming code over BSC' 仿真出图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所示。 图5.1 2,1,3卷积码编码器图5.2 2,1,3卷积码状态图 维特比译码需要利用图来说明移码过程。根据卷积码画网格的方法,我们可以画出该码的网格图,如图5.3所示。该图设输入信息数目L5,所以画L+N8个时间单位,图中分别标以0至7。这里设编码器从a状态开始运作。该网格图的每一条路径都对应着不同的输入信息序列。由于所有可能输入信息序列共有2kL个,因而网格图中所有可能的路径也为2kL条。这里节点a00,b01,c10,d11。 图5.3 2,1,3卷积码网格图 设输入编码器的信息序列为11011000,则由编码器对应输出的序列为Y11100,编码器的状态转移路线为abdcbdca。若收到的序列R01100,对照网格图来说明维特比译码的方法。 由于该卷积码的约束长度为6位,因此先选择接收序列的前6位序列R1010101同到达第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时刻的幸存路径。 图5.4 维特比译码第3时刻幸存路径 需要指出的是,对于某个节点,如果比较两条路径与接收序列的累计码距值相等时,则可以任意选者一条路径作为幸存路径,吃时不会影响最终的译码结果。在码的终了时刻a状态,得到一条幸存路径。如果2.5所示。由此可看到译码器 图5.5 第8时刻幸存路径 输出是R’11100,即可变换成序列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.1 Bernoulli Binary Generator贝努利二进制序列产生器的参数 设置 参数名称 参数值 模块类型 Bernoulli Binary Generator Probability of zero 0.5 Initial seed 25741 Sample time 0.0001 Frame-based output Checked Samples per frame 10000 表5.2 Convolutional Encoder卷积码编码器的参数设置 参数名称 参数值 模块类型 Convolutional Encoder Trellis Poly2trellis7,[171 133] Reset On each frame 表5.3 BPSK Modulator Baseband的参数设置 参数名称 参数值 模块类型 BPSK Modulator Baseband Phase offsetrad 0 Samples per symbol 1 本设计使用相对较简单的一个加性高斯白噪声信道作为噪声信道,它在二进制相位调制信号中叠加高斯白噪声。加性高斯白噪声模块的参数设置如表5.4。 表5.4 AWGN Channel加性高斯白噪声模块的参数设置 参数名称 参数值 模块类型 AWGN Channel Initial seed 1237 Mode Signal to noise ratioSNR SNRdB SNR Input signal powerwatts 1 信道模块如下图5.3.2所示。 图5.3.2 信道模块示意图 信宿模块在接收到二进制相位调制信号后,首先由BPSK Demodulator Baseband 二进制相位解调模块对信号进行量化,得到硬判决量化信号,然后通过Viterbi Decoder维特比译码器对软判决信号实施译码。译码输出信号和信源模块产生的原始信号输入到Error Rate Calculator误比特率统计模块中,统计得到的数据一方面通过Display显示模块显示出来,另一方面通过一个Selector选择器把其中的第一个元素即编码信号的误比特率保存到工作区变量BitErrorRate中。信宿模块如下图5.3.3所示。 图5.3.3 信宿模块Sink 各关键模块参数设置如表5.5、表5.6所示。 表5.5 BPSK Demodulator Baseband二进制相位解调模块的参数设置 参数名称 参数值 模块类型 BPSK Demodulator Baseband Phase offsetrad 0 Decision type Hard decision Output data type Inherit via internal rule 表5.6 Viterbi Decoder维特比译码器的参数设置 参数名称 参数值 模块类型 Viterbi Decoder Trellis structure poly2trellis7, [171 133] Decision type Hard decision Treceback depth 1000 Operation mode Truncated 将此完整设计保存,命名为convh.mdl,如下图5.3.4 图5.3.4 完整设计 5.3.2简化维特比译码器的仿真 为了验证译码模块的正确性,便让其进行最简模式运行,为此,临时设计一 个简化信号系统,关闭信道噪声,不进行二进制相位的调制与解调,去掉误比特率 统计模块。为了能看到输入二进制码和译码输出二进制码,增加了两个To Workspace结果输入到工作区模块,整个系统模块框图如图5.3.5所示。 图5.3.5 简化译码模块框图 同时,为了便于观察,将Bernoulli Binary Generator贝努利二进制序列产生器的参数设置为如表5.7所示,以产生简单的15位二进制随机码,也将Viterbi Decoder的Trceback depth值改为5。将To Workspace1模块和To Workspace模块的变量名分别设置为pdata和data。 表5.7 简化译码模块的Bernoulli Binary Generator的参数设置 参数名称 参数值 模块类型 Bernoulli Binary Generator Probability of zero 0.5 Initial seed 5 Sample time 10 Frame-based output Checked Samples per frame 5 运行仿真,在matlab的命令窗口中输入pdata和data分别得到相应的二进制序列。对所得序列分别截图,可得如下所示结果。可见,译码器能够正确进行译码,所设计简化译码器正确,因而,从理论上可推导,原设计正确。 data data 11011 pdata pdata 11011 5.3.3卷积码译码器的误码率分析 编制M文件convolutionh.m,使convh.mdl在不同的信噪比条件下重复执行前面建立的项目convh.mdl。然后绘制信道的信噪比与编码信号误比特率之间的关系曲线图。 M文件代码如下: %x表示信噪比 x-10:5; %y表示信号的误比特率 yx; %准备一个空白图形 hold off; %重复运行convh.mdl,检验不同条件下硬判决译码的性能 for i1:lengthx%信道的信噪比依次取x中的元素SNRxi;%运行仿真程序,得到的误比特率保存在工作区变量BitErrorRate中sim'convh';%计算BitErrorRate的均值作为本次仿真的误比特率yimeanBitErrorRate; end %绘制x和y的关系曲线图,纵坐标采用对数坐标 semilogyx,y; %保持已经绘制的图形 hold on 执行此M文件,得到如下图5.3.4所示的关系曲线图,由此图可见,随着信道信噪比的提升,维特比译码所得结果的误比特率越低,信道的可信度越高,信噪比在大于-2时信道的误码率开始明显降低。 图5.3.3viterbi译码器对高斯白噪声信道的误码率曲线图 5.4卷积编码器在二进制对称信道(BSC)中的性能 二进制对称信道模块的一个主要用途是用于检验编码的纠锗和检错性能,因为它能够方便地建立信道误比特率与编码信号的误比特率之间的关系。本节以卷积编码为例介绍卷积编码器在二进制信道中的传输性能。 卷积编码器以其优良的纠锗性能在移动通信系统中得到了广泛的应用。Is-95的前向信道和反向信道都采用了卷积编码器,这些卷积编码器的约束长度都是9,码率等于1/2或1/3。对于反向业务信道即从移动台到基站方向的信道,速率集1Rate Set1采用码率为1/3的卷积编码器3个码生成多项式分别等于八进制数557、663和711,速率集2Rate set 2则采用码率为1/2的卷积编码器码生成多项式分别等于八进制数753和561。在本实例中我们将使用反向全速业务倍道数据传输速率等于9600bit/s速率集1的卷积编码器。图5.4.1所示是本实例的系统组成框图。 图5.4.1 仿真系统 各个模块的参数设置如下各表: 表5.4.1 Bernoulli Binary Generator贝努利二进制序列产生器的参数设置 参数名称 参数值 模块类型 Bernoulli Binary Generator Probability of zero 0.5 Initial seed 61 Sample time 1/9600 Frame-based output Checked Samples per frame 9600 表5.4.2 Convolutional Encoder卷积码编码器的参数设置 参数名称 参数值 模块类型 Convolutional Encoder Trellis Poly2trellis9,557,663,711[] Reset On each frame 表5.4.3 Binary Symmetric Channel(二进制对称信道)的参数设置 参数名称 参数值 模块类型 Binary Symmetric Channel Error probability BitErrorRate Initial seed 71 output error vector unchecked 表5.4.4 Viterbi Decoder维特比译码器的参数设置 参数名称 参数值 模块类型 Viterbi Decoder Trellis structure poly2trellis9, [557,663,711] Decision type Hard decision Treceback depth 192 Operation mode Truncated 表5.4.5 Error Rate Calculation误码率统计模块的参数设置 参数名称 参数值 模块类型 Error Rate Calculation Receive delay 0 Computation delay 0 Computation mode entire frame output data port reset port unchecked stop simulation unchecked 表5.4.6 Selector选择模块的参数设置 参数名称 参数值 模块类型 selector input type vector source of element indices internal elements 1 input port width 3 表5.4.7 Display显示模块的参数设置 参数名称 参数值 模块类型 Display format short decimation 1 floating display unchecked sample time -1 表5.4.8 To Wrokspace工作区写入模块的参数设置 参数名称 参数值 模块类型 To Wrokspace variable name DecodedErrorRate limit data points to last inf decimation 1 sample time -1 save format Array 整个系统已经建造完毕。要运行实例程序,首先在工作区中建立一个变量BitErrorRate,并且把它设置为所需的二进制对称信道的误比特率。在这个程序里我们使用了缺省的运行时间10秒,运行本实例程序,显示模块中显示的是译码后的误比特率,问时在工作区中可以看到,变量DecodedErrorRate是一个长度为501bit的向量,其中每个元素都表示一帧数据译码之后的误比特率。 为了观测二进制对称信道不同的误比特率对卷积编码器性能的影响,我们需要多次改变BitErrorRat的数值,然后重新运行实例程序。这时我们有程序: %x表示二进制对称信道的误比特率的各种取值 x[0.01 0.02 0.03 0.04 0.05 0.1 0.15 0.2 0.25 0.3 0.4 0.5]; %y表示卷积编码信号的误码率,它的长度与x的长度相等 yx;%对x中的每一个元素依次执行仿真 for i1:lengthx%将二进制对称信道的误比特率设置为x的第i个元素的 数值 BitErrorRatexi; %运行仿真,仿真结果保存在向量DecodedErrorRate sim'project'; %计算DecodedErrorRate的平均值作为卷积编码信号的误码率 %为了计算的准确性,舍弃其中的头100个元素 yimeanDecodedErrorRate;%101:504; end %绘制x和y的对数关系曲线图 semilogyx,y; 仿真出图5.4 图5.4 viterbi译码器对二进制对称信道的误码率曲线图 从上图5.4可以看到,当二进制对称信道的误码率小于20%时,卷积编码信号的误码率都远远低于二进制对称信道误码率;而当二进制对称信道的误码率大于20%时,卷积编码信号的误码率近似达到了50%。这说明当信道的误码率高于20%时,卷积编码基本失去了原有的纠错能力。在实际应用中,移动通信系统的调制和解调能够保证信道的误比特率远远低于5%。根据我们的仿真结果.当信道的 误比特率等于5%时,卷积编码信号的误码率低于0.
/
本文档为【基于matlab的信道编码仿真(可编辑)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索