CRC 生成多项式

2019-04-14 21:01发布

是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。 在发送方,利用生成多项式对信息多项式做模2除生成校验码。在接受方利用生成多项式对收到的编码多项式做模2除检测和确定错误位置。 应满足以下条件: a、生成多项式的最高位和最低位必须为1。 b、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做模2除后应该使余数不为0。 c、不同位发生错误时,应该使余数不同。 d、对余数继续做模2除,应使余数循环。 将这些要求反映为数学关系是比较复杂的。但可以从有关资料查到常用的对应于不同码制的生成多项式如图9所示: N K 码距d G(x)多项式 G(x) 7 4 3 x3+x+1 1011 7 4 3 x3+x2+1 1101 7 3 4 x4+x3+x2+1 11101 7 3 4 x4+x2+x+1 10111 15 11 3 x4+x+1 10011 15 7 5 x8+x7+x6+x4+1 111010001 31 26 3 x5+x2+1 100101 31 21 5 x10+x9+x8+x6+x5+x3+1 11101101001 63 57 3 x6+x+1 1000011 63 51 5 x12+x10+x5+x4+x2+1 1010000110101 1041 1024   x16+x15+x2+1 11000000000000101 图9 常用的生成多项式 例如第一项可以写成:x3+x2+x+1  有幂次就为1 没有幂次就为0 首尾一定要是1   所以  1 0 1 1   一道计算题: 已知信息位为1100,生成多项式G(x) = x3+x+1,求CRC码。
M(x) = 1100 M(x)*x3 = 1100000 G(x) = 1011
M(x)*x3 / G(x) = 1110 + 010 /1011 R(x) = 010
CRC码为: M(x)*x 3+R(x)=1100000+010 =1100010
其原理是:CRC码一般在k位信息位之后拼接r位校验位生成。编码步骤如下:
(1)将待编码的k位信息表示成多项式 M(x)。
(2)将 M(x)左移 r 位,得到 M(x)*xr 。
(3)用r+1位的生成多项式G(x)去除M(x)*xr 得到余数R(x)。
(4)将M(x)*xr 与R(x)作模2加,得到CRC码。

原文地址:http://blog.sina.com.cn/s/blog_64c236b10100of4a.html