第十六章 错误检测和校正

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
wk.baidu.com
16.2 RS编码和纠错算法
对一个信息码符多项式 M(x) , RS 校验码生成多项式 的一般形式为
G ( x) ( x K 0 i )
i 0 K 1
其中,K0是偏移量,通常取K0 = 0或K0 = 1,而(nk)≥2t (t为要校正的错误符号数)。
16.2 RS编码和纠错算法
第十六章
错误检测和校正
16.1 CRC错误检测原理 16.2 RS编码和纠错算法 16.3 CIRC纠错技术 16.4 RSPC码
本章要点
由于激光盘存储器存在较大的误码率,因此,它采 用了功能强大的错误码检测和纠正措施。采用的具 体对策归纳起来有三种: (1) 错误检测:采用CRC(Cyclic Redundancy Code) 检测读出数据是否有错。 (2) 错误校正码: 采用里德-索洛蒙码 (Reed - Solomon Code),简称为RS码,进行纠错。 (3) 交 叉 交 插 里 德 - 索 洛 蒙 码 CIRC(Cross Interleaved Reed-Solomon Code), 在用RS编译码 前后,对数据进行交插处理和交叉处理。
[例] 构造GF(23)域的本原多项式假定为 P( x) x 3 x 1 α 定义为P(x) = 0的根,即 α 3 + α 和 α 3 = α +1 GF(23)中的元素可计算如下:

1=0
0 α α α α α
0 1 2 3 4
mod(α 3+α +1) = 0 mod(α 3+α +1) = α mod(α 3+α +1) = α mod(α 3+α +1) = α
x nk M ( x) R( x) Q( x)G( x)
16.1 CRC错误检测原理
x nk M ( x) R( x) 是能够被校验码生成多项式G(x)除
尽的,即它的余项为0。 因此检验位组成的多项式是xn-kM(x)除以G(x) 后的余数。
16.1 CRC错误检测原理
例:生成多项式: G( x) x16 x12 x 5 1 即G(x)=10001000000100001(B) =11021(H) 假定要写到盘上的信息代码为 M(x)=4D6F746F (H) x16M(x)= 4D6F746F0000(H)
3个(5,3)码块: B1 = (a2,a1,a0,P1,P0) B2 = (b2,b1,b0,Q1,Q0) B3 = (c2,c1,c0,R1,R0)
b2 b1 b0 Q1 Q0 c2 c1 c0 R1 R0
连续排列:
a2 a1 a0 P1 P0
交插排列:
连续错3个:
a 2 b2 c2 a1 b1 c1 a0 b0 c0 P1 Q1 R1 P0 Q 0 R0
就可知道这两个错误值。
16.3 CIRC纠错技术
光盘存储器和其它的存储器一样,经常遇到的 错误有两种。 随机错误:干扰产生 突发错误 :盘片本身 CIRC(Cross Interleaved Reed Solomon)纠错 码综合了交插、延时交插、交叉交插等技术,不仅 能纠随机错误,而且对纠突发错误特别有效。
得知错误的位置和错误值。
例如:如果计算得到s0 = α 2和s1 = α 5,可求得 α x = α 3和mx = α 2,说明m1出了错,它的错误值 是α 2。校正后的m1 = m1′+mx ,本例中m1=0。
16.2 RS编码和纠错算法
如果计算得到s0 = 0,而s1≠0,那基本可断定至少 有两个错误,当然出现两个以上的错误不一定都是 s0 = 0和s1≠0。如果出现两个错误,而又能设法找 到出错的位置,那么这两个错误也可以纠正。如已 知两个错误mx1和mx2的位置α x1和α x2,那么求解方 程组:
本原多项式的特性是
x
2 m 1
1 P( x)
得到的余式等于0。
16.2 RS编码和纠错算法
CD-ROM用来构造GF(28)域的是
P( x) x 8 x 4 x 3 x 2 1
而GF(28)域中的本原元素为
α = (0 0 0 0 0 0 1 0)
16.2 RS编码和纠错算法
16.2 RS编码和纠错算法
二、RS的编码算法
在 GF(2m) 域中,能纠正 t 个错误的符号 (n , k)RS 的含义如下: m 表示符号的大小,如m=8表示符号 由8位二进制数组成 n 表示码块长度 k 表示码块中的信息长度 K=n-k = 2t 表示校验码的符号数 t 表示能够纠正的错误数目
当x = α 和 α
2
时有方程组:
求解方程组就可得到校验符号:
16.2 RS编码和纠错算法
在读出时的校正子为
即判断s0和s1是否为0。
16.2 RS编码和纠错算法
[ 例 16.3] 在例 16.2 中,如果 K0 = 0 , t = 1 ,由式 (13-2)导出的RS校验码生成多项式就为:
G( x) ( x K0 i ) ( x 0 )(x 1 )
a 2 b2 c2 a1 b1 c1 a0 X P0 b2 b1 X X X Q1 R1 P0 Q 0 R0 R 1 R0
读出后重新排列: a 2 a1 a0 X
Q1 Q0 c2 c1 X
16.3 CIRC纠错技术
可以看到,对连续排列(5,3)码块 ,每个码块 中只能出现一个错误才能纠正。而交插记录后,读 出的3个连续错误经还原后可把它们分散到3个码块 中,每个码块可以纠正1个错误,总计可以纠正3个 连续的错误。 一般来说,如果有r个(n,k)码,排成r×n矩阵, 按列交插后存储或传送,读出或接收时恢复成原来 的排列,若(n,k)码能纠正t个错误,那么这样交插 后就可以纠正rt个突发错误。
16 15 2 16 2
计算CRC码时用的数据块是从扇区的开头到用户数据 区结束为止的数据字节,即字节0~2063共2064个字 节。在EDC中存放的CRC码的次序如下:
EDC: 字节号:
x24-x31
2064
x16-x23
2065
x8-x15
2066
x0-x7
2067
16.2 RS编码和纠错算法
可求得校验符号: Q1 = α 6 = 101 Q0 = α 4 = 110
16.2 RS编码和纠错算法
三、RS码的纠错算法
RS码的错误纠正过程分三步: (1)计算校正子(syndrome); (2)计算错误位置; (3)计算错误值。
16.2 RS编码和纠错算法
以例16.3为例介绍RS码的纠错算法。 校正子使用下面的方程组来计算:
一、GF(2m)域
RS(Reed-Solomon)码是在伽罗华域(Galois Field, GF)中运算的。
CD-ROM中的数据、地址、校验码等都可以看成是属 于GF(2m) = GF(28)中的元素或称符号。GF(28)表示 域中有256个元素,除0,1之外的254个元素由本原 多项式P(x)生成。
假定假定存入光盘的信息符号m3、m2、m1、m0和由此 产生的检验符号Q1、Q0,而读出的符号为m3′、m2′、 m1′、m0′、Q1′和Q0′。 如果计算得到的s0和s1不全为0,则说明有差错。
16.2 RS编码和纠错算法
如果只有一个错误,则问题比较简单。假设错误的 位置为α x,错误值为mx,则可通过求解下面的方程 组:
16.3 CIRC纠错技术
一、交插技术
对纠错来说,分散的错误比较容易得到纠正, 但出现一长串的错误时,就较麻烦。 在光盘上记录数据时,如果把本该连续存放的 数据错开放,那么当出现一片错误时,这些错误就 分散到各处数据中,错误就容易得到纠正,这种技 术就称为交插(interleaving)技术。
16.3 CIRC纠错技术
16.1 CRC错误检测原理
CD-ROM 扇区方式 01 中,有一个 4 字节共 32 位的EDC 字 域,它就是用来存放 CRC 码。不过, CD-ROM 采用的 CRC校验码生成多项式与软磁盘采用的生成多项式不 同,它是一个32阶的多项式:
G( x) ( x x x 1)(x x x 1)
16.1 CRC错误检测原理
模2多项式代数运算中定义的运算规则有:
1x 1x 0
i i
1x 1x
i
i
模2多项式的加减法
16.1 CRC错误检测原理
模2运算的多项式除法:
16.1 CRC错误检测原理
对于K位二进制串,假设其对应的多项式为M(x)。为 了检测该二进制串在存储或传输过程中是否出错, 需要增加一个(n-k)的二进制串作为校验码,形成如 下所示的二进制串:
GF(23)域元素
0 α α α α α α
0 1 2 3 4 5
二进制对代码
(000) (001) (010) (100) (011) (110) (111)
α
6
(101)
GF(23)域中元素与二进制代码对照表
16.2 RS编码和纠错算法
纠错编码运算过程中,加、减、乘和除的运算是在伽 罗华域中进行。现仍以GF(23)域中运算为例: 加法例:α 0+α 3 = 001+011 = 010 = α 1 减法例:与加法相同 乘法例:α 5· α 4 = α (5+4) mod7 = α 2 除法例:α 5/α 3 = α 2 α 3/α 5 = α -2 = α (-2+7) = α 5 取对数:log(α 5) = 5 这些运算的结果仍然在GF(23)域中。
K 1 i 0
当K0 = 1,t = 1,RS校验码生成多项式就为:
G( x) ( x K0 i ) ( x )(x 2 )
16.2 RS编码和纠错算法
m3x5+m2x4+m1x3+m0x2+Q1x+Q0 = (x - α )(x - α 2) Q ( x )
16.1 CRC错误检测原理
16.1 CRC错误检测原理
因此写到盘上的信息代码和CRC码是4D6F746F B994,
4D6F746F B994 信息代码 CRC码
从盘上把这块数据读出时,用同样的CRC码生成多项 式去除这块数据,相除后得到的两种可能结果是: ①余数为0,表示数据没有出现错误;②余数不为0, 表示数据有错。
[例16.2] 设在GF(23)域中的元素对应表如表16-01 所示。假设(6,4)RS码中的4个信息符号为m3、m2、 m1和m0,信息码符多项式为 M ( x) m3 x 3 m2 x 2 m1 x m0 并假设 RS 校验码的 2 个符号为 Q1 和 Q0 ,的剩余多项 式为
R( x) Q1 x Q0
0 1 2
= 1
mod(α 3+α +1) = α +1 mod(α 3+α +1) = α 2+α
α
α
5
6
mod(α 3+α +1) = α 2+α 1+1
mod(α 3+α +1) = α 2+1
α
α
7
8
mod(α 3+α +1) = α
mod(α 3+α +1) = α
0
1
……
16.2 RS编码和纠错算法
16.1 CRC错误检测原理
一个二进制数字串可以用一个多项式表示。如 二进制数字序列10101111,用多项式可以表示成:
M ( x) a 7 x 7 a 6 x 6 a 5 x 5 a 4 x 4 a 3 x 3 a 2 x 2 a1 x1 a 0 x 0
= x 7 x 5 x 3 x 2 x1 1 式中的xi表示代码的位置,或某个二进制数位的位 置,xi前面的系数ai表示二进制码的值,取值是0或 1。
16.1 CRC错误检测原理
使用一个校验码生成多项式 G(x) 去模 2 除代码多 项式xn-kM(x)
x
x
nk
M ( x) R( x) Q( x) G ( x) G ( x)
n k
M ( x) Q( x)G( x) R( x)
因为模2多项式的加法和减法运算结果相同,所以 又可把上式写成:
i 0 K 1
因此有:
m3x5+m2x4+m1x3+m0x2+Q1x+Q0 =
(x - α 0)(x -
α )Q(x) 得到方程组:
16.2 RS编码和纠错算法
求解方程组可以得到RS校验码的2个符号为Q1和Q0,
如果mi取下列值 m3 = α 0 = 001 m2 = α 6 = 101 m1 = α 3 = 011 m0 = α 2 = 100
相关文档
最新文档