BCH碼

BCH碼

BCH碼是一類重要的糾錯碼,它把信源待發的信息序列按固定的κ位一組劃分成訊息組,再將每一訊息組獨立變換成長為n(n>κ)的二進制數字組,稱為碼字。如果訊息組的數目為M(顯然M>=2),由此所獲得的M個碼字的全體便稱為碼長為n、信息數目為M的分組碼,記為n,M。把訊息組變換成碼字的過程稱為編碼,其逆過程稱為解碼。

基本信息

線性與否

分組碼就其構成方式可分為線性分組碼與非線性分組碼。

線性分組碼是指[ n, M]分組碼中的 M個碼字之間具有一定的線性約束關係,即這些碼字總體構成了 n維線性空間的一個 κ維子空間。稱此 κ維子空間為( n, κ)線性分組碼, n為碼長, κ為信息位。此處 M=2。

非線性分組碼[ n, M]是指 M個碼字之間不存線上性約束關係的分組碼。 d為 M個碼字之間的最小距離。非線性分組碼常記為[ n, M, d]。非線性分組碼的優點是:對於給定的最小距離 d,可以獲得最大可能的碼字數目。非線性分組碼的編碼和解碼因碼類不同而異。雖然預料非線性分組碼會比線性分組碼具有更好的特性,但在理論上和實用上尚缺乏深入研究(見非線性碼)。

編碼解碼

V n表示 G F(2)域的 n維線性空間, V κ是 V n的 κ維子空間,表示一個( n, κ)線性分組碼。 E i=( v i1, v i2…, v in)是代表 V κ的一組基底( i=1,2,…, κ)。以這組基底構成的矩陣

稱為該( n, κ)線性碼的生成矩陣。對於給定的訊息組 m=( m1, m2,…, m κ),按生成矩陣 Gm被編為 mG= m1 E1+ m2 E2+…+ m κ E κ

這就是線性分組碼的編碼規則。若

之秩為 n- κ並且滿足 GH=0,僅當=( v1, v2,…, v n)∈ n滿足 H=0時,才為 κ中的碼字。稱 H為( n, κ)線性分組碼 κ的均等校驗矩陣,稱 H為矢量的伴隨式。假設 v是傳送的碼矢量,在接收端獲得一個失真的矢量 r= v+ E,式中 E=( e1, e2,…, e n)稱為錯誤型。由此 r H=( v+ e) H= e H

線性碼的解碼原則便以此為基礎。

漢明碼

這是最早提出的一類線性分組碼,已廣泛套用於計算機和通信設備。它是由R.W.漢明於1950年提出的。若碼的均等校驗矩陣 H由2-1個、按任一次序排列且彼此相異的二進制 r維列矢量構成。這樣得到的線性分組碼稱為漢明碼,其分組長為 n=2-1,信息位為 κ= n- r=2-1- r,即為(2-1,2-1- r)碼。例如,以矩陣

為均等校驗矩陣的線性分組碼便為(7,4)漢明碼。漢明碼的解碼十分簡單。例如, 假定=(1001100)為傳送的碼字,其第3位有錯,即接收矢量為 r=(1011100)。於是

恰為矩陣 H的第 3 列,因而判定原來傳送的碼字為=(1001100)。這種解碼方式是一般性的。如果接收矢量 r在第 i位有錯,則其伴隨式 Hr剛好為矩陣 H的第 i列。漢明碼是可以糾正單個錯誤的線性分組碼。

循環碼

