2.5 CRC校验及其实现

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)编码不同数位出错对应的余数

 

 

原文地址:https://www.cnblogs.com/fate-/p/12664725.html