ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:220.16KB ,
资源ID:4073861      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-4073861.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(157循环码的编译码方法解析Word文件下载.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

157循环码的编译码方法解析Word文件下载.docx

1、附录 16致谢 21前言随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。随着经济文化水平的显著提高,人们对生活质量及工作软件的要求也越来越高。在计算机通信信息码中循环码是线性分组码的一个重要子集,是目前研究得最成熟的一类码。它有许多特殊的代数性质,它使计算机通信以一种以数据通信形式出现,实现了在计算机与计算机之间或计算机与终端设备之间进行有效的与正确地信息传递,它使得现代通信的可靠性与有效性实现了质的飞跃。它是现代计算机技术与通信技术飞速发展的产物,在日常生活通信领域、武器控制系统等领域都被广泛应用。数字信号在传输中往往

2、由于各种原因,使得在传送的数据流中产生误码,从而使接收端产生图象跳跃、不连续、出现马赛克等现象。所以通过信道编码这一环节,对数码流进行相应的处理,使系统具有一定的纠错能力和抗干扰能力,可极大地避免码流传送中误码的发生。误码的处理技术有纠错、交织、线性内插等。提高数据传输效率,降低误码率是信道编码的任务。信道编码的本质是增加通信的可靠性。此次课程设计题目是(15,7)循环码的编译码方法,首先学习掌握了线性分组码的编译码原理;其次在matlab平台下,完成了任意码的编码和译码,并可求出该码的最小码距以及其纠错能力;一 基本原理1.1循环码的定义循环码是线性分组码的一种,所以它具有线性分组码的一般特

3、性,此外还具有循环性。循环码的编码和解码设备都不太复杂,且检(纠)错能力强。它不但可以检测随机的错误,还可以检错突发的错误。(n,k)循环码可以检测长为n-k或更短的任何突发错误,包括首尾相接突发错误。 循环码是一种无权码,循环码编排的特点是相邻两个数码之间符合卡诺图中的邻接条件,即相邻两个数码之间只有一位码元不同,码元就是组成数码的单元。符合这个特点的有多种方案,但循环码只能是表中的那种。循环码的优点是没有瞬时错误,因为在数码变换过程中,在速度上会有快有慢,中间经过其它一些数码形式,称它们为瞬时错误。这在某些数字系统中是不允许的,为此希望相邻两个数码之间仅有一位码元不同,即满足邻接条件,这样

4、就不会产生瞬时错误。循环码就是这样一种编码,它可以在卡诺图中依次循环得到。循环码又称格雷码。循环码最大的特点就是码字的循环特性,所谓循环特性是指:循环码中任一许用码组经过循环移位后,所得到的码组仍然是许用码组。若()为一循环码组,则()、()还是许用码组。也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循环码组。1.1.1循环码的多项式表示设码长为n的循环码表示为(),其中为二进制数,通常把码组中各码元当做二进制的系数,即把上式中长为n的各个分量看做多项式(1-1)的各项系数。 (1-1)其中,各码字与码多项式一一对应,这种多项式中,x仅表示码元位置的标记,因此我们并不关心x的取值,

5、这种多项式称为码多项式。1.1.2(n,k)循环码的生成多项式(n,k)循环码的生成多项式写为g(x),它是(n,k)循环码码集中唯一的,幂次为n-k的码多项式,则是一个幂次为n的码多项式。按模()运算,此时: (1-2)即 (1-3)且因g(x)也是n阶幂,故Q(x)=1。由于它是循环码,故)运算后的“余式”也是循环码的一个码字,它必能被g(x)整除,即: (1-4)由以上两式可以得到: (1-5)和 (1-6)从上式中可以看出,生成多项式g(x)应该是的一个因式,即循环码多项式应该是的一个n-k次因式。本课程设计要求完成任意(15,7)循环码的编码和译码,其中给出的生成多项式为:g(x)=

6、x8+x7+x6+x4+1则生成矩阵G为: (1-7)对式(1-7)作线性变换,整理成典型形式的系统生成矩阵: (1-8)若信息码元与式(1-8)相乘,得到的就是系统循环码。1.1.3循环码的生成矩阵和一致校验矩阵对所有的i=0,1,2,k-1,用生成多项式g(x)除,有: (1-9)式中是余式,表示为: (1-10)因此,是g(x)的倍式,即是码多项式,由此得到系统形式的生成矩阵为: (1-11) 它是一个kn阶的矩阵。同样,由G=0可以得到系统形式的一致校验矩阵为: (1-12)由于在本课程设计中,由于生成多项式为:g(x)=x8+x7+x6+x4+1,校验多项式为 h(x)= xn +1

