差错检测方法 循环冗余校验 (crc , cyclic redundancy check)

8
差差差差差差 差差差差差差 (CRC Cyclic Redundancy check) 差差 差差差差差差差差 M 差差差差差 差差差差差差差差差 差差差差差差差差 差 ,一一一 差差差差差 R 差差差差差差 C 差差 C 差差差差差差差差 差差差差差 ( 差差差差 “ 1” 差“ 0” 差差差差差差差 ) 差差差差差 差差差差差差差差差差差差差差差差差差差 C 差差差差 差差差差差差差差差差差差差 差差差差差 差差差差差 C 差差差差差差差 M

Upload: maia-watts

Post on 01-Jan-2016

141 views

Category:

Documents


22 download

DESCRIPTION

差错检测方法 循环冗余校验 (CRC , Cyclic Redundancy check). 将要传送的信息分成码组 M ,然后按某一种约定的规律对每一个信息码组附加一些校验的码元 R ,形成新的码组 C ,使得 C 中的码元之间具有一定的相关性 ( 即码组中“ 1” 和“ 0” 的出现彼此相关 ) ,再传输到接收端; 接收端根据这种相关性或规律性来校验码组 C 是否正确,还可对出错码组的错定位加以相应的纠正,最后将码组 C 还原成信息码组 M 。. 循环冗余校验 (CRC , Cyclic Redundancy check). 码多项式及其算术运算. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 差错检测方法 循环冗余校验 (CRC , Cyclic Redundancy check)

差错检测方法 循环冗余校验 (CRC , Cyclic Redundancy check)

将要传送的信息分成码组 M ,然后按某一种约定的规律对每一个信息码组附加一些校验的码元 R ,形成新的码组 C ,使得 C 中的码元之间具有一定的相关性 (

即码组中“ 1” 和“ 0” 的出现彼此相关 ) ,再传输到接收端;

接收端根据这种相关性或规律性来校验码组 C 是否正确,还可对出错码组的错定位加以相应的纠正,最后将码组 C 还原成信息码组 M 。

Page 2: 差错检测方法 循环冗余校验 (CRC , Cyclic Redundancy check)

循环冗余校验 (CRC , Cyclic Redundancy check)

• 码多项式及其算术运算

假设循环码为 C= Cn-1 Cn-2…. C2 C1 C0 长度为 n

例 1 : C = 1100101 C(x) =1x6 + 1x5 +0x4

+0x3 + 1x2 +0 x + 1 = x6 + x5 +x2 + 1

码多项式的算术运算:模 2 加、模 2 减、模 2 乘、模2 除

M 的码多项式(称为 n-1 次多项式)C(x) = Cn-1 xn-1 + Cn-2xn-2 + …. C2 x2 +C1 x + C0

Page 3: 差错检测方法 循环冗余校验 (CRC , Cyclic Redundancy check)

差错检测 循环冗余校验码 (CRC , Cyclic Redundancy check)

• 编码 对于一个码长为 n ,信息码元为 k位的循环码 (n , k), 其构成形式为:

1 2 k nk+1 k+2

n 位

每个码多项式的前面 k 项与待编码的信息多项式相同后面的 r=n-k 项与校验码元序列对应的校验多项式相同

信息码元

k位

校验码元

r 位

Page 4: 差错检测方法 循环冗余校验 (CRC , Cyclic Redundancy check)

差错检测. 循环冗余校验码 (CRC , Cyclic Redundancy check)

m(x) = mk-1 xk-1+ mk-2xk-2+ …. +m1 x+m0

xn-k·m(x) + r(x) = q(x)·g(x)

r(x) = rn-k-1 xn-k-1+ rn-k-2xn-k-2+ …. +r1 x+r0

g(x) 是 (n-k) 次多项式q(x) 是商式r(x) 是余式且次数不高于 n-k-1

设要编码的 k 位信息元为: m = (mk-1,mk-2,….m1,m0)

xn-k·m(x) = mk-1 xn-1+ mk-2xn-2+ …. +m1 xn-k+1+m0 xn-k = q(x)·g(x) + r(x)

mk-1xn-1+mk-2xn-2+ ...+m1xn-k+1+m0xn-k+rn-k-1xn-k-1+rn-k-2xn-k-2+... +r1 x+r0

( mk-1, mk-2, ….m1, m0, rn-k-1, rn-k-2, …. ,r1, r0 )

不加改变的 k 个信息位 (n-k) 个监督位

Page 5: 差错检测方法 循环冗余校验 (CRC , Cyclic Redundancy check)

差错检测 循环冗余校验码 (CRC , Cyclic Redundancy check)

• 例

m(x) = x9 + x8 + x6 + x4 + x3 + x + 1, k = 10

(3) 1101011011.0000 10011 商数: 1100001010 余数: 1110 r(x) = x3 + x2 + x + 0

所需的循环编码 C(x) 为C(x) = xn·m(x) + r(x) = 1101011011 , 1110

设编码的信息码元为 1101011011

(1) 假设 P(x) = x4 + x + 1 系数形成的位串为 10011 n=4 ——>n+K =14 余数多项式 r(x) 的最高幂次为 r =n-1=3 余数取 4 位

(2) x4·m(x) = 1101011011 , 0000

Page 6: 差错检测方法 循环冗余校验 (CRC , Cyclic Redundancy check)

差错检测循环冗余校验码 (CRC , Cyclic Redundancy check)

• 多项式除法

1 1 0 1 0 1 1 0 1 1,0 0 0 01 0 0 1 1

1 0 0 1 1

1 0 0 1 11 0 0 1 1

1 0 1 1 01 0 0 1 1

1 0 1 0 01 0 0 1 1

1 1 1 0

1 1 0 0 0 0 1 0 1 0 商数

被除数 m(x)

余数 r(x)

除数 P(x)

1101011011.0000 10011

模 2 加 = 模 2 减模 2 乘模 2 除 = 乘的可逆运算

Page 7: 差错检测方法 循环冗余校验 (CRC , Cyclic Redundancy check)

差错检测循环冗余校验码 (CRC , Cyclic Redundancy check)

在接收端本来应该收到:c(x) = xr·m(x) + r(x) = Q(x)·P(x)用协商好的生成多项式 P(x) 去除 c(x), 从余数来判断是否出

Page 8: 差错检测方法 循环冗余校验 (CRC , Cyclic Redundancy check)

广泛使用的生成多项式 P(x) 有:

CRC-12=x12+x11+x3+x2+x+1

CRC-16=x16+x15+x2+1

CRC-CCITT=x16+x12+x5+1