Sunteți pe pagina 1din 10

CODURI DETECTOARE SI

CORECTOARE DE ERORI
CRISTIAN ROTARU, MASTER I, AAC
• O eroare apărută în mediul de transmisie digital presupune coruperea
datelor, mai exact inversarea unui bit care inițial s-a transmis ca 0 și a fost
recepționat ca fiind 1. Erorile sunt de obicei cauzate de anumite defecțiuni
ale mediului de transmisie, acestea putând fi permanente sau temporare
• În acest context, există două abordări:
• prima ar fi ca pe lângă fiecare bloc de date transmis să se includă suficientă informație
redundantă pentru ca receptorul să poată deduce ce a fost transmis, în cazul în care
cadrul este afectat de o eroare
• iar cea de-a doua soluție este să se includă suficientă informație redundantă pentru a
detecta faptul că a avut loc o eroare, fără capabilitatea corectării acesteia la recepție,
cerându-se retransmisia cadrului în cazul apariției de erori
• Pentru a înțelege cum pot fi tratate erorile, este necesar să înțelegem ce este
de fapt o eroare. În mod normal, un cadru conține m biți de date și r biți
redundanți sau biți de control. Considerăm lungimea totală n = m + r. Date
fiind două cuvinte de cod, spre exemplu, 10001001 și 10110001, putem
determina câți biți corespunzători diferă, în acest caz este vorba despre 3
biți
• Pentru a determina câți biți diferă, aplicăm operatorul sau exclusiv între cele
două cuvinte de cod și numărăm biții de 1 din rezultat: 10001001 xor
10110001 = 00111000
• Numărul de poziții binare în care două cuvinte de cod diferă, se numește
distanța Hamming
• Codul Hamming descris anterior a fost generalizat pentru orice număr de biți.
Pentru proiectarea unui cod Hamming corector de erori singulare (”single
error correcting”) trebuie urmați pașii: numerotarea biților începând cu 1,
fiecare poziție care este putere a lui 2 reprezintă bit de paritate, celelalte
poziții reprezintă biți de date, fiecare bit de paritate acoperă biți astfel:
bitul k de paritate acoperă acele poziții care au bitul k cel mai semnificativ
pe 1. Deși modul de calcul al parității (pare sau impare) nu este esențial, de
regulă însă se folosește paritatea impară
• Uneori se adaugă un bit suplimentar de paritate a întregului cod facând
distanța minimă 4. În acest caz s e poate distinge între erorile simple (care se
pot corecta) si erorile duble care doar se detectează, acesta fiind și cazul
implementării descrise în lucrarea de față. Codurile astfel rezultate se numesc
SECDED ("single error correction, double error detection")
• Implementarea unității de generare a biților de paritate este reprezentată în
Fig.5. Pe baza acesteia am implementat în etapa următoare codul folosind
doar directive nmos și pmos. Schema pentru decodificare nu este completă și
nu am mai continuat cu implementarea la nivel de măști pentru această
unitate. Voi exemplifica pe unitatea de generare a biților de paritate.
Intrările in0-7 reprezintă fiecare dintre cei 8 biți de date
• Masca generată pentru modulul
de codificare rezultat din codul
scris manual (Verilog)
CONCLUZII

• Implementarea comportamentală a dat rezultate confrom așteptărilor, reușind să


detecteze erori simple și duble, precum și să le corecteze pe cele simple. La nivel de
măști am generat doar pentru codul modulului de codificare (de generare a biților
de paritate), deoarece am obținut niște scheme complexe, mai dificil de tradus în
cod care să poată fi interpretat și folosit de către Microwind pentru compilare și
generare de măști în mod corect.
• Codul generat din directive nmos și pmos a avut același rezultat ca și codul descris
comportamental ( în stânga sunt biții de date, în dreapta sunt biții de paritate)
CONCLUZII

• În partea stângă sunt biții de


date, iar in partea dreaptă
sunt biții de paritate
rezultați. Printr- o
comparație cu rezultatele din
secțiunea 2, se poate
observa că outputul este
același. (Acest output a fost
obținut cu Icarus Verilog, pe
o mașină Linux. Graficul a
fost generat cu GTKWave.)
MULTUMESC!