7、/g(x),因此可由长除法求得校验多项式为h(x)=x7+x6+x4+1,所以校验矩阵H为: (1-13)对式(1-13)作线性变换,整理成典型形式的系统生成矩阵: (1-14)1.2循环码编码原理有信息码构成信息多项式,其中最高幂次为k-1;用乘以信息多项式m(x),得到的,最高幂次为n-1,该过程相当于把信息码(,)移位到了码字德前k个信息位,其后是r个全为零的监督位;用g(x)除得到余式r(x),其次数必小于g(x)的次数,即小于(n-k),将此r(x)加于信息位后做监督位,即将r(x)于相加,得到的多项式必为一码多项式。1.3循环码的纠错原理纠错码的译码是该编码能否得到实际应用的关键所

8、在。译码器往往比编码较难实现,对于纠错能力强的纠错码更复杂。根据不同的纠错或检错目的,循环码译码器可分为用于纠错目的和用于检错目的的循环码译码器。通常,将接收到的循环码组进行除法运算,如果除尽,则说明正确传输;如果未除尽,则在寄存器中的内容就是错误图样,根据错误图样可以确定一种逻辑,来确定差错的位置,从而达到纠错的目的。用于纠错目的的循环码的译码算法比较复杂,感兴趣的话可以参考一些参考书。而用于检错目的循环码,一般使用ARQ通信方式。检测过程也是将接受到的码组进行除法运算,如果除尽,则说明传输无误;如果未除尽,则表明传输出现差错,要求发送端重发。用于这种目的的循环码经常被成为循环冗余校验码,即

9、CRC校验码。CRC校验码由于编码电路、检错电路简单且易于实现,因此得到广泛的应用。在通过MODEM传输文件的协议如ZMODEM、XMODEM协议中均用到了CRC校验技术。在磁盘、光盘介质存储技术中也使用该方法。当码字c通过噪声信道传送时,会受到干扰而产生错误。如果信道产生的错误图样是e,译码器收到的n重接受矢量是y,则表示为: (1-15)上式也可以写成多项式形式: (1-16)译码器的任务就是从y(x)中得到,然后求的估值码字 (1-17) 并从中得到信息组。循环码译码可按以下三个步骤进行: (1)有接收到的y(x)计算伴随式s(x); (2)根据伴随式s(x)找出对应的估值错误图样; (

10、3)计算,得到估计码字若,则译码正确,否则,若,则译码错误。本课程设计中采用(15,7)循环码由生成矩阵可得其最小码距dmin为5;由最小码距可得其纠检错能力可知其最多可检4位错,可纠2位错。其伴随式如表1所示:表1 (15,7)循环码错误图样表错误图样伴随式纠错e=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0S=0 0 0 0 0 0 0 0无错e=0 0 0 0 0 0 0 0 0 0 0 0 0 0 1S=1 0 0 0 0 0 0 0第一位错e=0 0 0 0 0 0 0 0 0 0 0 0 0 1 0S=0,1,0,0,0,0,0,0第二位错e=0 0 0 0 0 0

11、0 0 0 0 0 0 1 0 0S=0,0,1,0,0,0,0,0第三位错e=0 0 0 0 0 0 0 0 0 0 0 1 0 0 0S=0,0,0,1,0,0,0,0第四位错e=0 0 0 0 0 0 0 0 0 0 1 0 0 0 0S=1,0,0,0,1,0,0,0第五位错e=0 0 0 0 0 0 0 0 0 1 0 0 0 0 0S=0,1,0,0,0,1,0,0第六位错e=0 0 0 0 0 0 0 0 1 0 0 0 0 0 0S=1,0,1,0,0,0,1,0第七位错e=0 0 0 0 0 0 0 1 0 0 0 0 0 0 0S=1,1,0,1,0,0,0,1第八位错e=

12、0 0 0 0 0 0 1 0 0 0 0 0 0 0 0S=0,1,1,0,1,0,0,0第九位错e=0 0 0 0 0 1 0 0 0 0 0 0 0 0 0S=0,0,1,1,0,1,0,0第十位错e=0 0 0 0 1 0 0 0 0 0 0 0 0 0 0S=0,0,0,1,1,0,1,0第十一位错e=0 0 0 1 0 0 0 0 0 0 0 0 0 0 0S=0,0,0,0,1,1,0,1第十二位错e=0 0 1 0 0 0 0 0 0 0 0 0 0 0 0S=0,0,0,0,0,1,1,0第十三位错e=0 1 0 0 0 0 0 0 0 0 0 0 0 0 0S=0,0,0,

