Curs Coduri Ciclice
-
Upload
teodor-chirica -
Category
Documents
-
view
222 -
download
0
Transcript of Curs Coduri Ciclice
-
8/3/2019 Curs Coduri Ciclice
1/10
Coduri ciclice
Codurile ciclice sunt coduri bloc in care cele n simboluri din cuvant sunt considerate cafiind coeficientii unui polinom de grad n-1:
]...................[}1,0{,....................)(
1210
1
1
2
210
=
++++=
n
i
n
n
aaaavaxaxaxaaxv
Cuvantul de cod fiind identificat cu un polinom, asupra lui se pot efectua operatiimatematice mai complexe, pe langa operatia de adunare si inversa ei fiind definita sioperatia de inmultire si inversa ei.
Ideea de baza a mecanismului de detectie sau corectie consta in alegerea polinoamelordivizibile cu un polinom dat g(x) ca fiind cuvinte de cod (cuvinte cu sens). Polinomulg(x) se numestepolinom generatoral codului. Daca in procesul de transmisiune nus-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 restulobtinut se pot trage concluzii asupra pozitiei in care s-au introdus erorile, codul permitecorectarea lor.
Codul se numeste ciclic deoarece daca ]...................[ 1210 = naaaav este un cuvant
de cod, atunci si toate cuvintele de forma]...............................[
10121 ++= iniii aaaaaav 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 2n
cuvinte. Dintre acestea se considera ca 2k cuvinte sunt cuvinte de cod (cu sens). Altfelspus, 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 unpolinom p(x) de grad n de forma 1)( += nxxp , iar multimea cuvintelor cu sens (ceformeaza un ideal) este generata de un polinom g(x) numit polinom generator, de gradm, de forma:
m
m
m
m xgxgxgxggxg +++++=
1
1
2
210 ...........)(
Se poate arata ca intre cele doua polinoame p(x) si g(x) exista relatia:)()()( xhxgxp =
,undek
kxhxhxhhxh ++++= ............)(2
210 .
Orice cuvant de cod poate fi exprimat printr-o combinatie liniara a urmatorilor k vectoriindependenti : )(.,..........),(),(),( 12 xgxxgxxxgxg k .Cu alte cuvinte, un cuvant de cod se gaseste in spatiul linie al matricii generatoare G:
-
8/3/2019 Curs Coduri Ciclice
2/10
=
=
m
mm
mm
m
k gggg
gggg
gggg
gggg
xgx
xgx
xx g
xg
G
. . . . . .. . . .. . . . . . . . . .. . . . . . . . . .000
. . . . .. . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .
. . . . .. . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .
. . . . .. . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .
0. . .. . . . . .0. . . . . . . . . .00
0. . . .. . . . . .00. . . . . . . . . .0
0. . .. . . . . .000. . . . . . . . . .
)(
.
.
.
)(
)(
)(
210
110
110
210
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 matriceageneratoare G, respectiv structura codului ciclic. Matricea generatoare G are k vectorilinie liniar independenti cu care se pot forma 2k combinatii liniare, respectiv 2k cuvintede cod.
Codarea cuvintelor de cod ca elemente in multimea cuvintelor cu sensgenerata de g(x)
Fie g(x) polinomul generator al codului, de grad m, si i(x) polinomul de grad k=n-m careare drept coeficienti simbolurile de informatie:
1
11
1
11
..........)(
..........)(
++
+
+++=
+++=
k
kmmm
k
nknkn
xaxaaxi
sauxaxaaxi
A) Determinarea simbolurilor de control folosind g(x)
Polinomul simbolurilor de control se noteaza cu :
1
1
2
210 ...............)(
++++=
m
m xaxaxaaxc
-
8/3/2019 Curs Coduri Ciclice
3/10
Deci cuvantul de cod se scrie : )()()( xixxcxv m+=
Impartind expresia de mai sus prin g(x) rezulta:)(
)(
)(
)(
)(
)(
xg
xix
xg
xc
xg
xv m+=
Termenul )(xixm reprezinta termenii cuvantului de cod care contin informatia
transmisa. Ultimul termen se rescrie:)(
)()(
)(
)(
xg
xrxq
xg
xixm+= , unde q(x) reprezinta catul
(de grad < k ), iar r(x) reprezinta restul (de grad < m) impartirii lui )(xixm la g(x).
)(
)()()()()()()(
)(
)(
)(
)()(
xg
xixrestxrxcxixxrxgxq
xg
xix
xg
xrxq
mm
m
==+=+= .
Astfel, polinomul simbolurilor de control se obtine prin divizarea polinomuluisimbolurilor de informatie multiplicat cu xm prin g(x). In acest fel se obtine un cuvant decod SISTEMATIC.
B) Ce-a de-a doua metoda pentru determinarea simbolurilor de control se bazeaza peintroducerea matricii generatoare G definita anterior, avand k linii si n coloane. Codareaare loc cu ajutorul relatiei :
v=iG , unde i=[am am+1 ........................ am+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):
)(mod0)()()()()(
)(
1
)(
)()()()()()(
xpxhxgxqxhxv
xg
x
xg
xpxhxhxqxgxv
n
==
+===
Sau, sub forma matriceala: HvT= 0, unde matricea H are forma (m linii, n coloane):
=
000. . . .. . . . . . . . . .. . . . . . . . . .0. . . . . . . . .. . . . .. . . . . . . . . .
. . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .
00. . .. . . . . . . . . .. . . . .0. . . . .. . . . . . . . . .0
0. . . . .. . . . . . .. . . . . . . . . .0. . . . . . . .. . . . . . . . . .0
. . . . . . . . . .. . . . . . .. . . . . . . . . .0. . . . .. . . . . . . . . .. . . . . . . . . .0
0
021
01
0
hh
hhhh
hhh
hh
H
k
kkk
kk
k
Elementele hi sunt coeficientii polinomuluik
kxhxhxhhxh ++++= ............)(2
210
completat pana la gradul n-1 cu coeficienti nuli. Matricea H are m linii liniar
-
8/3/2019 Curs Coduri Ciclice
4/10
independente astfel incat relatia HvT= 0 este echivalenta cu m ecuatii liniare cedetermina cele m simboluri de control in functie de cele k simboluri de informatie.
De asemenea, se poate arata ca GHT=HGT.
Exemplu:
Se transmit N=16 mesaje pe un canal afectat de perturbatii, utilizand un cod cicliccorector de o eroare.
Se pot determina parametrii codului: pentru a transmite 16 mesaje sunt necesari celputin 4 biti de informatie, adica:
4162 = kk
351212 =+=+++ mmkmn mm gradul polinomului g(x) va fi deci 3
743 =+=+= kmn rezulta ca polinomul p(x) va avea forma: 1)( 7 +=xxp
Polinomul generator se poate alege dintre divizorii lui p(x): 1)( 23 ++= xxxg
Polinomul h(x) de grad k=m-n se determina din relatia p(x)=g(x)h(x)
11
1)(
234
23
7
+++=
++
+= xxx
xx
xxh
Remember impartirea de polinoame :
///
1
1
1
1
1
11
23
23
245
345
356
46
234467
237
++
++
++
+++
++
++
+++++
+++
xx
xx
xxx
xxx
xxxxx
xxxxxx
xxx
Codarea se poate realiza fie cu matricea G fie cu matricea H:
a) codarea cu matricea G
G(k,n)=G(4,7)
-
8/3/2019 Curs Coduri Ciclice
5/10
],,,,,,[
1101000
0110100
0011010
0001101
][
1101000
0110100
0011010
0001101
6655464353436543 iiiiiiiiiiiiiiiii GvG
Cele 16 mesaje transmise vor fi codate corespunzator, ca in tabelul de mai jos:
Nr. I3 I4 I5 I6 I3 I4 I3+I5 I3+I4+I6 I4+I5 I5+I6 I60 0 0 0 0 0 0 0 0 0 0 01 0 0 0 1 0 0 0 1 0 1 12 0 0 1 0 0 0 1 0 1 1 0
3 0 0 1 1 0 0 1 1 1 0 14 0 1 0 0 0 1 0 1 1 0 05 0 1 0 1 0 1 0 0 1 1 1
6 0 1 1 0 0 1 1 1 0 1 07 0 1 1 1 0 1 1 0 0 0 1
8 1 0 0 0 1 0 1 1 0 0 09 1 0 0 1 1 0 1 0 0 1 1
10 1 0 1 0 1 0 0 1 1 1 011 1 0 1 1 1 0 0 0 1 0 1
12 1 1 0 0 1 1 1 0 1 0 013 1 1 0 1 1 1 1 1 1 1 114 1 1 1 0 1 1 0 0 0 1 015 1 1 1 1 1 1 0 1 0 0 1b) Codarea cu matricea H
cuvantul de cod obtinut are o forma sistematica : v=[c0 c1 c2 i3 i4 i5 i6]
se foloseste relatia de codare HvT=0
-
8/3/2019 Curs Coduri Ciclice
6/10
++=++=
++=++=
++=
=
5434210
6545321
6432
6543210 0][
0010111
0101110
1011100
iiiiccc
iiiiicc
iiic
iiiiccc
Se pot determina astfel cele 16 mesaje transmise:
Nr. C0 C1 C2 I3 I4 I5 I60 0 0 0 0 0 0 01 0 1 1 0 0 0 12 1 1 0 0 0 1 03 1 0 1 0 0 1 14 1 1 1 0 1 0 05 1 0 0 0 1 0 16 0 0 1 0 1 1 07 0 1 0 0 1 1 1
8 1 0 1 1 0 0 09 1 1 0 1 0 0 110 0 1 0 1 0 1 011 0 0 1 1 0 1 112 0 1 1 1 1 0 013 0 0 1 1 1 0 114 1 0 0 1 1 1 015 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 cusens de 7 biti. De exemplu, cuvantul [1 1 1 1 1 1 1] corespunde in primul caz secventeiinformationale [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 :
)(
)(')(
xg
xvrestxzi = indicele i indica tipul de eroare i.
-
8/3/2019 Curs Coduri Ciclice
7/10
Se cauta intr-un tabel construit anterior corespondenta dintre corectorul zi(x) si cuvantuleroare, respectiv i(x).
Se calculeaza v(x)=v(x)+ i(x)
O metoda de a stabili tabelul mentionat anterior este sa se calculeze zi pe baza relatiei
)(
)()(
xg
xrestxz ii
= pentru diversi i(x).
Se observa ca exista un singur tip de corector zi pentru toate cuvintele eronate i(x).Polinomul z(x) are gradul cel mult m-1, deci numarul acestor corectori este 2m. Rezultaca din multimea configuratiilor posibile de erori, respectiv de polinoame (x) in numarde 2n, numai cele care pot fi puse in corespondenta biunivoca cu corectorii z(x), adica unnumar de 2m configuratii de erori pot fi corectate.
Realizarea codarii si a decodarii pentru detectia erorilor prin circuite demultiplicare 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:)(
)(')(
xg
xvrestxz =
2) Codarea si decodarea prin divizare
)()(
)()( xix
xg
xixrestxv 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 Ci si sumatoare
modulo 2 interioare:
C0 Cm-1Cm-2C1X
g0 g1 g2 gm-2 gm-1 gm
.
m
m
m
mxgxgxgxggxg +++++=
1
1
2
210...........)(
-
8/3/2019 Curs Coduri Ciclice
8/10
Pentru analiza circuitului vom folosi un operator de intarziere notat cu D care reprezintaintarzierea de un tactpe care o introduce o celula binara.
Daca in registru se introduc coeficientii in ordine descrescatoare a indicilor: an, an-1, .......,
a1, a0, care corespund polinomului : 02
2
1
1 ............ axaxaxan
n
n
n
n
n ++++
, atunci
secventa aplicata la intrare utilizand operatorul D poate fi pusa sub forma :
n
nnnDaDaDaDa 0
2
2
1
1
0 ............ ++++ , cu interpretarea ca simbolul a0 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
YT =
Pentru determinarea lui T se ia un caz particular: se presupune ca la intrare se aplicag(x). Primul simbol aplicat la intrare ajunge la iesire dupa m tacte (gm=1). In acestmoment Y=gmDm si la intrarea tuturor celulelor va fi simbolul 0. La tactul m+1 iesirile
tuturor celulelor devin zero, deci Y=gmDm0 numai la tactul m, avand un singur termen:
m
m
m
mmm
m
m
DggDgDgDgDg
Dg
X
YT
++
=
++++
==
...........
1
............ 002
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 laiesirea circuitului dupa n tacte, in timp ce restul va apare stocat in registru la tactul n.
Exemplu: n=7, m=3
C0 C2C1X
g0 g2 g3
321)( xxxg ++=
a)Daca se alege polinomul de intrare : 2567)( xxxxxu +++=
0)(1
)(24
23
2567
=+=
++
+++= xresterestulxx
xx
xxxxxy
Regulile de calcul pentru succesiunea starilor (C desemneaza starea celulei la momentulanterior):
-
8/3/2019 Curs Coduri Ciclice
9/10
=
+=
=
+=
'
2
'
2
'
12
'
01
'
20
cy
ccc
cc
cuc
Catul : 24 xx +Restul: 0
b)Daca se alege polinomul de intrare : 1)(567
++++= xxxxxu
1)(1
1)(
224
23
567
++=+=
++
++++= xxxresterestulxx
xx
xxxxxy
Regulile de calcul pentru succesiunea starilor :
=
+=
=
+=
'
2
'
2
'
12
'
01
'
20
cy
ccc
cc
cuc
Catul : 24 xx +Restul: 12 ++xx
tact IN(u)
C0 C1 C2 OUT(y)
Catul
0 0 0 01 1 1 0 0 0
2 1 1 1 0 03 1 1 1 1 04 0 1 1 0 1 X4
5 0 0 1 1 06 1 0 0 0 1 X2
7 0 0 0 0 08 0 0 0 0 0Restul X0 X1 X2
tact IN(u)
C0 C1 C2 OUT(y)
Catul
0 0 0 01 1 1 0 0 02 1 1 1 0 03 1 1 1 1 0
4 0 1 1 0 1 X4
5 0 0 1 1 06 0 1 0 0 1 X2
7 1 1 1 0 08 1 1 1 1 0Restul X0 X1 X2
-
8/3/2019 Curs Coduri Ciclice
10/10