crc算法详解与c源码

crc算法详解与c源码

ID:12004622

大小:163.97 KB

页数:10页

时间:2018-07-15

crc算法详解与c源码_第1页
crc算法详解与c源码_第2页
crc算法详解与c源码_第3页
crc算法详解与c源码_第4页
crc算法详解与c源码_第5页
资源描述:

《crc算法详解与c源码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、CRC计算方法详解与c源码循环冗余码(CRC,cyclicredundancycode)校验技术是一种十分有效的数据传输错误检测技术,能检验一位错、双位错、所有的奇数错、所有长度小于或等于所用的生成多项式长度的错误,在通信系统、控制系统中得到广泛运用。计算CRC校验码和验证报文是否有误,总是由计算机实时地完成的,手工计算仅仅用于说明CRC校验码的生成原理。由于实时性的要求,必须使用快捷的计算机计算方法。CRC校验原理在k位信息码后再拼接r位的校验码,报文编码长度为n位,因此,这种编码又叫(n,k)码。对于一个给定的(n,k)码,可以证明,存在一个最高次幂为n=k+r的多项式G(x)

2、,存在且仅存在一个R次多项式G(x),使得。其中:m(x)为k次信息多项式,r(x)为r-1次校验多项式,g(x)称为生成多项式:。发送方通过指定的G(x)产生r位的CRC校验码,接收方则通过该G(x)来验证收到的报文码的CRC校验码是否为0。假设发送信息用信息多项式C(X)表示,将C(x)左移r位,则可表示成C(x)*2r,这样C(x)的右边就会空出r位校验码的位置,做除法(模2除),得到的余数R就是校验码。发送的CRC编码是,验证接收到的报文编码是否至正确,依然是做模2除:。CRC的生成多项式生成多项式的选取应满足以下条件:a、生成多项式的最高位和最低位必须为1。b、当被传送信

3、息(CRC码)任何一位发生错误时,被生成多项式做模2除后,应该使余数不为0。c、不同位发生错误时,应该使余数不同。d、对余数继续做模2除,应使余数循环。主要的生成多项式G(x)有以下几种:名称生成多项式数值式简记式标准引用CRC-16x16+x15+x2+10x1’80058005IBMSDLCCRC-CCITTx16+x12+x5+10X1’10210x1021ISOHDLC,ITUX.25,V.34/V.41/V.42,PPP-FCSCRC-32注*0X1’04C11DB70x04C11DB7ZIP,RAR,IEEE802LAN/FDDI,IEEE1394,PPP-FCS注*x

4、32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1下表中的生成多项式G(x)也常见的:名称生成多项式数值式简记式标准引用CRC-4x4+x+10x1’30x3ITUG.704CRC-8x8+x5+x4+10x1’310x31CRC-8x8+x2+x1+10x1’070x07CRC-8x8+x6+x4+x3+x2+x10x1’5E0x5ECRC-12x12+x11+x3+x2+x+10x1’80F0x80FCRC-32c注**0X1’1EDC6F410x1EDC6F41SCTP注**x32+x28+x27+x26+x25+x23+x22

5、+x20+x19+x18+x14+x13+x11+x10+x9+x8+x6+1CRC码计算方法详解10/10CRC校验码的手工计算CRC的手工计算,就是按普通的二进制竖式除法的格式做模2除法。由于我们需要的是余数,不必关心商的大小,所以,可以不用写出商,而直接进行一次次移位和模2减。具体计算过程是:a.在信息码后面加上r(即CRC校验码的位数)个0,作为被除数,让除数(即生成多项式)的最高位1,对齐被除数的最高位1。b.做模二减:如果被除数最高位为1,减生成多项式,余数作为中间余数,否则,不减。c.生成多项式右移1位。e.反复进行步骤b,c,直到余数与a中添加的r个0在位置上对齐,

6、该余数就是最终余数,即信息码的CRC校验码。16位CRC校验码的计算机本节使用的生成多项式为G16=x16+x12+x5+1=0x11021。在计算机程序中,因为16位rcr校验码的生成多项式总宽度为17,而最高位为1,故多占用一个8位寄存器。然而,在模2除的过程中,多项式的最高位1总是与被除数(或中间余数)的最左边的1对齐,而相异或的结果总是为0。这样,在程序中可以把生成多项式的最高位1去掉,而只包含后面的16位,例如,将0x11021简化为0x1021,称做生成多项式简化式。用左移位模2除求余数时,在异或前,检查被除数(或中间余数)的最高位否为1,如果为1,被除数(或中间余数)

7、左移1位,与生成多项式简化式异或;如果为0,被除数(或中间余数)左移1位,不做其它操作。总的移位次数为“被除数的位数-除数(生成多项式简化式)的位数”。1模拟手工移位计算相设n个字节信息数据Bn-1,Bn-2,...,B1,B0,用生成多项式CRC16-CCITT计算crc。1.设置一个32bit的变量,例如crc0。Bn-1,Bn-2,Bn-3,Bn-4依次放入crc0。如果n<4,后面的字节为0。2.Crc0左移1位,检查移出位,如果为1,crc与生成多项式简化式

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。