Sunteți pe pagina 1din 10

Coduri ciclice

Codurile ciclice sunt coduri bloc in care cele n simboluri din cuvant sunt considerate ca
fiind coeficientii unui polinom de grad n-1:
] ......... .......... [
} 1 , 0 { , .......... .......... ) (
1 2 1 0
1
1
2
2 1 0

+ + + +
n
i
n
n
a a a a v
a x a x a x a a x v
Cuvantul de cod fiind identificat cu un polinom, asupra lui se pot efectua operatii
matematice mai complexe, pe langa operatia de adunare si inversa ei fiind definita si
operatia de inmultire si inversa ei.
Ideea de baza a mecanismului de detectie sau corectie consta in alegerea polinoamelor
divizibile cu un polinom dat g(x) ca fiind cuvinte de cod (cuvinte cu sens). Polinomul
g(x) se numeste polinom generator al codului. Daca in procesul de transmisiune nu
s-au introdus erori, polinomul care reprezinta cuvantul receptionat, divizat cu g(x) va da
un rest nul. Daca s-au introdus erori restul va fi diferit de 0.
Existenta unui rest diferit de 0 este un criteriu pentru detectia erorilor. Daca din restul
obtinut se pot trage concluzii asupra pozitiei in care s-au introdus erorile, codul permite
corectarea lor.
Codul se numeste ciclic deoarece daca
] ......... .......... [
1 2 1 0

n
a a a a v
este un cuvant
de cod, atunci si toate cuvintele de forma
] .. .......... ......... .......... [
1 0 1 2 1 + +

i n i i i
a a a a a a v
sunt cuvinte de cod. Cu alte
cuvinte, orice permutare ciclica a unui cuvant de cod conduce tot la un cuvant de cod.
Presupunand ca numarul de simboluri dintr-un cuvant este n, rezulta ca se pot forma 2
n
cuvinte. Dintre acestea se considera ca 2
k
cuvinte sunt cuvinte de cod (cu sens). Altfel
spus, obtinem m=n-k simboluri de control, servind la detectia sau corectia erorilor.
Consideram ca multimea tuturor cuvintelor (ce formeaza o algebra) este generata de un
polinom p(x) de grad n de forma 1 ) ( +
n
x x p , iar multimea cuvintelor cu sens (ce
formeaza un ideal) este generata de un polinom g(x) numit polinom generator, de grad
m, de forma:
m
m
m
m
x g x g x g x g g x g + + + + +

1
1
2
2 1 0
. .......... ) (
Se poate arata ca intre cele doua polinoame p(x) si g(x) exista relatia:
) ( ) ( ) ( x h x g x p
,
unde
k
k
x h x h x h h x h + + + + .. .......... ) (
2
2 1 0
.
Orice cuvant de cod poate fi exprimat printr-o combinatie liniara a urmatorilor k vectori
independenti : ) ( ., .......... ), ( ), ( ), (
1 2
x g x x g x x xg x g
k
.
Cu alte cuvinte, un cuvant de cod se gaseste in spatiul linie al matricii generatoare G:
1
1
1
1
1
1
1
1
1
]
1

1
1
1
1
1
1
1
1
1
]
1

