Sunteți pe pagina 1din 7

3.

Coduri detectoare / corectoare de erori


Scopul lucrrii: nelegerea modalitilor de codare a datelor pentru detecia i corecia erorilor care pot aprea la transmisia prin canale cu perturbaii. Studiul teoretic al funcionrii schemelor de generare i verificare a codurilor cu redundan ciclic, rezolvarea unor probleme.

3.1.

Consideraii teoretice.
3.1.1. Principiul deteciei i coreciei.

Deoarece datele transmise pe un canal real sunt afectate de perturbaii diverse, pentru reducerea probabilitii de eroare (ratei de eroare) se adaug bii suplimentari care asigur detecia i eventual corecia erorilor de transmisie. n cazul deteciei erorii, se retransmite cadrul de date curent, iar n cazul posibilitii de corecie a erorii, se dispune de suficient informaie suplimentar redundant pentru a cunoate exact poziia sa i a o corecta. Asocierea informaiei suplimentare redundante cu informaia original ce trebuie transmis se realizeaz respectnd un anumit algoritm matematic, prin intermediul codurilor detectoare sau corectoare de erori. Informaia este codat naintea transmisiei pe canal, iar la recepie se realizeaz operaia invers, decodarea, prin extragerea informaiei utile cu detecia sau corecia eventualelor erori ce au afectat-o. Un cuvnt de cod va fi format din n = m + k bii, prin adugarea unui numr de m bii de control la cei k bii de date ce formeaz mesajul de transmis. Biii de control conin informaie redundant, fiind calculai din biii de date. Pentru a putea determina la receptor dac a avut loc o eroare n transmisie, cuvntul recepionat cu eroare trebuie s nu fie un cuvnt de cod valid pentru codul considerat, deci dintre cele 2n de combinaii binare posibile cu n bii, se aleg numai 2k cuvinte de cod valide, adic doar numrul combinaiilor realizabile cu biii de date, celelalte reprezentnd cuvinte fr sens. Recepionarea unui cuvnt fr sens n locul unui cuvnt de cod semnaleaz apariia unei erori. Alegerea cuvintelor de cod valide se face n aa fel nct distana Hamming dintre oricare dou astfel de cuvinte s fie mai mare dect o valoare minim.

3.1.2. Distana Hamming. Distana Hamming dintre dou cuvinte binare A = [a1 a2 ai an] i B = [b1 b2 bi bn] , de aceeai lungime (numr de bii) se definete ca fiind numrul de poziii binare prin care cele dou cuvinte difer ntre ele. Dac se calculeaz suma modulo 2, bit cu bit, a celor dou cuvinte (C = A XOR B), atunci distana Hamming este de fapt egal cu ponderea W a cuvntului sum (numrul de bii cu valoarea 1):
b1

b2 100 101 111 110

000 001 011

010

d h ( A, B ) = (ai bi ) = (ci ) = W (C )
i =1 i =1

(3.1.)

Mulimea combinaiilor binare realizabile cu k bii de date este format din 2k cuvinte ce se nscriu pe Fig. 3.1. Cubul format de vrfurile unui hipercub n spaiul vectorial k-dimensional. combinaiile binare cu 3 bii. Distana Hamming ntre oricare dou astfel de cuvinte nu reprezint altceva dect o distan dintre dou vrfuri ale hipercubului, msurat prin valori discrete binare. De exemplu (fig. 3.1.), combinaiile binare din 3 bii formeaz un cub n spaiul 1

b0

