crc 校验错误_数据校验码 - 3.CRC校验

015f39fbd83b5892c54107b9da8f3721.png

目前在磁介质存储器与主机之间的信息传输、计算机之间的通信以及网络通信等采用串行传送方式的领域中,广泛采用循环冗余校验码(Cyclic Redundancy Check, CRC)。循环冗余校验码是在 n 位有效信息位后拼接 k 位校验位构成的,它通过除法运算来建立有效信息和校验位之间的约定关系,是一种具有很强检错纠错能力的校验码。

一、基本原理

2519e3ab74ce928a5872bc0b7a5689bf.png

在传送过程中,发送方可以把M(x) - R(x)作为编好的校验码进行传送,接收方接收到编码后仍用原约定的多项式G(x)去除,如果能够整除,即余数为 0,则表示该校验码传送正确;如果不能够整除,即余数不为 0,则表示该校验码传送有误

789545c6404d50e95db4c201f7348d4e.png

二、模2运算

根据式(2-16)可知,M(x) - R(x)是减法操作,可能需要涉及借位运算,难以用简单的拼装方法实现编码。为了回避借位,CRC码采用了模2运算。

所谓模2运算是指以按位模2加为基础的二进制四则运算。模2运算不考虑进位和借位

1. 加减运算

加减运算本质上是异或运算,加不进位,减不退位。

2. 乘法运算

模2乘法就是在做乘法时按模2加的规则求部分积之和计算时不进位

9a7a3dc153e205c78d79246a20d73872.png

3. 除法运算

模2除就是在做除法时按模2减求部分余数,计算时不借位。若部分余数(首次为被除数)最高位为1,则上商为1;若部分余数最高位为0,则上商为0。每求一位商后,使部分余数减少一位,即去掉部分余数的最高位,再继续求下一位商。当部分余数的位数小于除数位数时,该余数就是最后的余数。

8d8b2b4dcc9035d076092138dcdd1bc9.png

三、CRC编码方法

89fa1c61a7496204787bd29a352f8d2b.png

69d18b2418e0f7f27078eccfa404be33.png

在CRC码中,由 k 位有效信息位和 r 位校验信息构成的 k + r 位编码,称为(k+r, k)码。在上面的CRC中,由于 k = 4, k + r = 7,故称(7, 4)码。

四、CRC的检错与纠错

1. 检错

将接收到的CRC码用原约定的生成多项式G(x)做模2除,若得到的余数为0,表示接收到的信息中没有错误;若得到的余数不为0,则表示接收到的信息中某一位出错

85e6d744bf86da0dfe7a9fccb5f2ca01.png

因为不同位出错对应的余数不同,所以根据余数值就可以确定出错的位置

c6e4eb0e23255b000c1671e6efe780b7.png

2. 纠错

以上图 G(x) = 1011 时出错为例。把余数001补0再除以 G(x) = 1011,得到的第二次余数为010,再补0除以1011,得到的余数为100,按此继续下去,可以发现得到的余数依次为011、110、111、101,最后又回到001,即各次余数会按表中的顺序反复循环,这就是循环码的来历。

6427ecac69017ef1ae6629818d029649.png

根据循环码的这一特点,当接收到的CRC码与 G(x) 做模2除得到的余数不为0时,可以一边对余数补0继续做模2除,同时使被检测的CRC码循环左移,当出现余数101时,原来出错的位已移到A7的位置,通过异或门把它纠错(取反)后在下次移位时送回A1。将编码继续循环左移,移满一个循环后,就可得到一个纠错后的CRC码。

d51b6c388426de36c30f3d993a4c2631.png

当位数增加时,循环冗余校验能有效地降低硬件成本,故得到广泛应用。

五、CRC编码的硬件实现

关于CRC的硬件实现,推荐以下文章:

白羽:CRC编码​zhuanlan.zhihu.com
385df20ac5d54ab2256229c2df2a5493.png
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值