m
m m
m m
m
k
g g g g
g g g g
g g g g
g g g g
x g x
x g x
x x g
x g
G
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0 0 0
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
0 . . . . . . . . . . . . . 0 . . . . . . . . . . 0 0
0 . . . . . . . . . . . . . 0 0 . . . . . . . . . . 0
0 . . . . . . . . . . . . . 0 0 0 . . . . . . . . . .
) (
.
.
.
) (
) (
) (
2 1 0
1 1 0
1 1 0
2 1 0
1
2
Polinomul g(x) de grad m a fost completat pana la gradul n-1 cu componente nule.
Rezulta ca prin cunoasterea polinomului generator g(x) se determina matricea
generatoare G, respectiv structura codului ciclic. Matricea generatoare G are k vectori
linie liniar independenti cu care se pot forma 2
k
combinatii liniare, respectiv 2
k
cuvinte
de cod.
Codarea cuvintelor de cod ca elemente in multimea cuvintelor cu sens
generata de g(x)
Fie g(x) polinomul generator al codului, de grad m, si i(x) polinomul de grad k=n-m care
are drept coeficienti simbolurile de informatie:
1
1 1
1
1 1
.......... ) (
.......... ) (

+ +

+
+ + +
+ + +
k
k m m m
k
n k n k n
x a x a a x i
sau x a x a a x i
A) Determinarea simbolurilor de control folosind g(x)
Polinomul simbolurilor de control se noteaza cu :
1
1
2
2 1 0
..... .......... ) (

+ + + +
m
m
x a x a x a a x c
Deci cuvantul de cod se scrie : ) ( ) ( ) ( x i x x c x v
m
+
Impartind expresia de mai sus prin g(x) rezulta:
) (
) (
) (
) (
) (
) (
x g
x i x
x g
x c
x g
x v
m
+
Termenul ) (x i x
m
reprezinta termenii cuvantului de cod care contin informatia
transmisa. Ultimul termen se rescrie:
) (
) (
) (
) (
) (
x g
x r
x q
x g
x i x
m
+ , unde q(x) reprezinta catul
(de grad < k ), iar r(x) reprezinta restul (de grad < m) impartirii lui ) (x i x
m
la g(x).
) (
) (
) ( ) ( ) ( ) ( ) ( ) (
) (
) (
) (
) (
) (
x g
x i x
rest x r x c x i x x r x g x q
x g
x i x
x g
x r
x q
m
m
m
+ +
.
Astfel, polinomul simbolurilor de control se obtine prin divizarea polinomului
simbolurilor de informatie multiplicat cu x
m
prin g(x). In acest fel se obtine un cuvant de
cod SISTEMATIC.
B) Ce-a de-a doua metoda pentru determinarea simbolurilor de control se bazeaza pe
introducerea matricii generatoare G definita anterior, avand k linii si n coloane. Codarea
are loc cu ajutorul relatiei :
v=iG , unde i=[a
m
a
m+1
........................ a
m+k-1
].
Codarea cuvintelor de cod cu ajutorul polinomului de control h(x)
Se pleaca de la relatia potrivit careia v(x) este multiplu de g(x):
) ( mod 0 ) ( ) ( ) ( ) ( ) (
) (
1
) (
) (
) ( ) ( ) ( ) ( ) (
x p x h x g x q x h x v
x g
x
x g
x p
x h x h x q x g x v
n

+

Sau, sub forma matriceala: Hv
T
= 0, unde matricea H are forma (m linii, n coloane):
1
1
1
1
1
1
]
1

0 0 0 . . . . . . . . . . . . . . . . . . . . . . . . 0 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
0 0 . . . . . . . . . . . . . . . . . . 0 . . . . . . . . . . . . . . . 0
0 . . . . . . . . . . . . . . . . . . . . . . 0 . . . . . . . . . . . . . . . . . . 0
. . . . . . . . . . . . . . . . . . . . . . . . . . . 0 . . . . . . . . . . . . . . . . . . . . . . . . . 0
0
0 2 1
0 1
0
h h
h h h h
h h h
h h
H
k
k k k
k k
k
Elementele h
i
sunt coeficientii polinomului
k
k
x h x h x h h x h + + + + .. .......... ) (
2
2 1 0

completat pana la gradul n-1 cu coeficienti nuli. Matricea H are m linii liniar
independente astfel incat relatia Hv
T
= 0 este echivalenta cu m ecuatii liniare ce
determina cele m simboluri de control in functie de cele k simboluri de informatie.
De asemenea, se poate arata ca GH
T
=HG
T
.
Exemplu:
Se transmit N=16 mesaje pe un canal afectat de perturbatii, utilizand un cod ciclic
corector de o eroare.
Se pot determina parametrii codului: pentru a transmite 16 mesaje sunt necesari cel
putin 4 biti de informatie, adica:
4 16 2 k
k
3 5 1 2 1 2 + + + + m m k m n
m m
gradul polinomului g(x) va fi deci 3
7 4 3 + + k m n rezulta ca polinomul p(x) va avea forma: 1 ) (
7
+ x x p
Polinomul generator se poate alege dintre divizorii lui p(x): 1 ) (
2 3
+ + x x x g
Polinomul h(x) de grad k=m-n se determina din relatia p(x)=g(x)h(x)
1
1
1
) (
2 3 4
2 3
7
+ + +
+ +
+
x x x
x x
x
x h
Remember impartirea de polinoame :
/ / /
1
1
1
1
1
1 1
2 3
2 3
2 4 5
3 4 5
3 5 6
4 6
2 3 4 4 6 7
2 3 7
+ +
+ +
+ +
+ + +
+ +
+ +
+ + + + +
+ + +
x x
x x
x x x
x x x
x x x
x x
x x x x x x
x x x
Codarea se poate realiza fie cu matricea G fie cu matricea H:
a) codarea cu matricea G
G(k,n)=G(4,7)
] , , , , , , [
1 1 0 1 0 0 0
0 1 1 0 1 0 0
0 0 1 1 0 1 0
0 0 0 1 1 0 1
] [
1 1 0 1 0 0 0
0 1 1 0 1 0 0
0 0 1 1 0 1 0
0 0 0 1 1 0 1
6 6 5 5 4 6 4 3 5 3 4 3 6 5 4 3
i i i i i i i i i i i i i i i i i G v G + + + + +
1
1
1
1
]
1