vectorial tridimensional cu coordonatele (b2, b1, b0). Distana dintre oricare dou vrfuri adiacente ale cubului (care difer printr-un singur bit) este 1, cea ntre vrfurile situate pe diagonalele unei fee este 2, iar distana dintre vrfurile situate pe diagonalele spaiale ale cubului este 3. Deci distana Hamming dintre oricare dou cuvinte aparinnd acestei mulimi poate lua valorile: dh=1, 2, 3, distana Hamming minim fiind 1. Dac se face ns o selecie n acest spaiu (fig. 3.1.), pstrnd doar vrfurile situate pe diagonalele feelor n raport cu originea: S1 = {000, 011, 101, 110} S, atunci aceast mulime va forma un tetraedru pe care distana Hamming minim este 2. Dac se pstreaz doar dou vrfuri poziionate pe una din diagonalele spaiale ale cubului: S2 = {000, 111} S, atunci distana Hamming minim n aceast mulime va fi 3. Presupunnd c n procesul de transmisie au fost eronai e bii, atunci cuvntul recepionat se va afla la o distan Hamming e de cuvintele de cod valide. Pentru a detecta eroarea, trebuie ca distana Hamming minim dintre oricare dou cuvinte de cod s fi fost mai mare dect e, adic: dh e+1. Dac aceast condiie este ndeplinit, la recepia unui cuvnt de cod aflat la o distan Hamming e mai mic dect cea normal dh, se detecteaz eroarea de e bii. Pentru corecia erorii, se utilizeaz criteriul distanei minime: se calculeaz distana Hamming dintre cuvntul recepionat i toate cuvintele care ar fi putut fi transmise i se alege acela pentru care aceast distan este minim. De exemplu (fig. 3.2.), n urma recepionrii cuvntului V, pentru a putea decide c s-a tramnsmis Ui i nu Uj, este necesar ca distana Hamming minim dintre toate cuvintele de cod s fie mai mare dect dublul distanei la care poate aprea cuvntul eronat: dh 2e+1. e e 1
Ui V Uj

dh Fig. 3.2. Distana Hamming minim necesar pentru corecia erorii de e bii. Concluzie: Unui cod care are toate cuvintele de cod astfel alese nct s fie la o distan minim egal cu 2e+1, i se spune cod detector de 2e-erori i corector de e-erori.

3.1.3. Codul Hamming liniar corector de o eroare. n cazul codurilor liniare (de grup), cele m simboluri de control se calculeaz ca fiind combinaii liniare din cele k simboluri de date, iar cuvntul de cod este considerat vector ntr-un spaiu vectorial n-dimensional structurat pe mulimea valorilor {0, 1} (adic toate componentele vectorilor sunt bii), prin operaiile: = XOR = suma modulo 2 binar; = AND = produsul logic binar. Pentru determinarea simbolurilor de control se rezolv un sistem de ecuaii liniare omogene cu soluie unic, ce poate fi scris sub forma matriceal: (3.2.) Relaia (3.2.) reprezint matematic operaia de codare, adic aflarea coeficienilor binari hij ai matricii [H] mxn, cu: i = 1..m i j = 1..n, care se numete matricea de control a codului. n spaiul vectorial considerat, produsul matricii cu vectorul transpus format din biii cuvntului de cod se realizeaz n mod clasic (linie-coloan), nlocuind suma obinuit cu operaia de sumare modulo 2 a valorilor binare. Produsul unui cuvnt de cod nenul: v = [v1 v2 vi vn] , unde vi sunt bii 0 sau 1, cu matricea [H] de control a codului, are de fapt ca rezultat un vector-coloan format din suma modulo 2 dintre vectorii-coloan hi din [H] , corespunztori poziiilor cu bii de 1 n cuvntul

[H ] vT

= 0m

