Sunteți pe pagina 1din 7

7.

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

semnific restul mpririi polinomului i()):)


m
la g()).
4peraia de adunare din ecuaia (2.9) este sum modulo , (;'< e)clusiv), iar
coeficienii polinoamelor sunt din c%mpul binar .$,#/.
=atematic codarea poate fi facut polinomial sau matricial.
a). (olinomial
Codarea va fi prezentat printr+un e)emplu, put%nd fi uor generalizat.
*ie g()) " )
-
1 ) 1 #. Deci m " - i cu relaia ,
m
5 # " n rezult c n " 2 de unde & " n
5 m " 3. >om avea ca atare 3 bii de informaie i " v
n+#
v
n+,
v
n+-
v
n+3
cu polinomul asociat 0
i()) " v
n+#
)
-
1 v
n+,
)
,
1 v
n+-
) 1 v
n+3


(2.2)
i deci i()):)
m
" (v
n+#
)
-
1 v
n+,
)
,
1 v
n+-
)
-
1 v
n+#
) 1 v
n+3
) :)
-
" v
n+#
)
9
1 v
n+,
)
6
1 v
n+-
)
3
1 v
n+3
)
-
?iii de control sunt coeficienii restului mpririi lui i()):)
m
@g()).
v
n+#
)
9
1 v
n+,
)
6
1 v
n+-
)
3
1 v
n+3
)
-
)
-
1 ) 1 #
v
n+#
)
9
1 v
n+#
)
3
1 v
n+#
)
-
v
n+#
)
-
1 v
n+,
)
,
1 (v
n+-
1 v
n+#
)) 1 (v
n+3
1 v
n+,
1 v
n+#
)

@ v
n+,
)
6
1 (v
n+-
1 v
n+#
))
3
1 (v
n+3
1 v
n+#
))
-
v
n+,
)
6
1 v
n+,
)
-
1 v
n+,
)
,
@ (v
n+-
1 v
n+#
))
3
1 (v
n+3
1 v
n+,
1 v
n+#
))
-
1 v
n+,
)
,
(v
n+-
1 v
n+#
))
3
1 (v
n+-
1 v
n+#
))
,
1(v
n+-
1 v
n+#
))
@ (v
n+3
1 v
n+,
1 v
n+#
))
-
1 (v
n+-
1 v
n+,
1 v
n+#
))
,
1 (v
n+-
1 v
n+#
))
(v
n+3
1 v
n+,
1 v
n+#
))
-
1 (v
n+3
1 v
n+,
1 v
n+#
)) 1 v
n+3
1 v
n+,
1 v
n+#
(v
n+-
1 v
n+,
1 v
n+#
))
,
1 (v
n+3
1 v
n+-
1 v
n+,
)) 1 v
n+3
1 v
n+,
1 v
n+#

r()) " (v
n+-
1 v
n+,
1 v
n+#
))
,
1 (v
n+3
1 v
n+-
1 v
n+,
)) 1 v
n+3
1 v
n+,
1 v
n+#
(2.A)
, unde r()) este restul mpririi .
Conform relaiei (2.9) se obine 0
v()) " v
n+#
)
9
1 v
n+,
)
6
1 v
n+-
)
3
1 v
n+3
)
-
1 (v
n+-
1 v
n+,
1 v
n+#
))
,
1 (v
n+3
1 v
n+-
1 v
n+,
)) 1 v
n+3
1
v
n+,
1 v
n+#

(entru c n " 2 i v()) este de forma 0
v()) " v
9
)
9
1 v
6
)
6
1 v
3
)
3
1 v
-
)
-
1 v
,
)
,
1 v
#
) 1 v
$
(2.B)
i in%nd cont de relaia (2.A) simbolurile de control vor fi date de0
v
,
" v
3
1 v
6
1 v
9
,
v
#
" v
-
1 v
3
1 v
6
(2.#$)
v
$
" v
-
1 v
6
1 v
9
'adar cuv%ntul de cod va fi v " v
9
v
6
v
3
v
-
v
,
v
#
v
$
unde primii 3 sunt biii de informaie, iar
ultimii - cei de control.
b). Codor ciclic cu CDC (codarea matricial)
8n figura 2.# este prezentat un codor ciclic care implementeaz relaia de codare (2.9).
;ecvena de informaie, i()), intr n codor n primele & tacte, primul bit fiind cel mai
semnificativ i, de asemenea, este conectat i la ieire. (entru aceasta, ntreruptorul #,
format din poarta 'DD+# este ncEis iar ntreruptorul ,, format din poarta 'DD+, este
descEis (vezi semnalele de comand (
#
i (
,
).
8n urmtoarele m tacte ntreruptorul # este descEis iar ntreruptorul , este ncEis,
astfel c secvena r, generat de CDC, este livrat la ieirea v.


a) Codor ciclic
CDC F







b) ;emnalele de validare
a porilor G'DD!









*igura 2.# Codor ciclic cu CDC i semnalele de comand
Obs. Se observ c, n ultimele k tacte, la intrrile sumatorului (care adun intrarea RDR-
lui cu reacia sa) se regsete acelai semnal, astfel c, n aceste k tacte, n celula
k
se va
introduce o secven nul care !cur" registrul #entru un nou cuv$nt de cod%
Din funcionarea registrului de deplasare cu reacie rezult relaia
-
(
#

i())
v())

(
#
(
,
'DD+#
'DD+,

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

celula $ celula n+#














a) scEema F








b);emnalele de validare a porilor 'DD F
*igura 2., Decodor ciclic corector de o eroare
8n figura 2., este prezentat structura unui decodor ciclic corector de o eroare.
?iii cuv%ntului recepionat vor intra n scEem unul dup altul n ordine, ncep%nd cu
bitul vN
n+#
.
;cEema de decodare conine un registru de deplasare (blocul GnI
b
! este un registru de
nt%rziere cu n celule) cu rol de memorie, care pstreaz cuv%ntul recepionat care intr pas cu
pas i dou subscEeme cu CDC pentru corecie care funcioneaz n contratimp. (rocedura de
decodare dureaz ,n tacte. 8n primele n tacte n memorie intr cuv%ntul # care prin poarta (
#
9

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

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