基于多次查表的循环冗余校验算法.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文档。上传文档
查看更多
基于多次查表的循环冗余校验算法   摘要:循环冗余校验算法,编码简单且误判概率很低,在通信系统中得到了广泛的应用。在低成本设备(如单片机)的通信系统中,往往使用软件方法进行传输校验。该文使用多次查表的方法计算校验码,可以弥补低速设备在性能上的不足。   关键词:多次查表;查表;循环冗余校验;CRC;算法   中图分类号:TP393文献标识码:A文章编号:1009-3044(2010)18-5052-01      Multiple Look-up Table Based on the Cyclic Redundancy Check Algorithm   CONG Xue   (PLA 94860 Army, Nanjing 210049, China)   Abstract: Cyclic Redundancy Check is very simple and reliable, it has been widely used in the communication system. In the low-cost equipment (such as SCM) communication systems, it is often realized by software. A look-up multiple table method is introduced to improve performance.   Key words: CRC(Cyclic Redundancy Check); Algorithm      在通信领域中,为保证传输过程的正确性,需要对通信过程进行差错控制。   循环冗余校验 CRC(Cyclic Redundancy Check)编码简单且误判概率很低,在通信系统中得到了广泛的应用。   其根本原理是通过校验算法增加数据的冗余量,将校验码和数据一起发送到接受端。接受端对接受到的数据进行相同校验,再将得到的校验码和接收到的校验码比较,如果二者一致则认为传输正确。   1 传统CRC校验算法   CRC校验算法使用的是多项式除法。使用异或运算,不进位,不借位。   计算机使用软件方法实现CRC校验,传统算法是按位计算CRC。下面以CRC-4为例,介绍算法流程。CRC-4 的生成多项式为g(x)= x4 + x +1 ,即10011。待发送的数据 t(x)是一个8位二进制数据。首先在 t(x)的末尾添加4个0,t(x)就成了101110100000 。然后用g(x)去除 t(x),不用管商是多少,只需要求得余数即可。   算法流程见图1。   1100就是余数,也就CRC校验码。   传统CRC校验算法简单,容易实现,对任意长度生成多项式的g(x)都适用。在发送的数据不长的情况下可以使用。但是如果发送的数据块很长的话,这种方法就不太适合了。因为它一次只能处理一位数据,效率太低。   2 基于查表的CRC校验算法   为了提高处理效率,可以预先计算好n位被除数所对应的余数,校验时只需要查表即可。这样就可以一次处理n位数据了。   下面以查4位表为例,如图2,介绍查表法。   生成多项式仍然为10011。待发送数据仍然数据前4位1011查表得到余数1110,将余数1110与数据后4位1010异或得0100,再查表0100的余数是1100。因余数就是1100。   经过验证,查表法与传统CRC算法得到的校验码相同。   3 基于多次查表CRC校验算法   一个8位的CRC-16余数表(存储着256个余数)占用512个字节的空间,一个16位的CRC-16余数表将占用128KB的空间,而一个32位的余数表将占用8GB。这些空间对于低成本的设备而言是非常巨大的开销,所以一般来说我们最多查8位的余数表。   多项式除法有个非常简单的性质:   (P(X) XOR Q(X))的余数 == P(X)的余数XORQ(X)的余数   举个例子:   P(X)Q(X)=1010   P(X)的余数是0001Q(X)的余数是 1101   P(X) XOR Q(X)余数就是0001 XOR 1101 = 1100。   也就是说,可以针对8位数据的高4位和低4位各自建立一个4位的余数表,即可算出8位数据的余数。   根据上述性质,我们就可以把一个32位的表,变成4个8位的余数表。分别查4张表,以代替查一张32位的大表,节省了大量的空间。   查4张8位的余数表与查一张8位余数表的方法相比,查表的次数是相同的,但是可以有效解决异或运算时

文档评论(0)

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

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

版权声明书
用户编号:8073070133000003

1亿VIP精品文档

相关文档