13、0,0,0,1,1第十四位错e=1 0 0 0 0 0 0 0 0 0 0 0 0 0 0S=0,0,0,0,0,0,0,1第十五位错以上指出了系统循环码的译码方法:将收到的码字R(x) 用g(x) 去除,如果除尽则无错;否则有错。如果有错,可由余式S(x) 一一找出对应图样,然后将错误图样E(x) 与R(x) 模2 和,即为所求码字C(x) ,从而实现纠错目的。二 系统分析本次课题是(15,7)循环码的编译码方法,包括求出该码的最小码距以及其纠错能力,并分析出该码在高斯信道下的误码性能,则循环码的编译码过程如下:编码过程:第一步:将信息码字表示为,其最高次幂为第二步:将与求模得出相应的余式第

14、三步:编码结果为3.1循环码的编码流程循环码编码的程序框图如下图2-1所示:存储c(x)图 2-1 编码程序框图3.2循环码的译码流程译码过程:由接收码字与监督矩阵相乘得出错误图样判断是否为零。若不为零,则出错。在假定至多只有一位错的情况下,可以有效地译了相应的信息码字;在出错的情况下,将与标准监督矩阵对比,得出错误的比特位并进行更正得出前四位为信息码字。循环码译码的程序框图如图下图2-2 所示:图2-2 译码程序框图否三 系统设计及调试3.1循环码的编码任意输入一组7位二进制循环码序列,可对该二进制序列进行编码,其实现结果如下图3-1所示:图3-1 (15,7)循环码的编码程序仿真结果图由图

15、3-1可得,本程序实现了对任意输入消息进行(15,7)循环码的编码。如图所示输入码字a=1 1 1 0 1 0 1,编码输出b= 1 0 0 1 0 0 0 1 1 1 1 0 1 0 1。3.2(15,7)循环码的译码对上述图3-1中所输入循环码字a=1 1 1 0 1 0 1的编码结果b= 1 0 0 1 0 0 0 1 1 1 1 0 1 0 1进行译码,其结果如下图3-2所示:图3-2 (15,7)循环码的译码程序仿真结果图由上图3-2可得,用编出的码字译码,没有错误,正确译出原码。3.3(15,7)循环码的纠检错将上图3-2中所编出的码字任意改变一位输入译码程序,其纠检错图如下图3-

16、3所示:图3-3 (15,7)循环码纠检错一位码字的仿真图3.4 (15,7)循环码在高斯信道下的误码性能 图3-4 信源产生的序列及无噪输出序列 图3-5 循环码在高斯信道下的误码率总结但由于所学知识有限,在设计过程中困难有很多,其主要表现在不熟练软件编程。总之,通过此次课程设计,我的收获有以下几点:首先,我掌握了(15,7)循环码的编译码方法,并学会了如何求出该码的最小码距及纠检错能力,同时通过观察该码通过高斯信道后的仿真结果,可发现循环码纠检错能力强;其次,通过此次课程设计不仅加深了我对课程理论的了解,并更加熟悉了MATLAB语言,而且它让我了解了学习知识不仅在课本上,可以是网络、图书馆

17、,甚至是老师同学。参考文献1樊昌信,曹丽娜通信原理(第六版)北京:国防工业出版社20072徐明远,邵玉斌MATLAB仿真在通信与电子工程中的应用西安:西安电子科技大学学出版社20053唐向宏,岳恒立,郑雪峰等 MATLAB及在电子信息类课程中的应用(第二版) 北京:电子工业出版社,20094 沈保锁等.现代通信原理.天津科学技术出版社.2000 5 李乐民等.数字通信传输系统.人民邮电出版社20066 惠高潮,王辉.论文基于单片机(7,4)循环码编码与译码的研究.南京工业大学2005附录源程序代码如下1.(15,7)循环码的编码clear;clc;a=input(请输入消息矢量:);%高次项系

