1、CRC校验的基本原理

  *增加冗余码(校验位)

 

   *生成多项式G(x)

收发双方约定的一个(r+1)位二进制数,发送方利用G(x)对信息多项式做模2除运算,生成校验码。接收方利用G(x)对收到的编码多项式做模2除运算检测差错及错误定位。

  *G(x)应满足的条件

  A、最高位和最低为必须为1

  B、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做除后应该使余数不为0;

  C、不同位发生错误时,模2除运算后余数不同

  D、对不为0余数继续进行模2除运算应使余数循环。

 

 

 

2、模2除运算

  *模2运算规则

    1)加/减运算(异或运算,加不进位,减不借位)

      0±0=0,0±1=1,1±0=1,1±1=0

    2)模二除法

      按模2减,求部分余数,不借位

    3)上商原则

      a.部分余数首位为1时,商为1,减除数

      b.部分余数首位为0时,商为0,减0;

      c.当部分余数的位数小于除数的位数时,该余数即为最后余数。

 

 

3、CRC编码方法

1)根据待检验信息的长度k,按照k+r≤2的r次方-1,确定校验位r的位数

如对4位信息1100进行CRC编码,根据4+r≤2的r次方-1,得r最小为3

2)根据r和生成多项式得选择原则,选择位数为r+1得生成多项式G(X)=1011

3)进行下列变化

 

 即:将待校验得二进制信息Q(X)逻辑左移r位,得到Q(X)\’

4)对Q(X)\’按模2运算法则除G(X),求CRC编码中的r位检验信息

 

 5)用得到的余数替换Q(X)\’的最后r位即可得到CRC编码

 

 4、CRC的检错与纠错

接收方利用G(x)对收到的编码多项式做模2除运算

 

 

 

 

 

 (7,4)编码不同数位出错对应的余数

 

 

 

 

 

 

 

 

 

 

 

版权声明:本文为fate-原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/fate-/archive/2004/01/13/12664725.html