循环冗余校验(CRC)算法的实现_第1页
循环冗余校验(CRC)算法的实现_第2页
循环冗余校验(CRC)算法的实现_第3页
循环冗余校验(CRC)算法的实现_第4页
循环冗余校验(CRC)算法的实现_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、武汉理工大学计算机网络课程论文武汉理工大学计算机网络课程论文题目循环冗余校验(CRC算法的实现作 者 学院信息工程学院专业电子信息工程学号指导教师二一六年四月十四日武汉理工大学计算机网络课程论文武汉理工大学信息工程学院课程论文诚信声明本人声明:所呈交的课程论文,是本人在指导老师的指导下, 独立开展工作所取得的成果,成果不存在知识产权争议,除文中 已经注明引用的内容外,本课程论文不含任何其他个人或集体已 经发表或创作过的作品成果。对本文工作做出重要贡献的个人和 集体均已在文中以明确方式标明。本人完全意识到本声明的法律 结果由本人承担。本科课程论文作者签名:二C一六年四月十四日课程论文成绩评定表质

2、量评价指标(在相应栏目打")评价项目论文与设计评价质量按对应项目打分工作量和态度(10分)分析问题能力(10分)解决问题能力(10分)内容完整层次分明(10分)设计、实验正确性(10分)书写规范(10分)流程图或拓扑图(10分)论证充分(10分)测试结果情况(10分)总体评价(10分)评定成绩(100分制)指导教师签名年 月日II武汉理工大学计算机网络课程论文目录、选题背景 1. 设计要求 12. 循环冗余CRC简介 13. 应解决的主要问题 2、方案论证1. 循环冗余检验的原理 22. 方案的选择及特点 4三、过程论述 81. 第一部分 82. 第二部分 93. 第三部分 114.

3、 第四部分 11四、结果分析 121. CRC算法的实现 122. 突变的产生和校验结果 133. 无法检错的实例 14五、总结 15心得体会 17参考文献 17附件一:程序源代码 18iii武汉理工大学计算机网络课程论文一、选题背景题目17循环冗余校验(CRC算法的实现1、设计要求(1)利用结构体或数组模拟网络数据包结构。(2)编码实现CRC算法,并将得到的校验位附加到网络数据包相应的位置(3)根据数据包的长度,随机生成一个数据包产生突变的位置,并对该位 置的bit位模拟突变的产生。(4)重新利用CRC算法校验该数据包,并指出产生的结果。(5)CRC能够检出所有的错误吗?如果不能,你能构造出

4、无法检错的实例 吗?2、循环冗余CRC简介循环冗余校验码(CRC码,CRC=Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意 选定。CR(码是由两部分组成,前部分是信息码,就是需要检验的信息,后部分 是检验码,采用的是一种多项式的编码方法。 循环码和码字多项式是 CRC中的两 个基本概念。CRC校验的基本思想是利用线性编码理论,在发送端根据要传送的 k位二进制码序列,以一定的规则产生一个校验用的监督码(CRC码)n位,并附在信息后边,构成一个新的二进制码序列数共 (k+n)位,最后发送出去。在 接收端,则根据信息

5、码和 CRC码之间所遵循的规则进行检验,以确定传送中是 否出错。循环冗余校验码CRC是一种高效率且可靠的方法,由线性分组码分支而来 的,是一种通过多项式除法检测错误的很不寻常而又巧妙的方法,一方面它有很强的检测能力,二是它的编码器电路及错误检测器电路都很容易实现 ,它的 优点使它在通信系统中得到了广泛的应用。现实的通信链路都不会是理想的。这 就是说,比特在传输过程中可能会产生差错:1可能会变成0,而0也可能变成1。 这就叫做比特差错。比特差错是传输差错中的一种。 在一段时间内,传输错误的 比特占所传输比特总数的比率称为误码率 BEG误码率与信噪比有很大的关系。 如果设法提高信噪比,就可以使误码

6、率减小。实际的通信链路并非是理想的,它 不可能使误码率下降到零。因此,为了保证数据传输的可靠性,在计算机网络传 输数据时,必须采用各种差错检测措施。目前在数据链路层广泛使用了循环冗余 检验CRC勺检错技术。3、应解决的主要问题(1) 选用哪种软件实现编程:MATLA具有程序结构控制、函数调用、数据结构、输入输出、面向对象等 程序语言特征,而且简单易学、编程效率高。MATLA提供了一个人机交互的数学系统环境,该系统的基本数据结构是矩阵,在生成矩阵对象时,不要求明确的 维数说明。与利用C语言作数值计算的程序设计相比,利用 MATLA可以节省大 量的编程时间。本次大作业采用数组模拟网络数据包结构,采

7、用MATLA操作简单,结果明了,故用MATLA程序语言实现CRC校验的程序设计。(2) 理想的循环冗余校验算法应具有以下特征:CRC!同的数据多次,每次得到的 CRCfi应该相同。这也是通信过程中通过 CRC校验数据在收发过程中是否出错的基本依据。CRC不同的数据得到的CRCS应该不等。(尽管通过估计伪造可能得到相同 的CRCfi,但要确保这种概率很小)对于32位的CRC来说,它能区分2A32的数据,即长度为2A32的两个数据, 只要有任何两位的值不同,它们分别经过 CRC后得到的CRCfi就不同。(3) 如何实现CRC算法过程:本次设计采用模2除法运算求余数,程序中可表示为将待传送数据与生成

8、多 项式逐位异或。因为待传送数据的位数不确定,一一编写容易出错且麻烦,不易 于修改数据,因此在程序中采用for循环语句来逐位求解最终得到余数。二、方案论证1、循环冗余检验的原理在发送端,先把数据划分为组,假定每组 k个比特。现假定待传送的数据 M=101001(k=6)。CRC运算就是在数据M的后面添加供差错检测用的n位冗余 码,然后构成一个帧发送出去,一共发送(k+n)位。在所要发送的数据后面增 加n位的冗余码,虽然增大了数据传输的开销,但却可以进行差错检测。当传输 可能出现差错时,付出这种代价往往是很值得的。这n位冗余码可用以下方达得出。用二进制的模2运算进行2An乘M的运算, 这相当于在

9、M后面添加n个0。得到的(k+n)位的数除以收发双方事先商定的 长度为(n+1)位的除数P,得到商是Q而余数是R(n位,比P少一位)。关于除数 P,在图2-1所示的例子中,M=101001即k=6)。假定除数P=1101(即 n=3)。经 模2除法运算后的结果是:商Q=110101这个商并没有什么用处),而余数R=001。 这个余数R就作为冗余码拼接在数据 M的后面发送出去。这种为了进行检错而添 加的冗余码常称为帧检验序列 FCS因此加上FCS后发送的帧是101001001(即 2八门*M+FCS)共有(k+n)位。110101 Q (商)P(除数)1101V101001000 2An*M(

10、被除数)11011110110101110000 而011010110000011001101001 R (余数),作为FCS图2-1说明循环冗余检验原理的例子在接收端把接受到的数据以帧为单位进行CRC检验:把收到的每一个帧都除以同样的除数P (模2运算),然后检查得到余数Ro如果在传输过程中无差错,那么经过 CRC佥验后得到的余数R肯定是0。但 如果出现误码,那么余数 R仍等于零的概率是非常非常小的。总之,在接收端对收到的每一帧经过 CRC检验后,有以下两种情况:(1)若得到的余数R等于0,则判定这个帧没有差错,就接受(accept )。(2)若余数R不等于0,则判定这个帧有差错(但无法确定

11、究竟是哪一位 或哪几位出现了差错),就丢弃。一种较方便的方法是用多项式来表示循环冗余检验过程。在上面的例子中,用多项式P(X)=XA3+XA2+1表示上面的除数P=1101(最高位对应于XA3,最低位对 应于XA0)。多项式P(X)称为生成多项式。现在广泛使用的生成多项式 P(X)有 以下几种:CRC-16=XA16+XA15+XA2+1CRC-CCITT=XA16+XA12+XA5+1CRC-32=XA32+XA26+XA23+XA22+XA16+XA12+XA11+XA10+XA8+XA7+XA5+XA4+XA 2+X+1在数据链路层,发送端帧检验序列FCS的生成和接收端的CRC检验都是用

12、硬 件完成的,处理很迅速,因此并不会延误数据的传输。如果在传送数据时不以帧为单位来传送,那么就无法加入冗余码以进行差错 检验。因此,如果要在数据链路层进行差错检验,就必须把数据划分为帧,每一 帧都加上冗余码,一帧接一帧地传送,然后在接收方逐帧进行差错检验。2、方案的选择及特点由于本次编程需要达到五点要求,因此进行逐一分析。在MATLAB,数组的表现方式很简单,故采用数组模拟网络数据包结构。要实现题目的五点要求,必须先理清循环冗余检验CRC算法的具体计算过程,以此为基础编写程序,再在初始算法程序上继续修改和添加来实现产生突变 等的情况。关于CRC算法过程,在阐述原理时已有大致讲到,一下是统一细致

13、的 分析。2.1 CRC编码规则CRC码是由两部分组成,前部分是信息码,就是需要校验的信息,后部分是 校验码,如果CRC码共长n个bit,信息码长k个bit,就称为(n,k)码。它的 编码规则是:(1)移位将原信息码(kbit)左移r位(k+r= n)(2)相除运用一个生成多项式g(x)(也可看成二进制数)用模2除上面的式子,得到的余数就是校验码。非常简单,要说明的:模2除就是在除的过程中用模2加,模2加实际上就 是我们熟悉的异或运算,就是加法不考虑进位,公式是:0+0=1+1=0,1+0=0+1=1即异则真,非异则假。由此得到定理:a+b+b=a也就是模2减和模2加直值表完全相同。有了加减法

14、就可以用来定义模 2除法,于是就可以用生成多项式g(x)生成CRC 校验码。2.2 CRC码的生成步骤第一步:在数据单元(k位)的末尾加上n个0。n是一个比预定除数的比 特位数(n+1 )少1的数。第二步:采用二进制除法将新的加长的数据单元(k+n位)除以除数。由此 除法产生的余数就是循环冗余码校验码。第三步:用从第二步得到的n个比特的CRC码替换数据单元末尾附加的n个0。如果余数位数小于n,最左的缺省位数为0。如果除法过程根本未产生余 数(也就是说,原始的数据单元本身就可以被除数整除)那么以 n个0作为CRC 码替换余数所在的位置。产生的比特模式正好能被除数整除。2.3 CRC校验过程展示假

15、设数据传输过程中需要发送15位的二进制信息g=101001110100001,这串二进制码可表示为代数多项式 g(x)=xA14+xA12+xA9+xA8+xA7+xA5+1,其中g 中第k位的值,对应g(x)中xAk的系数。将g(x)乘以xAm,既将g后加m个0, 然后除以m阶多项式h(x),得到的(m-1)阶余项r(x)对应的二进制码r就是CRC 编码。h(x)可以自由选择或者使用国际通行标准,一般按照h(x)的阶数m将CRC算法称为 CRC-m 比女口 CRC-32 CRC-64等。g(x)和h(x)的除运算,可以通过g和h做xor (异或)运算。比如将11001 与10101做xor运

16、算如图2-2 ::1! 1 i 0 !0;1丨I 1C 1 10111 0 i0 : 0 厂1*111图2-2 11001与10101做xor运算所得结果明白了 xor运算法则后,举一个例子使用 CRC-8算法求101001110100001的效验码如图 2-3 所示。CRC-8标准的 h(x) = xA8 + xA7 + xA6 + xA4 + xA2 + 1,既h是9位的二进制串111010101。§010100111010000100000000h111010101Si01001101110000100000000h1110101010111000100000100000000

17、h111010101g3©W10001000100000000h111010101§401100010000000000h111010101gs0010111010000000h111010101©1010000100000h111010101g?0100101110000h111010101gs011111011000h111010101r00010001100图2-3使用CRC-8算法求101001110100001的效验码经过迭代运算后,最终得到的r是10001100,这就是CRC效验码。通过示例,可以发现一些规律,依据这些规律调整算法:(1)每次迭代,根据

18、gk的首位决定b,b是与gk进行运算的二进制码。若 gk的首位是1,则b=h,如图2-4所示;若gk的首位是0,则b=0,或者跳过此 次迭代,如图2-5所示,上面的例子中就是碰到0后直接跳到后面的非零位。戰首位是1gk b = h11111011000111010101r00010001100图2-4 gk首位为1时的情况甌首位是0gk01111011000b = 00r01111011000图2-5 gk首位为0时的情况(2)每次迭代,gk的首位将会被移出,如图2-6所示,所以只需考虑第2 位后计算即可。这样就可以舍弃 h的首位,将b取h的后m位。比如CRC-8的h 是 111010101,

19、b 只需是 11010101。M1U011000b11010101r0010001100图2-6首位移出过程(3)每次迭代,受到影响的是gk的前m位,所以构建一个m位的寄存器S,此 寄存器储存gk的前m位。每次迭代计算前先将S的首位抛弃,将寄存器左移一 位,同时将g的后一位加入寄存器。若使用此种方法,计算步骤如图2-7所示:S 1L0100111g=10100111010000100000000s' 01001110b11010101S首位:1S 1L0011011g:10100111010000100000000s 00110111b11010101S首位:1S 1L1100010g

20、:10100111010000100000000s 11000100b11010101S首位:1S ()0010001g:10100111010000100000000s 00100010b0S首位:0S ()0100010g:10100111010000100000000s 01000100b0s首位:0图2-7使用寄存器计算的步骤三、过程论述了解到CRC勺具体计算过程后,可以开始构造基本程序架构。以for循环来 建立迭代运算,按照题目要求,可将程序分为四个部分进行编写。1、第一部分该部分利用数组模拟网络数据包结构, 编码实现CRC求余算法。程序流程图如图3-1所示图3-1第一部分程序流程图

21、2、第二部分该部分将得到的校验位附加到网络数据包相应的位置,并将添加了帧检验序列FCS的数据继续以模2除法进行CRC佥验。程序流程图如图3-2所示11武汉理工大学计算机网络课程论文12武汉理工大学计算机网络课程论文将生成余数序列的冗余位叠加到编码序列取冗余编码长度L、初始化余数数组R、令k=0fk=k+1开始构造与R等长度的除数数组PYN判断R的首 位是否为0R = P xor R恢复除数数组、去除被除数第一位NYk>L-length(CRC P)+1被除数所有位置0判断余数是否为1Y5输出原始序列显示码元传输发生错误(结束一)3-2第二部分程序流程图图13武汉理工大学计算机网络课程论文

22、3、第三部分该部分实现了根据数据包的长度,随机生成一个数据包产生突变的位置,并 对该位置的bit位模拟突变产生的过程。按照要求,先利用i=ceil(rand(1,1)*r)函数来随机抽取数组中的一个位,其中r为该数组的长度。再将该位的值进行取反再放回,生成一个某位发生突变 的新数组。重新利用CRC算法校验该数据包,并指出产生的结果。由于检验方法 与第二部分一致,因此程序流程图与第二部分的流程图(图3-2 )基本一致,此处不再绘制。4、第四部分该部分构造出了一个无法被CRC检错的实例,来验证CRC是否能够检出所有 的错误。通过查阅资料,我了解到了 CRC校验的检错性能。CRC校验码的检错能力与

23、其生成多项式密切相关。生成多项式的次数越高,其检错能力越强。若CRC校验 的生成多项式的最高次幕为r,则该CRC校验码的检错性能如下:(1)可检出所有奇数个错误;(2)可检出所有2bit个错误;(3)可检出所有长度<=r个bit的突发错误;(4) 对于长度=(叶1)个bit的突发错,其漏检率仅为:1/2A(r-1 );(5) 对于长度 > (叶1)个bit的突发错,其漏检率仅为:1/2Ar。事实证明CRC虽具有良好的检错能力,但不能够检出所有的错误。构造该无 法检错的实例的思路:由于生成多项式的次数越高,CRC勺检错能力越强,故我在程序中自主构建一个相对简单的生成多项式便于实例的构

24、造。回顾CRC佥验的方法,先将添加了冗余码FCS后发送的序列与求余过程中的生成多项式进行模2运算,再来判断求得的余数是否为 0?若为0则证明传输过程无差错;若不为 0 则证明传输过程中有差错。因此我进行大胆猜测:如若添加了冗余码FCS后发送的数据发生突变,但突 变后的数据恰巧也能被原生成多项式整除,即存在 ?同余?的错误,是不是CRC便无法检测出该已经发生了突变的错误数据?因此我在该部分构造了一个与原发送数据不同的错误序列,经验算,该错误序列也能被原定的生成多项式整除。再利用第二部分的检验方式,观察最终输出结果与预测是否一致, 最后加上一个 判断语句显示最终结果。由于检验方式与第二部分一致,故

25、对于检验的流程图不再绘制,对于判断结 果的程序流程图如图3-3所示。开始16武汉理工大学计算机网络课程论文#武汉理工大学计算机网络课程论文已知错误序列 error_sequenee编写原序列M四、结果分析将程序运行后可以得到所有的输出,现将输出分三个部分展示1、CRC算法的实现编程实现利用数组模拟网络数据包结构实现 CRC算法,并将得到的校验位附加到网络数据包相应的位置。程序中, M表示原始带传送数据;CRC_表示生成 多项式;ere_M表示经计算得到的添加了冗余码 FCS后的数据。若输出一组名为 original_sequenee 的数据则表明本次校验结果正确;若输出err=1则表明本次 校

26、验结果错误。令M=1O1110生成多项式P(X)=XA3+1。结果如图4-1所示。Command Window10 1110CRC_P =I0 01crc_M =10 1II001original.sequence =10 1110fii图4-1 CRC校验结果展示分析:从结果中看出crc_M的结果为101110011,即所得冗余码FCS=011 与验算结果一致。且经校验后输出了一组名为original_sequenee 的数据,该数 据与M致,说明校验结果正确。这也证实了此次编程实现了循环冗余校验CRC算法的要求。2、突变的产生和校验结果根据数据包的长度,编程实现随机生成一个数据包产生突变的

27、位置,并对该 位置的bit位模拟突变的产生;再重新利用CRC算法校验该数据包,并指出产生 的结果。程序中,i为一个随机数,代表着原冗余数组crc_M中的某一位的位序; 程序中还会输出该随机位的值;随后会得到该随机位的值发生突变后的突变数 组,此时用crc_M表示这个突变的数组;在进行校验后若输出一组名为 original_sequenee 的数据则表明本次校验结果正确;若输出err=1则表明本次 校验结果错误。突变及其校验结果如图4-2所示0 0 10Command Window=1crc_M =1 0 1 err =1A图4-2突变及其校验结果展示分析:由结果可知随机抽到的位序为 9,从图4

28、-1中看出原冗余数组的第九 位为1。在发生突变后的新数组crc_M=101110010,刚好与图4-1中原冗余数组 的第九位不同,其余位均相同。表明随机生成一个数据包产生突变的位置,并对 该位置的bit位模拟突变的产生的设计是正确的。再来看校验的结果是输出了err=1,这说明突变后的数组成功被 CRC校验检出错误,证实了 CRC检验算法的 检错能力。3、无法检错的实例在过程论证模块,对于程序的第四部分,已经表明了对于如何构造无法检错 实例的设计思路。在程序中,先编写一个与原冗余数组crc_M不同但位数相同,同时也能被生成多项式整除的数组 N;已知N并不是正确的传输数据,对 N进行 CRC算法检

29、验,若输出一组名为error_sequenee的数据则表明实际传输的数据 错误,CRC无法检错;若输出err=1则表明CRC算法依旧能够检出该错误。对于该实例的校验结果如图4-3所示。图4-3无法检错实例的校验结果展示分析:从结果中可能看出,N与原冗余数组crc_M是不同的。但最后经同一 生成多项式检验得到的结果并没有输出err=1的字眼,而是输出了一组名为error_sequenee的数组,很明显,这一组数据与最原始的待传送数据M不同,是错误数据,而检验结果未报错说明没有检验到该错误。最终的显示也是?实际传输数据错误,无法检错?,这也证实了构造无法检错实例的思路和该段程序的 编译都是正确的。

30、从而证明,CRC并不能够检出所有的错误。五、总结CR(校验码是基于将位串看作是系数为 0或1的多项式,一个k位的数据流 可以看作是关于x的从k-1阶到0阶的k-1次多项式的系数序列。采用此编码, 发送方和接收方必须事先商定一个生成多项式 G(x),其高位和低位必须是1。要 计算m位的帧M(x)的校验和,基本思想是将校验和加在帧的末尾,使这个带校 验和的帧的多项式能被 G(x)除尽。当接收方收到加有校验和的帧时,用G(x)去除它,如果有余数,则CRC校验错误,只有没有余数的校验才是正确的。二进制多项式的加减运算为模2加减运算,即两个码多项式相加时,对应系 数进行模2加减。所谓模2加减就是各位做不

31、带进位、借位的按位加减。这种加 减运算实际上是逻辑上的异或运算,即加法和减法等价。信息多项式和余数多项式可以合并成一个新的多项式(称为循环码的码多项 式),则该多项式是生成多项式的整数倍,即能被生成多项式整除。根据这一原 理,在发送端用信息码多项式除以生成多项式所得的余数多项式就是所要加的监 督位。将循环码的码多项式除以生成多项式,若能除尽,说明传输正确,否则说 明出错。CRC校验的关键是如何求出余数,此余数即为校验码( CRC校验码)。为了传输的正确性,在接收端要有一个CRC佥验器。它的功能和发生器一样, 当收到CRC冗余校验码后,做同样的模2除法(注意,这里采用的生成多项式一 定要与发送端

32、相同)。如果余数是 0,则说明传输正确;否则传输错误。CRC校验的检错能力极强,但并不能检出所有的错误。当冗余数组发生突变, 生成一个与原数组存在?同余?现象的新数组,CRC是无法检出此种错误的。21武汉理工大学计算机网络课程论文心得体会经历了近两个星期的查阅资料和理论分析,终于完成了循环冗余校验 CRC 算法编程和报告。经历了这次计算机网络的大作业设计, 大大的提高了我的操作 能力以及分析问题的能力,从中也学到了很多书面上关于CRC校验所没有搞清楚 的问题,也熟悉了应用MATLA这个软件来进行程序编程。通过这次大作业设计,我学到了很多有用的知识,并加强了自己掌握和理解 书本知识的能力,培养了

33、自己的实际动手能力与综合设计能力, 提高了自己的技 术素质,这对以后的学习和工作都是非常有益的。 在此次设计中,我先大量查阅 CRC算法的具体过程,逐一分析题目要求,通过动手实践操作,进一步学习和掌 握了有关CRC原理的知识,加深了对纠错技术的认识。在设计过程中我复习了相 关知识,还查阅了相当多的资料,这也在一定程度上拓宽了我的视野, 丰富了我 的知识。现如今我对CRC算法有了非常深刻的理解,这次的大作业设计不止是对 所学知识的一次重要巩固,更是从查阅资料、逐一分析题目要求、动手编写程序 到不断地修改和完善等方面锻炼了我的综合能力。总之,通过这次大作业设计我有了很多收获。摸索该如何使用MATL

34、A去实现题目要求的过程特别有趣,培养了我的设计思维;无论是对所学课本知识的运 用还是对软件系统的了解,我都有了很大程度的提高,提高了理论用于实践的能 力,掌握了更多专业相关的使用知识与技能。 在程序运行过程中曾遇到许多困难 和错误,最后通过不断查阅资料和向同学请教一一解决。当最终完成本次课程设 计时,我深刻体会到成功的喜悦和快乐。参考文献1 .谢希仁等计算机网络(第六版)M.北京:电子工业出版社,2013.6 ;2 .王虹等.通信系统原理M.北京:国防工业出版社,2014.8;3 .孙丽华.信息论与纠错编码M.电子工业出版社,2005.3.附件一:程序源代码M=1,0,1,1,1,0% M为待

35、传送数据L= length(M);% L为数据M的长度CRC_P = 1 0 0 1;% CR(生成多项式 P(X)=XA3+1n = zeros(1,3);%添加3位冗余码crc_M = M zeros(1,3);%初始化输出检错码序列M = M n; %在数据M后面添加供差错检测用的n位冗余码R = M; %初始化余数数组Rfor k = 1:L%利用循环语句计算求余数add_zeros = zeros(1,L-k);P = CRC_P add_zeros;if R(1) = 0P = zeros(1,le ngth(P);%设置冗余位参与模2运算%构造与R等长度的除数数组P%若R首位为0

36、则将除数所有位置0endR = bitxor(P,R); %将除数与被除数进行异或操作P = CRC_P; %将寄存器恢复为除数数组R(1) = ;%去除模2运算后得到的被除数的第1位 end%第二部分add_le n = len gth(crc_M) - le ngth(R);%生成余数序列的冗余位以叠加到编码序列R = zeros(1,add_len),R;%将所得余数序列添加冗余至与 crc_M等长度crc_M =crc_M + R %合成编码序列L = len gth(crc_M);%得到冗余编码的长度origi nal_seque nee = crc_M;% 初始化输出序列CRC_P = 1 0 0 1;% CR(生成多项式 P(X)=XA3+1R = crc_M; %初始化余数数组T = L-le ngth(CRC_P)+1; % T为长除法的循环周期for k = 1:T%利用循环语句计算求余数add_zeros = zeros(1,T-k);P = CRC_P add_zeros;if R(1) = 0P =

温馨提示

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

评论

0/150

提交评论