用查表法计算CRC码的CRC校验软件设计报告.docVIP

用查表法计算CRC码的CRC校验软件设计报告.doc

  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码的CRC校验软件设计报告

用查表法计算CRC码的C程序设计,生成多项式为CRC32 通信07-04班、0905070427、KKK;指导老师:杨振宇 一、设计目标 1)了解CRC循环冗余校验码CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。利用CRC进行检错的过程可简单描述为:在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的r位监督码(CRC码),附在原始信息后边,构成一个新的二进制码序列数共k+r位,然后发送出去。在接收端,根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。这个规则,在差错控制理论中称为“生成多项式”。 1110 ________ 1001/1111000 1001 ^ ---- 1100 第一次XOR后得到011,加入下一位0。最高位的0可以消掉了,这样最高位是1,所以下个商是1 1001 ^ ---- 1010 第二次XOR后得到0101,加入下一位0。最高位的0可以消掉了,这样最高位是1,所以下个商是1 1001 ^ ---- 0110 第三次XOR后得到0011,加入下一位0。最高位的0可以消掉了,这样最高位是0,所以下个商是0 0000 ^ ---- 110 - 最后一次XOR后得到0110,最高位的0可以消掉了,得到余数为110 可见,除法(XOR)的目的是逐步消掉最高位的1或0. 生成项(就是除数)的最高位实际上在除法的每次 XOR 时都要消掉,所以最高位可不做参考,余下位才是最重要的. 所以编程实现时寄存器的位数比生成项位数少一位. “直接计算法”就是直接模拟上面的除法的过程,来得到余数即CRC,过程如下: 我们假设待测数据是1101 0110 11,生成项是10011,假设有一个4 bits的寄存器,通过反复的移位和进行CRC的除法,最终该寄存器中的值就是我们所要求的余数。 依据这个模型,我们得到了一个最最简单的算法: 把register中的值置0. 把原始的数据后添加w个0. While (还有剩余没有处理的数据) Begin 把register中的值左移一位,读入一个新的数据并置于register最低位的位置。 If (如果上一步的左移操作中的移出的一位是1) register = register XOR Poly. End 3.更高效的CRC计算方法—查表法 上面的“直接计算法”很直观,却非常的低效。为了加快它的速度,我们使它一次能处理大于4 bit的数据。一次能处理一个字节的数据的话,那就方便多了。 我们想要实现的32 bit的CRC校验。我们还是假设有和原来一样的一个4 bit的register,但它的每一位是一个8 bit的字节。 根据同样的原理我们可以得到如下的算法: While (还有剩余没有处理的数据) Begin 检查register头字节,并取得它的值 求不同偏移处多项式的XOR register左移一个字节,最右处存入新读入的一个字节 把register的值 和 多项式的XOR结果 进行XOR运算 End 可是为什么要这样作呢? 同样我们还是以一个简单的例子说明问题: 为了简单起见,我们假设一次只移出4个比特!而不是8个比特。 生成多项式为: 1 0101 1100,即宽度W=8,即CRC8,这样寄存器为8位 待测数据是1011 0100 1101 按正常的算法做: 将1011 0100放入寄存器中,然后开始计算CRC。 先将高4位移出寄存器: 当前register中的值: 0100 1101 4 bit应该被移出的值: 1011 生成多项式为: 1010 1110 0 第一步: Top Register (top指移出的数据) ---- -------- 1011 0100 1101 待测数 1010 1110 0 + (CRC XOR) POLY ------------- 0001 1010 1101 第一次X

文档评论(0)

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

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

1亿VIP精品文档

相关文档