Professional Documents
Culture Documents
Moraru Andrei-Lucian
Clbescu Ctlin
grupa 443A
1
Cuprins
Capitolul 1 Noiuni introductive despre informaie i erori (Moraru Andrei-Lucian).............3
Bibliografie ..............................................................................................................................22
2
Capitolul 1 Noiuni introductive despre informaie i
erori
3
i=
unde prin P am notat probabilitatea acelui rezultat. Dac un experiment poate avea N rezultate
posibile, atunci informaia devine:
i=
O perturbaie este un semnal care modific n mod necontrolat semnalul aleator util
care transmie informaia.
Un mesaj este un semnal care corespunde unei realizri particulare printr-un ansamblu
de idei, imagini sau date. El poate mbrca o hain fizic diferit.
O surs este un mecanism prin care dintr-o mulime de mesaje posibile se alege n
mod imprevizibil un mesaj particular destinat a fi transmis unui corespondent.
S - surs de mesaje
4
CoC - Codor de canal (protecie contra perturbaiilor)
M - modulator
P - Perturbaii
U - Utilizator
spectrul semnalului.
Prin codare nelegem stabilirea unei corespondene ntre dou limbaje, aceast
coresponden asigurnd trecerea de la un limbaj A la un limbaj B. Decodarea este operaia
invers.
Entropia unei surse este informaia medie pe simbol. Medierea se face ponderat, iar
formula de calcul este urmtoarea :
Regulile de calcul sunt cunoscute i la recepie i prin verificarea lor se stabilete dac
s-au introdus erori i se i corecteaz daca sistemul permite acest lucru. Corecia nseamn
gsirea poziiei simbolurilor care s-au transformat din 0 n 1 sau din 1 n 0 i schimbarea
simbolului recepionat cu valoarea opus.
1. coduri bloc: grup, ciclice (folosesc polinoame i sunt utilizate foarte mult n
detecia i corecia erorilor)
2. convoluionale
6
Tipurile de erori care apar la transmisiunile de date sunt:
erorile simple, n cazul crora este alterat valoarea unui singur simbol;
erorile duble, pentru care se modific valorile a 2 simboluri;
erorile triple, caz n care sunt transformate 3 simboluri;
pachete de erori, care reprezint succesiuni de simboluri n care primul i
ultimul sunt eronate, iar celelalte simboluri pot fi eronate sau nu.
Mecanismul de detecie i corecie a erorilor const n trei etape. n prima din ele se
realizeaz detecia, celelalte dou fiind rezervate coreciei. Pentru detecie se aplic un
operator asupra vectorului , unde prin am definit vectorul eroare, n urma creia
se calculeaz un vector corector numit sindrom i notat . Valorile lui confirm sau infirm
transmisia corect a lui . Dac dorim s avem i corecie, trebuie aplicat un alt operator pe
vectorii corectori n urma cruia s rezulte vectorul transmis . Etapa de detecie este identic
pentru toate sistemele, ns cea de corecie este diferit de la un cod la altul.
Pentru detecia erorilor sunt folosite, pe lng codurile menionate mai sus, alte 2
metode:
Paritatea unidimensional.
Paritatea bidimensional.
7
Aceast tehnic detecteaz erorile simple(modificarea valorii unui singur bit). De fapt
detecteaz erorile n orice numr impar de bii, dar nu realizeaz i detectia unui numr de
erori pare.
8
Capitolul 2 Coduri polinomiale. Codul Reed-
Solomon
Codurile polinomiale sunt un exemplu de coduri ciclice care trateaz irurile de bii de
1 i 0 n relaie cu coeficienii unui polinom, dup cum se va arta puin mai jos. Codurile
ciclice constituie un caz particular al codurilor grup. Denumirea de ciclic provine de la
faptul c orice permutare ciclic a unui cuvnt de cod valid produce tot un cuvnt de cod
valid. Permutarea cilic a unui cuvnt se obine lund primul element i punndu-l la sfritul
cuvntului.
Formaliznd, fie cuvntul de cod vn-1vn-2vn-3 . . .v3v2v1v0. Un cuvnt obinut printr-o
permutare ciclic din acesta este vn-2vn-3vn-4 . . .v2v1v0vn-1. Dup mai muli pai, prin pemutri
consecutive se poate obine cuvntul : v0vn-1vn-2 . . .v3v2v1.
De exemplu dac 10111 este un cuvnt de cod (conform unui cod cilcic), atunci i
01111 este un cuvnt de cod, de altfel ca i 11110, 11101, 11011.
Lungimea cuvntului de cod se noteaz cu n. Dintre cele n simboluri k sunt de
informaie, iar m = n k de control. Dac n cazul codurilor grup reprezentarea era sub form
de vectori, n cazul codurilor ciclice reprezentarea este sub form de polinom.
Polinomul de informaie i(x) are gradul k 1 i este de forma:
i(x) =
unde [ , , ... ] sunt simbolurile de informaie.
Cuvntul de cod este reprezentat printr-un polinom de grad n 1:
v(x) =
9
ireductibil: acest lucru presupune c nu exist nici un polinom de grad nenul i mai
mic dect m care s fie divizor al lui g(x)
dac este o rdcin a lui g(x) (g() = 0) atunci cel mai mic ntreg T pentru care
i = i+T este T = 2m 1 = 2grad(g) 1.
De reinut este c polinoamele primitive sunt listate (cunoscute), iar de importan
practic este faptul c coeficienii de grad maxim (gm) i minim (g0) sunt nenuli: gm = 1,
g0 = 1.
Echivalent matricei de control de la coduri grup, n cazul codurilor ciclice, se definete
un polinom de control, h(x). Acesta are gradul k 1 i se afl n relaia urmtoare cu
polinomul generator:
g(x)h(x) = xn + 1
Dup cum am spus, codurile polinomiale leag un ir de bii de 1 i 0 de coeficienii
unui polinom. Se tie c pentru un numr reprezentat n binar, adic folosind bii de 1 i 0,
utilizeaz puterile lui 2 pentru a-i reprezenta valoarea numeric. Pentru un cuvnt de cod
binar, biii de 1 semnific puterile respective ale lui x care vor aprea n reprezentarea
polinomului. Pentru a ilustra acest concept, s dm un exemplu. Fie cuvntul de cod 110101.
Acesta are bii de 1 pe poziiile corespunztoare puterilor 5, 4, 2 i 0 ale lui 2, prin urmare
polinomul asociat acestui cod este:
p(x) = x5 + x4 + x2 +1
Aritmetica polinomial este de tip modulo 2. Nu exist transport la adunare i nici
mprumut la scdere (adunrile i scderile sunt identice cu SAU EXCLUSIV ) iar scderea
este realizat modulo 2.
Codul Reed-Solomon
10
reprezentate cu ajutorul cmpului binar, din punct de vedere al codrii i decodrii RS sunt
indivizibile.
Cuvintele de cod RS au aceeai structur ca i codurile ciclice iar relaia de codare este
aceeai cu cea folosit n codurile ciclice:
11
Proprietile codului RS
Codul Reed-Solomon este un cod bloc liniar de lungime n pe un cmp finit F cu dimensiune k i
distana Hamming minim n-k+1. Codul Reed-Solomon este optimal n sensul c distana minim are
valaorea maxim posibil pentru un cod liniar de dimensiune (n, k).
Abilitile de corecie a acestui cod sunt determinate de distana minim sau de mrimea n-k, care
reprezint redundana din bloc. Dac poziiile simbolurilor eronate nu sunt cunoscute, atunci un cod RS
poate corecta pn la (n-k)/2 simboluri eronate. Altfel spus, el poate corecta un numr de erori egal cu
jumtate din numrul de simboluri redundante adugate blocului. Uneori, poziiile eronate sunt cunoscute
dinainte, aceste poziii purtnd denumirea, n limba englez, de erasures. Un cod RS poate corecta de dou
ori mai multe erasures-uri dect erori iar mai general vorbind, orice combinaie de erasures i erori poate fi
corectat att timp ct se respect condiia 2*E+S n-k, unde cu E am notat numrul de erori iar cu S am
notat numrul de erasures din bloc.
n practic, pentru codurile RS se folosete un cmp finit cu 2m elemente. n acest caz fiecare simbol
poate fi reprezentat ca o valoare pe un numr m de bii. Emitorul transmite datele sub forma unor blocuri
codate iar numrul de elemente dintr-un bloc este n=2m-1. Un caz particular i des utilizat este cel pentru care
m=8. n ceea ce privete dimensiunea k, aceasta reprezint un parametru care d numrul de simboluri de
date dintr-un bloc. De obicei k se alege 223, astfel c ntr-un bloc de date vom avea 223 simboluri de date i
32 de simboluri de paritate, toate reprezentate pe 8 bii pentru cazul cnd m=8. Un astfel de cod este capabil
s corecteze pn la 16 erori de simbol per bloc.
Aceste proprieti ale codurilor RS le fac s se plieze excelent pe aplicaiile n care erorile pot aprea
sub forma unor burst-uri. Acest lucru se ntmpl deoarece pentru cod nu are importan ci bii sunt eronai.
Dac mai muli bii ai unui simbol sunt eronai, acest lucru va fi contabilizat drept o singur eroare. De
menionat este c dac avem de-a face cu iruri de date pentru care erorile sunt aleatoare sau nu conin
grupuri de mai muli bii, atunci codurile Reed-Solomon sunt o alegere proast n comparaie cu un cod
binar.
Codul Reed-Solomon, ca i un cod convoluional, este transparent. Acest lucru nseamn c chiar
dac simbolurile canalului au fost inversate la un moment dat n timpul transmisier, decodoarele continu s
funcioneze. Rezultatul va fi reprezentat de datele originale, dar inversate. Pe de alt parte, aceast
transparen dispare n cazul n care codul este scurtat. Biii lips trebuie completai cu valori de 0 sau 1 n
funcie de tipul datelor din punct de vedere al complementrii lor. Acest lucru trebuie stabilit nainte de a
ncepe decodarea.
Aplicaii i utilizri ale codurilor Reed-Solomon
Codurile Reed-Solomon au ajuns s aib o utilizare foarte variat de-a lungul timpului, de la
comunicaii n spaiu la electronice i electrocasnice. Ca i exemple, ele sunt intens folosite la realizarea CD-
12
urilor, DVD-urilor, Blu-Ray-urilor, n comunicaii de date precum DSL i WiMAX, n sisteme de broadcast
precum DVB i ATSC i n aplicaii de calculatoare cum ar fi sistemele RAID 6.
n continuare vom prezenta cteva aplicaii mai deosebite ale acestor coduri.
Prima dintre ele este cea de stocare a datelor. Codurile RS sunt utilizate aici pentru a corecta erorile
de burst asociate defectelor media. Codarea RS este una din prile cheie de realizare a compact disc-urilor.
A fost pentru prima dat cnd s-a folosit o tehnic de codare cu corecie a erorilor n produsele de larg
consum iar DVD-urile i DAT-urile folosesc acelai principiu. n cazul CD-ului, 2 straturi de coduri RS
separate de o suprafa de ntreesere convoluional cu 28 de direcii formeaz o schem numita Cross-
Interleaved Reed-Solomon Coding (CIRC). Primul element al acestei scheme este un cod RS interior de
dimensiune mic (32, 28), care este obinut prin micorarea unui cod de dimensiune (255,251) cu simboluri
pe 8 bii. Acest cod poate corecta pn la 2 bytes de erori pentru un bloc de 32 de bytes dimensiune. Pe lng
aceasta, marcheaz drept erasures toate blocurile care au mai mult de 2 bytes de erori n ele. Blocurile
decodate de 28 de bytes, cu indicatorii de erasures, sunt desfcute apoi de dispozitivul de dentreesere n
blocuri diferite ale codului exterior de dimensiune (28,24). Datorit dentreeserii, un bloc de dimensiune 28
bytes al codului interior se transform n 28 de blocuri de dimensiune 1 byte, unul fiecare din cele 28 de
blocuri ale codului exterior, fapt ce permite foarte uor corecia acestor blocuri. Rezultatul final este acela c
un CIRC poate corecta burst-uri de dimensiune de pn la 4000 de bii.
O a doua aplicaie este n codurile de bare bidimensionale (PDF-417, MaxiCode, Datamatrix, QR
Code, Aztec Code). Aceste coduri de bare folosesc coduri RS pentru a permite citirea corect n cazul n care
o poriune din cod este stricat. Cnd scanner-ul nu poate recunoate un simbol, l trateaz ca pe un erasure.
O a treia aplicaie este n transmisia de date. n acest caz se folosesc variante specializate de coduri
RS, cum ar fi Cauchy-RS i Vandermonde-RS, pentru a rezolva problema transmiterii datelor prin canale cu
erasure-uri. Procesul de codare folosete coduri RS de dimensiune (N, K), de unde rezult N cuvinte de cod
a cte N simboluri ce stocheaz K simboluri de date. Aceste cuvinte de cod sunt mai apoi transmise pe canal.
Orice combinaie de K cuvinte de cod recepionate este suficient pentru a reconstrui toate cele N cuvinte de
cod. Rata codului este setat la n cazul n care probabilitatea de apariie a unui erasure poate fi modelat i
se observ ca fiind mai mic. n concluzie, N este de obicei de forma 2K, ceea ce nseamn c este nevoie ca
mcar jumtate din toate cunvintele de cod transmise trebuie recepionate pentru a putea reconstrui toate
cuvintele de cod trimise.
A patra aplicaie i poate cea mai interesant este n comunicaiile satelitare. Codurile RS au fost
folosite pentru a coda fotografiile digitale trimise de ctre satelitul Voyager. n acest caz au fost introduse
codurile Reed-Solomon concatenate cu coduri convoluionale, o practic ce s-a rspndit de atunci foarte
mult n comunicaiile satelitare. Decodoarele Viterbi tind s cauzeze erori n cazul burst-urilor de durat
scurt. Corecia acesot burst-uri este realizat foarte simplu folosind coduri Reed-Solomon simplificate sau
13
scurtate. Versiunile moderne ale concatenrilor de tip Reed-Solomon/coduri convoluionale decodate prin
intermediul decodoarelor Viterbi au fost folosite n misiunile sateliilor Mars Pathfinder, Galileo, Mars
Exploration Rover i Cassini, unde funcioneaz la un nivel mai mic cu 1-1.5 dB dect limita maxim
impus de capacitatea Shannon. Aceste coduri concatenate au nceput ns s fie nlocuite de coduri turbo
mult mai puternice unde datele transmise nu trebuie decodate imediat.
14
Capitolul 3 - Utilizarea CRC n reelele de calculatoare
Primele ncercri de comunicaie ntre diferite calculatoare au avut la baz conectarea
direct a acestora folosind o linie serial, pe care se efectua apoi schimbul de date. Deoarece
linia era nesigur, s-au dezvoltat tehnici care s suplineasc acest neajuns. Astfel fiecare
entitate de date trimis avea un cmp de control cu informaii despre corectitudinea celorlalte
cmpuri.
De asemenea, orice comunicaie avea stabilite nite reguli care s fie aplicate n cazuri
deosebite. Astfel au aprut o serie de protocoale de comunicaie serial, care foloseau diferite
coduri. Informaiile schimbate ntre diferite sisteme sunt codificate, pentru a realiza adaptarea
statistic a sursei la canalul de comunicaie. Canalul de comunicaie poate fi afectat sau nu de
perturbaii.
Un canal neperturbat ar corespunde unei criptri sau compresii a informaiei, pe cnd
un canal perturbat transmisiei acesteia. Sistemele actuale care nglobeaz calculatoare i
echipamente automate necesit o transmisie ct mai corect a informaiei ; pentru aceasta
semnalul trimis este prelucrat nainte de a fi emis.
Prelucrarea semnalului se realizeaz foarte uor n cazul transmisiei de semnale
discrete, prin codificare. Receptorul va decodifica semnalul primit i va ncerca s estimeze
dac au aprut erori.
CRC (Control Redundant Ciclic) este o metod matematic folosit pentru a verifica
integritatea datelor. Este o form de sum de control, ce se bazeaz pe teoria polinoamelor de
lungime maxim. Chiar dac metoda CRC este mai sigur dect metoda bazat pe o simpl
sum de control, nu ofer o adevarat securitate criptografic. CRC este o tehnic folosit
pentru detecia erorilor de transmisie. Pentru detecia i corectarea erorilor, exist un registru
special n care se stocheaz suma de control a datelor transferate. Aceasta se compar cu suma
de control calculat i se elimin astfel posibilele erori. n acest caz, tehnica CRC este folosit
doar pentru a asigura integritatea datelor la transferurile pe magistral, nu i pentru a
mbunti integritatea datelor stocate pe discurile hard. Din punct de vedere al tipului de cod,
codurile CRC sunt tot coduri ciclice, deci utilizeaz polinoame. Polinomul acceptat ca
standard pentru CRC este cel dat exemplu si mai sus, mai exact standardul IEEE 802.
n ceea ce privete calculul acestui CRC, avem dou variante. Prima din ele este
varianta software. Pentru aceasta exist mai multe modaliti de implementare, ns trebuie
inut cont de mai muli factori, dintre care cei mai importani ar fi:
15
Ipotezele de la care se pornete calculul
Dimensiunea polinomului generator
Dimensiunea i structura mesajului pentru care se calculeaz CRC-ul
Timpul n care se genereaz CRC-ul
Dimensiunea spaiului de memorie alocat
Performanele procesorului de calcul
O alt metod de implementare necesit exist unui tabel care s conin biii deplasai
ai polinomului CRC. n vederea micorrii timpului de execuie s-a trecut la procesarea n
paralel a biilor n grupuri de cte 4b, 8b, 16b sau 32b. Prelucrarea pe nibluri, adic pe 4b, este
ns de obicei evitat pe calculatoare, din simplul fapt c acestea opereaz cu octei, astfel c
pentru mrirea vitezei de lucru se folosesc de obicei prelucrri pe octei sau multipli de octei.
16
Pentru a obine timpi foarte mici de execuie se folosete o implementare hardware ce
utilizeaz bistabili n varianta paralel.
Dup cum am menionat mai sus, CRC-ul reprezint o form de sum de control.
Suma de control la nivel de bloc reprezint un mecanism de detecie a erorilor de transmisie.
Modul n care lucreaz este urmtorul:
Mai nti, datele se mpart n blocuri ce se vor nsuma, iar suma obinut este
trunchiat, inversat i adugat la sfrit
La recepie, blocurile primite (care include i acea sum la sfrit), se adun pe msur
ce sunt recepionate
n cazul n care am obinut o sum diferit de 0, nseamn c datele nu au fost
transmise corect iar secvena trebuie retransmis. Corecia erorii nu este posibil
Pentru cazul n care folosim metoda CRC, suma de control este calculat prin
mprire aritmetic, secvena de bii fiind mprit cu un numr special ales
mprirea se face modulo 2, adic folosind operatorul logic SAU-EXCLUSIV (XOR),
restul mpririi reprezentnd semntura care va fi adugat la sfrit, dup biii utili
Divizorul se obine folosind algoritmii codurilor Hamming
La recepie se recalculeaz restul mpririi iar dac acesta nu coincide cu restul primit,
atunci secvena a fost transmis cu erori
Performantele astfel obinute sunt foarte bune, un CRC ce genereaz un rest de 16 bii
putnd detecta:
Metodele hardware ofer o uurin mrit de calcul pentru CRC i folosesc registre
de deplasare mpreun cu pori logice de tip XOR.
Indiferent c vorbim de metode software sau hardware, acest control este necesar
pentru a se evita erorile de overflow, care apar de obicei cnd receptorul nu reuete s
prelucreze datele cnd acestea vin cu o vitez prea mare. Alterarea acestor date poate fi
detectat i cu ajutorul sumelor de control, care n Internet sunt calculate prin mprirea
17
datelor n blocuri de cte 16 bii. Programul care calculeaz aceste sume trateaz aceste
blocuri ca pe nite numere ntregi. Valorile n binar ale acestor blocuri sunt nsemnate, suma
de control urmnd a fi transmis mpreun cu datele aferente blocurilor. Sumele sunt calculate
la emitor i recalculate la receptor iar dac nu sunt egale, atunci nseamn c secvena nu s-a
transmis corect.
Dup cum am mai spus, codurile polinomiale se bazeaz pe tratarea irurilor de bii ca
reprezentri de polinoame, folosind coeficieni de 0 i 1. Pentru calculul CRC se va folosi
aritmetica modulo 2, cea bazat pe adunri fr transport i scderi fr mprumut. Pe lng
acestea vom folosi i un polinom generator G(x) cu MSB-ul i LSB-ul egale cu 1. n
continuare dorim s adugam un numr de bii la sfritul unui cadru, descris de un polinom
M(x) ales astfel nct M(x) l divide pe G(x). Algoritmul pentru calculul sumei de control are
urmtorii pai:
1. Notnd cu r gradul lui G(x), vom aduga r bii de 0 la captul cel mai puin
semnificativ al polinomului M(x), obinnd un nou polinom notat M(x)
2. Se mparte irul de bii corespunztori lui G(x) ntr-un ir de bii corespunztor lui
M(x), prin mprire modulo 2
3. Se scade restul (de dimensiune dr bii) din irul de bii corespunztor lui M(x) prin
scdere modulo 2, rezultatul acestei scderi fiind cadrul cu suma de control ce va fi
transmis i care este divizibil modulo 2 cu G(x).
Pentru a ilustra acest concept, vom lua un exemplu numeric. Fie cadrul 1101011011 i
codul pentru generator 10011. Polinomul G(x) va fi x4 + x + 1, deci r=grad(G(x))=4, prin
18
urmare vom concatena 4 bii de 0 la captul nesemnificativ al cadrului. Mesajul devine
11010110110000. mprirea acestui mesaj la polinomul generator G(x) va produce
urmtoarele rezultate:
Aplicaie
if((a='0')&&(b='0'))
return '0';
if((a='1')&&(b='0'))
return '1';
if((a='0')&&(b='1'))
return '1';
if((a='1')&&(b='1'))
return '0';
};
char *crc(char *cod) //functia scade succesiv polinomul x^3+x+1 din secventa care trebuie codata
string str="1011";
int i,j;
for(i=0;i<4;i++)
19
*(g+i)=str[i];
for(i=0;i<8;i++)
*(remainder+i)=*(cod+i);
for(i=8;i<16;i++)
*(remainder+i)='0';
for(i=0;i<8;i++)
if(*(remainder+i)=='1')
for(j=0;j<4;j++)
*(remainder+i+j)=mxor(*(remainder+i+j),*(g+j));
};
return remainder;
};
20
Capitolul 4 Concluzii
Detecia i corecia erorilor au reprezentat mereu unele din cele mai importante
provocri din domeniul transmisiunii informatiei, iar ntr-o er n care comunicaiile s-au
dezvoltat n attea forme, este lesne de neles de ce se dorete transmisiunea ct mai fidel a
informaiei.
Metoda CRC (Control Redundant Ciclic sau Cyclic Redundancy Check n englez)
reprezint o alt metod extrem de des folosit n domeniul deteciei erorilor. Ea se bazeaz
pe calculul unei sume de control i pe compararea aritmetic a valorilor obinute cu nite
valori ce ar trebui obinute n cazul unei transmisii corecte a datelor. Dac aceste valori difer
ntre ele, atunci spunem c transmisia nu a fost realizat corect i anunm emitorul s
retransmit secvena n cauz. Aceast metod are un avantaj enorm, reprezentat de
posibilitatea detectrii erorilor n rafal, adic cele ntinse pe mai muli bii, ceea ce o face
foarte util n domenii precum comunicaiile, n special cele ntre calculatoare i cele pe
Internet, unde datele circul sub forma unor pachete i este foarte important s putem verifica
erorile pe mai muli bii mai degrab dect bit cu bit, stocarea datelor etc.
Aceste dou metode prezentate aici sunt doar dou exemple dintr-o gam larg de
posibiliti n acest domeniu, n care mereu se ncearc gsirea de modaliti noi, mai rapide i
21
mai eficiente de detecie i corectie a erorilor, ns CRC i codurile Reed-Solomon vor
rmne mereu dou puncte de reper foarte importante.
22
Bibliografie
1. http://www.scribd.com/doc/46827525/10/Codul-Reed-Solomon
3. http://www.scribd.com/doc/4532428/Retele-de-calculatoare
4.http://etti.poly.ro/cursuri/anul%20IV/cd/Cap%203%20Protectia%20datelor%20impotriva%
20erorilor.pdf
5. http://www.scritube.com/stiinta/informatica/Tipuri-de-erori-si-modalitatil31596.php
8. Hong, Jonathan; Vetterli, Martin (August 1995), "Simple Algorithms for BCH Decoding",
IEEE Transactions on Communications 43 (8): 23242333
10. Berlekamp, Elwyn R. (1984) [1968], Algebraic Coding Theory, Laguna Hills, CA:
Aegean Park Press
23