Documente Academic
Documente Profesional
Documente Cultură
Codurile Ciclice
Generaliti
Codurile ciclice sunt utilizate pentru protejarea informaiei mpotriva perturbaiilor.
Codurile ciclice sunt coduri bloc (toate cuvintele au aceeai lungime, codarea i
decodarea unui bloc este independent de a celorlalte).
Denumirea de ciclice! provine de la proprietatea pe care o au cuvintele de cod i
anume dac v
i
" #$$#$$# este cuv%nt de cod atunci i v
j
" $$#$$## i v
&
" ##$$#$$ sunt
cuvinte de cod . 'dic orice permutareciclic a unui cuv%nt de cod este un alt cuv%nt de cod .
(arametrii codului sunt n (bii) lungimea cuv%ntului de cod, & numrul de bii de
informaie per cuv%nt, m numrul de bii de control per cuv%nt i polinomul generator g()).
Dei poate fi facut i o codare nesistematic vom considera codul sistematic cei & bii de
informaie fiind situai pe poziiile cele mai semnificative, iar cei m bii de control pe poziiile
mai puin semnificative.
*iecrui cuv%nt de cod i se poate ataa un polinom de grad ma)im n+# .
v " v
n+#
v
n+,
v
n+-
......v
#
v
$
, coeficienii v
i
fiind coeficieni binari (din c%mpul binar .$,#/).
(olinomul asociat cuv%ntului va fi 0
v()) " v
n+#
)
n+#
1 v
n+,
)
n+,
1 v
n+-
)
n+-
1 .....1 v
#
) 1 v
$
(2.#)
(onderea unui cuv%nt reprezint numrul de # din cadrul cuv%ntului.
(olinomul de informaie este 0
i()) " i
&+#
)
&+#
1 i
&+,
)
&+,
1 i
&+-
)
&+-
1 .....1 i
#
) 1 i
$
(2.,)
de grad &+#.
(entru orice cuv%nt de cod este valabil relaia 0
( )
( )
$
) g
) v
rest =
(2.-)
Deci cuvintele de cod se aleg astfel nc%t s fie multiplii ai polinomului g ()) numit
polinomul generator al carui grad va fi deci m " n+&, (g
m
" #)0
g()) " g
m
)
m
1 g
m+#
)
m+#
1 g
m+,
)
m+,
1 .....1 g
#
) 1 g
$
(2.3)
4peraiile se fac modulo ()
n
1 #) .
Dac, codul este corector de o singur eroare atunci0
n " ,
m
5 #. (2.6)
Codurile ciclice corectoare de o eroare, av%nd distana de cod (distana 7amming
minim ntre cuvintele codului) d
7min
" -, sunt capabile s corecteze o eroare sau s detecteze
dou.
Codarea codului ciclic corector de o eroare
Codarea va fi prezentat n dou moduri nesistematic sau sistematic.
Cu relaia v()) " i())g()) se poate face codarea nesistematic, dar pentru c nu este
util n practic nu va fi luat n considerare .
#
8n continuare va fi deci prezentat codarea sistematic unde corespondena dintre i())
i v()) este dat prin relaia 0
( ) ( )
( )
( ) ) g
) ) i
rest ) ) i ) v
m
m
+ =
(2.9)
unde
( )
( ) ) g
) ) i
rest
m
g
m
"# g
m+#
g
m+, H..
g
#
g
$
"#
C
m
C
m+#
C
m+,
C
#
t@I
b
t@I
b
(
,
$ # , &"n+m n
$ # , &"n+m n
;
j
" I;
j+#
1 v
n+j
< (2.##)
unde ; reprezint starea registrului, < este o matrice coloan, iar I este matricea caracteristic
a registrului de deplasare cu reacie. Jle sunt de forma0
=
m
,
#
c
c
c
;
=
#
$
$
<
=
# + m , # $
g g g g
# $ $ $
$ # $ $
$ $ # $
I
(2.#,)
Kin%nd cont de observaia fcut mai sus rezult c ;
n
" $.
Consider%nd acela e)emplu
=atricea caracteristic, I, este0
=
$ # #
# $ $
$ # $
I
(2.#-)
<tiliz%nd relaiile (2.##) i (2.#-) pentru cazul n " 2 vom avea0
;
2
" v
9
I
9
<
1 v
6
I
6
< 1 v
3
I
3
< 1 v
-
I
-
< 1 v
,
I
,
< 1 v
#
I< 1 v
$
< " $ (2.#3)
Jfectu%nd calculele rezult0
=
$
#
$
< I
,
=
#
$
#
< I
,
,
=
#
#
$
< I
-
,
=
#
#
#
< I
3
,
=
$
#
#
< I
6
,
=
$
$
#
< I
9
(2.#6)
Lntroduc%nd (2.#6) n (2.#3) i efectu%nd calculele obinem0
v
,
" v
3
1 v
6
1 v
9
v
#
" v
-
1 v
3
1 v
6
v
$
" v
3
1 v
-
1 v
,
" v
3
1 v
-
1 v
3
1 v
6
1 v
9
" v
-
1 v
6
1 v
9
relaii identice cu relaiile (2.#$) deci cele dou proceduri de calcul ne+au dus la aceleai
rezultate .
Cuv%ntul de cod va fi v " v
9
v
6
v
3
v
-
v
,
v
#
v
$
.
Decodarea codului ciclic corector de o eroare
Decodarea codului ciclic cuprinde verificarea corectitudinii cuv%ntului recepionat0
M()) " vN
n+#
)
n+#
1 vN
n+,
)
n+,
1 ... 1 vN
#
) 1 vN
$
, (2.#9)
corectarea sau detectarea erorilor, dup destinaia codului i apoi selecia biilor de informaie.
3
>erificarea presupune calculul restului mpririi lui M()) la g()). Dac restul este $ se
decide0 cuv%nt corect recepionat. Dac nu, atunci se decide0 cuv%nt eronat.((rima decizie
poate fi fals, a doua nuO) (entru codurile detectoare decodarea ia sf%rit aici. (entru codurile
corectoare analiza restului permite determinarea poziiei erorilor. 'cest lucru presupune
e)istena unei corespondene biunivoce ntre resturile posibile i cuvintele eroare corectabile
de ctre codul dat.
Dac codul este corector de o eroare, atunci decodarea decurge astfel0
#+ se calculeaz corectorul z
n
cu formula0
< I < I v z
j
# + n
$ j
j
j
# + n
$ j
P
j
= =
= =
(2.#2)
unde
j
reprezint coeficienii polinomului eroare0
()) " M()) 1 v()) (2.#A)
,+ dac z " $ se decide c M()) este corect M()) " v())
+ dac z $ atunci z " I
r
<, unde r este indicele coeficientului eronat. Comparm z cu I
j
< i
gsim r. Corecia presupune scEimbarea valorii lui vN
r
.
Dac codul ciclic corecteaz mai multe erori, atunci decodarea se poate face pe seama
corespondenei amintite anterior.
a) Decodarea polinomial
=etoda const n mprirea lui M()) la g()). >a rezulta un polinom rest, r()). Dac
acesta este diferit de $, cuv%ntul recepionat este eronat i prin identificarea restului r()) cu
valorile din tabelul cuvinte eroare 5 corectori (vezi 'ne)e) se determin poziia erorii i se
realizeaz corecia.
;pre e)emplu fie 0 M()) " )
9
1 )
6
1 )
-
1 )
,
1 #. Calculm rest[ M()) @g())]0
)
9
1 )
6
1 )
-
1 )
,
1 # )
-
1 ) 1 #
)
9
1 )
3
1 )
-
)
-
1 )
,
1 ) 1 #
)
6
1 )
3
1 )
,
1 #
)
6
1 )
-
1 )
,
)
3
1 )
-
1 #
)
3
1 )
,
1 )
)
-
1 )
,
1 ) 1 #
)
-
1 ) 1 #
)
,
deci conform tabelului din ane) este eronat M
,
. ;cEimb%nd valoarea bitului M
,
rezult 0
M()) " )
9
1 )
6
1 )
-
1 #.
b) Decodor ciclic cu CDC (decodarea matricial)
6
g
m+#
g
m+#
g
m+,
g
m+,
g
#
g
#
LDJDIL*LC'CJ ;I'CJ
$ $ $ #
LDJDIL*LC'CJ ;I'CJ
$ $ $ #
'DD 'DD
'DD
'DD
C
#
C
#
C
m+#
C
m+#
(
#
(
,
(
#
(
,
C
m
C
m
v
n I
b
n+#
n+#
,n
,n
t @ I
b
t @ I
b
(
,
(
#
H..
H..
H..
H..
intr i n primul decodor, ieirea acestuia fiind $ pentru c (
,
este ncEis. 8n urmtoarele n
tacte cuv%ntul , va intra prin poarta (
,
n al doilea decodor care are ieirea $ deoarece (
#
este
ncEis, n acest timp cuv%ntul # prsete memoria trec%nd prin sumator i este corectat de
primul decodor care identific starea $$.....# i care are acces la sumator prin (
,
.
Dup n " 2 tacte starea registrului va fi0
;N
2
" vN
9
I
9
<
1 vN
6
I
6
< 1 vN
3
I
3
< 1 vN
-
I
-
< 1 vN
,
I
,
< 1 vN
#
I< 1 vN
$
< (2.#B)
care nu va mai fi $ dec%t n cazul n care nu avem eroare.
Dac eroarea afecteaz bitul v
r
starea registrului de deplasare cu reacie dup intrarea
ntregului cuv%nt este0
;N
2
" vN
9
I
9
<
1 vN
6
I
6
< 1 .... 1 vN
r
I
r
< 1 .... 1 vN
#
I< 1 vN
$
< (2.,$)
Deoarece la emisie ;
2
" $ i vN
j
" v
j
pentru j r i vN
r
" v
r
1 # rezult0
;N
2
1 ;
2
" ;N
2
" I
r
< " z (2.,#)
(e durata urmtoarelor n " 2 tacte CDC din prima subscEem va evolua numai sub
aciunea semnalului de reacie i dup n+r+# tacte se va ajunge n starea0
;N
21n+r+#
" I
n+r+#
;N
2
" I
n+#
< "
$
$
#
(2.,,)
8n acela timp printr+o deplasare cu n+r+# tacte eroarea care se afla n celula r va ajunge
n celula n+#. Detectorul va sesiza starea ;N
21n+r+#
fi) i prin poarta (
,
care este ncEis va
emite semnalul de corecie (blocul LDJDIL*LCQ genereaz un #
R
) care se nsumeaz cu bitul
eronat aflat n celula n+#, astfel la ieirea sumatorului final se va obine cuv%ntul corectat.
Desfurarea lucrrii
#. Culai programul de pe calculator aleg%nd butonul Demonstraie! de la codul ciclic
i se urmrete o codare i o decodare.
,. 'legeiv un polinom generator i secvena de informaie i efectuai o codare, apoi
aleg%nd polinomul generator i biii recepionai o decodare. >erificai apoi rezultatul cu
ajutorul calculatorului.
-. Ra sf%ritul lucrrii de laborator se efectueaz testul de verificare a cunotinelor
acumulate prin intermediul calculatorului. Iestul const n a rspunde la 6 ntrebri teoretice,
fiecare av%nd un rspuns corect din cele cinci propuse, i efectuarea unei codri i a unei
decodri pornind de la polinomul generator i secvena de informaie respectiv secvena
recepionat generate aleator de calculator.
2