de cod: [H ] v T = [ h 1 v 1 h 2 v 2 ... h n v n ] . Practic, vectorii-coloan din [H] corespunztori poziiilor cu bii 0 n cuvntul de cod nu mai apar n sum. Cum vectorul nul verific implicit ecuaia (3.2.), acesta va fi ntotdeauna cuvnt de cod, iar toate cuvintele codului aflate la o distan Hamming minim d ntre ele i fa de cuvntul nul, vor trebui s aib o pondere a biilor mai mare sau egal cu d, adic mcar d bii de 1. Din acest motiv, codul liniar va avea o distan Hamming minim d numai dac toate cuvintele cu ponderea mai mic dect d nu verific ecuaia de control a codului (nu sunt cuvinte de cod), adic toate sumele modulo 2 dintre vectorii-coloan ai matricii [H] cu mai puin de d termeni trebuie neaprat s fie nenule. Sumele modulo 2 cu d sau mai muli termeni pot fi nule sau nu, dup cum cuvntul din care au provenit este sau nu cuvnt de cod. Deoarece codul Hamming corector de o eroare trebuie s aib o distan Hamming minim d=3, oricare din sumele modulo 2 formate cu 1 sau 2 vectori-coloan trebuie s fie nenule, deci toate coloanele matricii [H] luate separat i suma modulo 2 a oricror dou coloane trebuie s fie diferite de vectorul nul. Metoda cea mai simpl de definire a matricii de control pentru a realiza aceast configuraie este aceea n care fiecare coloan hi reprezint transcrierea binar a numrului coloanei respective i. n procesul de transmisie, datorit unor perturbaii, pot aprea erori care vor transforma cuvntul cu sens v ntr-un cuvnt fr sens v*, care difer de cuvntul iniial printr-un vector de eroare ce are valori 1 pe poziiile binare cu erori i 0 n rest: v* = v (3.3.) La recepie, cuvntul iniial se poate deduce din cel recepionat dac se cunoate vectorul eroare (adic poziiile tuturor biilor eronai), prin sumarea modulo 2 a vectorului de eroare la cuvntul fr sens recepionat, conform relaiei: v * = (v ) = v ( ) = v 0 = v (3.4.) Pentru detecia i corecia erorii, la recepie se verific dac cuvntul recepionat este un cuvnt de cod sau este fr sens, prin calcularea produsului su cu matricea de control a codului. n mod evident, toate cuvintele de cod valide trebuie s verifice ecuaia omogen de control a codului (3.2.), deci acest produs, numit corector, va da un vector coloan cu m componente care este nenul numai dac s-au produs erori la transmisie: (3.5.) innd cont c un cod corector de o eroare va putea corecta doar erori de un singur bit, vectorul eroare considerat va conine n acest caz doar un singur bit 1 pe poziia i n care a aprut eroarea. Prin relaia (3.5.) se va calcula corectorul, care va fi n acest caz chiar coloana i a matricii de control, deci corectorul este exprimarea n binar a poziiei erorii. Corecia se realizeaz apoi prin calculul (3.4.) al sumei modulo 2 ntre cuvntul recepionat i vectorul de eroare, obinut cu decodarea corectorului din binar n zecimal. Pentru corecia tuturor erorilor de un bit, este necesar s se poat calcula la recepie un numr de corectori distinci cel puin egal cu numrul posibil de cuvinte recepionate pentru un anumit cuvnt transmis. Deci numrul corectorilor 2m = numrul combinaiilor distincte cu m bii, trebuie s fie mai mare egal cu numrul cuvintelor cu o eroare n diferite poziii = n plus 1 = numrul cuvintelor fr eroare: (3.6.) Aceast relaie permite determinarea numrului m al biilor de control ce trebuie adugai la cei k bii de date pentru a obine un cod corector de o eroare. Observaie: Pentru uurarea codrii, este preferabil plasarea simbolurilor de control ci n poziiile binare date de puterile lui 2, deoarece acestea se transcriu n binar cu un singur bit 1 i relaia (3.2.) devine gata explicitat cu privire la necunoscute: v T = [c1 c2 d 3 c4 d 5 d 6 d 7 c8 d 9 d10 ... d n ] (3.7.)

z = [H ] (v*)T = [H ] T

2m 1 + n = 1 + m + k

3.1.4. Coduri polinomiale cu redundan ciclic. Codurile corectoare de erori sunt mai rar folosite n practic, fiind preferat detecia erorilor urmat de retransmisia cadrului numai n caz de eroare, care poate fi mai eficient deoarece se adaug mai puini bii suplimentari la fiecare cuvnd transmis. Cea mai utilizat metod de detecie a erorilor se bazeaz pe codul polinomial, denumit i cod cu redundan ciclic (CRC = Cyclic Redundancy Code). Codurile polinomiale trateaz un ir de k bii ca o list de coeficieni ai unui polinom de grad k-1, astfel: bitul cel mai semnificativ este coeficientul lui xk-1, urmtorul bit este coeficientul lui xk-2, i tot aa pn la ultimul bit din ir, care este coeficientul lui x0. De exemplu, irul de bii 101101 reprezint polinomul de grad 5: x 5 x 3 x 2 x 0 . Aritmetica utilizat n calcule este tot de tip sum modulo 2. Metoda CRC adaug la sfritul irului de date utile o sum de control de lungime m, astfel nct polinomul asociat cuvntului de cod rezultat s fie divizibil printr-un polinom g(x), ce poart denumirea de polinom generator al codului. Acest polinom trebuie s aib gradul egal cu numrul m al simbolurilor de control adugate, deci coeficientul lui xm din g(x) trebuie s fie ntotdeauna 1. Construirea polinomului cuvntului de cod se realizeaz prin nmulirea cu xm a polinomului d(x) format din irul biilor de date, la care se adaug polinomul de control c(x): v( x) = c( x) x m d ( x) (3.8.) Aceast operaie este practic echivalent cu introducerea biilor de control prin adunarea lor la biii de date deplasai cu m poziii la stnga. Se poate demonstra c v(x) astfel alctuit va fi divizibil cu g(x) dac polinomul de control este restul mpririi polinomului de date deplasat, la polinomul generator:
x m d ( x) c ( x ) = rest g ( x)

