0904C10课程的设计汇报.docVIP

  1. 1、本文档共10页,可阅读全部内容。
  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文档。上传文档
查看更多
0904C10课程的设计汇报

通信网络设计课程设计 题号:C10 设计日20120916 第  PAGE 10 页 共  NUMPAGES 10 页 用查表法计算CRC码的C程序设计,生成多项式为CRC-CCITT 指导老师:王国才(旺才) 一、设计目标 1)了解CRC循环冗余校验码的功能及计算原理; 2)掌握用查表法计算CRC校验码的原理及过程; 3) 能用C语言编程实现查表法计算CRC校验码的过程 3)了解C语言在通信网络中的编程实现方式及功能; 二、设计原理和方法 1.什么是CRC? CRC即 HYPERLINK /view/575295.htm \t _blank 循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。 利用CRC进行检错的过程可简单描述为:在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的r位监督码(CRC码),附在原始信息后边,构成一个新的二进制码序列数共k+r位,然后发送出去。在接收端,根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。这个规则,在差错控制理论中称为“生成多项式”。 2.CRC的计算过程(直接计算法) 计算CRC的过程,就是用一个特殊的“除法”,来得到余数,这个余数就是CRC。 它不是真正的算术上的除法, 过程和算术除法过程一样,只是加减运算变成了XOR(异或)运算.举例说明:被除数1111000, 除数1001, 以二进制模拟这个计算过程: 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的数据。一次能处理一个字节的数据的话,那就方便多了。 我们想要实现的16 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位 待测数据

文档评论(0)

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

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

1亿VIP精品文档

相关文档