|
光盤、磁盤和磁帶一類的數(shù)據(jù)記錄媒體一樣,由于盤的制作材料的性能、盤制造生產(chǎn)技術(shù)水平的限制、驅(qū)動器的性能以及使用不當(dāng)?shù)戎T多原因,從盤上讀出的數(shù)據(jù)不可能完全正確。據(jù)有關(guān)廠家的測試和統(tǒng)計,一片未使用過的只讀光盤,某原始誤碼率約為3×10-4;沾有指紋的盤的誤碼率約為6×10-4;有傷痕的盤的誤碼率約為5×10-3。針對這種情況,激光盤存儲器采用了功能強大的錯誤碼檢測和糾正措施。采用的具體對策歸納起來有三種: (1) 錯誤檢測:采用CRC(Cyclic Redundancy Code)檢測讀出數(shù)據(jù)是否有錯。 (2) 錯誤校正碼: 采用里德-索洛蒙碼(Reed-Solomon Code),簡稱為RS碼,進行糾錯。RS碼被認為是性能很好的糾錯碼。 (3) 交叉交插里德-索洛蒙碼CIRC(Cross Interleaved Reed-Solomon Code), 這個碼的含義可理解為在用RS編譯碼前后,對數(shù)據(jù)進行交插處理和交叉處理。 對這些碼的理論分析和計算有許多專著作了詳盡的深入論述,對不需要開發(fā)糾錯技術(shù)的讀者僅需要了解錯誤檢測和校正的一些基本概念即可。
13.1 CRC錯誤檢測原理
在糾錯編碼代數(shù)中,把以二進制數(shù)字表示的一個數(shù)據(jù)系列看成一個多項式。例如,二進制數(shù)字序列10101111,用多項式可以表示成: M(x) = a7x7 + a6x6 + a5x5 + a4x4 + a3x3 + a2x2 + a1x1 + a0x0 = x7 + x6 + x5 + x4 + x3 + x2 + x1 + 1 式中的xi表示代碼的位置,或某個二進制數(shù)位的位置,xi前面的系數(shù)ai表示碼的值。若ai是一位二進制代碼,則取值是0或1。M(x)稱為信息代碼多項式。 在模2多項式代數(shù)運算中定義的運算規(guī)則有: 1xi + 1xi = 0 -1xi = 1xi 例如,模2多項式的加法和減法:  從這兩個例子中可以看到,對于模2運算來說,代碼多項式的加法和減法運算所得的結(jié)果相同。所以在做代碼多項式的減法時,可用做加法來代替做減法。 代碼多項式的除法可按長除法做。例如: 
如果一個k位的二進制信息代碼多項式為 M(x),再增加(n-k)位的校驗碼,那么增加(n-k)位之后,信息代碼多項式在新的數(shù)據(jù)塊中就表示成 xn-kM(x) ,如圖13-01所示。
 圖13-01 信息代碼結(jié)構(gòu)
如果用一個校驗碼生成多項式 G(x) 去除代碼多項式 xn-kM(x),得到的商假定為 Q(x) ,余式為 R(x) ,則可寫成  xn-kM(x) = Q(x)G(x) + R(x) 因為模2多項式的加法和減法運算結(jié)果相同,所以又可把上式寫成: xn-kM(x) + R(x) = Q(x)G(x) G(x) 稱為校驗碼生成多項式。從該式中可以看到,代表新的代碼多項式 xn-kM(x) + R(x) 是能夠被校驗碼生成多項式 G(x) 除盡的,即它的余項為0。 例如,CD盤中的q通道和軟磁盤存儲器中使用的CRC校驗碼生成多項式是 G(x) = x16 + x12 + x5 + 1 若用二進制表示,則為 G(x) = 100010000000100001(B) = 11021(H) 假定要寫到盤上的信息代碼 M(x) 為 M(x) = 4D6F746F (H) 由于增加了2個字節(jié)共16位的校驗碼,所以信息代碼變成 x16M(x): 4D6F746F0000(H)。 CRC檢驗碼計算如下:

兩數(shù)相除的結(jié)果,其商可不必關(guān)心,其余數(shù)為B994(H)就是CRC校驗碼。把信息代碼寫到盤上時,將原來的信息代碼和CRC碼一起寫到盤上。在這個例子中,寫到盤上的信息代碼和CRC碼是4D6F746FB994,
這個碼是能被11021(H)除盡的。 從盤上把這塊數(shù)據(jù)讀出時,用同樣的CRC碼生成多項式去除這塊數(shù)據(jù),相除后得到的兩種可能結(jié)果是: ?、儆鄶?shù)為0,表示讀出沒有出現(xiàn)錯誤; ?、谟鄶?shù)不為0,表示讀出有錯。 CD-ROM中也采用了相同的CRC檢錯。CD-ROM扇區(qū)方式01中,有一個4字節(jié)共32位的EDC字域,它就是用來存放CRC碼。不過,CD-ROM采用的CRC校驗碼生成多項式與軟磁盤采用的生成多項式不同,它是一個32階的多項式, P(x) = (x16 + x15 + x2 + 1)(x16 + x2 + x + 1) 計算CRC碼時用的數(shù)據(jù)塊是從扇區(qū)的開頭到用戶數(shù)據(jù)區(qū)結(jié)束為止的數(shù)據(jù)字節(jié),即字節(jié)0~2063共2064個字節(jié)。在EDC中存放的CRC碼的次序如下:
|
EDC: |
x24-x31 |
x16-x23 |
x8-x15 |
x0-x7 |
|
字節(jié)號: |
2064 |
2065 |
2066 |
2067 |
13.2 RS編碼和糾錯算法
13.2.1. GF(2m)域
RS(Reed-Solomon)碼在伽羅華域(Galois Field,GF)中運算的,因此在介紹RS碼之前先簡要介紹一下伽羅華域。 CD-ROM中的數(shù)據(jù)、地址、校驗碼等都可以看成是屬于GF(2m) = GF(28)中的元素或稱符號。GF(28)表示域中有256個元素,除0,1之外的254個元素由本原多項式P(x)生成。本原多項式P(x)的特性是 ,得到的余式等于0。CD-ROM用來構(gòu)造GF(28) 域的P(x)是 P(x) = x8 + x4 +x3 + x2 + 1 (13-1) 而GF(28)域中的本原元素為 α = (0 0 0 0 0 0 1 0) 下面以一個較簡單例子說明域的構(gòu)造。 [例13.1] 構(gòu)造GF(23)域的本原多項式P(x)假定為 P(x) = x3 + x + 1 α定義為P(x) = 0的根,即 α3+α+1 = 0 和 α3 = α+1 GF(23)中的元素可計算如下:
|
0 |
mod(α3+α+1) = 0 |
|
α0 |
mod(α3+α+1) = α0 = 1 |
|
α1 |
mod(α3+α+1) = α1 |
|
α2 |
mod(α3+α+1) = α2 |
|
α3 |
mod(α3+α+1) = α+1 |
|
α4 |
mod(α3+α+1) = α2+α |
|
α5 |
mod(α3+α+1) = α2+α1+1 |
|
α6 |
mod(α3+α+1) = α2+1 |
|
α7 |
mod(α3+α+1) = α0 |
|
α8 |
mod(α3+α+1) = α1 |
|
…… |
|
用二進制數(shù)表示域元素得到表13-01所示的對照表
表13-01 GF(23)域中與二進制代碼對照表,P(x) =
|
GF(23)域元素 |
二進制對代碼 |
|
0 |
(000) |
|
α0 |
(001) |
|
α1 |
(010) |
|
α2 |
(100) |
|
α3 |
(011) |
|
α4 |
(110) |
|
α5 |
(111) |
|
α6 |
(101) |
這樣一來就建立了GF(23)域中的元素與3位二進制數(shù)之間的一一對應(yīng)關(guān)系。用同樣的方法可建立GF(28)域中的256個元素與8位二進制數(shù)之間的一一對應(yīng)關(guān)系。在糾錯編碼運算過程中,加、減、乘和除的運算是在伽羅華域中進行?,F(xiàn)仍以GF(23)域中運算為例: 加法例:α0+α3 = 001+011 = 010 = α1 減法例:與加法相同 乘法例:α5·α4 = α(5+4) mod7 = α2 除法例:α5/α3 = α2 α3/α5 = α-2 = α(-2+7) = α5 取對數(shù):log(α5) = 5 這些運算的結(jié)果仍然在GF(23)域中。
13.2.2 RS的編碼算法
RS的編碼就是計算信息碼符多項式M(x)除以校驗碼生成多項式之后的余數(shù)。 在介紹之前需要說明一些符號。在GF(2m)域中,符號(n,k)RS的含義如下: m 表示符號的大小,如m = 8表示符號由8位二進制數(shù)組成 n 表示碼塊長度 k 表示碼塊中的信息長度 K=n-k = 2t 表示校驗碼的符號數(shù) t 表示能夠糾正的錯誤數(shù)目
例如,(28,24)RS碼表示碼塊長度共28個符號,其中信息代碼的長度為24,檢驗碼有4個檢驗符號。在這個由28個符號組成的碼塊中,可以糾正在這個碼塊中出現(xiàn)的2個分散的或者2個連續(xù)的符號錯誤,但不能糾正3個或者3個以上的符號錯誤。 對一個信息碼符多項式M(x),RS校驗碼生成多項式的一般形式為 (13-2) 式中,m0是偏移量,通常取K0 = 0或K0= 1,而(n-k)≥2t (t為要校正的錯誤符號數(shù))。 下面用兩個例子來說明RS碼的編碼原理。 [例13.2] 設(shè)在GF(23)域中的元素對應(yīng)表如表13-01所示。假設(shè)(6,4)RS碼中的4個信息符號為,信息碼符多項式M(x)為 M(x) = m3x3 + m2x2 + m1x + m0 (13-3) 并假設(shè)RS校驗碼的2個符號為Q1和Q0, 的剩余多項式R(x)為 R(x) = Q1(x) + Q0 這個多項式的階次比G(x)的階次少一階。 如果K0 = 1,t = 1,由式(13-2)導(dǎo)出的RS校驗碼生成多項式就為 = (x-α)(x-α2) (13-4) 根據(jù)多項式的運算,由式(13-3)和式(13-4)可以得到 m3x5+m2x4+m1x3+m0x2+Q1x+Q0 = (x-α)(x-α2)Q(x) 當(dāng)用x = α和x = α2代入上式時,得到下面的方程組,  經(jīng)過整理可以得到用矩陣表示的(6,4)RS碼的校驗方程:  求解方程組就可得到校驗符號:  在讀出時的校正子可按下式計算:  [例13.3] 在例13.2中,如果K0 = 0,t = 1,由式(13-2)導(dǎo)出的RS校驗碼生成多項式就為 = (x-α0)(x-α1) (13-5) 根據(jù)多項式的運算,由(13-3)和(13-5)可以得到下面的方程組:  方程中的αi也可看成符號的位置,此處i = 0,1,…,5。 求解方程組可以得到RS校驗碼的2個符號為Q1和Q0, (13-6) 假定mi為下列值:
|
信息符號 |
m3 = α0 = 001 m2 = α6 = 101 m1 = α3 = 011 m0 = α2 = 100 |
|
校驗符號 |
Q1 = α6 = 101 Q0 = α4 = 110 |
|
校正子 |
s0 = 0 s1 = 0 |
代入(13-6)式可求得校驗符號: Q1 = α6 = 101 Q0 = α4 = 110
13.2.3 RS碼的糾錯算法
RS碼的錯誤糾正過程分三步: (1)計算校正子(syndrome),(2)計算錯誤位置,(3)計算錯誤值?,F(xiàn)以例13.3為例介紹RS碼的糾錯算法。 校正子使用下面的方程組來計算:  為簡單起見,假定存入光盤的信息符號m3、m2、m1、m0和由此產(chǎn)生的檢驗符號Q1、Q0均為0,讀出的符號為m3′、m2′、m1′、m0′、Q1′和Q0′。 如果計算得到的s0和s1不全為0,則說明有差錯,但不知道有多少個錯,也不知道錯在什么位置和錯誤值。如果只有一個錯誤,則問題比較簡單。假設(shè)錯誤的位置為αx,錯誤值為mx,那么可通過求解下面的方程組:  得知錯誤的位置和錯誤值。 如果計算得到s0 = α2和s1 = α5,可求得αx= α3和mx = α2,說明m1出了錯,它的錯誤值是α2。校正后的m1= m1′+mx ,本例中m1=0。 如果計算得到s0 = 0,而s1≠0,那基本可斷定至少有兩個錯誤,當(dāng)然出現(xiàn)兩個以上的錯誤不一定都是s0 = 0和s1≠0。如果出現(xiàn)兩個錯誤,而又能設(shè)法找到出錯的位置,那么這兩個錯誤也可以糾正。如已知兩個錯誤mx1和mx2的位置αx1和αx2,那么求解方程組:  就可知道這兩個錯誤值。 CD-ROM中的錯誤校正編碼CIRC和里德-索洛蒙乘積碼(Reed Solomon Product-like Code,RSPC)就是采用上述方法導(dǎo)出的。
13.3 CIRC糾錯技術(shù)
光盤存儲器和其它的存儲器一樣,經(jīng)常遇到的錯誤有兩種。一種是由于隨機干擾造成的錯誤,這種錯誤稱隨機錯誤。它的特點是隨機的、孤立的,干擾過后再讀一次光盤,錯誤就可能消失。另一種錯誤是連續(xù)多位出錯,或連續(xù)多個符號出錯,如盤片的劃傷、沾污或盤本身的缺陷都可能出現(xiàn)這種錯誤,一錯就錯一大片。這種錯誤稱為突發(fā)錯誤。CIRC(Cross Interleaved Reed Solomon)糾錯碼綜合了交插、延時交插、交叉交插等技術(shù),不僅能糾隨機錯誤,而且對糾突發(fā)錯誤特別有效。
13.3.1 交插技術(shù)
對糾錯來說,分散的錯誤比較容易得到糾正,但出現(xiàn)一長串的錯誤時,就較麻煩。正如我們讀書看報,如果文中在個別地方出錯,根據(jù)前后文就容易判斷是什么錯。如果連續(xù)錯好多字,就很難判斷該處寫的是什么。 例如,用X表示出現(xiàn)的錯字,一種錯誤形式為“獨在異鄉(xiāng)XXX,每逢佳節(jié)倍思親”,這是連續(xù)出現(xiàn)的錯誤,另一種錯誤形式為“獨在異鄉(xiāng)X異客,每X佳節(jié)倍思X”,這是分散出現(xiàn)的錯誤。這兩種錯誤形式相比,同樣是3個錯誤,但人們更容易更正后一種形式的錯誤,更正之后為“獨在異鄉(xiāng)為異客,每逢佳節(jié)倍思親”。 這個道理很簡單,把這種思想用在數(shù)字記錄系統(tǒng)中對突發(fā)錯誤的更正非常有效。在光盤上記錄數(shù)據(jù)時,如果把本該連續(xù)存放的數(shù)據(jù)錯開放,那么當(dāng)出現(xiàn)一片錯誤時,這些錯誤就分散到各處,錯誤就容易得到糾正,這種技術(shù)就稱為交插(interleaving)技術(shù)。例如, 3個(5,3)碼塊: B1 = (a2,a1,a0,P1,P0) B2 = (b2,b1,b0,Q1,Q0) B3 = (c2,c1,c0,R1,R0)
|
連續(xù)排列: |
a2 a1 a0 P1P0 |
b2 b1 b0 Q1Q0 |
c2 c1 c0 R1R0 |
排成3行: a2 a1 a0 P1 P0 b2 b1 b0 Q1 Q0 c2 c1 c0 R1 R0
|
交插排列: |
a2 |
b2 |
c2 |
a1 |
b1 |
c1 |
a0 |
b0 |
c0 |
P1 |
Q1 |
R1 |
P0 |
Q0 |
R0 |
|
連續(xù)錯3個: |
a2 |
b2 |
c2 |
a1 |
b1 |
c1 |
a0 |
X |
X |
X |
Q1 |
R1 |
P0 |
Q0 |
R0 |
|
讀出后重新排列: |
a2 |
a1 |
a0 |
X |
P0 |
b2 |
b1 |
X |
Q1 |
Q0 |
c2 |
c1 |
X |
R1 |
R0 |
從這個例子中可以看到,對連續(xù)排列,每個碼塊中只能出現(xiàn)一個錯誤才能糾正。而交插記錄后,讀出的3個連續(xù)錯誤經(jīng)還原后可把它們分散到3個碼塊中,每個碼塊可以糾正1個錯誤,總計可以糾正3個連續(xù)的錯誤。 一般來說,如果有r個(n,k)碼,排成r×n矩陣,按列交插后存儲或傳送,讀出或接收時恢復(fù)成原來的排列,若(n,k)碼能糾正t個錯誤,那么這樣交插后就可以糾正rt個突發(fā)錯誤。
13.3.2 交叉交插技術(shù)
交叉交插(cross-interleaving)編碼是交插的一種變型。在實際應(yīng)用中,也是一種重要的技術(shù)。現(xiàn)仍以簡單的例子說明這種技術(shù)思想。 (1) 用(5,3)碼編碼器C2生成的4個碼塊為: B1=(a2 a1 a0 P1 P0) B2=(b2 b1 b0 Q1 Q0) B3=(c2 c1 c0 R1 R0) B4=(d2 d1 d0 S1 S0) (2) 交插后再用(6,4)碼編碼器C1生成5個碼塊為: a2 b2 c2 d2 T1 T0 a1 b1 c1 d1 U1 U0 a0 b0 c0 d0 V1 V0 P1 Q1 R1 S1 W1 W0 P0 Q0 R0 S0 X1 X0 (3) 再交插,交插的碼塊數(shù)可以是2、3、4或5。以交插2個碼塊為例: a2 a1 b2 b1 c2 c1 d2 d1 T1 U1 T0 U0 a0 P1 b0 Q1 c0 R1 d0 S1 … (4) 最后一個碼塊不配對,可以和下一個碼塊配對。 這種編碼技術(shù)用了兩個編碼器C2和C1。C2對原碼塊進行編碼得到(5,3)碼塊,交插后生成由4個符號組成的碼塊,碼塊中的符號是交叉存放的,然后再用(6,4)編碼器C1去編碼。 有關(guān)CIRC詳細的實現(xiàn)方法請參看文獻[7]。 CIRC首先應(yīng)用在激光唱盤系統(tǒng)中。音頻信號的采樣率為44.1 kHz,而每次采樣有兩個16比特的樣本,一個來自左聲道,一個來自右聲道,每個樣本用兩個GF(28)域中的符號表示,因此每次采樣共有4個符號。 為了糾正可能出現(xiàn)的錯誤,每6次采樣共24個符號構(gòu)成1幀,稱為F1幀(F1-Frame)。用一個稱為C2的編碼器對這24個符號產(chǎn)生4個Q校驗符號: Q0,Q1,Q2和Q3。24個聲音數(shù)據(jù)加上4個Q校驗符號共28個符號,用稱為C1編碼器對這28個符號產(chǎn)生4個P校驗符號: P0,P1,P2和P3。28個符號加上4個P校驗符號共32個符號構(gòu)成的幀稱為F2幀(F2-Frame)。F2幀加上1個字節(jié)(即1個符號)的子碼共33個符號構(gòu)成的幀稱為F3幀(F3-Frame)。 在實際應(yīng)用中可對前面介紹的交插技術(shù)略加修改,執(zhí)行交插時不是交插包含有k個校驗符的碼塊,而是交插一個連續(xù)系列中的碼符,這種交插技術(shù)稱為延時交插。延時交插之后還可用交叉技術(shù),稱為延時交叉交插技術(shù)。CD存儲器中的CIRC編碼器采用了4×F1幀的延時交插方案。1幀延時交插可糾正連續(xù)4×F1幀的突發(fā)錯誤。4×F2幀的延時交插可糾正連續(xù)16×F1幀突發(fā)錯誤,相當(dāng)于大約14×F3幀的突發(fā)錯誤。1×F3幀經(jīng)過EFM編碼后產(chǎn)生588位通道位。1位通道位的長度折合成0.277μm的光道長度。14×F3幀突發(fā)錯誤長度相當(dāng)于 ?。?16×(24+4))/33]×588×0.277≈2.2 mm 換句話說,CIRC能糾正在2.2 mm光道上連續(xù)存放的448個錯誤符號!相當(dāng)于連續(xù)224個漢字錯誤可以得到糾正。
13.4 RSPC碼
按ISO/IEC10149的規(guī)定,CD-ROM扇區(qū)中的ECC碼采用GF(28)域上的RSPC碼產(chǎn)生172個字節(jié)的P校驗符號和104個字節(jié)的Q校驗符號。RS碼采用本原多項式 P(x) = x8 + x4 +x3 + x2 + 1 和本原元 α = (00000010) 構(gòu)造GF(28)域,這已經(jīng)在上節(jié)作了介紹。 第12章已經(jīng)介紹了CD-ROM的扇區(qū)結(jié)構(gòu)。在每個扇區(qū)中,字節(jié)12~2075和ECC域中的字節(jié)2076到2351共2340個字節(jié)組成1170個字(word)。每個字s(n)由兩個字節(jié)B組成,一個稱為最高有效位字節(jié)MSB,另一個叫做最低有效位字節(jié)LSB。第n個字由下面的字節(jié)組成, s(n) = MSB[B(2n + 13)] + LSB[B(2n + 12)] 其中n = 0,1,2,…,1169。 從字節(jié)12開始到字節(jié)2075共2064個字節(jié)組成的數(shù)據(jù)塊排列成24×43的矩陣,如圖13-02所示。
|
|
|
|
|
|
|
|
|
NP |
|
|
| |
|
0 |
1 |
2 |
3 |
|
|
41 |
42 |
|
|
|
0 |
000 |
0001 |
0002 |
… |
… |
… |
0041 |
0042 |
|
| |
1 |
0043 |
0044 |
0045 |
… |
… |
… |
0084 |
0085 |
HEADER |
| |
2 |
0086 |
0087 |
0088 |
… |
… |
… |
0127 |
0128 |
+ |
| |
|
P |
|
|
|
Q |
|
|
|
用戶數(shù)據(jù) |
|
|
|
|
|
|
|
|
|
|
|
+ |
|
MP |
22 |
0946 |
0947 |
0948 |
… |
… |
… |
0987 |
0988 |
部分輔助數(shù)據(jù) |
| |
23 |
0989 |
0990 |
0991 |
… |
… |
… |
1030 |
1031 |
|
| |
24 |
1032 |
1033 |
1034 |
|
|
|
1073 |
1074 |
P-校驗 |
| |
25 |
1075 |
1076 |
1077 |
… |
… |
… |
1116 |
1117 |
|
| |
26 |
1118 |
1119 |
1120 |
… |
1143 |
|
|
|
Q-校驗 |
| |
27 |
1144 |
1145 |
1146 |
… |
1169 |
|
|
|
|
| |
|
0 |
1 |
2 |
… |
25 |
|
|
|
(ISO /IEC1049) |
圖13-02 RSPC碼計算用數(shù)據(jù)陣列
矩陣中的元素是字。這個矩陣要把它想象成兩個獨立的矩陣才比較好理解和分析,一個是由MSB字節(jié)組成的24×43矩陣,另一個是由LSB字節(jié)組成的24×43矩陣。 (1) P校驗符號用(26,24)RS碼產(chǎn)生 43列的每一列用矢量表示,記為Vp。每列有24個字節(jié)的數(shù)據(jù)再加2個字節(jié)的P校驗字節(jié),用下式表示:  其中: Np = 0,1,2,……,42 Mp = 0,1,2,……,25 s(43*24+Np)和s(43*25+Np)是P校驗字節(jié) 對這列字節(jié)計算得到的是兩個P校驗字節(jié),稱為P校驗符號。兩個P校驗字節(jié)加到24行和25行的對應(yīng)列上,這樣構(gòu)成了一個26×43的矩陣,并且滿足方程 Hp × Vp = 0 其中HP校驗矩陣為  (2) Q校驗符號用(45,43)RS碼產(chǎn)生 增加P校驗字節(jié)之后得到了一個26×43矩陣,該矩陣的對角線元素重新排列后得到一個新的矩陣,其結(jié)構(gòu)如圖13-03所示。
|
|
|
|
|
|
|
|
|
|
MQ |
|
|
| |
|
0 |
1 |
2 |
|
|
40 |
41 |
42 |
Q0 |
Q1 |
|
|
0 |
0000 |
0044 |
0088 |
… |
… |
0642 |
0686 |
0730 |
1118 |
1144 |
| |
1 |
0043 |
0087 |
0131 |
… |
… |
0685 |
0729 |
0773 |
1119 |
1145 |
| |
2 |
0086 |
0130 |
0147 |
… |
… |
0728 |
0772 |
0816 |
1120 |
1146 |
| |
3 |
0129 |
0137 |
0217 |
… |
… |
0771 |
0815 |
0859 |
1121 |
1147 |
| |
4 |
0172 |
0216 |
0260 |
… |
… |
0814 |
0858 |
0902 |
1122 |
1148 |
| |
|
|
|
|
|
|
|
|
|
|
|
| |
22 |
0946 |
0990 |
1034 |
… |
… |
0470 |
0514 |
0558 |
1140 |
1166 |
|
NQ |
23 |
0989 |
1033 |
1077 |
… |
… |
0513 |
0557 |
0601 |
1141 |
1167 |
| |
24 |
1032 |
1076 |
0002 |
… |
… |
0556 |
0600 |
0644 |
1142 |
1168 |
| |
25 |
1075 |
0001 |
0045 |
… |
… |
0599 |
0643 |
0687 |
1143 |
1169 |
(ISO/IEC 10149∶1989) 圖13-03 Q校驗符號計算用數(shù)據(jù)陣列
每條對角線上的43個MSB字節(jié)和LSB字節(jié)組成的矢量記為VQ。VQ在26×43矩陣中變成行矢量。第NQ行上的VQ矢量包含的字節(jié)如下:  其中: NQ = 0,1,2,…,25 MQ = 0,1,2,…,42 s(43*26+Nq)和s(44*25+Nq )和是Q校驗字節(jié) VQ中的(44*MQ+43*NQ)字節(jié)號運算結(jié)果要做mod(1118)運算。用(45,43)RS碼產(chǎn)生的兩個Q校驗字節(jié)放到對應(yīng)VQ矢量的末端,并且滿足下面的方程: HQ × VQ = 0 其中HQ校驗矩陣為  (26,24)RS碼和(45,43)RS碼可以糾正出現(xiàn)在任何一行和任何一列上的一個錯誤,并且能相當(dāng)可靠地檢測出行、列中的多重錯誤。如果在一個陣列中出現(xiàn)多重錯誤,Reference Technology公司提供有一種名叫Layered ECC的算法,它可以取消多重錯誤。它的核心思想是交替執(zhí)行行糾錯和列糾錯。 例如,假設(shè)錯誤分布如圖13-04所示。ECC算法首先計算MSB矩陣和LSB矩陣中每一行的校正子Sri(i = 0,1,…,25),以及每一列的校正子Scj(j = 0,1,…,44)。因為用(45,43)RS碼,所以每一個Sri和每一個Scj都有兩個校正子分量。如果Sri = 0,則說明第i行無錯;如Scj = 0,說明第j行無錯。
 圖13-04 錯碼分布舉例
