Sunteți pe pagina 1din 4

Coduri Hamming

Codul C (n , k , d ) are următoarele caracteristici:


o n - numărul de simboluri ale unui cuvânt de cod;
o k - numărul de simboluri de informaţie ale unui cuvânt de cod;
o m = n − k - numărul de simboluri de control;
o t - numărul maxim de simboluri pe care codul le poate corecta;
o d = d min = w min = 2t + 1 - distanta minimă între două cuvinte ale codului
Dimensionarea se poate face conform:
- marginii Hamming
t
qm ≥ ∑C
i =0
i
n

- marginii Varşamov-Gilbert
2t −1
qm ≥ ∑C
i =1
i
n −1

Coduri Hamming bloc grup

Cuvântul de cod este un n-tuplu:


v = [a1 a 2  a n ] , a i ∈ GF ( q )

Generarea cuvintelor de cod se poate face:


- ca elemente ale unui subspatiu C (n , k ) , având matricea generatoare
G k ×n (liniile acestei matrici formează o bază pentru codul C (n , k ) )

În acest caz cuvintele de cod sunt combinaţii liniare de liniile matricii G k ×n .

ca elemente ale spaţiului ortogonal C (n , k ) , a cărui matrice generatoare



-
este matricea de control a codului C (n , k ) , H m×n (coloanele acesteia
formează o bază pentru codul C (n , k ) )

În acest caz cuvintele de cod sunt combinaţii de coloanele matricii H m×n , iar
codarea se face respectând ecuaţia:
Hv T = 0
Din această ecuaţie, ştiind simbolurile de infomaţie se pot determina
simbolurile de control.

Cuvintele de cod pot fi in formă:

- sistematică
o v = [i1 i 2  i k c1 c 2  cm ] corespunzând unor forme
standard ale matricilor generatoare si de control:
G k ×n = [ I k Ak ×m ] [
H m×n = − A T Im ]
o v = [c1 c 2  cm i1 i 2  i k ] corespunzând unor forme
standard ale matricilor generatoare şi de control:
G k ×n = [ Ak ×m Ik ] [
H m×n = I m − A T ]
- nesistematică
o pentru codurile Hamming grup corectoare de o eroare, se poate folosi o
formă nesistematică în care simbolurile de control se află pe poziţii
puteri ale lui q , corespunzător unei forme a matricii de control:
0 0  1 1
0 0  1 1

H mxn =      , cu n = q m − 1
 
0 1  1 1
1 0  0 1

Decodarea se face pe bază de sindrom:


Hv'T = H (v + ei ) = HeiT = s i , existând o relaţie biunivocă { ei } ⇔ { s i } .
T

Exemplu:

C ( 7,4,3) , în forma nesistematică v = [c1 c 2 i 3 c 4 i 5 i 6 i 7 ] , are matricea de


0 0 0 1 1 1 1
control H 3×7 =
0 1 1 0 0 1 1
 . Ecuaţia Hv = 0 duce la sistemul
T


1 0 1 0 1 0 1

 c1 = i 3 + i 5 + i 7

c 2 = i 3 + i 6 + i 7 . Codarea se face cu registru de deplasare şi sumatoare:
c = i + i + i
 4 5 6 7

c 4 '+i 5 '+i 6 '+i 7 '



Decodarea se face pe bază de sindrom: s = Hv ' = c 2 '+i 3 '+i 6 '+i 7 ' .
T

c '+i '+i '+i '


 1 3 5 7
Extinderea codului Hamming se face prin introducerea unui unui simbol in plus, bitul de
paritate. Matricea de control a codului extins C * (n + 1, k , d ) este:
O H m×n 
H (*m+1)×( n +1) =  m×1
 1 1  1

Coduri Hamming ciclice

Sunt coduri Hamming bloc în care cele n simboluri ale cuvântului de cod sunt considerate
ca fiind coeficienţii unui polinam de grad (n-1). Orice rotatie a unui cuvant de cod este tot
cuvânt de cod.
v ( x ) = a 0 + a1x + ... + a n −1x n −1
v ( x ) = c ( x ) + x mi ( x )
Mulţimea tuturor cuvintelor de cod reprezentată de polinoamele v ( x ) corespunde clasei
de resturi modulo p( x ) = x n + 1 . Astfel, cuvintele de cod pot aparţine idealului generat de
polinomul generator g( x ) de grad m. Acest polinom este: monic, ireductibil, divide
polinomul p( x ) = x n + 1 . Lui îi corespunde h ( x ) : g( x )h ( x ) = x n + 1 .Evident grad h ( x ) = k
.
Generarea cuvintelor de cod ca elemente ale idealului generat de polinomul generator
g( x ) :
v( x ) c ( x ) + x mi ( x ) x mi ( x ) x mi ( x )
rest =0 ⇒ rest = c ( x ) + rest =0 ⇒ c ( x ) = rest Matricile
g( x ) g( x ) g( x ) g( x )
 g( x )  x m−1h ( x ) 
 xg( x )   

generatoare şi de control ale codului sunt: G k ×n =  H m×n =  , unde
    xh ( x ) 
 k −1   
x g ( x )   h ( x ) 
la h ( x ) simbolurile se iau in ordinea descrescătoare a indicilor, iar la g( x ) în ordine
crescătoare.

Codarea se face, în acest caz, cu circuite de divizare:


Decodarea se face folosind acelaşi circuit, numai că dispare comutatorul K. Timp de n
tacte se introduc simbolurile cuvantului de cod recepţionat, apoi se întrerupe reacţia prin
Σ0 şi, timp de m tacte sunt livrate la ieşire simbolurile sindromului.

O altă metodă de codare este cea cu registru de deplasare şi reacţie prin sumator
exterior:

Acest circuit este caracterizat de o matrice de transfer:

0 1 0  0 
0 şi o matrice de control
0 

0
0
0
1
0

 0 
H =U [ TU ]
 T n −1U ,unde
T = 
       0
0 0 0  1   
  U = 
g0 g1 g2  gm−1  0
 
1
Circuitul de decodare este format dintr-un codor, un detector al stării T n −1U şi
un buffer în care se păstrează cuvântul pentru care se calculează sindromul. La detecţia
stării T n −1U se face corecţia prin adunarea unui “1” la bitul care era livrat în acel
moment la ieşire, corespunzător unei erori er şi unui sindrom s = T −r U .

S-ar putea să vă placă și