CRC校验

Posted Luella_G

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CRC校验相关的知识,希望对你有一定的参考价值。

一、概念

CRC即为循环冗余校验码,是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。

二、算法

(1)先选择一个用于在接收端进行进行校验时,对接收的帧进行除法运算的除数。

(2)看所选定的除数的二进制位数,假设为k位,然后在要发送的的数据帧(m位)后加上k-1位“0”,然后用该帧以“模2除法”方式除以除数,所得的余数就是该帧的CRC校验码。注意:余数的位数一定是比除数少一位,不够的在前面补“0”。

(3)把校验码附在原数据帧的末尾,构建成一个新帧发送到接收端,最后在接收端再把这个新帧以“模2除法”的方式除以之前选择的除数。若没有余数,则表明在传输过程中没有出错;否则,则在传输过程中出现了差错。

三、实例

假设选择的CRC生成多项式为G(X) = X4 + X3 + 1,求二进制序列10110011的CRC校验码。

(1)将多项式G(X)变为二进制序列 11001

(2)生成的二进制的位数为5位,则在原数据帧后加4个0,得到新帧 101100110000 ,然后把这个数以“模2除法”方式除以多项式,得到的余数为 0100。

 

(3)把得到的CRC校验码附在原始帧末尾,得到新帧 101100110100,再把此帧发送到接收端。

(4)接收端接收到的帧以“模2除法”的方式除以之前选择的除数11001,若没有余数则没有差错,否则出现差错。

以上是关于CRC校验的主要内容,如果未能解决你的问题,请参考以下文章

CRC32的计算方法

modbus协议CRC校验计算方式?该怎么计算?

CRC校验为啥能够保证数据的准确性(出错率很低很低)

CRC校验码

关于循环冗余码问题

几种校验和