1.crc简介
循环冗余校验(CRC)是数字网络和存储设备中通常使用的错误检测码,用于检测原始数据的意外变化,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,并且在检查值不匹配的情况下,可以采取针对数据损坏的纠正措施,以保证数据传输的正确性和完整性。
2.crc基本工作原理
1)发送端将发送数据比特序列当作一个多项式f(x),用双方约定好的多项式g(x)去除,得到余数多项式r(x)。最终将f(x)*x^k+r(x)发送给接收端。
2)接收端用g(x)去除接收到的f’(x),计算得到余数多项式r’(x)。
3)若计算得到的多项式r’(x)与接收到的r(x)相同,表示传输无差错,否则出错,通知发送端重传,直至正确为止。
原理图:
3.crc检错能力
- 能够检查出全部离散的1位错。
- 能够检查出全部离散的2位错。
- 能够检查出全部奇数位错。
- 能够检查出全部长度小于或等于K位的突发错。
- 能以(1-(1-2)^(k-1)的概率检查出长度位K+1位的突发错。