CRC 生成多项式

来源:互联网 发布:途虎轮胎靠谱吗 知乎 编辑:程序博客网 时间:2024/05/17 01:17

是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。

在发送方,利用生成多项式对信息多项式做模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码。

0 0
原创粉丝点击