1
1
1
1
]
1

Cele 16 mesaje transmise vor fi codate corespunzator, ca in tabelul de mai jos:


Nr. I
3
I
4
I
5
I
6
I
3
I
4
I
3
+I
5
I
3
+I
4
+I
6
I
4
+I
5
I
5
+I
6
I
6
0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 1 0 1 1
2 0 0 1 0 0 0 1 0 1 1 0
3 0 0 1 1 0 0 1 1 1 0 1
4 0 1 0 0 0 1 0 1 1 0 0
5 0 1 0 1 0 1 0 0 1 1 1
6 0 1 1 0 0 1 1 1 0 1 0
7 0 1 1 1 0 1 1 0 0 0 1
8 1 0 0 0 1 0 1 1 0 0 0
9 1 0 0 1 1 0 1 0 0 1 1
10 1 0 1 0 1 0 0 1 1 1 0
11 1 0 1 1 1 0 0 0 1 0 1
12 1 1 0 0 1 1 1 0 1 0 0
13 1 1 0 1 1 1 1 1 1 1 1
14 1 1 1 0 1 1 0 0 0 1 0
15 1 1 1 1 1 1 0 1 0 0 1
b) Codarea cu matricea H
cuvantul de cod obtinut are o forma sistematica : v=[c
0
c
1

c
2
i
3
i
4
i
5
i
6
]
se foloseste relatia de codare Hv
T
=0

'

+ + + +
+ + + +
+ +

1
1
1
]
1