(3.9.)

Erorile ce pot aprea n transmisie vor transforma polinomul asociat cuvntului de cod v(x) ntr-un polinom fr sens v*(x), care difer printr-un polinom de eroare (x), conform relaiei (3.3.) n care vectorii au fost nlocuii prin polinoamele asociate: v ( x)* = v ( x) ( x ) (3.10.) Pentru recunoaterea unui polinom la recepie, se verific regula de generare a codului: dac polinomul recepionat este un cuvnt de cod, acesta trebuie s fie divizibil cu polinomul generator al codului. Practic, se calculeaz polinomul asociat corectorului ca fiind restul mpririi polinomului recepionat la polinomul generator, egal conform (3.10.) i cu restul mpririi polinomului de eroare la cel generator: v* ( x) ( x) (3.11.)
z ( x ) = rest = rest g ( x) g ( x)

Dup cum se observ din relaia (3.11.), acest polinom corector este nenul numai dac au aprut erori pe parcursul transmisiei. Alegerea polinomului generator este decisiv pentru capacitatea de detecie a codului. De exemplu, dac se presupune o singur eroare, vom avea (x) = xi, unde i d poziia erorii. Pentru a detecta eroarea, corectorul trebuie s fie nenul ca s-o semnaleze, deci g(x) nu trebuie s fie divizor al lui xi, adic trebuie s aib cel puin 2 termeni dintre care unul s fie obligatoriu x0. Din aceste considerente, rezult c pentru a detecta mcar eroarea de un bit n orice poziie, toate codurile ciclice vor avea coeficientul lui x0 din polinomul generator diferit de zero. Deoarece pentru a pstra gradul polinomului i coeficientul lui xm trebuie s fie diferit de zero, orice polinom generator va conine cel puin termenii: g ( x ) = x m ... 1 .

Observaie: Datorit proprietilor suplimentare legate de ciclicitate, codurile CRC prezint capabiliti de detecie a erorilor superioare codurilor liniare. De exemplu, prin alegerea adecvat a polinomului generator astfel nct s fie multiplu de x 1 , codul poate detecta orice numr impar de erori, nu numai cele de un singur bit.

3.2.

Modul de lucru n laborator.

Generarea i verificarea codurilor cu redundan ciclic se implementeaz n hardware folosind circuite secveniale liniare, bazate pe un registru de deplasare cu reacie obinut prin sumatoare modulo 2 din diferite ranguri ale sale. Rangurile din registrul de deplasare care contribuie la reacie corespund unor coeficieni nenuli ai polinomului generator. n laborator se va studia funcionarea teoretic a unor structuri logice de generare i verificare CRC care includ astfel de circuite secveniale liniare.
Registru de deplasare pentru CRC Selecie MUX: 10

0 x
TxC OSC

1 x

2 x
XOR

3 x

AND

dup 8 x TxC
0 TxD

Ceas de transmisie SI

Registru de deplasare PISO

XOR

1 MUX

b 0

b 1

b 2

b 3

b 4

b 5

b 6

b 7

SO TxC

