循环冗余检错码CRC

2019-04-13 22:00发布


模2运算模2加以及模2减等同于异或运算,即相同得0,相异得1
模2乘法模2除法样例如下

循环冗余检错码CRC
  1. 任何一个k位的帧看成为一个k-1次的多项式M(x):1011001 看成 x^6+x^4+x^3+1(k项k-1阶多项式)
  2. 设定一个多项式编码生成多项式G(x),G(x)为r阶,G(x)任意,但r
  3. 计算x^rM(x)/G(x) = Q(x)+R(x),其中Q(x)为商、R(x)为余数
  4. 这样(x^rM(x)-R(x))一定能被G(x)整除,即余数为0,否则说明出现错误
样例:
  • 帧:1101011011
  • 除数:10011(也就是G(x))
  • 传输帧:11010110111110(帧数据后面先添加4个0,然后再加上余数1110)
具体过程:11010110110000/10011得余数1110 ,11010110110000-1110 = 11010110111110,所以编码后得CRC码为:11010110111110当这个码字达到接收方时,如CRC码在接收端能被10011整除则说明接收正确,如果不能被整除,则被检测到已出错

生成多项式G(x)的国际标准