RS編碼和糾錯算法

 

13.2 RS編碼和糾錯算法

13.2.1. GF(2m)

RS(Reed-Solomon)碼在伽羅華域(Galois Field,GF)中運算的,因此在介紹RS碼之前先簡要介紹一下伽羅華域。

CD-ROM中的數據、地址、校驗碼等都可以看成是屬於GF(2m) = GF(28)中的元素或稱符號。GF(28)表示域中有256個元素,除0,1之外的254個元素由本原多項式P(x)生成。本原多項式的特性是得到的餘式等於0。CD-ROM用來構造GF(28)域的是

(13-1)
而GF(28)域中的本原元素爲

α = (0 0 0 0 0 0 1 0)

下面以一個較簡單例子說明域的構造。

[例13.1] 構造GF(23)域的本原多項式假定爲

α定義爲 = 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

……

 

用二進制數表示域元素得到表13-01所示的對照表

表13-01 GF(23)域中與二進制代碼對照表,

GF(23)域元素

二進制對代碼

0

(000)

α0

(001)

α1

(010)

α2

(100)

α3

(011)

α4

(110)

α5

(111)

α6

(101)

這樣一來就建立了GF(23)域中的元素與3位二進制數之間的一一對應關係。用同樣的方法可建立GF(28)域中的256個元素與8位二進制數之間的一一對應關係。在糾錯編碼運算過程中,加、減、乘和除的運算是在伽羅華域中進行。現仍以GF(23)域中運算爲例:

加法例:α0+α3 = 001+011

= 010 = α1

減法例:與加法相同

乘法例:α5·α4 = α(5+4)mod7

= α2

除法例:α53 = α2

α35 = α-2

= α(-2+7)

= α5

取對數:log(α5) = 5

這些運算的結果仍然在GF(23)域中。

13.2.2 RS的編碼算法

RS的編碼就是計算信息碼符多項式除以校驗碼生成多項式之後的餘數。

在介紹之前需要說明一些符號。在GF(2m)域中,符號(nk)RS的含義如下:

m

表示符號的大小,如m = 8表示符號由8位二進制數組成

n

表示碼塊長度,

k

表示碼塊中的信息長度

K=n-k = 2t

表示校驗碼的符號數

t

表示能夠糾正的錯誤數目

例如,(28,24)RS碼錶示碼塊長度共28個符號,其中信息代碼的長度爲24,檢驗碼有4個檢驗符號。在這個由28個符號組成的碼塊中,可以糾正在這個碼塊中出現的2個分散的或者2個連續的符號錯誤,但不能糾正3個或者3個以上的符號錯誤。

對一個信息碼符多項式,RS校驗碼生成多項式的一般形式爲

(13-2)
式中,m0是偏移量,通常取K0 = 0或K0 = 1,而(n-k)≥2t (t爲要校正的錯誤符號數)。

下面用兩個例子來說明RS碼的編碼原理。

[例13.2] 設在GF(23)域中的元素對應表如表13-01所示。假設(6,4)RS碼中的4個信息符號爲m3、m2、m1和m0,信息碼符多項式爲

(13-3)
並假設RS校驗碼的2個符號爲Q1和Q0,的剩餘多項式爲


這個多項式的階次比的階次少一階。

如果K0 = 1,t = 1,由式(13-2)導出的RS校驗碼生成多項式就爲

= (13-4)
根據多項式的運算,由式(13-3)和式(13-4)可以得到

m3x5+m2x4+m1x3+m0x2+Q1x+Q0 = (x-α)(x-α2)Q(x)

當用x = α和x = α2代入上式時,得到下面的方程組,

經過整理可以得到用矩陣表示的(6,4)RS碼的校驗方程:

求解方程組就可得到校驗符號:

在讀出時的校正子可按下式計算:

 

[例13.3] 在例13.2中,如果K0 = 0,t = 1,由式(13-2)導出的RS校驗碼生成多項式就爲

= (13-5)
根據多項式的運算,由(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)計算錯誤值。現以例13.3爲例介紹RS碼的糾錯算法。

校正子使用下面的方程組來計算:

爲簡單起見,假定存入光盤的信息符號m3、m2、m1、m0和由此產生的檢驗符號Q1、Q0均爲0,讀出的符號爲m3′、m2′、m1′、m0′、Q1′和Q0′。

如果計算得到的s0和s1不全爲0,則說明有差錯,但不知道有多少個錯,也不知道錯在什麼位置和錯誤值。如果只有一個錯誤,則問題比較簡單。假設錯誤的位置爲αx,錯誤值爲mx,那麼可通過求解下面的方程組:

得知錯誤的位置和錯誤值。

如果計算得到s0 = α2和s1 = α5,可求得αx = α3和mx = α2,說明m1出了錯,它的錯誤值是α2。校正後的m1 = m1′+mx ,本例中m1=0。

如果計算得到s0 = 0,而s1≠0,那基本可斷定至少有兩個錯誤,當然出現兩個以上的錯誤不一定都是s0 = 0和s1≠0。如果出現兩個錯誤,而又能設法找到出錯的位置,那麼這兩個錯誤也可以糾正。如已知兩個錯誤和的位置和,那麼求解方程組:

就可知道這兩個錯誤值。

CD-ROM中的錯誤校正編碼CIRC和裏德-索洛蒙乘積碼(Reed Solomon Product-like Code,RSPC)就是採用上述方法導出的。

 轉自http://wenku.baidu.com/view/8cd8c8cf89eb172ded63b7ff.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章