前言
考研狗,读计组,读至CRC,惑之。 花了些查找资料和了解,先写个大概有时间再补齐。
基础知识
① 带余除法
f
(
x
)
=
p
(
x
)
q
(
x
)
+
r
(
x
)
,
??
deg
?
(
r
)
<
deg
?
(
p
)
f(x)=p(x)q(x)+r(x),~~ \deg(r)<\deg(p)
f(x)=p(x)q(x)+r(x),??deg(r)<deg(p)
② Galois域
G
F
(
2
)
:
(
Z
2
,
?
+
,
?
?
)
GF(2):(\mathbb Z_2,~+,~\cdot)
GF(2):(Z2?,?+,??)
操作过程概述
回顾整个过程: ① 有一个需要传输的二进制串,记为
D
D
D,它所对应的多项式为
d
(
x
)
d(x)
d(x)(在模2多项式环中),顺便记
deg
?
d
(
x
)
=
n
\deg d(x)=n
degd(x)=n ② 有一个事先决定好的生成多项式
p
(
x
)
p(x)
p(x),这个多项式对于发送方和接收方是已知的,记
deg
?
p
(
x
)
=
m
\deg p(x)=m
degp(x)=m ③ 将二进制串
D
D
D左移
m
m
m位,得到新的二进制串
D
′
D'
D′,对应的多项式为
f
(
x
)
=
d
(
x
)
?
x
m
f(x)=d(x)\cdot x^m
f(x)=d(x)?xm ④ 对
f
(
x
)
f(x)
f(x)关于模2除以生成多项式
p
(
x
)
p(x)
p(x),得到余数
r
(
x
)
r(x)
r(x),这里具体的商我们并不关心。 ⑤ 把
r
(
x
)
r(x)
r(x)对应的二进制串连接在串
D
D
D后面,得到
D
1
D_1
D1?,
D
1
:
=
D
R
 ̄
D_1:=\overline{DR}
D1?:=DR.这个
D
1
D_1
D1?正是信息
D
D
D对应的CRC码 ⑥ 当接收端接收到二进制串
D
′
D'
D′时,会将它与生成多项式在模2下进行除法,若所得的余数为0,则在很大概率下可以确定传输过程没有发生错误。
最后一步检验模2整除后为何余0
延用前面多项式的符号,我们有第③步的
f
(
x
)
=
d
(
x
)
?
x
m
(1)
f(x)=d(x)\cdot x^m\tag{1}
f(x)=d(x)?xm(1) 第④步的
f
(
x
)
=
p
(
x
)
q
(
x
)
+
r
(
x
)
(2)
f(x)=p(x)q(x)+r(x)\tag{2}
f(x)=p(x)q(x)+r(x)(2) 在第⑤步操作中,存在如下关系式:
d
1
(
x
)
=
d
(
x
)
?
x
m
+
r
(
x
)
(3)
d_1(x)=d(x)\cdot x^m+r(x)\tag{3}
d1?(x)=d(x)?xm+r(x)(3) 由(1)&(3),有
d
1
(
x
)
=
f
(
x
)
+
r
(
x
)
(4)
d_1(x)=f(x)+r(x)\tag{4}
d1?(x)=f(x)+r(x)(4) 因为该多项式环是GF(2),因此,加一个数等同于减一个数,故有
d
1
(
x
)
=
f
(
x
)
?
r
(
x
)
(5)
d_1(x)=f(x)-r(x)\tag{5}
d1?(x)=f(x)?r(x)(5) 联合(2),最终得到
d
1
(
x
)
=
p
(
x
)
q
(
x
)
(6)
d_1(x)=p(x)q(x)\tag{6}
d1?(x)=p(x)q(x)(6)
d
1
(
x
)
d_1(x)
d1?(x)不就正好对应我们接收端接收到的二进制串吗?由(6),我们知道余数为0
在只错一位的情况下,余数只与多项式结构有关
接下来我们讨论检错功能,这里只讨论传输过程中之多错一位的情形。先举个例子: 假设传输多项式为
M
(
x
)
=
x
3
+
1
M(x)=x^3+1
M(x)=x3+1,生成多项式为
G
(
x
)
=
x
3
+
x
+
1
G(x)=x^3+x+1
G(x)=x3+x+1,对应的二进制串就分别为1001和1011。用左移3位得到的1001000模2除以1011,可以得到余数110,将110连接到1001后面,得到
M
(
x
)
M(x)
M(x)对应的CRC码位1001110. 发送端发送的信号对应的多项式是
d
1
(
x
)
d_1(x)
d1?(x),设接收端接收到的信号对应的多项式为
d
2
(
x
)
d_2(x)
d2?(x),简单计算,有下表:
d_2(x)对应的二进制串 | 与生成多项式模2后的余数 |
---|
1001110 | 000 | 0001110 | 101 | 1101110 | 111 | 1011110 | 110 | 1000110 | 011 | 1001010 | 101 | 1001100 | 010 | 1001111 | 001 |
(听说这也是“循环”二字的由来) 我们自然而然的想问一个问题,在固定生成多项式下,只要传输的多项式最高项阶数相同,那么出错位对应的余数会不会改变? 答案是不会改变。延用前面符号,假设出错位在第
k
k
k位(
1
≤
k
≤
n
+
m
+
1
1\le k\le n+m+1
1≤k≤n+m+1),则
d
2
(
x
)
=
d
1
(
x
)
+
x
k
?
1
(7)
d_2(x)=d_1(x)+x^{k-1}\tag{7}
d2?(x)=d1?(x)+xk?1(7) 对
x
k
?
1
x^{k-1}
xk?1 进行带余除法
x
k
?
1
=
p
(
x
)
s
(
x
)
+
t
(
x
)
(8)
x^{k-1}=p(x)s(x)+t(x)\tag{8}
xk?1=p(x)s(x)+t(x)(8) 可以看到(8)对
d
(
x
)
d(x)
d(x) 是什么并不关心。
最后还剩一个我未解决的问题:在满足式
2
m
≥
n
+
m
+
1
2^m\ge n+m+1
2m≥n+m+1 的条件下,错一位所对应的余数是不是各不相同?好像是各不相同,但具体的推导我还没证出来,证出来再补坑。
|