1、基于循环码的差错控制编码建模与仿真程序基于循环码的差错控制编码系统建模与仿真一、设计目的及要求设计目标:通过利用MATLAB/simulink系统仿真功能,设计一个基于循环码的差错控制编码系统。实验知识要求:循环码的编、译码原理,差错控制编码系统的特点。MATLAB/simulin系统仿真知识。实验软件平台:MATLAB 7。0软件。二、课程设计的任务2.1循环码及差错控制编码的概念及理论基础2.1.1循环码的概念及生成多项式在实际应用中,数据传输一般采用系统码的编码方式,即在发送的信息序列之后附加上特定位数的冗余位,该冗余位称为所发送信息序列的监督位。监督位一般是由所发送的信息序列经过恰当的
2、变化而生成的。若监督位由信息位经线性组合而得到,则称得到的系统码为线性分组码.在线性分组码中有一类重要的码,称为循环码。这种码的编码和解码设备都不太复杂,而且检错和纠错的能力都较强。循环码除了具有线性码的一般性质外,还具有循环性,即任一码组循环一位后仍然是该编码中的一个码组。(n,k )循环码表示其中信息位为k,监督位为n-k。如果一种码的所有码多项式都是多项式g(x)的倍式,则称g(x)为该码的生成多项式。在循环码中,次数最低的非0首多项式就是生成多项式g(x),其他码多项式都是其倍数。(n,k)循环码的生成多项式g(x)一定是+1的因式:+1=g(x)h(x);反之,若g(x)为n-k次,
3、且能被+1整除,则此g(x)一定生成一个(n,k)循环码。2。1.2差错控制编码的基本概念信道编码的目的是提高信号传输的可靠性,信道编码是在经过信源编码的码元序列中增加一些多余的比特,目的在于利用这种特殊的多余信息去发现或纠正传输中发生的错误.在信道编码只有发现错码能力而无纠正错码能力时,必须结合其他措施来纠正错码,避免删除错码带来的负面影响。上诉手段称为差错控制。在对乘性干扰和加性干扰进行处理后仍不能达到误码率要求时,就需要采用差错控制措施。差错控制技术有以下4种:(1)检错重发:在发送码元中加入差错控制码元,当检测到有错码时,利用反向信道通知发送端重发。(2)前向纠错(FEC):接收端通过
4、发送码元中的差错控制码元,不但能发现错码,而且还能纠正错码。(3)反馈校验:不需要在发送序列中加入差错控制码元,而是将接收到的码元全部转回发送端,在发送端逐一比较,如发现有不同,则发送端重发。(4)检错删除:在接收端发现错码后,立即将其删除,不要求重发。为了在接收端能够发现或纠正错码,在发送码元序列中需要加入一些差错控制码元,称为监督码元或监督位。加入监督码元的方法称为差错控制编码方法或纠错编码方法。一般来说,加入的监督码元越多,检纠错能力就越强。另一方面,加入的监督码元越多,传输效率就越低。检纠错就是用降低传输效率换取传输可靠性的提高.2。2 差错控制编码的基本原理纠错编码:对原来的信息代码
5、重新编写,根据需要增加一些监督码,使在输出端能够识别出错码。分组码的结构:将信息码分组,为每组信息码附加若干监督码的编码称为分组码。在分组码中,监督码元仅监督本码组中的信息码元。图2.1 分组码的基本结构分组码的符号:(n, k)N 表示码组的总位数,又称为码组的长度(码长),k 表示码组中信息码元的数目,nk=r 表示码组中的监督码元数目,或称监督位数目。2。3循环码的编码译码原理2.3。1循环码的编码原理和方法循环码在编码时,首先需要根据给定循环码的参数(n,k)确定生成多项式g(x),也就是从+1的因子中选一个(n-k)次多项式作为g(x).利用循环码的编码特点,即所有循环码多项式A(x
6、)都可以被g(x)整除,来定义生成多项式g(x).根据上述原理,可以对给定的信息位进行编码。对于(n,k)循环码,设m(x)表示信息码多项式,根据循环码编码方法,其次数必小于k。而m(x)的次数必小于n,用m(x)除以g(x),可得余数r(x),r(x)的次数必小于g(x)的次数(n-k)。将r(x)加到信息位后作监督位,即将r(x)+m(x)就得到了系统循环码。因此,编码步骤可以归纳为:(1)用乘m(x).这一运算实际上是把信息码后附加上(nk)个“0.例如,信息码为110,它相当于m(x)+x。当nk7-34时,m(x)+,它相当于1100000。(2)求r(x)。由于循环码多项式A(x)
7、都可以被g(x)整除,也就是: (2.1)因此,用m(x)除以g(x),就得到商Q(x)和余式r(x),即 (2。2)这样就得到了r(x)。(3)求A(x).编码输出系统循环码多项式A(x)为: (2.3)例如,对于(7,3)循环码,若选用 ,信息码110时: (2。4)上式相当于 这时的编码输出为:1100101.上诉(n,k)循环码的编码过程,在硬件实现时,可以利用除法电路来实现,这里的除法电路采用一些移位寄存器和模2加法器来构成.当信息位输入时,开关位置接“2,输入的信息码一方面送到除法器进行运算,一方面直接输出;当信息位全部输出后,开关位置接“1”,这时输出端接到移位寄存器的输出,这时
8、除法的余项,也就是监督位依次输出。编码器的工作过程如下:图2.2 (7,3)循环码编码器2.3。2循环码的译码原理和方法对于接收端译码的要求通常有两个:检错与纠错.达到检错目的的译码十分简单,可以由式(21),通过判断接收到的码组多项式B(x)是否能被生成多项式g(x)整除作为依据。当传输中未发生错误时,也就是接收的码组与发送的码组相同,即A(x)=B(x),则接收的码组B(x)必能被g(x)整除;若传输中发生了错误,则A(x)B(x),B(x)不能被g(x)整除.因此,可以根据余项是否为零来判断码组中有无错码。 需要指出的是,有错码的接收码组也有可能被g(x)整除,这时的错码就不能检出了.这
9、种错误被称为不可检错误,不可检错误中的错码数必将超过这种编码的检错能力. 在接收端为纠错而采用的译码方法自然比检错要复杂许多。为了能够纠错,要求每个可纠正的错误图样必须和校正子之间存在某种对应关系。因此,可以按照下述步骤进行纠错:(1)由接收到的码多项式B(x)计算校正子(伴随式)多项式S(x);(2)由校正子S(x)确定错误图样E(x);(3)将错误图样E(x)与B(x)相加,纠正错误。纠错码译码器的复杂性主要取决于译码过程的第(2)步。基于错误图样识别的译码器称为梅吉特译码器,它的原理图如图2.3所示。错误图样识别器是一个具有(nk)个输入端的逻辑电路,原则上可以采用查表的方法,根据校正子
10、找到错误图样,利用循环码的上述特性可以简化识别电路。梅吉特译码器特别适合于纠正2个以下的随机独立错误。 图中k级缓存器用于存储系统循环码的信息码元,模2加电路用于纠正错误。当校正子为0时,模2加来自错误图样识别电路的输入端为0,输出缓存器的内容;当校正子不为0时,模2加来自错误图样识别电路的输入端在第i位输出为1,它可以使缓存器输出取补,即纠正错误.图2.3 梅吉特译码器原理2.4 差错控制编码系统的性能(1)系统带宽和信噪比的关系:为了减少接收错误码元数量,需要在发送信息码元序列中加入监督码元。这样使发送序列增长,冗余度增大。若仍须保持发送信息码元速率不变,则传输速率必须增大,因而增大了系统
11、带宽,继而引起系统中噪声功率增大,信噪比下降.信噪比的下降反而又使系统接收码元序列中的错码增多。采用纠错编码后,误码率总是能够得到很大改善的。如图2.4:图2.4 编码和误码率关系(2)功率和带宽的关系:由图还可以看出,若保持误码率不变,如图中C点,未采用编码时,约需要信噪比Eb/n0=9。5 dB。在采用这种编码时,约需要信噪比7.5 dB,图中D点。可以节省功率2 dB,付出的代价是带宽的增大。与纠错方法相比,采用检错方法,可以少增加监督位,从而少增大带宽。(3)传输速率和带宽的关系:对于给定的传输系统,传输速率和Eb/n0的关系是 (2.5)式中是码元速率, 是信号码元的平均功率.三、基
12、于循环码的差错控制编码系统的MATLAB仿真MATLAB通信工具箱中的系统仿真,分为用simulink模块框图进行仿真和用MATLAB函数进行的仿真两种.在用simulink模块框图的仿真中,每个模块,在每个时间步长上执行一次,就是说,所有的模块在每个时间步长上同时执行。这种仿真被称为时间流的仿真.而在用MATLAB函数的仿真中,函数按照数据流的顺序依次执行,意味着所处理的数据,首先要经过一个运算阶段,然后再激活下一个阶段,这种仿真被称为数据流仿真.某些特定的应用会要求采用两种仿真方式中的一种,但无论是哪种,仿真的结果是相同的。3。1Simulink仿真技术Simulink是一个用来对动态系统
13、进行建模、仿真和分析的软件包,它支持连续、离散及两者混合的线性和非线性系统,也支持具有多种采样频率的系统。在SIMULINK环境中,利用鼠标就可以在模型窗口中直观地“画”出系统模型,然后直接进行仿真。它为用户提供了方框图进行建模的图形接口,采用这种结构画模型就像用手和纸来画一样容易。它与传统的仿真软件包微分方程和差分方程建模相比,具有更直观、方便、灵活的优点。SIMULINK包含有SINKS(输入方式)、SOURCE(输入源)、LINEAR(线性环节)、NONLINEAR(非线性环节)、CONNECTIONS(连接与接口)和EXTRA(其他环节)子模型库,而且每个子模型库中包含有相应的功能模块
14、,用户也可以定制和创建用户自己的模块.用SIMULINK创建的模型可以具有递阶结构,因此用户可以采用从上到下或从下到上的结构创建模型。用户可以从最高级开始观看模型,然后用鼠标双击其中的子系统模块,来查看其下一级的内容,以此类推,从而可以看到整个模型的细节,帮助用户理解模型的结构和各模块之间的相互关系。在定义完一个模型后,用户可以通过SIMULINK的菜单或MATLAB的命令窗口键入命令来对它进行仿真。菜单方式对于交互工作非常方便,而命令行方式对于运行一大类仿真非常有用。采用SCOPE模块和其他的画图模块,在仿真进行的同时,就可观看到仿真结果。除此之外,用户还可以在改变参数后来迅速观看系统中发生
15、的变化情况。仿真的结果还可以存放到MATLAB的工作空间里做事后处理.模型分析工具包括线性化和平衡点分析工具、MATLAB的许多工具及MATLAB的应用工具箱。由于MATLAB和SIMULINK的集成在一起的,因此用户可以在这两种环境下对自己的模型进行仿真、分析和修改.3.2 Simulink对通信系统的仿真步骤(1)建立数学模型:根据通信系统的基本原理,将整个系统简化到源系统,确定总的系统功能,并将各部分功能模块化,找出各部分之间的关系,画出系统流程框图模型。(2)仿真系统:根据建立的模型,从simulink 通信模型库的各个子库中,将所需要的单元功能模块拷贝到Untitled 窗口,按系统
16、流程框图模型连接,组建要仿真的通信系统模型.(3)设置、调整参数:参数设置包括运行系统参数设置(如系统运行时间、采样速率等)和功能模块运行参数设置(正弦信号的频率、幅度、初相;低通滤波器的截至频率、通带增益、阻带衰减等).(4)分析仿真数据和波形:在系统模型的关键点处设置观测输出模块,用于观测仿真系统的运行情况,以便及时调整参数,分析结果。3。3 循环码的差错控制编码仿真设计3。3。1循环码差错控制编码系统仿真模型图3。1所示是循环码的仿真系统.信号源是伯努利二进制信号发生器,产生采样时间为0。01的二进制信号,传输环境是二进制平衡信道。在发射端和接收端分别设置了循环码编码和解码器。为了对比(
17、7,4)循环码差错控制的效率,同时设计了没有经过循环码校验的系统仿真框图,如图3。2 所示。虽然循环码因为信道编码的结果使得传输效率变为了4/7,即发送的7个码元中进传送了4个码元的有效信息,但是使得差错率从5降为了2。图3.1 (7,4)循环码进行差错控制仿真系统图3。2 无循环码的差错控制仿真系统3。3.2 主要功能模块及参数设置图3。3 伯努利二进制信号发生器参数图3。4 二进制循环码编码器参数图3。5 二进制循环码译码器参数图3。6 二进制均衡信道参数图3。7 误码率计算参数3。3.3循环码的误码率与差错率的关系为了得到循环码仿真系统信号误码率与信道差错概率之间的曲线图,可以编写如下M
18、文件,对图31循环码的仿真模型进行仿真,此时二进制均衡信道的差错概率设置为errB,M源文件和曲线图如下。程序3.1:clear all;close all;er=0:0。01:0.05;for n=1:length(er) errB=er(n) sim(Cyclic_1) S(n)=mean(ss)endplot(er,S)xlabel(ErrorPorbability)ylabel(Probability of Error Pe)grid循环码的性能曲线图如下:图3。8 循环码的误码率曲线图同时编写M文件对图3.2无循环码的仿真系统绘出信号误码率与差错概率之间的关系曲线图,此时二进制均衡信
19、道的差错概率设置为errB。源文件和曲线图如下。程序3.2:clear all;close all;er=0:0。01:0.05;for n=1:length(er) errB=er(n) sim(Cyclic_3) S1(n)=mean(sss)endplot(er,S1)xlabel(ErrorPorbability)ylabel(Probability of Error Pe)grid无循环码的性能曲线图如下:图3.9 无循环码的误码率曲线图通过对循环码信道编码条件下的误码率与差错概率之间的关系(图3。8)和无信道编码条件下的关系曲线图(图3,9)比较可以看出,当差错概率为0.05时,未
20、编码的误码率为0。052,而编码后,无码率仅为0.021。因此,采用了循环码编码差错控制后,系统的码误码率得到了明显的改善,其误码率明显下降。四、课程设计心得通过这三个星期的学习和实践,我对循环码的编、译码原理,以及循环码差错控制编码系统的结构、性能有了初步的了解,并对MATLAB/simulink仿真软件有了更深的了解。而且能够利用Matlab和simulink的初步知识设计出一个简单的模拟仿真系统,使其能够体现出循环码差错控制编码系统的部分性能。在这次建模仿真设计中,起初我出现了很多次错误,模块参数的设置总是不对。通过老师的帮助和自己的理解,错误被一一解除,增加了我对Matlab学习的兴趣.这次的课程设计对即将毕业的我们来说,是一次短期的培训与锻炼,同时也是我们从学校走向社会岗位的一个桥梁。五、参考文献(1)Matlab仿真在通信与电子工程中的应用 徐明远、邵玉斌 编著 西安电子科技大学出版社 2005(2)Matlab/simulink通信系统建模与仿真实例分析 邵玉斌 编著 清华大学出版社 2008(3)通信原理教程 樊昌信 编著 电子工业大学出版社 2005
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1