5 4 3 4 2 1 0
6 5 4 5 3 2 1
6 4 3 2
6 5 4 3 2 1 0
0 ] [
0 0 1 0 1 1 1
0 1 0 1 1 1 0
1 0 1 1 1 0 0
i i i i c c c
i i i i i c c
i i i c
i i i i c c c
Se pot determina astfel cele 16 mesaje transmise:
Nr. C
0
C
1
C
2
I
3
I
4
I
5
I
6
0 0 0 0 0 0 0 0
1 0 1 1 0 0 0 1
2 1 1 0 0 0 1 0
3 1 0 1 0 0 1 1
4 1 1 1 0 1 0 0
5 1 0 0 0 1 0 1
6 0 0 1 0 1 1 0
7 0 1 0 0 1 1 1
8 1 0 1 1 0 0 0
9 1 1 0 1 0 0 1
10 0 1 0 1 0 1 0
11 0 0 1 1 0 1 1
12 0 1 1 1 1 0 0
13 0 0 1 1 1 0 1
14 1 0 0 1 1 1 0
15 1 1 1 1 1 1 1
Observatie: Spatiul cuvintelor cu sens este acelasi, indiferent de modul de codare, cu H
sau G, insa difera corespondenta intre secventa informationala de 4 biti si cuvintele cu
sens de 7 biti. De exemplu, cuvantul [1 1 1 1 1 1 1] corespunde in primul caz secventei
informationale [1 1 0 1], iar in al doilea caz secventei [1 1 1 1].
Decodarea codurilor ciclice. Formarea corectorilor
Pentru un cuvant receptionat v(x) se calculeaza corectorul :
) (
) ( '
) (
x g
x v
rest x z
i

indicele i indica tipul de eroare
i.
Se cauta intr-un tabel construit anterior corespondenta dintre corectorul z
i
(x) si cuvantul
eroare, respectiv
i
(x).
Se calculeaza v(x)=v(x)+
i
(x)
O metoda de a stabili tabelul mentionat anterior este sa se calculeze z
i
pe baza relatiei
) (
) (
) (
x g
x
rest x z
i
i

pentru diversi
i
(x).
Se observa ca exista un singur tip de corector z
i
pentru toate cuvintele eronate
i
(x).
Polinomul z(x) are gradul cel mult m-1, deci numarul acestor corectori este 2
m
. Rezulta
ca din multimea configuratiilor posibile de erori, respectiv de polinoame (x) in numar
de 2
n
, numai cele care pot fi puse in corespondenta biunivoca cu corectorii z(x), adica un
numar de 2
m
configuratii de erori pot fi corectate.
Realizarea codarii si a decodarii pentru detectia erorilor prin circuite de
multiplicare sau divizare
1) Codarea si decodarea prin multiplicare
v(x)=i(x)g(x) in acest caz se obtine un cod nesistematic.
Demodularea se face prin divizare:
) (
) ( '
) (
x g
x v
rest x z
2) Codarea si decodarea prin divizare
) (
) (
) (
) ( x i x
x g
x i x
rest x v
m
m
+ in acest caz se obtine un cod sistematic.
Decodarea se face ca in cazul precedent prin divizare.
Codarea prin circuite de divizare
Fie circuitul secvential urmator, care foloseste celule binare notate cu C
i
si sumatoare
modulo 2 interioare:
C
0
C
m-1
C
m-2
C
1
X
g
0
g
1
g
2
g
m-2
g
m-1
g
m
.
Y
m
m
m
m
x g x g x g x g g x g + + + + +

1
1
2
2 1 0
. .......... ) (
Pentru analiza circuitului vom folosi un operator de intarziere notat cu D care reprezinta
intarzierea de un tact pe care o introduce o celula binara.
Daca in registru se introduc coeficientii in ordine descrescatoare a indicilor: a
n
, a
n-1
, .......,
a
1
, a
0
, care corespund polinomului :
0
2
2
1
1
.. .......... a x a x a x a
n
n
n
n
n
n
+ + + +

, atunci
secventa aplicata la intrare utilizand operatorul D poate fi pusa sub forma :
n
n n n
D a D a D a D a
0
2
2
1
1
0
.. .......... + + + +

, cu interpretarea ca simbolul a
0
ajunge in
prima celula de intrare dupa n tacte.
Pentru a evidentia operatia efectuata de circuit se defineste functia de transfer T ca fiind
raportul dintre secventa de iesire Y si cea de intrare X:
X
Y
T
Pentru determinarea lui T se ia un caz particular: se presupune ca la intrare se aplica
g(x). Primul simbol aplicat la intrare ajunge la iesire dupa m tacte (g
m
=1). In acest
moment Y=g
m
D
m
si la intrarea tuturor celulelor va fi simbolul 0. La tactul m+1 iesirile
tuturor celulelor devin zero, deci Y=g
m
D
m
0 numai la tactul m, avand un singur termen:
m
m
m
m m m
m
m
D g g D g D g D g D g
D g
X
Y
T


+ +

+ + + +

. ..........
1
.. ..........
0 0
2
2
1
1
0
Daca D
-1
tinde la x atunci se poate afirma ca circuitul realizeaza divizarea cu g(x).
In cazul general, cand polinomul de intrare este de grad n, catul divizarii se obtine la
iesirea circuitului dupa n tacte, in timp ce restul va apare stocat in registru la tactul n.
Exemplu: n=7, m=3
C
0
C
2
C
1
X
g
0
g
2
Y
g
3

3 2
1 ) ( x x x g + +
a)Daca se alege polinomul de intrare :
2 5 6 7
) ( x x x x x u + + +
0 ) (
1
) (
2 4
2 3
2 5 6 7
+
+ +
+ + +
x r este restul x x
x x
x x x x
x y
Regulile de calcul pentru succesiunea starilor (C desemneaza starea celulei la momentul
anterior):

'

+
'
2
'
2
'
1 2
'
0 1
'
2 0
c y
c c c
c c
c u c

Catul :
2 4
x x +
Restul: 0
b)Daca se alege polinomul de intrare : 1 ) (
5 6 7
+ + + + x x x x x u
1 ) (
1
1
) (
2 2 4
2 3
5 6 7
+ + +
+ +
+ + + +
x x x r este restul x x
x x
x x x x
x y
Regulile de calcul pentru succesiunea starilor :

'

+
'
2
'
2
'
1 2
'
0 1
'
2 0
c y
c c c
c c
c u c

Catul :
2 4
x x +
Restul: 1
2
+ + x x
tact IN
(u)
C
0
C
1
C
2
OUT
(y)
Catul
0 0 0 0
1 1 1 0 0 0
2 1 1 1 0 0
3 1 1 1 1 0
4 0 1 1 0 1 X
4
5 0 0 1 1 0
6 1 0 0 0 1 X
2
7 0 0 0 0 0
8 0 0 0 0 0
Restul X
0
X
1
X
2
tact IN
(u)
C
0
C
1
C
2
OUT
(y)
Catul
0 0 0 0
1 1 1 0 0 0
2 1 1 1 0 0
3 1 1 1 1 0
4 0 1 1 0 1 X
4
5 0 0 1 1 0
6 0 1 0 0 1 X
2
7 1 1 1 0 0
8 1 1 1 1 0
Restul X
0
X
1
X
2