Documente Academic
Documente Profesional
Documente Cultură
CORECTOR DE O EROARE
1. Introducere teoretică
Un cuvânt de cod ciclic se poate reprezenta ca un polinom:
v ( x ) = an −1 x n −1 ⊕ an− 2 x n −2 ⊕ … ⊕ a1 x ⊕ a0 (1)
în care cei n coeficienÛi ai ∈ {0,1} constituie simbolurile cuvântului de cod, k dintre simboluri sunt
de informaÛie Õi m=n-k sunt de control.
Un cod ciclic este definit prin polinomul s|u generator g ( x ) , de grad m. Cuvintele codului
ciclic generat de g ( x ) sunt polinoame de grad n-1 sau mai mic, multipli ai polinomului g ( x ) .
Altfel spus, orice cuvânt de cod ciclic v ( x ) este divizibil prin g ( x ) . Aceast| proprietate a
cuvintelor de cod ciclic este utilizat| în realizarea cod|rii Õi decod|rii: la codare, fiind date
simbolurile de informaÛie, trebuie determinate simbolurile de control, astfel încât s| rezulte un
cuvânt v ( x ) , care împ|rÛit prin g ( x ) s| dea restul nul; la recepÛie, decodorul verific| dac| restul
împ|rÛirii cuvântului recepÛionat v′ ( x ) ) prin g ( x ) este sau nu zero. Dac| restul este zero, cuvântul
recepÛionat este corect, iar în caz contrar cuvântul recepÛionat este eronat datorit| perturbaÛiilor de pe
canal. În acest ultim caz, dac| structura codului permite corecÛia erorii, se va determina cuvântul
eroare ε ( x ) , iar cuvântul corect va rezulta din relaÛia:
v ( x ) = v′ ( x ) ⊕ ε ( x ) (2)
unde cuvântul eroare ε ( x ) este un cuvânt de lungime n cu unit|Ûi plasate pe poziÛiile în care s-au
introdus erori Õi zerouri pe poziÛiile în care nu s-au introdus erori în cuvântul recepÛionat.
Pornindu-se de la polinomul informaÛional
i ( x ) = ak −1 x k −1 ⊕ ak − 2 x k − 2 ⊕ … ⊕ a1 x ⊕ a0 (3)
construit numai cu simbolurile de informaÛie, se pot construi coduri nesistematice sau sistematice, în
conformitate cu relaÛiile:
- cod nesistematic:
v ( x) = g ( x) ⋅i ( x) (4)
- cod sistematic:
v ( x ) = x mi ( x ) ⊕ rest { x mi ( x ) g ( x )} (4)
62
Determinarea posibilit|Ûilor de corecÛie sau detecÛie a codului se face prin alegerea adecvat|
a polinomului generator g ( x ) . În cazul corecÛiei unei erori, polinomul generator se alege primitiv de
grad m, determinat din relaÛia: 2m $ m + k + 1.
Figura 1
C2, C1, C0 sunt cele trei celule binare ale registrului de deplasare, gi sunt multiplicatoare cu
constanta gi ∈ {0,1}, iar ⊕ sunt sumatoare modulo doi. Pentru acest circuit se poate defini matricea
caracteristic| [T]:
0 1 0
[T ] = 0 0 1 (6)
g 0 g1 g 2
stC 0
care permite determinarea evoluÛiei stărilor registrului. Se noteaz| [S] = stC1 o stare a registrului,
stC 2
63
0
stCk - starea celulei k Õi [U] = 0 specificând c| C0 Õi C1 sunt în "0" logic Õi C2 în "1" logic. Starea
1
[ Si ] = [T ] ⋅ [ Si −1 ] ⊕ an−i [U ] (7)
FuncÛionarea circuitului este urm|toarea: în primele patru tacte pe intrarea A se aplic|
simbolurile cunoscute, de informaÛie, a6 , a5 , a4 , a3 , iar în ultimele trei tacte comutatorul este trecut pe
poziÛia 2, pe intr|rile A Õi B ale sumatorului S3 aplicându-se aceleaÕi simboluri (intrarea A se uneÕte
astfel cu B), respectiv cele de la ieÕirea sumatorului S2. Din acest motiv starea final| a registrului este
nul|. Prin urmare, în punctul A, la ultimele trei tacte se obÛin simbolurile de control a2 , a1 , a0 ale
cuvântului de cod. În continuare, se vor determina relaÛiile dintre simbolurile de informaÛie Õi cele de
control, scriind cu ajutorul matricei caracteristice succesiunea de st|ri a registrului cu reacÛie.
Se alege polinomul generator g ( x ) = x3 ⊕ x ⊕ 1 , pentru care:
0 1 0
[T ] = 0 0 1 (8)
1 1 0
0
[ S2 ] = [T ] ⋅ [ S1 ] ⊕ a5 [U ] = a6 = a6 [T ] ⋅ [U ] ⊕ a5 [U ] (10)
a5
a6
[ S3 ] = [T ] ⋅ [ S2 ] ⊕ a4 [U ] = a5 = a6 [T ] [U ] ⊕ a5 [T ][U ] ⊕ a4 [U ]
2
(11)
a6 ⊕ a5
a5
[ S4 ] = [T ] ⋅ [ S3 ] ⊕ a3 [U ] = a6 ⊕ a4 = a6 [T ] [U ] ⊕ a5 [T ] [U ] ⊕ a4 [T ][U ] ⊕ a3 [U ]
3 2
(12)
a6 ⊕ a5 ⊕ a3
a6 ⊕ a4
[ S5 ] = [T ] ⋅ [ S 4 ] ⊕ a2 [U ] = a6 ⊕ a5 ⊕ a3 =
a6 ⊕ a5 ⊕ a4 ⊕ a2
64
= a6 [T ] [U ] ⊕ a5 [T ] [U ] ⊕ a4 [T ] [U ] ⊕ a3 [T ][U ] ⊕ a2 [U ]
4 3 2
(13)
a6 ⊕ a5 ⊕ a3
[ S6 ] = [T ] ⋅ [ S5 ] ⊕ a1 [U ] = a6 ⊕ a5 ⊕ a4 ⊕ a2 =
a3 ⊕ a4 ⊕ a5 ⊕ a1
= a6 [T ] [U ] ⊕ a5 [T ] [U ] ⊕ a4 [T ] [U ] ⊕ a3 [T ] [U ] ⊕ a2 [T ][U ] ⊕ a1 [U ]
5 4 3 2
(14)
a6 ⊕ a5 ⊕ a4 ⊕ a2
[ S7 ] = [T ] ⋅ [ S6 ] ⊕ a0 [U ] = a3 ⊕ a4 ⊕ a5 ⊕ a1 =
a2 ⊕ a3 ⊕ a4 ⊕ a0
= a6 [T ] [U ] ⊕ a5 [T ] [U ] ⊕ a4 [T ] [U ] ⊕ a3 [T ] [U ] ⊕ a2 [T ] [U ] ⊕ a1 [T ][U ] ⊕ a0 [U ] (14)
6 5 4 3 2
Dac| se are în vedere c| starea dup| Õapte tacte a registrului este nul|, se pot obÛine relaÛiile
dintre simbolurile de informaÛie Õi cele de control:
0 a2 = a6 ⊕ a5 ⊕ a4
[S7] = 0 Õi deci a1 = a3 ⊕ a4 ⊕ a5 (16)
0 a = a ⊕ a ⊕ a
0 3 5 6
Se poate ar|ta c| expresia [S7] dat| de relaÛia (15) se poate pune sub forma:
[ S7 ] = [ H ][ v ]
T
(17)
unde:
este matricea de control a codului, iar cuvântul de cod [v] se reprezint| sub forma unei matrice linie:
[ v ] = [ a0 a1 a2 a3 a4 a5 a6 ] (19)
În figura 2 Õi tabelul 1 sunt prezentate circuitul de codare, respectiv st|rile intr|rii, ieÕirii Õi
st|rile celulelor registrului în cazul folosirii polinomului generator g ( x ) = x 3 ⊕ x ⊕ 1 . Dup| ce
utimul simbol informaÛional, a3 , a fost introdus în R.D.R., cheia K este trecut| pe poziÛia 2.
Începând cu tactul 8 se face codarea pentru al doilea cuvânt de cod.
Figura 2
65
Tabelul 1
Tact Cheia Intrare Stare registru IeÕire
K C2 C1 C0
1 a6 0 0 0 a6
2 a5 a6 0 0 a5
3 poz.1 a4 a5 a6 0 a4
4 a3 a6 r a4 a5 a6 a3
5 0 a6 r a5 r a3 a6 r a4 a5 a2 = a6 r a5 r a4
6 poz.2 0 0 a6 r a5 r a3 a6 r a4 a1 = a5 r a4 r a3
7 0 0 0 a6 r a5 r a3 a0 = a6 r a5 r a3
8 poz.1 a6 0 0 0 a6
La decodare pe intrarea A se aplic| succesiv timp de Õapte tacte simbolurile a6′ , a5′ ,… , a1′ , a0′
ale cuvântului recepÛionat, starea registrului devenind conform relaÛiei (7):
S ′ = a ′ [T ]6 [U ] ⊕ a ′ [T ]5 [U ] ⊕ … ⊕ a ′ [T ][U ] ⊕ a ′ [U ] (20)
7 6 5 1 0
Dac| simbolurile ak ′ sunt toate corecte, S7′ = [ Z ] = [ 0] . Dac| unul din simbolurile ak ′ este
ak ′ = ak pt k ≠ i cu k = 0,1,… , 6
(22)
ak ′ = ak ⊕ 1 pt k = i
În acest caz, relaÛia (21) devine:
[ Z ] = a6 [T ] [U ] ⊕ a5 [T ] [U ] ⊕ … ⊕ a1 [T ][U ] ⊕ a0 [U ] ⊕ [T ] [U ] = [T ] [U ]
6 5 i i
(23)
Õi este clar c| pentru fiecare poziÛie eronat|, deci pentru fiecare cuvânt eroare, avem alt corector,
adic| acest cod are propriet|Ûi de corecÛie.
66
Figura 3
Pentru corecÛia erorii de pe poziÛia "i" registrul de deplasare cu reacÛie este l|sat s| evolueze
liber (la intrarea sa se aplic| "0" logic) în decursul urm|toarelor Õapte tacte. Succesiunea de st|ri a
registrului de deplasare cu reacÛie în evoluÛie liber| se poate determina cu relaÛiile:
S ′ = [T ] S ′ = [T ][T ]i [U ]
8 7
S ′ = [T ] S ′ = [T ]2 [T ]i [U ]
9 8
……………………… (24)
1
S14−i −1′ = [T ] [T ] [U ] = [T ] [U ] = 0
7 − i −1 i −1
0
Deci, dac| este eronat simbolul ai , la tactul 14-i-1, adic| atunci când simbolul eronat ajunge
67
1
în celula binar| 7 a lui RD1, registrul trece prin starea fix| 0 , caz în care la ieÕirea porÛii ÔI1 rezult|
0
4. Dispozitivul de laborator
Dispozitivul de laborator este construit pentru coduri ciclice 7:4 generate de
g ( x ) = x 3 ⊕ x 2 ⊕ 1 (caz a) sau g ( x ) = x3 ⊕ x ⊕ 1 (caz b). fig.4.
Figura 4
68
SAU2, care valideaz| poarta ÔI1. Simultan poarta SAU1 are 0 la ieÕire. Se obÛin simbolurile de
control care se aplic| prin ÔI1, SAU3 atât c|tre ieÕire (XOR1), cât Õi pe a doua intrare a lui S3. Prin
comutatoarele de la intrarea porÛii SAU4 se prescriu simbolurile cuvântului eroare. De exemplu,
dac| este "1" logic în celula 3, pe linie se transmite a3 ; în funcÛie de poziÛia comutatorului al treilea,
la ieÕirea porÛii SAU4 se obÛine ε 3 de valoare 0 sau 1; poarta XOR1 realizeaz| a3 ⊕ ε 3 . O dat| cu
revenirea unit|Ûii în celula 6 se începe transmiterea unui nou cuvânt de cod.
Decodorul este construit conform schemei de principiu, comutatorul C al decodorului fiind
realizat cu bistabilul CB care valideaz| când ÔI2, ÔI5, când ÔI3, ÔI4.
Pentru corecta sincronizare a codorului cu decodorul, tactul decodorului este întârziat prin
selectarea frontului opus faÛ| de tactul codorului.
La sfârÕitul fiec|rui cuvânt se d| tact pentru CB, iar la tactul urm|tor se d| tact pentru
registrele de afiÕare, care încarc| paralel cuvintele.
Figura 5
6. Desfăşurarea lucrării
1. Se întocmeÕte un tabel cu funcÛionarea codorului în cazul polinomului
69
g ( x ) = x3 ⊕ x 2 ⊕ 1 .
2. Se verific| faptul c| v ( x ) obÛinut la ieÕirea codorului este cuvânt de cod, divizibil prin
g ( x) .
3. Se scriu toate cuvintele de cod pentru ambele polinoame generatoare Õi se verific|:
- distanÛa Hamming între cuvinte;
- proprietatea de ciclicitate.
4. Să se găsească cuvintele de cod ciclice sistematice pentru transmiterea numerelor
zecimale de la 0 la 7. Numerele se transcriu în binar pe numărul minim de biŃi.
5. CalculaÛi resturile diviz|rii polinoamelor ε i ( x ) la g ( x ) , unde ε i ( x ) = xi Õi
i ∈ {0,1,2,...,6}. Concluzii.
6. Să se deseneze structura decodorului în cazul polinomului g ( x ) = x 3 ⊕ x 2 ⊕ 1 şi să
se afle cuvântele de cod rezultate în urma decodării, dacă s-au recepŃionat cuvintele
[ v1′ ] = [1 0 1 1 1 0 0] , [ v2′ ] = [1 0 0 0 0 1 0] , respectiv
71