CRC错误检测原理.docVIP

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

13.1 CRC错误检测原理 在纠错编码代数中,把以二进制数字表示的一个数据系列看成一个多项式。例如,二进制数字序用多项式可以表示成: = 表示代码的位置,或某个二进制数位的位置,前面的系数ai表示码的值。若ai是一位二进制代码,则取值是0或1。 在模2多项式代数运算中定义的运算规则有: 2多项式的加法和减法: 2运算来说,代码多项式的加法和减法运算所得的结果相同。所以在做代码多项式的减法时,可用做加法来代替做减法。 如果一个k位的二进制信息代码多项式为,再增加(n-k)位的校验码,那么增加(n-k)位之后,信息代码多项式在新的数据块,如图13-01所示。 13-01 信息代码结构 如果用一个校验码生成多项式去除代码多项式,得到的商假定为,余式为,则可写成 因为模2多项式的加法和减法运算结果相同,所以又可把上式写成: 是能够被校验码生成多项式除尽的,即它的余项为0。 CD盘中的q通道和软磁盘存储器中使用的CRC校验码生成多项式是 =100010000000100001(B) =11021(H) 假定要写到盘上的信息代码为 =4D6F746F (H) 由于增加了2个字节共16位的校验码,所以信息代码变成: 4D6F746F0000(H)。 CRC检验码计算如下: B994(H)就是CRC校验码。把信息代码写到盘上时,将原来的信息代码和CRC码一起写到盘上。在这个例子中,写到盘上的信息代码和CRC码是4D6F746F B994, 4D6F746F B994 CRC码 11021(H)除尽的。 CRC码生成多项式去除这块数据,相除后得到的两种可能结果是:①余数为0,表示读出没有出现错误;②余数不为0,表示读出有错。 CD-ROM中也采用了相同的CRC检错。CD-ROM扇区方式01中,有一个4字节共32位的EDC字域,它就是用来存放CRC码。不过,CD-ROM采用的CRC校验码生成多项式与软磁盘采用的生成多项式不同,它是一个32阶的多项式, CRC码时用的数据块是从扇区的开头到用户数据区结束为止的数据字节,即字节0~2063共2064个字节。在EDC中存放的CRC码的次序如下: EDC: x24x31 x16-x23 x8-x15 x0-x7 字节号: 2064 2065 2066 2067 用C语言实现CRC校验计算 ?xml:nmespce prefix = o ns =urn:schems-microsoft-com:office:office /Clcul tes CRC quickly using the tble-lookup method 作  者:董云 YUN DONG 工作单位:黄埔海关技术处工程师 通讯地址:广州市经济技术开发区志诚大道海关大楼 电话号码:020 邮政编码:510730 电子邮件: dy168@163.net 摘 要: 简述CRC算法原理,给出一种新颖快速的查表计算方法,并给出用C语言编写的算法源程序。关键词:CRC、多项式、查表法  在编写数据传输程序时,数据容错是一个非常重要的问题。循环冗余位校验(Cyclicl Redundncy Check英文简称CRC)是目前运用非常广泛的一种数据容错方法,在数据传输,数据压缩等领域运用极其广泛。CRC的实现分为硬件和软件两种方法,其中软件实现的关键在于计算速度。如果单纯模拟硬件实现方法,则计算速度较慢。笔者在编制一个数据通讯软件中,运用了一种新颖的查表法计算CRC,速度很快,效果极佳。   首先介绍其原理,如果每次参与CRC计算的信息为一个字节,该信息字节加到16位的累加器中去时,只有累加器的高8位或低8位与信息字节相互作用(异或),相互作用(异或)的结果记为组合值,那么累加器中的新值等于组合值加上(按模2异或)累加器中未改变的那一半即为新的CRC值。   组合值只有256种可能,因此可利用硬件模拟算法先算好它们的CRC值预先填入一张表中,该表的每一单元对应相对值的CRC。这样就可以通过查表法来计算CRC值,以便大大提高CRC运算的速度。下面给出用C语言编制的计算程序。   首先将CRC生成多项式及CRC值表定义为一个头文件CRC.H:   #define CRC_CCITT 0x1021 //CCITT多项式 #define REV_CCITT 0x8408 //反转CCITT多项式 #define CRC16 0x8005 //CRC16多项式 #define REV_CRC16 0x 001 //反转CRC16多项式 unsigned short crc_tble[256]; //CRC值表

文档评论(0)

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

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

1亿VIP精品文档

相关文档