具有某種循環特性的線性分組碼,如果( n, κ)線性分組碼 V κ具有如下的性質:對於每一個=( ɑ0, ɑ1,…,)∈ V n,只要∈ V κ,其循環移位()亦屬於 V κ,則稱 V κ為循環碼。循環碼的優點在於其編碼和解碼手續比一般線性碼簡單,因而易於在設備上實現。使 V n中的每一個矢量=( ɑ0, ɑ1,…,),對應於域 G F(2)上的多項式 ɑ( x)= ɑ0+ ɑ1 x+…+ x。於是 V n中的全體 n維矢量便與上述多項式之間建立了一一對應的關係。基於這種對應,使 V n中除了線性運算而外,還建立了矢量之間的乘法運算。 A=( ɑ0, ɑ1,…,)與 B=( b0, b1,…,)的乘積 ab可視為 ɑ( x) b( x)[mod( x-1)]所對應的矢量。因此,一個( n, κ)循環碼的生成矩陣及均等校驗矩陣可分別由生成多項式及均等校驗多項式 h( x)所代替,從而簡化了編碼及解碼運算。

BCH碼

它是一類重要的循環碼,能糾正多個錯誤。假設 m是滿足模n(mod n)的最小正整數, β是域 G F(2)的 n次單位原根,作循環碼的生成多項式 g( x),以 d0-1個接續的元素為根,其中 m0, d0均為正整數,且 d0≥2。於是

其中 m j( x)代表的最小多項式。由這個 g( x)所生成的,分組長為 n的循環碼稱為BCH碼。它由R.C.Bose,D.K.Ray-Chaudhuri及A.Hocquenghem三人研究而得名。BCH碼的主要數量指標是:碼長 n,首元指數 m0,設計距離 d0,信息位數(表示多項式 g( x)的次數)。BCH碼的重要特性在於:設計距離為 d0的BCH碼,其最小距離至少為 d0,從而可至少糾正(d0-1)/2個獨立錯誤。BCH碼解碼的第一步是計算伴隨式。假設 為傳送碼矢量,為接收矢量,而 E=( E0, E1,…, E n-1)為錯誤矢量,或記為錯誤多項式。於是伴隨矢量之諸 S=( S1, S2,…, S2 t)分量 S κ由

決定( κ=1,2,…2 t;為簡便計,設 m0=1, d0=2 t+1)。假設有 e個錯誤出現(1≤ e≤ t),則對應於 e個錯誤的 E i厵0。如果 E的第 j個(從左至右)非零分量是 E i,則稱 X j= β為這個錯誤 E i的錯位,而稱 Y j= E i為這個錯誤的錯值。稱 為錯位多項式。BCH碼解碼的關鍵是由諸 s κ( κ=1,2,…,2 t)求出( z)。這可用著名的伯利坎普-梅西疊代算法來完成。這種算法相當於線性移位暫存器(LFDR暫存器)的綜合問題。最後一步是求出( z)的全部根,可用錢天聞搜尋算法完成,從而可以定出接收矢量 r的全部錯位 。

BCH碼基本原理

BCH碼是一種有限域中的線性分組碼,具有糾正多個隨機錯誤的能力,通常用於通信和存儲領域中的糾錯編碼。BCH碼定義如下:給定任意一個有限域GF(q)及其擴展域GF(q^m),其中q是素數或素數的冪,m為正整數。對於任意一個碼元取自擴展域GF(q^m)的循環碼(n,k),其中n=2^m-1,其生成多項式g(x)具有2t個連續的根{a^1,a^2,a^,...,a^(2t-1),a^(2t)},則由生成多項式g(x)編碼產生的循環碼稱為q進制的BCH碼,記為(n,k,t)。當碼長n=2^m-1,稱為本原BCH碼,否則稱為非本原BCH碼。

最常用的BCH碼是二進制的BCH碼。二進制BCH碼的所有碼元都是由0和1構成,便於硬體電路的實現。如無說明,本文以下討論的BCH碼都是二進制BCH碼。二進制本原BCH碼具有以下重要參數:

碼長:n=2^m-1

校驗位長度:n-k<=m*t

1.

碼長:n=2^m-1

2.

校驗位長度:n-k<=m*t

BCH碼的生成多項式是由GF(q^m)的2t個最小多項式最低公倍式的乘積,糾錯能力為t的BCH碼生成多項式為g(x)=LCM{m1(x),m2(x),...,m2t-1(x),m2t(x)},其中LCM表示最低公倍式,m(x)為最小多項式。

