2-循环冗余码校验及VHDL实现new.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2-循环冗余码校验及VHDL实现new.doc

循环冗余码校验及VHDL实现 摘 要 在数据通信系统中,为确保数据传输的正确,通常都有差错检测控制机制。循环冗余校验CRC(Cyclic Redundancy Check) 由于编码简单得到了广泛应用。介绍了CRC算法原理,详细分析了CRC 码的检错原理,推导了CRC 的编码与译码过程,并给出了实现CRC的逻辑原理图和VHDL设计及仿真结果。 关键词 检错 循环冗余校验 VHDL设计 1 数据通信中的差错检测 数据通信是依照一定的协议,利用数据传输技术在两个终端之间传递数据信息的一 种通信方式数据通信中传递的信息均以二进制数据形式来表现。传递 2 CRC算法的基本原理 2.1 二元素伽罗瓦域多项式 CRC算法的是以二元素伽罗瓦(Galois)域多项式GF(2)为数学基础的。GF(2)多项式中只有一个变量X,其系数只取0或1,例如: 即: 在GF(2)多项式中,用模2算术运算执行对应项上系数的加减,由于模2加减时不考虑进位和借位,因此模2算术运算的加和减是一样的效果,且都等同于逻辑异或运算。例如两个GF(2)多项式: , 则为 即: GF(2)多项式乘法和除法与一般多项式乘法和除法基本一样,只是在各项相加或相减时按模2算术进行(称为模2乘法或模2除法),例如: 设,如前所述,则为 即,余数是。余数的阶数(即最高次数)总是小于除数的阶数。 若将和的系数提取出来进行计算(模2除法),则 从上列算式可知,相对于被除数和中间结果,除数是逐位左移的。如果固定除数,逐位右移(低位移向高位)被除数和中间结果,并与除数进行对应的异或运算,也可以得到正确结果。 2.2 CRC算法基本原理 CRC算法,是将长度为位的数据对应一个有项的GF(2)多项式的系数,例如对于8位数据,它对应的多项式为 发送端和接收端都约定一个阶数为的GF(2)多项式,称为生成多项式,例如 在数据多项式的后面加上个0得到多项式,显然有。用除以将得到一个阶数等于或小于的余数多项式,的系数则为CRC校验码。由上述数据不难得出: CRC校验码为:1001 显然,可以被除尽。称为发送多项式。 发送端将位数据与位校验码拼接在一起形成发送码(也就是发送多项式的系数)发送出去。接收端用收到的全部位码除以生成多项式的系数,若余数为0则认为传输过程没有发生差错。而在接收端从收到的位码中去掉尾部的位码,就可以得到原始数据。这就是CRC算法的基本原理。 2.3 实现CRC算法的逻辑原理图 从前述可知,模2除法可以用移位和异或运算完成。上例可由图1所示的逻辑图完成。图1对应生成多项式。 图1 实现CRC算法的逻辑原理图 在图1中,D3~D0表示移位寄存器,其中D0是最低有效位(LSB)。数据由din端串行输入,高位在前。在时钟脉冲作用下,每输入一位数据,移位寄存器就左移一位(低位移向高位)。不难验证,当输入数据为的系数时,在全部数据输入完毕后,移位寄存器D3~D0的内容为“1001”,此即为余数多项式的系数;当输入数据为的系数“111001101001”时,在全部数据输入完毕后,移位寄存器D3~D0的内容为“0000”,表示余数为0。也就是说,图1逻辑图既可求出的CRC校验码,也可对进行CRC差错检测(以上都设移位寄存器的初始状态为“0000”)。 只要改变移位寄存器的位数(等于生成多项式的阶数)以及异或门的数量和位置,图1所示的逻辑图就能适用于不同的生成多项式。 3 生成多项式的选择 很明显,不同的生成多项式,其检错能力是不同的。这里仅从实用的角度作些分析。首先生成多项式应该包含项,即常数项1,否则校验码的最低有效位(LSB)将始终为0,很多差错将检测不出。 如果发送码在传输过程中产生了差错,则接收端收到的消息可以表示为,显然,的最高次数不大于的最高次数。若不能被生成多项式除尽,则该差错就可以被检测出。考虑以下几种情况: (1)1位差错,即 ,。只要中至少含有2位1,就不能被除尽。这是因为相当于将左移k位,设的结果为一任意多项式,则相当于将多个不同的的左移相加。如果至少有两位1,它的多个不同的左移相加结果至少有两位1,这显然与只有一位1不等。 (2)奇数位差错,即含有奇数个1。只要含有因式,就不能被除尽。这是因为,由(1)的分析可知,的多个不同的左移相加结果,其1的位数依然是偶数。 (3)突发性差错,即, ,;也就是有连续个1。显然只要包含常数项1,非全1,且阶数大于等于。从这里可看出,的阶数越大检错能力就越强。 (4)2位差错,即,其中,。由于,相当于将左移了位,因此只需分析能否被除尽。由(3)的分析可知,若,则就不能被除尽。

文档评论(0)

xinshengwencai + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5311233133000002

1亿VIP精品文档

相关文档