Sunteți pe pagina 1din 3

Codul redundant ciclic (CRC - en: Cyclic Redundancy Code) Codurile polinomiale (cunoscut si sub numele de cod cu redundanta

ciclica), sunt bazate pe tratarea sirurilor de biti ca reprezentari de polinoame cu coeficienti 0 si 1. Un cadru de 1 k biti este vazut ca o lista de coeficienti pentru un polinom cu k termeni, de la x k la x 0 . Se spune ca un astefel de polinom este de gradul k-1. Bitul cel mai semnificativ (cel din stanga) este 1 coeficientul lui x k ; urmatorul bit este coeficientul lui x k 2 s.a.m.d. De exemplu, 110001 are sase biti si ei reprezinta un polinom cu sase termeni cu coeficientii 1, 1, 0, 0, 0 si 1: x 5 + x 4 + x 0 Aritmetica polinomiala este de tip modulo 2, in conformitate cu regulile teoriei algebrice. Nu exista transport la adunare si nici imprumut la scadere. Atat adunarile cat si scadrile sunt identice cu SAU EXCLUSIV. Impartirea lunga este facuta ca in binar cu exceptia faptului ca scaderea este realizata modulo 2. Despre impartitor se spune ca intra intr-un deimpartit daca deimpartitul are tot atatia biti ca impartitorul. Atunci cand este utilizata metoda codului polinomial, emitatorul si receptorul se pun de acord in avans asupra unui polinom generator G(x). Atat bitul cel mai semnificativ cat si cel mai putin semnificativ trebuie sa fie 1. Pentru a calcula suma de control pentru un cadru de m biti, corespunzator polinomului M(x), cadrul trebuie sa fie mai lung decat polinomul generator. Ideea este de a aduga o suma de control la sfarsitul cadrului, astefel incat polinomul reprezentat de cadrul cu suma de control sa fie divizibil prin G(x). Cand receptorul preia cu suma de control, incarca sa-l imparta la G(x). Daca se obtine un rest, inseamna ca a avut loc o eroare de transmisie. Algoritmul pentru calculul sumei de control este urmatorul: 1.Fie r gradul lui G(x), se adauga r biti 0 la capatul mai putin semnificativ al cadrului, asa incat acesta va contine acum n+r biti si va corespunde polinomului x r M(x). 2.Se imparte sirul de biti ce corespund lui G(x) intr-un sir de biti corespunzand lui x r M(x), utilizand impartirea modulo 2. 3.Se scade restul (care are intotdeauna r sau mai putini biti) din sirul de biti corespunzand r lui x M(x), utilizand scaderea modulo 2. Rezultatul este cadrul cu suma de control ce va fi transmis. Numim polinomul sau T(x). Ar trebui sa fie clar ca T(x) este divizibil (modulo 2) cu G(x). In orice problema de impartire, daca din deimpartit se scade restul, atunci ceea ce ramane este divizibil prin impartitor. De exemplu, in baza 10, daca impartim 210278 la 10941 restul este 2399. Prin scaderea lui 2399 din 210278, ceea ce ramane (207879) este divizibil cu 10941. Pentru a analiza puterea acestei metode presupunem ca apare o eroare de transmisie, asa incat in loc sa soseasca sirul de biti pentru T(x), ajunge T(x) +E(x). Fiecare bit din E(x) corespunde unui bit care a fost inversat. Daca in E(x) exista k biti 1, aceasta inseamna ca au aparut k erori de un singur bit. O singura eroare in rafala este caracterizata de un 1 initial, un amestec de 0 si 1 si un 1 final, toti ceilalti biti fiind 0. La receptia cadrului cu suma de control, receptorul il imparte prin G(x); aceasta inseamna ca va calcula [T(x)+E(x)]/G(x). T(x)/G(x) este 0,asa incat rezultatul calculului este pur si simplu E(x)/G(x).Acele erori care se intampla sa corespunda unor polinoame care il au ca factor pe G(x) vor scapa;toate celelalte vor fi detectate. In continuare este ilustrat calculul pentru cadrul 1101011011 si G(x) = x 4 + x + 1 : Cadru: 1101011011 Generator: 10011 Mesaj dupa adaugarea a 4 biti de zero: 11010110110000 1 1 0 1 0 1 1 0 1 1 0 0 0 0 10011