Fig. 3.3. Schema logic simplificat a unui circuit de generare CRC la transmisie. n figura 3.3. este prezentat schema simplificat a unui circuit de generare a 4 bii CRC pentru fiecare 8 bii de date, care funcioneaz n felul urmtor: Iniial se ncarc octetul de date n registrul de serializare PISO = Parallel Input-Serial Output, se reseteaz bistabilii registrului de deplasare pentru CRC, iar linia de selecie a multiplexorului este n 1 logic, validnd astfel i poarta AND care nchide reacia registrului CRC, devenind transparent. La fiecare perioad a ceasului de transmisie TxC biii de date se deplaseaz n registru cu cte o poziie spre dreapta i sunt emii succesiv pe linia TxD prin ieirea SO = Serial Output, n locul lor intrnd bii de zero prin SI = Serial Input. n acelai timp, biii de date ajung i la intrarea porii XOR din reacia registrului CRC, complementnd sau nu valoarea logic de reacie care intr n acest registru pe tactul urmtor, dup cum bitul de date este 1 sau respectiv 0, contribuind astfel n calculul restului mpririi la polinomul generator. Dup ce au trecut 8 perioade de ceas TxC, toi biii de date au fost deja transmii pe linie, iar n registrul CRC s-a obinut restul mpririi octetului la polinomul generator al codului. n acest moment selecia multiplexorului devine 0 logic, comut linia de date TxD la ieirea registrului CRC prin poarta XOR i decupleaz reacia acestuia, conectnd intrarea lui la 0 prin blocarea porii AND.

Deoarece n registrul de deplasare a datelor au intrat numai bii de zero, poarta XOR devine practic transparent, permind transmiterea succesiv la ieire a celor 4 bii de control, n urmtoarele 4 perioade de ceas. Simultan cu transmisia acestor bii are loc i reiniializarea registrului CRC prin intrarea biilor zero de la ieirea porii AND blocate. Verificarea cuvntului de cod recepionat are loc prin recalcularea restului mpririi octetului de date la polinomul generator, simultan cu deserializarea biilor n registrul de deplasare SIPO = Serial Input-Parallel Output, prin utilizarea unui registru de deplasare CRC identic cu cel de la transmisie (fig. 3.4.). Dup citirea octetului de date, recepia biilor pe linia RxD continu cu cei 4 bii de control, care trec i ei prin registrul CRC cu reacie, obinndu-se restul mpririi ntregului cuvnt recepionat de 12 bii la polinomul generator. Dac restul citit apoi din registrul CRC este nul, cuvntul a fost recepionat fr nici o eroare.
Registru de deplasare pentru CRC

0 x
XOR

1 x

2 x
XOR

3 x

Registru de deplasare SIPO

RxD

SI Ceas de recepie

b 0

b 1

b 2

b 3

b 4

b 5

b 6

b 7

RxC

Fig. 3.4. Schema logic simplificat a unui circuit de verificare CRC la recepie. Se studiaz ntr-un scurt referat scris funcionarea schemelor prezentate, pentru o anumit secven de date, prin alctuirea unor tabele cu valori logice i desenarea formelor de und care descriu strile celor 4 ranguri binare din registrul CRC. Se verific polinomul generator utilizat: g(x) = x4 x3 1, precum i reflectarea sa n structura schemei de reacie a registrului CRC.

3.3.

Probleme propuse.

(1.) Se consider o surs de date care poate transmite 16 mesaje pe un canal cu perturbaii, utiliznd un cod Hamming liniar corector de o eroare. Se cere: a.) S se determine lungimea cuvntului de cod; b.) S se determine matricea de control [H] a codului; c.) Folosind mediul Matlab, s se determine cuvintele de cod cu sens; d.) Folosind mediul Matlab, s se determine distana Hamming minim i maxim a codului; e.) S se aprecieze i s se testeze capacitile de detecie i respectiv de corecie ale codului obinut. (2.) Un numr de 16 mesaje se transmit pe un canal cu perturbaii utiliznd un cod ciclic detector de o eroare. Se cere:

a.) S se determine numrul simbolurilor de date (k), al celor de control (m) i lungimea cuvntului de cod (n); b.) S se aleag polinomul generator dintre polinoamele: x 1, x2 x 1, x3 x2 1, x5 x2 x 1; c.) S se determine cuvntul de cod corespunztor mesajului: d = [1 0 1 1] ; d.) S se determine corectorul corespunztor cuvntului: v = [1 0 0 1 0 1 1] i s se precizeze dac acesta este sau nu cuvnt de cod; e.) S se creeze n mediul Matlab o funcie care s permit codarea unui mesaj pe baza unui polinom generator dat.