由多項式理論知道,如果有限域GF(2^m)中的元素a^i是m次即約多項式mi(x)的根,則(a^i)^2,(a^i)^4,(a^i)^8,...也是mi(x)的根,(a^i)^2,(a^i)^4,(a^i)^8,...稱為共軛根系。如果兩個根共軛,則它們具有相同的最小多項式。因此生成多項式g(x)=LCM{m1(x),m2(x),...,m2t-1(x),m2t(x)}=m1(x)*m3(x)*...*m2t-1(x)通過以上步驟就可以求出BCH碼的生成多項式。得到生成多項式就可以對信息進行編碼 。

BCH碼編碼原理

將未編碼的k位數據記為多項式:

m(x)=m0+m1*x^1+m2*x^2+...+mk-1*x^k-1;其中mi屬於{0,1}

將生成多項式記為:

g(x)=g0+g1*x1+g2*x^2+...+gr*x^r,其中r=m*t,校驗位記為r(x),則

r(x)=x^r*m(x) mod g(x)

編碼後的BCH碼字多項式可記為:

C(x)=x^r*m(x)+x^r*m(x) mod g(x)

BCH編碼實現的關鍵是通過除法電路得到校驗位多項式。編碼的過程可總結為:

將m(x)左移r位,得到x^r*m(x);

用生成多項式g(x)除以x^r*m(x),得到校驗位多項式r(x);

得到碼元多項式C(x)=x^r*m(x)+x^r*m(x) mod g(x)。

1.

將m(x)左移r位,得到x^r*m(x);

2.

用生成多項式g(x)除以x^r*m(x),得到校驗位多項式r(x);

3.

得到碼元多項式C(x)=x^r*m(x)+x^r*m(x) mod g(x)。

戈帕碼

這是一種重要的線性分組碼,它不僅包括常見的諸如本原BCH碼等大量的循環碼類,還包括相當多的非循環線性分組碼類,並且後一種碼具有良好的漸近特性。戈帕碼的理論實質在於將每一個碼矢量與一個有理分式相對應。 q是某一個素數冪, g( z)是域 G F( q)上的任意多項式, L表示域 G F( q)中所有不為 g( z)之根的元素所成之集合,| L|代表 L中元素的數目。於是存在一個以 G F( q)為符號域,以 G F( q)為位置域的線性分組碼。碼長為| L|,它的各碼元用 L中的元素來標誌。這種碼可定義為滿足條件

的一切 G F( q)上的全體| L|維矢量的集合,式中 這種碼稱為戈帕碼,稱 g( z)為戈帕多項式。

例如, q=2, m=2, g( z)= z+ α, α是域 G F( z)上的本原元素  α+ α+1=0  α3=1

則<P L={ β1, β2, β3}={0,1, α}

於是<P

可驗證,(1,1,1)即為這一戈帕碼的碼字。戈帕碼也有類似於BCH碼的解碼方法。

自50年代分組碼的理論獲得發展以來,分組碼在數字通信系統和數據存儲系統中已被廣泛套用。由於大規模和超大規模積體電路的迅速發展,人們開始從易於實現的循環碼理論研究中解脫出來,更重視研究性能良好的非循環線性分組碼和非線性分組碼。人們在分組碼研究中又引進了頻譜方法,這一研究方向受到了較多的注意。

其他碼制

里德-索洛蒙碼

這是一種特殊的非二進制BCH碼。對於任意選取的正整數 s,可構造一個相應的碼長為 n= q-1的 q進制BCH碼,其中碼元符號取自有限域 G F( q),其中 q為某一素數的冪。當 s=1, q>2時所建立的碼長為 n= q-1的 q進制BCH碼便稱為里德-索洛蒙碼,簡稱為RS碼。當 q=2( m>1),碼元符號取自域 G F(2)的二進制RS碼可用來糾正成區間出現的突發錯誤。這種碼在短波信道中特別有用。

相關詞條

相關搜尋

熱門詞條

聯絡我們