Documente Academic
Documente Profesional
Documente Cultură
Coduri BCH
Codurile BCH constituie cea mai relevantă clasă de coduri ciclice. Ele au fost
definite ı̂n mod independent de Bose şi Chaudhuri pe de-o o parte, Hocquenheim
de pe de-altă parte. Numele de BCH (Bose - Chaudhuri - Hocquenheim) a fost
dat de Peterson, care s-a ocupat de ele ı̂n mod special, construind şi algoritmul de
decodificare.
Teorema 12.2 Într-un cod BCH definit de rădăcinile αm0 , αm0 +1 , . . . , αm0 +d−2 (α ∈
GF (q m )), distanţa minimă a codului
" #este cel puţin d (şi deci codul poate corecta cel
d−1
puţin orice combinaţie de t ≤ erori).
2
133
134 PRELEGEREA 12. CODURI BCH
Exemplul 12.1 Dacă se lucrează ı̂n binar, puterile pare ale rădăcinilor se pot omite
din listă(dacă αi este rădăcină, atunci şi α2i este rădăcină - conform Teoremei 11.9,
Prelegerea 11). Atunci un cod BCH binar corector de 3 erori este dat de rădăcinile
β, β 3 , β 5 , unde β este un element primitiv dintr-o extensie a lui Z2 . De exemplu,
dacă β = α, rădăcină a polinomului 1 + X + X 4 , se obţine codul din Exemplul 11.3,
Prelegerea 11.
• Localizările erorilor Xi ∈ GF (q m ).
Vom nota poziţiile elementelor cuvintelor din GF (q m ) prin puterile lui α; pe poziţia
i ı̂n e(α) se află coeficientul lui αi−1 , deci αi−1 va localiza a i - a componentă dintr-un
cuvânt.
Dacă au intervenit t erori, modelul de eroare este complet caracterizat de cunoaş-
terea celor t perechi nenule (Yi , Xi ), 1 ≤ i ≤ t.
136 PRELEGEREA 12. CODURI BCH
Yi = 0 ⇐⇒ Xi = 0.
Atunci
à t !q t t
X X X
q
(Sj ) = Yi Xij = Yiq Xijq = Yi Xijq = Sjq
i=1 i=1 i=1
4. Dacă (Yi , Xi ), Xi = αji sunt cele k ≤ t valori nenule ale soluţiei obţinute,
atunci:
De remarcat că ı̂n cazul binar, pasul (3) nu mai este necesar, deoarece
Yi = 1, ∀i ≤ k.
Pentru corectitudinea algoritmului, trebuie studiate compatibilităţile sistemelor
de ecuaţii (1) şi (2).
t
X
Teorema 12.4 Sistemul Yi Xij = Sj , m0 ≤ j ≤ m0 + t − 1, de necunoscute Yi
i=1
este compatibil dacă şi numai dacă au intervenit t erori.
Demonstraţie: Considerat ca sistem ı̂n Y , este liniar; determinantul principal este
¯ ¯ ¯ ¯
¯ X1m0 X2m0 . . . Xtm0 ¯ ¯ 1 1 ... 1 ¯
¯ ¯ ¯ ¯
¯ ¯ ¯ ¯
¯
¯
X1m0 +1 X2m0 +1 . . . Xtm0 +1 ¯
¯
¯
¯
X1 X2 . . . Xt ¯
¯
¯
¯ X1m0 +2 X2m0 +2 . . . Xtm0 +2 ¯ m0 m0 m0 ¯
¯ = X1 X2 . . . Xt ¯ X12 X22 . . . Xt2 ¯
¯
¯ .. ¯ ¯ .. ¯
¯ ¯ ¯ . ¯
¯ . ¯ ¯ ¯
¯ ¯ ¯ ¯
¯ X1m0 +t−1 X2m0 +t−1 . . . Xtm0 +t−1 ¯ ¯ X1t−1 X2t−1 . . . Xtt−1 ¯
Y
= X1m0 X2m0 . . . Xtm0 (Xi − Xj )
1≤j<i≤t
El este nenul numai dacă au intervenit t erori, pentru că atunci toţi Xi sunt distincţi
şi nenuli. 2
Sm0 Sm0 +1 . . . Sm0 +t−1
Sm0 +1 Sm0 +2 . . . Sm0 +t
Teorema 12.5 Matricea M =
..
.
Sm0 +t−1 Sm0 +t . . . Sm0 +2t−1
este nesingulară dacă au intervenit t erori şi este singulară dacă au intervenit
mai puţin de t erori.
138 PRELEGEREA 12. CODURI BCH
M este nesingulară dacă cele două matrici din descompunere sunt nesingulare.
Matricea A este nesingulară dacă şi numai dacă valorile Xi , (1 ≤ i ≤ t) sunt distincte
şi nenule, deci dacă au intervenit t erori. Matricea diagonală B este nesingulară dacă
toate elementele de pe diagonala principală sunt nenule, deci dacă toate perechile
(Yi , Xi ), 1 ≤ i ≤ t sunt nenule - adică au apărut t erori. 2
Aplicarea algoritmului Peterson se face ı̂n felul următor:
Sj = r(αj ), j = m0 , m0 + 1, . . . , m0 + 2t − 1
Deoarece a doua ecuaţie se obţine din prima prin ı̂nmulţire cu α5 , ele nu sunt in-
dependente; deci au apărut mai puţin de 3 erori. Facem σ3 = 0 şi a doua ecuaţie
va da σ2 = α13 . Din prima ecuaţie a sistemului se ajunge la α0 + σ1 = α11 , adică
σ1 = α12 .
Deci, ı̂n acest caz k = 2, σ1 = α12 , σ2 = α13 . Se ajunge la polinomul X 2 +
σ1 X + σ2 = X 2 + α12 X + α13 , care are ca rădăcini X1 = α3 , X2 = α10 .
Am redescoperit astfel cele două localizări ale erorilor. Codul fiind binar, corecta-
rea se face imediat: se modifică (din 1 ı̂n 0 sau din 0 ı̂n 1) biţii de pe poziţiile 4
respectiv 11 din cuvântul recepţionat.
de unde se obţine σ1 = α0 , σ1 = α.
Polinomul de localizare a erorilor este X 2 +σ1 X +σ2 = X 2 +X +α, cu rădăcinile
X1 = α7 , X2 = α9 . Au apărut deci două erori, pe poziţiile 8 şi 10. Pentru că suntem
ı̂n cazul binar, Y1 = Y2 = 1; vectorul - eroare obţinut este e(X) = X 7 + X 9 , deci
cuvântul - cod transmis este
adică f = 100100100100100.
S(X) = (1 − X1 X)(1 − X2 X) . . . (1 − Xt X) = σ0 + σ1 X + σ2 X 2 + . . . + σt X t
12.3. LOCALIZAREA ERORII LA CODURILE BCH BINARE 141
unde
σ0 = 1
σ1 = X1 + X2 + . . . + Xt
...
σt = X1 X2 . . . Xt
(operaţiile fiind efectuate ı̂n binar, semnul − este asimilat cu +).
Rădăcinile acestui polinom sunt inversele localizărilor erorilor Xi−1 , 1 ≤ i ≤ t.
Procedeul lui Chien de corectare a erorilor ı̂n cazul binar pentru codurile BCH,
este următorul:
Fie r = r0 r1 . . . rn−1 cuvântul recepţionat; componentele lui se vor decodifica pas
- cu - pas (pe măsură ce sunt recepţionate).
Să considerăm primul bit primit rn−1 şi să cercetăm dacă el este corect sau nu.
Aceasta este echivalent cu a verifica dacă αn−1 este o localizare a erorii, sau dacă
α−(n−1) = α este o rădăcină a polinomului S(X) de localizare a erorii.
Dacă σ1 α + σ2 α2 + . . . + σt αt = 1 adică S(α) = 0, atunci a intervenit o eroare
pe poziţia αn−1 şi deci componenta rn−1 trebuie corectată.
Dacă σ1 α + σ2 α2 + . . . + σt αt 6= 1 adică S(α) 6= 0, atunci rn−1 s-a recepţionat
corect.
Procedeul se repetă: ı̂n general componenta recepţionată rn−s este corectă dacă
−(n−s)
α = αs nu este rădăcină a polinomului S(X), adică
σ1 αs + σ2 α2s + . . . + σt αst 6= 1
În caz contrar, rn−s va fi corectată ı̂n rn−s + 1.
Algoritmul lui Chien este deci:
1. s := 0;
2. while s ≤ n do
(a) s := s + 1;
(b) Se calculează P := σ1 αs + σ2 α2s + . . . + σt αts ;
(
0 dacă P = 0
(c) Se decodifică an−s := rn−s + v unde v =
1 dacă P =
6 0
r0 , r1 , . . . , rn−1 -
142 PRELEGEREA 12. CODURI BCH
Iniţial ı̂n elementele de ı̂nmagazinare ale celor două circuite se află σ1 respectiv σ2 .
Pentru cazul binar vom nota cu
³
x1 -
x2 - - x1 ∨ x2 ∨ . . . ∨ xn
xn -
´
dispozitivul ”sau” care dă valoarea (scalar) 0 dacă şi numai dacă
x1 = x2 = . . . = xn = 0,
şi cu
x - - x
dispozitivul ”non”.
Atunci, circuitul de implementare a procedeului Chien de localizare a erorii este:
r -
12.4. EXERCIŢII 6 143
?
²¯
r -+
6 ?
²¯ ±°
¾ r + ¾
²¯? 6 ¾ ±° ? 6
-
? - +- - - - ¾ ¾?¾ ? ¾
6 ¾ ¾?
1 ±°
²¯
-+¾ ? ?
²¯ ±°
? -+¾ ?
±°
²¯
? -+¾ ?
? -? ±°
²¯
? -+¾ ?
±°
ª
?
- ¾?
? -
??? ?
µ ´
?
?
²¯
r0 , r1 , . . . , rn−1 -+
±°
?
În acest circuit, cele patru elemente de ı̂nmagazinare din stânga formează circuitul
de ı̂nmulţire cu α (unde iniţial se introduce σ1 ), iar cele patru elemente din dreapta
formează circuitul de ı̂nmulţire cu α2 , aranjat ı̂n ordine inversă (unde σ2 se introduce
iniţial de la dreapta spre stânga).
De asemenea, există un element de ı̂nmagazinare care conţine numai 1, element
pe care ı̂l furnizează la fiecare tact.
Iniţial, circuitul funcţionează odată la momentul 0 fără a introduce nimic de pe
canal (pentru ”amorsarea” ı̂n elementele de ı̂nmagazinare a coeficienţilor pentru σ1 α
respectiv σ2 α2 ).
La momentul următor se ı̂ncepe procesul efectiv de decodificare. Dacă rn−1 a fost
perturbat, atunci αn−1 este localizarea erorii, adică α este rădăcină a polinomului de
localizare a erorii şi avem 1 + σ1 α + σ2 α2 = 0. În acest caz, la intrarea ı̂n sumatorul
”sau” este vectorul 0 = (0, 0, 0, 0), iar la ieşire scalarul 0. După negare se obţine
scalarul 1, care se adună (pentru corecţie) la rn−1 .
Dacă rn−1 este corect, la intrarea ı̂n sumator se obţine o valoare nenulă, deci
ieşirea va fi 1, care prin negare este 0 şi rn−1 rămâne nemodificat.
12.4 Exerciţii
12.1 Să se verifice valabilitatea descompunerii M = ABAT din demonstraţia Teo-
remei 12.5
12.2 Fie α ∈ GF (2m ), m > 2 primitiv. Atunci polinoamele minimale m1 (X) şi
m3 (X) au acelaşi grad.
12.5 Să se determine polinomul generator şi cel de control pentru codul BCH binar
corector de 3 erori de lungime
(a) 15 (b) 31.
Codificaţi mesajul de informaţie format numai din 1.
12.6 Caracterizaţi codurile BCH care sunt definite de toate elementele extensiei
Galois GF (q m ).
12.8 Aflaţi rădăcinile polinoamelor cu coeficienţi ı̂n GF (24 ) (α este rădăcina poli-
nomului 1 + X + X 4 ):
X 2 + α4 X + α13 , X 2 + α7 X + α2 , X 2 α2 X + α5
X 2 + α6 , X 2 + α2 X, X 2 + X + α8 .
12.9 Definim codul BCH de polinom generator g(X) = m1 (X)m3 (X) peste GF (24 )
folosind elementul primitiv α, rădăcină a polinomului 1 + X + X 4 . Se recepţionează
cuvintele a şi se calculează sindromurile aH. Ştiind aceste sindromuri, localizaţi
erorile (dacă se poate):
01000101 11101000 11001101 01000000
00000100 10100100 00111101 00000000
12.10 Pentru codul BCH definit ı̂n exemplul anterior, decodificaţi mesajele:
110000000000000 000010000100001 010001010100000
110011100111000 110011100100000 111000000000001
101110000000000 101010010110001 010000100000000
010101001011000 110111011101100 101110000001000
111001011000000 000111010000110
12.11 În codul BCH de lungime 15 corector de 3 erori, să se decodifice mesajele:
(a) 001000100000000, (b) 101011001000000.
12.12 În codul BCH peste Z3 de lungime 8, corector de 2 erori, să se decodifice
mesajele
(a) 00100000 (b) 12121212 (c) 11211122
(d) 02020202 (e) 10201020 (f ) 22110011.