3.4.

ntrebri de verificare a cunotintelor:

(1.) Ce reprezint distana Hamming dintre dou cuvinte binare? (2.) Care este distana Hamming minim impus tuturor cuvintelor de cod pentru a putea detecta e bii eronai? (3.) Care trebuie s fie distana Hamming minim dintre cuvintele de cod pentru a fi posibil corecia unui numr de e bii eronai? (4.) Cte erori poate detecta i cte poate corecta un cod cu distana Hamming minim d? (5.) Ce criterii matematice trebuie s satisfac vectorii-coloan ai matricii de control astfel nct codul liniar s aib o distan Hamming minim d ntre toate cuvintele sale? (6.) Ce relaii matematice trebuie s satisfac coloanele matricii de control a unui cod liniar corector de o eroare? (7.) Care este numrul minim de corectori distinci ce trebuie s poat fi calculat pentru corecia tuturor erorilor de un singur bit? (8.) Cum se calculeaz biii de control la transmisie n cazul utilizrii unui cod ciclic detector de erori? (9.) Cum se recunoate un cuvnt recepionat eronat n cazul codurilor cu redundan ciclic? (10.) Ce termeni trebuie s conin orice polinom generator al unui cod ciclic pentru a detecta mcar toate erorile de un singur bit? (11.) Ce proprieti suplimentare prezint codurile ciclice fa de cele liniare? Exemplificai.

Laborator Transmisia datelor Prep. drd. ing. & fiz. IOAN Aleodor Daniel

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

  • Proiect TD
    Proiect TD
    Document21 pagini
    Proiect TD
    Paun Lorin Remus
    Încă nu există evaluări
  • File L1364594122 File 51560 Dca 935 e 7
    File L1364594122 File 51560 Dca 935 e 7
    Document92 pagini
    File L1364594122 File 51560 Dca 935 e 7
    Paun Lorin Remus
    Încă nu există evaluări
  • ObtineRecipisa Octombrie 2012
    ObtineRecipisa Octombrie 2012
    Document1 pagină
    ObtineRecipisa Octombrie 2012
    Paun Lorin Remus
    Încă nu există evaluări
  • PI L2r
    PI L2r
    Document11 pagini
    PI L2r
    Paun Lorin Remus
    Încă nu există evaluări
  • Mathcad Semnificatie Simboluri
    Mathcad Semnificatie Simboluri
    Document28 pagini
    Mathcad Semnificatie Simboluri
    sanyok07
    Încă nu există evaluări
  • SRA Partea 2
    SRA Partea 2
    Document19 pagini
    SRA Partea 2
    Pompiliu Popa
    Încă nu există evaluări
  • 5 Indicatori
    5 Indicatori
    Document1 pagină
    5 Indicatori
    Paun Lorin Remus
    Încă nu există evaluări
  • Info Proiect
    Info Proiect
    Document1 pagină
    Info Proiect
    Paun Lorin Remus
    Încă nu există evaluări
  • Info Proiect
    Info Proiect
    Document1 pagină
    Info Proiect
    Paun Lorin Remus
    Încă nu există evaluări
  • Codificare
    Codificare
    Document70 pagini
    Codificare
    Paun Lorin Remus
    Încă nu există evaluări
  • Proiect Reglare Nivel
    Proiect Reglare Nivel
    Document14 pagini
    Proiect Reglare Nivel
    Paun Lorin Remus
    Încă nu există evaluări
  • Lista Cursuri Anul III Sem 2 Is
    Lista Cursuri Anul III Sem 2 Is
    Document1 pagină
    Lista Cursuri Anul III Sem 2 Is
    Paun Lorin Remus
    Încă nu există evaluări
  • Codificare
    Codificare
    Document70 pagini
    Codificare
    Paun Lorin Remus
    Încă nu există evaluări
  • SCD08 PDF
    SCD08 PDF
    Document55 pagini
    SCD08 PDF
    Paun Lorin Remus
    Încă nu există evaluări
  • Cap 5
    Cap 5
    Document7 pagini
    Cap 5
    hackerustsu
    Încă nu există evaluări