1 / 24

Coduri corectoare de erori (1)

Coduri corectoare de erori (1). p e l ângă fiecare bloc de date trimis se include suficientă informaţie redundantă pentru ca receptorul să poată deduce care a fost caracterul transmis – coduri corectoare de erori ( corectare de erori în avans – forward error correction ) ;

Download Presentation

Coduri corectoare de erori (1)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Coduri corectoare de erori (1) pe lângă fiecare bloc de date trimis se include suficientă informaţie redundantă pentru ca receptorul să poată deduce care a fost caracterul transmis – coduri corectoare de erori ( corectare de erori în avans – forward error correction ); se include suficientă redundanţă pentru a permite receptorului să constate că a apărut o eroare, dar nu care este eroarea, şi să ceară o retransmisie – coduri detectoare de erori; pe canale cu siguranţă mare - cod detector de erori şi retransmiterea blocului în care s-au detectat erori; pe canale nesigure ( comunicaţie fără fir ) – coduri corectoare de erori;

  2. Coduri corectoare de erori (2) n – cuvânt de cod de n biţi ( n-bit codeword ); n = m + r; m – biţi de date ( mesaj ) r – biţi redundanţi sau de control 10001001 OR EXCLUSIV 10110001 00111000 distanţă Hamming Obs. Numărul de poziţii binare în care două cuvinte de cod diferă – distanţă Hemming; dacă două cuvinte de cod sunt despărţite de o distanţă Hemming d, sunt necesare d erori de un singur bit pentru a-l converti pe unul în celălat.

  3. Coduri corectoare de erori (3) pentru a detectad erori este nevoie de un cod cu distanţa d+1, deoarece cu un asemenea cod nu există nici o modalitate ca d erori de un singur bit să poată modifica un cuvânt de cod corect într-un alt cuvânt de cod corect; pentru a corectad erori este nevoie de un cod cu distanţa 2d+1, deoarece în acest mod cuvintele de cod corecte sunt atât de distanţate, încât, chiar cu d modificări, cuvântul de cod originar este totuşi mai apropiat decât alte cuvinte de cod şi va fi unic determinat;

  4. Coduri corectoare de erori (4) Exemple: Cod detector de erori:adăugarea la date a unui bit deparitate – un cod cu un singur bit de paritate are distanţa 2, deoarece orice eroare pe un singur bit produce un cuvânt de cod cu paritatea greşită ( poate fi folosit pentru detectarea erorilor singulare ); Cod corector de erori: fie un cod cu patru cuvinte de cod corecte: 0000000000, 0000011111, 1111100000 şi 1111111111; codul are distanţa 5 şi poate corecta erori duble; dacă soseşte cuvântul de cod 0000000111, cel ce recepţionează ştie că originalul trebuie să fi fost 0000011111; dacă totuşi o eroare triplă modifică 0000000000 în 0000000111, eroarea nu va fi corectată corespunzător;

  5. Coduri corectoare de erori (5) Proiectarea unui cod cu m biţi de mesaj şi r biţi de control pentru corectarea tuturor erorilor singulare ( 1 ): pentru fiecare din cele 2m mesaje corecte există n cuvinte de cod eronate, aflate la distanţa 1 de el; acestea sunt formate prin inversarea sistematică a fiecăruia dintre cei n biţi din cuvântul de cod de n biţi format din el; astfel, fiecare din cele 2mmesaje corecte necesită n+1 şabloane asociate; cum numărul total de şabloane este 2n, trebuie să avem (n+1)2m<=2n; utilizând n=m+r, această condiţie devine (m+r+1)<=2r; dându-se m, acesta impune o limită inferioară asupra numărului de biţi de control necesari pentru a corecta erorile singulare;

  6. Coduri corectoare de erori (6) Proiectarea unui cod cu m biţi de mesaj şi r biţi de control pentru corectarea tuturor erorilor singulare ( 2 ): atingerea limitei inferioare amintite ( Hamming ): biţii cuvântului de cod sunt numerotaţi consecutiv, începând cu bitul 1 de la marginea din stânga, bitul 2 imediat la dreapta sa ş.a.m.d. Biţii care sunt puteri ale lui 2 ( 1, 2, 4, 8 etc.) sunt biţi de control; restul ( 3, 5, 6, 7, 9 etc. ) sunt completaţi cu cei m biţi de date; fiecare bit de control forţează ca paritatea unui grup de biţi, inclusiv el însuşi, să fie pară ( sau impară ); -un bit poate fi inclus în mai multe calcule de paritate; pentru a se vedea la care biţi de control contribuie bitul de date din poziţia k, se rescrie k ca o sumă de puteri ale lui 2 ( ex: 11=1+2+8 );un bit este verificat de acei biţi de control care apar în dezvoltarea sa ( ex: bitul 11 este verificat de biţii 1, 2 şi 8 );

  7. Coduri corectoare de erori (7) Proiectarea unui cod cu m biţi de mesaj şi r biţi de control pentru corectarea tuturor erorilor singulare ( 3 ): când soseşte un cuvânt de cod, receptorul iniţializează un contor la 0; acesta examinează apoi fiecare bit de control k ( k=1, 2, 4, 8…) pentru a vedea dacă are paritatea corectă; dacă nu, adaugă k la contor; dacă, după ce au fost examinaţi toţi biţii de control, contorul este 0 ( adică dacă toţi biţii au fost corecţi ), cuvântul de cod este acceptat ca valid; dacă valoarea contorului este nenulă, ea reprezintă numărul bitului incorect ( ex: dacă biţii de control 1, 2 şi 8 sunt eronaţi, atunci bitul inversat este 11, deoarece este singurul verificat de biţii 1, 2 şi 8 );

  8. Coduri corectoare de erori (8) Caractere ASCII pe 7 biţi codificate prin cuvinte de cod pe 11 biţi, utlizând codul Hamming

  9. Coduri corectoare de erori (9) informaţia este regăsită în biţii de pe poziţiile 3, 5, 6, 7, 9, 10 şi 11; codurile Hamming pot corecta doar erori singulare; artificiu pentru a permite codurilor Hamming să corecteze erorile în rafală: o secvenţă de k cuvinte de cod consecutive este aranjată ca o matrice, având câte un cuvânt de cod pe fiecare linie; în mod normal, datele sunt transmise linie cu linie, de la stânga la dreapta; pentru a corecta erorile în rafală, datele vor trebui transmise pe coloane, începând cu coloana cea mai din stânga; când au fost trimişi toţi cei k biţi, este transmisă a doua coloană şi aşa mai departe (figura din slide-ul anterior ); atunci când un cadru ajunge la receptor , matricea este reconstruită, coloană cu coloană; dacă a apărut o eroare în rafală, de lungime k, va fi afectat cel mult un bit din fiecare dintre cele k cuvinte de cod, dar codul Hamming poate corecta o eroare pe cuvânt de cod, astfel că întregul bloc poate fi refăcut; metoda utilizează kr biţi de control pentru a face blocuri de km biţi de date imune la erorile în rafală de lungime k sau mai mică.

  10. Coduri corectoare de erori (1) dacă unui bloc i se adaugă un singur bit de paritate şi blocul e puternic deformatde o eroare în rafală lungă, probabilitatea ca eroarea să fie detectată este de numai 0.5; şansele pot fi îmbunătăţite dacă fiecare bloc transmis este privit ca o matrice dreptunghiulară de n biţi lăţime şi k biţi înălţime ; pentru fiecare coloană e calculat un bit de paritate, care este adăugat într-o nouă linie de la sfârşitul matricei. Matricea este apoi transmisă linie cu linie; la sosirea blocului, receptorul verifică toţi biţii de paritate; dacă oricare idn ei e greşit, va cere o retransmisie a blocului; dacă este nevoie, sunt cerute retransmisii succesive, până când întregul bloc este recepţionat fără erori de paritate;

  11. Coduri corectoare de erori (2) metoda anterioară poate detecta o singură rafală de lungime n, cu numai un bit pe coloanaă modificat; o rafală de lungimen+1 va trece nedetectată dacă primul şi ultimul bit sunt inversaţi, iar toţi ceilalţi biţi sunt corecţi ( o eroare în rafală nu înseamnă că toţi biţii sunt greşiţi, ci că cel puţin primul şi ultimul sunt greşiţi ); dacă blocul e puternic deformat de o rafală lungă sau de rafale scurte multiple, probabilitatea ca oricare din cele n coloane să aibă, accidental, paritatea corectă este 0.5, deci probabilitatea ca un bloc eronat să fie acceptat atunci când nu ar trebui este2-n;

  12. Coduri corectoare de erori -coduri polinomiale ( coduri cu redundanţă ciclică ) (1) bazate pe tratarea şirurilor de biţi ca reprezenatări de polinoame cu coeficienţi 0 şi 1; un cadru de k biţi e văzut ca o listă de coeficienţi pentru un polinom cu k termeni, de la xk-1 la x0 polinom de gradul k-1; bitul cel mai semnificativ e coeficientul lui xk-1; ex: 110001reprezintă polinomul x5 + x4 + x0 ( coeficienţii sunt 1, 1, 0, 0, 0 şi 1 ); aritmetica polinomială este de tip modulo 2;

  13. Coduri corectoare de erori -coduri polinomiale ( coduri cu redundanţă ciclică ) (2) nu există transport la adunare şi nici împrumut la scădere ( adunările şi scăderile sunt identice cu SAU EXCLUSIV ); ex: 10011011 00110011 11110000 01010101 +11001010 +11001101 -10100110 -10101111 01010001 11111110 01010110 11111010 scăderea este realizată modulo 2;

  14. Coduri corectoare de erori -coduri polinomiale ( coduri cu redundanţă ciclică ) (3) emiţătorul şi receptorul se pun de acord în avans asupra unui polinom generator G(x); bitul cel mai semnificativ şi cel mai puţin semnificativ trebuie să fie 1; pentru a calcula suma de control pentru un cadru cu m biţi, corespunzător polinomului M(x), cadrul trebuie să fie mai lung decât polinomul generator; se adaugă o sumă de control la sfârşitul cadrului, astfel încât polinomul reprezentat de cadrul cu sumă de control să fie divizibil prin G(x); când receptorul preia cadrul cu suma de control, încearcă să-l împartă la G(x); dacă se obţine un rest, înseamnă că a avut loc o eroare de transmisie;

  15. Coduri corectoare de erori -coduri polinomiale ( coduri cu redundanţă ciclică ) (4) Algoritmul pentru calculul sumei de control: fie r gradul lui G(x); se adaugă r biţi la capătul mai puţin semnificativ al cadrului, aşa încât acesta va conţine acum n+rbiţi şi va corespunde polinomului xrM(x); se împarte şirul de biţi ce corespund lui G(x) într-un şir de biţi corespunzând lui xrM(x), utilizând împărţirea modulo 2; se scade restul ( care are întotdeauna r sau mai puţini biţi ) din şirul de biţi corespunzând lui xrM(x), utilizând scăderea modulo 2. Rezultatul este cadrul cu sumă de control ce va fi transmis. Polinomul său va fi T(x). Obs. T(x) este divizibil (modulo 2) cu G(x).

  16. Coduri corectoare de erori -coduri polinomiale ( coduri cu redundanţă ciclică ) (5) Calculul sumei de control în cod polinomial pentru cadrul 1101011011 şi G(x) = x4+x+1

  17. Coduri corectoare de erori -coduri polinomiale ( coduri cu redundanţă ciclică ) (6) -apariţia unei erori de transmisie: în loc să soseacsă şirul de biţi pentru T(x), ajunge T(x) + E(x); fiecare bit din E(x)corespunde unui bit care a fost inversat; dacă în E(x) există k biţi 1, aceasta înseamnă că au apărut k erori de un singur bit; -o singură eroare în rafală este caracterizată de un 1 iniţial, un amestec de 0 şi 1 şi un 1 final, toţi ceilalţi biţi fiind 0; -la recepţia cadruluicu sumă de control, receptorul îl împarte prin G(x); înseamnă că se va calcula[T(x) + E(x)] / G(x); T(x) / G(x) este 0, aşa încât rezultatul calculului este E(x) / G(x); acele erori care se întâmplă să corespundă unor polinoame care îl au ca factor pe G(x) vor scăpa; toate celelalte vor fi detectate;

  18. Coduri corectoare de erori -coduri polinomiale ( coduri cu redundanţă ciclică ) (7) -dacă a apărut o eroare pe un singur bit, E(x)=xi, unde i determină care bit este eronat; dacă G(x) conţine doi sau mai mulţi termeni, nu poate fi divizor al lui E(x), aşa încât toate erorile pe un singur bit vor fi detectate; -dacă au apărut două erori izolate pe un singur bit, atunci E(x)=xi + xj, unde i>j; dacă presupunem că G(x) nu este divizibil prin x, o condiţie suficientă pentru detectarea erorilor duble este ca G(x) să nu se dividă prin xk+1 pentru orice k până la valoarea maximă i-j ( adică până la lungimea maximă a cadrului ); -sunt cunoscute polinoame simple, de grad mic, care asigură protecţie cadrelor de lungime mare ( ex: x15+x14+1 nu se va divide cu xk+1 pentru nici o valoare aluikmai mică de 32768 );

  19. Coduri corectoare de erori -coduri polinomiale ( coduri cu redundanţă ciclică ) (8) -dacă există un număr impar de biţi eronaţi, E(x) conţine un număr impar de termeni ( adicăx5+x2+1, dar nu x2+1 ); -în sistemul modulo 2 nu există nici un polinom cu număr impar de termeni care să îl aibă pe x+1ca factor; făcându-l pe x+1 factor al lui G(x), se vor putea depista toate erorile constituite dintr-un număr impar de biţi inversaţi;

  20. Coduri corectoare de erori -coduri polinomiale ( coduri cu redundanţă ciclică ) (9) Nici un polinom cu număr impar de termeni nu este divizibil cu x+1. Demonstraţie: presupunem că E(x) are un număr impar de termeni şi este divizibil cu x+1; se factorizează în (x+1)Q(x); se evaluează E(1)=(1+1)Q(1); deoarece 1+1=0(modulo 2), E(1) trebuie să fie 0; dacă E(x) are un număr impar de termeni, substituind fiecare x cu 1, rezultatul obţinut va fi întotdeauna 1; rezultă că nici un polinom cu număr impar de termeni nu este divizibil cu x+1;

  21. Coduri corectoare de erori -coduri polinomiale ( coduri cu redundanţă ciclică ) (10) -un cod polinomial cu r biţi de control va detecta toate erorile în rafală de lungime ≤ r; -o eroare în rafală de lungime k poate fi reprezentată de xj(xk-1+..+1), unde i determină cât de departe este localizată rafala faţă de capătul din dreapta al cadrului recepţionat; -dacă G(x) conţine termenul x0, atunci nu îl va avea ca factor pe xj, aşa că dacă gradul expresiei dintre paranteze este mai mic decât gradul lui G(x), restul nu poate fi niciodată 0;

  22. Coduri corectoare de erori -coduri polinomiale ( coduri cu redundanţă ciclică ) (11) -dacă lungimea rafalei este r+1, restul împărţirii cu G(x) va fi zero dacă şi numai dacă rafala este identică cu G(x); -prin definiţia rafalei, primul şi ultimul bit trebuie să fie 1, astfel că potrivirea depinde de cei r-1 biţi intermediari; -dacă toate combinaţiile sunt privite ca egal posibile, atunci probabilitatea ca un cadru incorect să fie acceptat ca valid este 1/2r-1;

  23. Coduri corectoare de erori -coduri polinomiale ( coduri cu redundanţă ciclică ) (12) Polinomul folosit în IEEE 802: x32 + x26 + x23 + x22 + x16 + x12 + x11 + + x10 + x8 + x7 + x5 + x4 + x2 + x1 + 1

  24. Coduri corectoare de erori -coduri polinomiale ( coduri cu redundanţă ciclică ) (13) -în practică, pentru calcularea şi verificarea sumei de control se utilizează un simplu registru de deplasare ( circuitul este folosit în aproape toate reţelele locale, şi uneori şi în cazul liniilor punct-la- punct ); -analize recente au arătat că presupunerea conform căreia cadrele pentru care se calculează suma de control conţin biţi aleatori este incorectă; ca o consecinţă, în unele circumstanţe, erorile nedetectate sunt mult mai obişnuite decât s-a crezut anterior;

More Related