Buletinul Ştiinţific al Universităţii "Politehnica" din Timişoara Seria ELECTRONICĂ şi TELECOMUNICAŢII TRANSACTIONS on ELECTRONICS and COMMUNICATIONS Tom 46(60), Fascicola 1, 2001 Codor/decodor ciclic.implementare MATLAB-Simulink Balta Horia 1 ABSTRACT In this paper is presented a MATLAB-Simulink program able to simulate the work of any cyclic coder/decoder system who operates with words no longer then 275 bits and a generator polynom with degree no more then 16. It is indicated how can be developed this program for bigger dimensions. Also, there are presented some experimental results obtained for three codes, with the generator polynoms x 3 +x+1, x 4 +x+1 and x 5 +x 2 +1. I. INTRODUCERE Codurile ciclice sunt folosite pentru protejarea informaţiei împotriva perturbaţiilor (erorilor). Sunt coduri bloc, sistematice şi corectează o eroare pe cuvânt. Sunt numite ciclice pentru că permutarea unui cuvânt de cod este deasemenea cuvânt de cod. Structural, un cuvânt de cod ciclic (sistematic), v, este format din n biţi, dintre care primii m sunt biţii de informaţie, iar ultimii k sunt biţii de control: semnalarea prezenţei erorilor, urmând ca, funcţie de aplicaţie, să se ignore cuvântul respectiv eronat, sau să se ceară retransmisia lui. În cazul corecţiei erorilor, prin verificarea cuvântului recepţionat, se stabileşte atât prezenţa erorii (codurile ciclice în discuţie sunt corectoare de o eroare), cât şi poziţia ei. II. CODOR CICLIC IMPLEMENTARE MATLAB-SIMULINK Implementarea relaţiei (4) se poate face printr-o schemă ce utilizează un registru de deplasare cu reacţie (RDR), arătată în figura 1. Schema prezentată poate să simuleze funcţionarea oricărui codor ciclic având ca polinom generator orice polinom de grad mai mic sau egal cu 16 (primitiv sau nu). v = a n-1 a n-2...a 1 a 0 (1) sau, sub formă polinomială: v(x) = a n-1 x n-1 + a n-2 x n-2 +... + a 1 x + a 0 (2) Între parametrii n, m şi k există relaţia: n = m+k = 2 k -1, k Z (3) Figura 1 Codor ciclic. Codarea codurilor ciclice se poate face prin multiplicare sau divizare. La codarea prin divizare se utilizează relaţia: v(x) = i(x) x k + rest(i(x) x k /g(x)) (4) unde rest( /g(x)) reprezintă restul împărţirii polinomului ( ) la g(x) polinomul generator al codului (un polinom primitiv). Decodarea presupune, în cazul detecţiei de erori, verificarea corectitudinii transmisiei fiecărui cuvânt de cod recepţionat (recontruit la recepţie) şi Figura 2 Semnalele de validare a porţilor AND. 1 Facultatea de Electronică şi Telecomunicaţii, Departamentul Comunicaţii Bd. V. Pârvan Timişoara 1900 e-mail balta@ee.utt.ro
Figura 3 Decodor ciclic.
În construcţia schemei s-au folosit următoarele elemente : -16 blocuri de întârziere cu un tact,t B, notate "1/z"; -16 amplificatoare, notate g(j), j = 1 16, cu amplificările presetate la valorile conţinute în vectorul: G = [g(j)], cu j = 1 16 (5) -3 sumatoare modulo-doi, unul cu 16 intrări, celelalte cu câte două; -2 porţi ŞI (AND) cu două intrări; -2 generatoare de semnal dreptunghiular, de perioadă nt B, (semnalele de validare a porţilor, P 1 şi P 2, prezentate în Fig.2). Primul generator, P 1, având factorul de umplere (n-k)/n şi întârzierea 0, iar al doilea generator, P 2, având factorul de umplere k/n şi întârzierea (n-k)t B ; -2 conexiuni cu exteriorul, o intrare şi o ieşire. Pentru a simula un anume codor ciclic, prin subsistemul MATLAB-Simulink cu schema din figura 1, este necesară setarea următorilor parametri : -T B R, durata bitului ; -n N, numărul de biţi dintr-un cuvânt de cod ; -k N, k < n, numărul de biţi de control şi totodată gradul lui g(x) ; - g j {0, 1}, j = 1 k-1, coeficienţii binari ai lui g(x) (g k şi g 0 sunt setaţi automat la valoarea 1). Aceşti parametri sunt precizaţi apriori prin intermediul programului MATLAB : «condit.m», descris în paragraful 4. În cazul în care n<16, restul amplificărilor g(n +1),...g(16) sunt setate automat la valoarea 0, neintervenind în funcţionarea codorului ciclic ales. Pentru dezvoltarea codorului la dimensiuni superioare lui 16, este necesară adăugarea de perechi celule de întârziere-amplificatoare, în schema din Fig.1. II.DECODOR CICLIC -IMPLEMENTARE MATLAB-SIMULINK Decodorul ciclic, prezentat în figura 3, execută atât detecţia de erori cât şi corecţia de o eroare. Pentru corecţia de o eroare este necesar ca g(x) să fie un polinom primitiv. Dacă nu este aşa, circuitul, prin ieşirea «corecţie», generează o secvenţă care este şi mai eronată decât cea de la intrare. Amplificările, presetabile, conţinute în două matrici : G = [g(j)] şi H = [h(j)] cu j = 1 16 (6) unde g(j), h(j) {0, 1}, sunt fixate prin programul «condit.m». Generatoarele de semnal P 1, P 2, R 1, R 2, şi R furnizează semnalele periodice (primele patru de perioadă 2nT B, iar ultimul de perioadă nt B ), cu acelaşi nume, prezentate în Fig.4. Circuitul prezintă 3 conexiuni cu exteriorul, o intrare, IN, şi două ieşiri, corespunzătoare corecţiei, respectiv detecţiei de erori. Figura 4 Semnalele de comandă utilizate în decodor. Pentru dezvoltarea schemei la dimensiuni superioare lui 16 în mod corespunzător cu a codorului, vor trebui adăugate, la fiecare din cele două RDR-uri ale decodorului, perechi celulă de întârziere/ amplificator. Blocul «Registru n», executat sub formă de subsistem (Fig.5), întârzie secvenţa de intrare cu Figura 5 Blocul Registru n.
Figura 6 Schema under-mask a unui bloc Registru j-25. nt B, unde valoarea maximă pentru n a fost fixată la 275. Fiecare din cele 11 blocuri componente ale lui «Registru n», notate «Registru 25-j», cu j=1 11, 275 amplificatoare sunt egale cu 0, mai puţin a n-a, care are valoarea 1. În acest fel, poarta SAU (OR) din componenţa Registrului n (Fig.5) va prelua secvenţa de la ieşirea celui de-al n-lea amplificator, validată binenţeles de poarta SAU (OR) din componenţa Registrului 25-s, unde s este egal cu parte întreagă din raportul n/25. La depăşirea lungimii de 275 pentru cuvintele de cod, se vor adăuga blocuri de întârziere de tipul «Registru 25-j», modificând corespunzător denumirile amplificatoarelor. Schema decodorului din Fig.3 este compusă în esenţă din două circuite, RDR I şi RDR II, ce execută alternativ decodarea cuvintelor aduse la intrarea «IN», unul a celor cu număr par iar celălalt a celor cu număr impar. Decodarea decurge în două etape, corespunzătoare, în timp, duratelor cuprinse între momentele de tact 0 şi nt B, respectiv nt B şi 2nT B. Etapa I. (0, nt B ) Se face recepţia cuvântului w t şi totodată verificarea sa. Circuitul care face recepţia (spre exemplu RDR I) are acces doar la intrare, legătura cu ieşirea fiind blocată de AND35 (în acest caz circuitul RDR II se află în etapa II cu cuvântul său, w t-1 ). Dacă restul împărţirii lui w t (x) la g(x) este nul, starea circuitului RDR I este şi ea nulă după exact n tacte de la începerea recepţiei. Dacă restul împărţirii lui w(x) la g(x) nu este nul, starea circuitului RDR I este diferită de zero. Etapa II. (nt B, 2nT B ) Circuitul RDR I are acces la ieşire prin poarta AND35, validată de P 2. Dacă starea circuitului RDR I după tactul nt B este nulă, atunci, pe toată durata acestei etape, semnalul de la ieşirea «detecţie» va fi nul, iar la ieşirea «corecţie» se va regăsi intact w t. Dacă starea RDR-ului I după momentul de tact nt B nu este nulă, atunci, în tactul (nt B, nt B +T B ), la ieşirea «detecţie» se va genera un unu logic iar în rest zero. Acel unu logic semnalează prezenţa erorilor în cuvântul w t. La ieşirea corecţie se va furniza un cuvânt, v t, care diferă de w t printr-o singură poziţie. În cazul corecţiei, decodorul execută greşit decodarea dacă numărul erorilor din cuvântul recepţionat este mai mare sau egal cu doi ; în acest caz se modifică o poziţie care nu era eronată ; În cazul detecţiei, decodorul greşeşte dacă cuvântul recepţionat este un alt cuvânt de cod, diferit de cel emis. De remarcat că există situaţii (cu mai mult de o eroare în cuvânt) în care decodorul semnalează prezenţa erorilor prin ieşirea «detecţie», însă furnizează la ieşirea «corecţie» un cuvânt eronat. IV DEFINIREA PARAMETRILOR În continuare este prezentat programul «condit.m». Liniile programului sunt scrise îngroşat, iar alături sunt date câteva explicaţii. clear Tb=input('Tb='); %Perioada bitului n=input('n='); %Numărul total de biţi dintr-un cuvânt k=input('k='); % Numărul de biţi de control dintr-un cuvânt g=zeros(1,16); % Se resetează valorile amplificărilor amplificatoarelor g h=g; % Se resetează valorile amplificărilor amplificatoarelor h for i=2:k-1 % Se introduce polinomul generator ; implicit se fixează g(1,i)=input('polinomul g='); % şi amplificările amplificatoarelor g end g(1,k)=1; g(1,1)=1;
for i=1:k-1 % Se setează valorile amplificărilor amplificatoarelor h h(1,i)=1; end m=zeros(11,25); % Se resetează valorile amplificărilor amplificatoarelor m r=m; % Se resetează valorile amplificărilor r uu=1; % Se află poziţia s a ieşirii din blocul de întârziere (între cele 275 ieşiri) while uu*25<=n uu=uu+1; end s = n-25*uu+26 ; r(uu,s)=1; % Se setează amplificarea celui de-al s -lea amplificator (ieşirea Registrului n) clc V REZULTATE EXPERIMENTALE În figurile 7 şi 8 sunt prezentate schema bloc a sistemului de transmisie utilizat precum şi curbele BER obţinute. Simularea canalului de transmisie s-a făcut prin sumarea modulo doi, la secvenţa de date, a unei secvenţe pseudoaleatoare generate de o sursă binară având probabilitatea de emisie a lui «1» egală cu b, rata erorii. Curbele obţinute arată superioritatea codului n=7/k=3 din punctul de vedere al corecţiei. Codurile sunt ineficiente din punct de vedere al corecţiei pentru o rată a erorii în canal peste valoarea de 0,1. În Fig. 9 se prezintă capacitatea de detecţie pentru cele trei coduri. Sunt de remarcat valorile ridicate ale acesteia, chiar şi la rate de eroare mari. MULŢUMIRE Mulţumesc doamnei profesoare Miranda Naforniţă, de la Univ. Politehnica Timişoara şi domnului profesor Safwan EL ASSAD, de la École polytechnique de l université de Nantes, fără sprijinul cărora această lucrare nu ar fi fost posibilă. BIBLIOGRAFIE [1]--Monica Elena Borda, Teoria transmiterii informaţiei, E. Dacia, Cluj-Napoca, 1999 ; [2]--Alexandru Spătaru, Fondements de la theorie de la transmission de l information, Presses Polytechniques Romandes, Lausanne, 1987 ; [3]--Alexandru Spătaru, Teoria transmisiunii informaţiei, E.D.P., Bucureşti, 1983 ; [4]--Marin Ghinea, Virgiliu Fireţeanu, MATLAB-Calcul numeric-grafică-aplicaţii, E. Teora, Bucureşti, 1997 Figura 7. Sistemul de transmisie şi analiză.
Figura 8. Rata erorii obţinută în cazul corecţiei de o eroare. Figura 9. Capacitatea de detecţie.