ECC算法首先糾正行1、3、17、19和22上分別只有一個的錯誤。這些錯誤取消后就糾正列5、9、15和35上分別只有一個的錯誤。經(jīng)過一次行列交替糾錯后,只剩下C4,25、C7,20、C7,25和C9,20這四個錯誤。再進行一次行列交替糾錯后,就可以消除全部錯誤。 對于象下面這樣分布的錯誤,ECC算法也可以糾正。  因為RS碼糾錯算法本身包含找錯誤的位置和錯誤值,而錯誤位置已經(jīng)由校正子Sr(i-k)、Sri、Sr(i+m)和Scj、Sc(j+l)確定,所以只剩下求錯誤值的問題。這個問題在討論RS碼時已經(jīng)解決。 對CD-ROM存儲器的數(shù)據(jù),經(jīng)CIRC校正后可以使以字節(jié)做單位的誤碼率小于10-9,再經(jīng)RSPC進行糾錯后,字節(jié)誤碼率可以小于10-13,這樣就滿足了計算機要求誤碼率小于10-12的要求。
練習(xí)與思考題
- CRC用于檢測錯誤還是校正錯誤?
- 用自己的語言說明錯誤檢測的思想。
- 什么叫做突發(fā)錯誤?
- 碼塊長度為n,碼塊中的信息長度為k,問(n,k)RS碼本身能糾正多少個錯誤?
- 要糾正1個符號的錯誤,至少需要附加多少個校驗符?
- 目前CD存儲器中使用的CIRC編碼技術(shù)能夠糾正突發(fā)錯誤的最大長度是多少(按漢字字符數(shù)估算)?
參考文獻和站點
- ISO/IEC 908. Compact Disc Digital Audio System. 1987.
- ISO 9660. Volume and File structure of CD-ROM for Information Interchange. 1988.
- ISO/IEC 10149. Data Interchange on Read Only 120 mm Optical Data Disks(CD-ROM). 1989
- Scott A.Vanstone and Paul C. van Oorcshot. An Introducton Error Correcting Codes with Application. Kluwer, Academic Publishers, 1989
- Philips and Sony. System Description CD-ROM XA Compact Disk Read Only Memory extended Architecture. May, 1991
- Philips and Sony Corporation. CD-I Full Functional Specification. 1993.
- 林福宗, 陸 達. 多媒體與CD-ROM. 北京:清華大學(xué)出版社, 1995.3.
|