循环冗余校验(CRC校验)

时间:2025-02-14 09:10:00

   【说明】“模2除法”

模2加法运算为:

1+1=0,0+1=1,0+0=0,无进位,也无借位;

模2减法运算为:

1-1=0,0-1=1,1-0=1,0-0=0,也无进位,无借位。

相当于二进制中的逻辑异或运算。也就是比较后,两者对应位相同则结果为“0”,不同则结果为“1”。

3、CRC校验原理

    具体来说,CRC校验原理就是以下几个步骤:

   (1)先选择一个用于在接收端进行校验时,对接收的帧进行除法运算的除数(是二进制比较特串,通常是以多

项方式表示,所以CRC又称多项式编码方法,这个多项式也称之为“生成多项式”)。

   (2)看所选定的除数二进制位数(假设为k位),然后在要发送的数据帧(假设为m位)后面加上k-1位“0”,

然后以这个加了k-1个“0“的新帧(一共是m+k-1位)以“模2除法”方式除以上面这个除数,所得到的余数(也是二

进制的比特串)就是该帧的CRC校验码,也称之为FCS(帧校验序列)。但要注意的是,余数的位数一定要是比除数位

数只能少一位,哪怕前面位是0,甚至是全为0,也都不能省略

   (3)再把这个校验码附加在原数据帧(就是m位的帧,注意不是在后面形成的m+k-1位的帧)后面,构建一个新

帧发送到接收端;最后在接收端再把这个新帧以“模2除法”方式除以前面选择的除数,如果没有余数,则表明该帧在

传输过程中没出错,否则出现了差错。

4、生成步骤

1、将X的最高次幂为R的生成多项式G(X)转换成对应的R+1位二进制数。
2、将信息码左移R位,相当于对应的信息多项式C(X)*2R
3、用生成多项式(二进制数)对信息码做除,得到R位的余数(注意:这里的二进制做除法得到的余数其实是模2除 法得到的余数,并 不等于其对应十进制数做除法得到的余数)。
4、将余数拼到信息码左移后空出的位置,得到完整的CRC码。

5、CRC校验码的计算