10011 =10011 1100001010 10011 = 00001 00000 =00010 00000 =00101 00000 =01011 00000 =10110 10011 =01010 00000 =10100 10011 =01110 00000 = 1 1 1 0 = Rest Cadrul transmis va fi : 11010110111110 Daca a aparut o eroare pe un singur bit E(x) = x i , unde i determina care bit este eronat.Daca G(x) contine doi sau mai multi termeni, nu poate fi divizaor al lui E(x), asa incat toate erorile pe un singur bit vor fi detectate. Daca au aparut doua erori izolate pe un singur bit , atunci E(x) = x i +x j , unde i>j. 1 Alternativ, aceasta se poate scrie ca E(x) = x j (x i j + ) .Daca presupunem ca G(x) nu este divizibil prin x, o conditie suficienta pentru detectarea erorilor duble este ca G(x) sa nu se divida prin x k + pentru nici o valoare a lui k mai mica de 32768. 1 Daca exista un numar impar de biti eronati, E(x) contine un numar impar de termeni (adica x 5 +x 2 +1 , dar nu x 2 +1). Interesant este ca , in sistemul modulo 2 nu exista nici un polinom cu numar impar de termeni care sa il aiba pe x+1 ca factor.Facandu-l pe x+1 factor al lui G(x), putem determina toate erorile constituite dintr-un numar impar de biti inversati. Pentru a demonstra ca nici un polinom cu numar impar de termeni nu este divizibil cu x+1, sa presupunem ca E(x) are un numar impar de termeni si este divizibil cu x+1.Factorizam E(x) in (x+1)Q(x).Acum evaluam E(1) = (1+1)Q(1).deoarece 1+1=0 (modulo 2), E(1) trebuie sa fie 0.Daca E(x) are un numar impar de termeni, substituind fiecare x cu 1, rezultatul obtinut va fi intotdeauna 1.Prin urmare nici un polinom cu numar impar de termeni nu este divizibil cu x+1.In sfarsit, si cel mai important, un cod polinomial cu r biti de control va detecta toate erorile in rafala de lungim <=r.O eroare in rafala de lungime k poate fi reprezentata de x j ( x k 1 +... +1) , unde i determina cat de departe este localizata rafala fata de capatul din dreapta al cadrului receptionat.Daca G(x) contine termenul x 0 , atunci nu il va avea ca factor pe x i , asa ca daca gradul expresiei dintre paranteze este mai mic decat gradul lui G(x), restul nu poate niciodata fi 0. Daca lungimea rafalei este r+1, restul impartirii cu G(x) va fi zero daca si numai daca rafala este identica cu G(x).Prin definitia rafalei, primul si ultimul bit trebuie sa fie 1, asa ca potrivirea depinde de cei r-1 biti intermediari.Daca toate combinatile sunt privite ca egal 1 posibile, atunci probabilitatea ca un cadru incorect sa fie acceptat ca fiind valid este 1/2 r . Anumite polinoame au deventi standarde internationale.Cel folosit in IEEE 802 este: 32 x + x 26 + x 23 + x 22 + x16 + x12 + x11 + x10 + x8 + x 7 + x 5 + x 4 + x 2 + x1 + 1

Desi calculele necesare pentru determinarea sumei de control pot sa para complicate,Peterson si Brown (1961) au aratat ca pentru a calcula si verifica suma de control poate fi utilizat un simplu registru de deplasare.In practica,acest tip de circuit este utilizat aproape intotdeauna.Este folosit aproape in toate retele locale si uneori si in cazul liniilor punct la punct. Timp de zeci de ani s-a presupus ca acele cadre pentru care se calculeaza suma de control contin biti aleatori. Toate analizele algoritmilor pentru calculul sumei de control au fost facute cu aceasta presupunere. Analize mai recente ale datelor reale au aratat ca aceasta presupunere nu este corecta. Ca o consecinta ,in unele circumstante, erorile nedetectate sunt mult mai obisnuite decat s-a crezut anterior.

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