18、数在前的生成多项式Gx=1 0 0 0 1 0 1 1 1;%将数组a的高位依次放在数组Data的低位 Data=zeros(1,15); Data(1)=a(7); Data(2)=a(6); Data(3)=a(5); Data(4)=a(4); Data(5)=a(3); Data(6)=a(2); Data(7)=a(1); %Data除以Gx得到余数Rx Qx,Rx=deconv(Data,Gx); b=Rx+Data; %将数组b的高位放在后面 c=b(1); b(1)=b(15); b(15)=c; c=b(2); b(2)=b(14); b(14)=c; c=b(3); b(3

19、)=b(13); b(13)=c; c=b(4); b(4)=b(12); b(12)=c; c=b(5); b(5)=b(11); b(11)=c; c=b(6); b(6)=b(10); b(10)=c; c=b(7); b(7)=b(9); b(9)=c; %将数组b校正for i=1:15 if rem(abs(b(i),2)=0 b(i)=0;end end if rem(abs(b(i),2)=1 b(i)=1;disp(输入序列:a编码输出序列:b2(15,7)循环码的编码r= 1 0 1 0 0 1 0 0 1 1 1 0 0 0 0;h=1,0,0,0,0,0,0,0;1,1

20、,0,0,0,0,0,0;0,1,1,0,0,0,0,0;1,0,1,1,0,0,0,0;0,1,0,1,1,0,0,0;0,0,1,0,1,1,0,0;0,0,0,1,0,1,1,0;1,0,0,0,1,0,1,1;0,1,0,0,0,1,0,1;0,0,1,0,0,0,1,0;0,0,0,1,0,0,0,1;0,0,0,0,1,0,0,0;0,0,0,0,0,1,0,0;0,0,0,0,0,0,1,0;0,0,0,0,0,0,0,1;b=flipud(h);s=r*b;8 if rem(abs(s(i),2)=0 s(i)=0; if rem(abs(s(i),2)=1 s(i)=1; i

21、f s=0 0 0 0 0 0 0 0 e=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; elseif s=1 0 0 0 0 0 0 0 e=0 0 0 0 0 0 0 0 0 0 0 0 0 0 1; elseif s=1,1,0,0,0,0,0,0 e=0 0 0 0 0 0 0 0 0 0 0 0 0 1 0; elseif s=0,1,1,0,0,0,0,0 e=0 0 0 0 0 0 0 0 0 0 0 0 1 0 0; elseif s=1,0,1,1,0,0,0,0 e=0 0 0 0 0 0 0 0 0 0 0 1 0 0 0; elseif s=0,1,0,

22、1,1,0,0,0 e=0 0 0 0 0 0 0 0 0 0 1 0 0 0 0; elseif s=0,0,1,0,1,1,0,0 e=0 0 0 0 0 0 0 0 0 1 0 0 0 0 0; elseif s=0,0,0,1,0,1,1,0 e=0 0 0 0 0 0 0 0 1 0 0 0 0 0 0; elseif s=1,0,0,0,1,0,1,1 e=0 0 0 0 0 0 0 1 0 0 0 0 0 0 0; elseif s=0,1,0,0,0,1,0,1 e=0 0 0 0 0 0 1 0 0 0 0 0 0 0 0; elseif s=0,0,1,0,0,0,1,0

23、e=0 0 0 0 0 1 0 0 0 0 0 0 0 0 0; elseif s=0,0,0,1,0,0,0,1 e=0 0 0 0 1 0 0 0 0 0 0 0 0 0 0; elseif s=0,0,0,0,1,0,0,0 e=0 0 0 1 0 0 0 0 0 0 0 0 0 0 0; elseif s=0,0,0,0,0,1,0,0 e=0 0 1 0 0 0 0 0 0 0 0 0 0 0 0; elseif s=0,0,0,0,0,0,1,0 e=0 1 0 0 0 0 0 0 0 0 0 0 0 0 0; else s=0,0,0,0,0,0,0,1 e=1 0 0 0 0

24、0 0 0 0 0 0 0 0 0 0;u=r+e; if rem(abs(u(i),2)=0 u(i)=0; if rem(abs(u(i),2)=1 u(i)=1;Data=zeros(1,7); Data(1)=u(9); Data(2)=u(10); Data(3)=u(11); Data(4)=u(12); Data(5)=u(13); Data(6)=u(14); Data(7)=u(15);if e=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0没有错误:)k=0,else第几位错误: k=find(e) ;接收码字r译码输出序列:Data3循环码编码与解码Matla

25、b源程序(实验以(7,4)循环码进行分析)n = 15; %定义码长k = 7; %信息位长msg = randint(k*4,1,2); %随机提取信号,引起一致地分布的任意整数矩阵subplot(2,2,1)stem(msg)title(编码器输入信号p=cyclpoly(n,k) %循环码生成多项式,n=7,k=4code = encode(msg,n,k,cyclic,p); %编码函数,对信号进行差错编码subplot(2,2,2)stem(code)编码器输出信号recode=decode(code,n,k,p) %对信号进行译码,对接收到的码字进行译码,恢复出原始的信息,译码参数

26、和方式必须和编码时采用的严格相同subplot(2,2,3)stem(recode)译码器输出信号t=-1:0.01:1;x=recode; %将recode赋值给x,并进行长度与fft设定N=length(x);fx=fft(x);df=100/N;n=0:N/2;f=n*df;subplot(2,2,4);plot(f,abs(fx(n+1)*2/N); grid;频谱图2、误码率与信噪比之间的关系程序(以(3,2)循环码进行测试)Fs=40; %系统采样频率Fd=1; %码速率N=Fs/Fd;M=2; %进制数for SNRpBit=1:100;%信噪比SNR=SNRpBit/log2(M);%制造100个信息组,每组k位msg = randint(100,k,0,1);cycl

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2