Sunteți pe pagina 1din 10

Laborator 1 TIC Coduri Hamming

Introducere în Matlab
Matlab-ul este un limbaj de nivel foarte înalt care prezintă performanŃe deosebite
în ceea ce priveşte calculul tehnic (Matlab reprezintă o prescurtare a cuvintelor “Matrix
laboratory”). Pe lângă interpretorul de comenzi sunt prezente instrumente cum ar fi cele
pentru vizualizarea datelor, prelucrarea imaginilor şi sunetelor, analiza circuitelor
electrice, etc.
Spre deosebire de alte limbaje, elementele de bază cu care se lucrează sunt
vectorii. Utilizatorul poate defini şi folosi vectori ai căror dimensiuni iniŃiale nu trebuie
specificate. Problemele legate de gestionarea memoriei la operaŃiile care presupun
creşterea dimensiunii unui vector se fac automat, transparent utilizatorului, ceea ce este
un avantaj faŃă de limbaje de programare cum ar fi C sau C++.
FuncŃiile specifice unui anumit domeniu sunt grupate în colecŃii de funcŃii sau
“toolboxes”. Acestea uşurează foarte mult folosirea programului în scop educaŃional sau
de cercetare deoarece utilizatorul se poate concentra direct pe aplicarea unei serii de
operaŃii asupra unui set de date fără a se îngriji exclusiv de definirea acestor operaŃii.
Există mai multe colecŃii de funcŃii specifice domeniului electronicii cum ar fi cea
pentru prelucrarea de semnale sau pentru domeniul comunicaŃiilor.
Fereastra principală a programului permite accesul direct la interpretorul de
comenzi. Acesta este un instrument care execută o secvenŃă de cod, linie cu linie.
SecvenŃa de cod poate fi introdusă direct de la tastatură, iar după fiecare linie se apasă
tasta Enter sau poate fi scrisă într-un fişier de tip text, care se salvează cu extensia “.M”
şi se execută prin simpla scriere a numelui fişierului.
Limbajul Matlab respectă principiile programării structurale, astfel că există o
foarte mare asemănare între sintaxa şi structurile sale cu cea a limbajului C.

NoŃiuni despre Simulink


Simulink este un pachet de programe pentru modelarea, simularea şi analizarea
sistemelor dinamice. Pot fi simulate atât sisteme liniare cât şi neliniare, modelate în
timp continuu, discret sau într-o combinaŃie a celor două. Sistemele pot avea porŃiuni
eşantionate cu frecvenŃe de eşantionare diferite.
Pentru modelarea de sistem este furnizată o interfaŃă grafică intuitivă. Blocurile
sunt plasate şi interconectate cu ajutorul mouse-ului ceea ce reprezintă un mare avantaj
(faŃă de scrierea directă a ecuaŃiilor diferenŃiale ce definesc un sistem). Simulink oferă o
colecŃie de blocuri cum ar fi: generatoare de semnal, instrumente de vizualizare, blocuri
care realizează funcŃii matematice, componente liniare şi neliniare, etc. Setul de blocuri
furnizat poate fi extins oricând cu noi blocuri – este furnizată documentaŃie completă
despre felul cum se poate crea un nou bloc.

1
Laborator 1 TIC Coduri Hamming

Mai multe blocuri pot fi grupate oricând într-un bloc nou, oferind astfel posibilităŃi
extinse de analiză la un nivel superior de organizare. După definirea unui model nou,
simularea se poate efectua atât în mod grafic cât şi cu ajutorul interpretorului. Cele două
instrumente sunt legate între ele şi astfel se poate opta pentru orice modalitate de
analiză.
Pentru lansarea programului Simulink se tastează în mediul Matlab comanda:
‘simulink’.
Fereastra care se deschide conŃine toate blocurile disponibile grupate pe categorii
(figura 1.1 -pentru Matlab 6.0 sub sistemul de operare Windows). Dacă se deschide
biblioteca “Simulink” se observă următoarele zone:

Continuous - blocuri ce furnizează funcŃii specifice circuitelor analogice:


derivare, integrare, funcŃie de transfer, întârziere în domeniul timp,
etc.;
Discrete - blocuri ce furnizează funcŃii specifice circuitelor discrete: funcŃie de
transfer discretă, filtru discret, întârziere în domeniul timp cu un
pas, integrator discret, etc.;
Function & Tables - blocuri care permit extinderea setului de blocuri existent cu blocuri
create de utilizator;
Math Operations - funcŃii matematice de ordin general: sumă, produs, modul,
amplificare, fază, funcŃii trigonometrice, etc.;
Nolinear - funcŃii specifice circuitelor neliniare;
Signal Routing - blocuri necesare pentru definirea semnalelor: masă,
multiplexor de mai multe semnale, funcŃii pentru preluarea şi
salvarea valorilor în spaŃiul Matlab, etc.;
Sinks - aparate de măsură: multimetru, osciloscop, graphic XY, etc.;
Sources - surse de semnal: generatoare de semnal sinusoidal, triunghiular,
dreptunghiular, zgomot, rampă, pulsuri, etc.
Se poate obŃine o descriere detaliată a fiecărui bloc dacă se selectează şi se
urmăreşte în partea de sus a ferestrei explicaŃiile aferente. O structurare asemănătoare se
întâlneşte în cadrul fiecărui modul. Celelalte module introduc blocuri noi care
realizează funcŃii complexe prin combinarea blocurilor elementare descrise anterior.
Pentru plasarea unui bloc nou în schemă, acesta este selectat în fereastra
bibliotecilor şi se pozitionează în schemă folosind “drag and drop”.

2
Laborator 1 TIC Coduri Hamming

Fig. 1.1 Biblioteca de blocuri a Simulink-ului

3
Laborator 1 TIC Coduri Hamming

Coduri Hamming

Codurile Hamming reprezintă o clasă aparte a codurilor bloc corectoare de erori.


Aceste coduri şi variantele derivate din ele sunt larg utilizate pentru corecŃia erorilor în
comunicaŃii digitale şi în sistemele de stocare a datelor.
Pentru orice întreg pozitiv m ≥ 3 , există un cod Hamming având urmatorii
parametri:
• lungimea codului: n = 2m − 1;
• numărul simbolurilor de informaŃie: k = 2 m − m − 1;
• numărul simbolurilor de control: n − k = m;
• capacitatea de corecŃie: t = 1(d min = 3) .
Matricea H are următoarea formă:
H = [I m Q ] ,
unde I m este matricea unitate de ordinul m.
Matricea generatoare a codului este:
G = [Q T I k ] ,
unde I k este matricea unitate de ordinul k.

AplicaŃie coduri Hamming

Codurile Hamming fac parte din categoria codurilor bloc. Aceste coduri sunt
coduri perfecte, corectoare de o eroare, corectează toate structurile de erori simple dar
nici o combinaŃie de erori duble, şi detectează toate structurile de eroare cu două sau
mai puŃine erori.
Pentru a arăta utilitatea codului Hamming utilizăm următorul model:

4
Laborator 1 TIC Coduri Hamming

Fig. 1.2
Folosim urmatoarele blocuri:
- Random-Integer Generator: generează numere întregi distribuite în intervalul [0, M-
1]. Parametrii blocului sunt:
- ‘M-ary number’ este 2^4 deoarece codul Hamming utilizat este C(7,4) şi
numerele generate sunt reprezentate în binar pe 4 biŃi.
- ‘Initial seed’ este [12345]. Modificând acest parametru se modifică secvenŃa
de numere generate.
- ‘Sample time’ este 1. Generează câte un număr la fiecare secundă.
- Integer to Bit Converter: transformă un vector de întregi într-un vector de biŃi.
Parametrul blocului este:
- ‘Number of bits per integer’ este 4.
- Hamming Encoder: crează un cod Hamming din datele vectorului binar. Parametrii
blocului sunt:
- ‘Codeword length N’ este 7 .
- ‘Message length K’ este 4 deoarece se utilizează codul C(7,4).
- Binary Symmetric Channel: introduce erori binare. Parametrii blocului sunt:
- ‘Error probability’ este 0.29, pentru a introduce o singură eroare.
- ‘Input vector length’ este 7 deoarece cuvântul de cod cu care se adună este
reprezentat pe 7 biŃi.
- ‘Initial seed’ este 1234.
- ‘Sample time’ este 1 pentru a se genera un eşantion la fiecare secundă.
- Hamming Decoder: decodează un cod Hamming pentru a reface vectorul binar
transmis. Parametrii blocului sunt:
- ‘Codeword length N’ este 7 .
- ‘Message length K’ este 4 deoarece se utilizează codul C(7,4).

5
Laborator 1 TIC Coduri Hamming

- Bit to Integer Converter: transformă un vector de biŃi într-un vector de întregi.


Parametrul blocului este:
- ‘Number of bits per integer’ este 4.
- Error Meter: compară semnalele de la intrare, le afişează şi evaluează rata de eroare.
Parametrii blocului sunt:
- ‘Bit per symbol’ este 4 deoarece utilizează 4 biŃi pentru fiecare simbol
transmis.
- ‘Number of digits on display’ este 20 deoarece afişează 20 de simboluri.
- ‘Delay between input (1st port) and output (2nd port)’ este 0
- ‘Sample time’ este 1 deoarece se consideră un eşantion la fiecare secundă.
- Sum: afişează suma elementelor de la intrare. Parametrii blocului sunt:
- ‘Icon shape’ este rectangular.
- ‘List of signs’ este |+.
- Scope: afişează numărul de erori.
- Display: afişează valoarea de la intrare.
Primul număr generat aleator este 13.
Numărul 13 este transformat în binar devenind [1101] care reprezintă secvenŃa de
informaŃie.
Codului C(7,4) îi corespunde matricea generatoare
 g 0  1 1 0 M 1 0 0 0
 g  0 1 1 M 0 1 0 0
G =  1 =  .
 g 2  1 1 1 M 0 0 1 0
   
 g 3  1 0 1 M 0 0 0 1
Calculăm cuvântul codat care este dat de: v=i*G
 n =7 
v = 1 ⋅ g 0 + 1 ⋅ g1 + 0 ⋅ g 2 + 1 ⋅ g 3 = [1101000] + [0110100] + [1010001] = 000M1101
 n − k =3 k = 4 
Blocul Binary Symmetric Channel introduce eroarea e=[0000001] care se adună la
cuvântul codat formând secvenŃa recepŃionată r=[0001100].
Blocul Hamming Decoder decodează secvenŃa recepŃionată astfel:
Pentru codul C(7,4), considerat, matricea de control va fi
1 0 0 M 1 0 1 1 
H = 0 1 0 M 1 1 1 0  .
 
0 0 1 M 0 1 1 1
Sindromul este dat de :
s = Hr T = [1 0 1] .
T

6
Laborator 1 TIC Coduri Hamming

Fie cuvântul eroare e = [e0 e1 e2 e3 e4 e5 e6 ] . Atunci :


e0 + e3 + e5 + e6 = 1 
 
s = Hr T ⇒  e1 + e3 + e4 + e5 = 0 . Rezultă că eroarea este e=[0000001].
 e + e + e + e = 1
 2 4 5 6 
Ştiind eroarea introdusă se reface secvenŃa de informaŃie transmisă.
v′ = r + e = [0001100] + [0000001] = [0001101] = v .
Rezultă secvenŃa estimată care este [1101].
Se reface astfel numărul 13.
Blocul Error Meter va afişa următoarele rezultate:

Fig. 1.3
Modificând în blocul Binary Symmetric Channel parametrul Error probability
putem introduce două erori sau chiar nici una.
Pentru a nu introduce erori parametrul ‘Error probability’ este 0.2 .

Fig. 1.4

7
Laborator 1 TIC Coduri Hamming

În cazul modelului de mai sus nu a fost introdusă nici o eroare astfel încât
sindromul calculat este s=0 de unde rezultă v = r ( secvenŃa de informaŃie este egală cu
secvenŃa recepŃionată).
Pentru a introduce două erori parametrul ‘Error probability’ este 0.3 . În acest caz
decodorul nu poate reface secvenŃa de informaŃie transmisă deoarece codul Hamming
este cod corector de o eroare producându-se o eroare de decodare.

Fig. 1.5
Pentru ca Random-Integer Generator să genereze un singur simbol am stabilit
timpul de simulare ca fiind de la ‘0’ la ‘0.5’ deoarece primul simbol se generează la ‘0’
şi al doilea la ‘1’.
Pentru a genera mai multe simboluri timpul de simulare este stabilit de la 0 la 19
generându-se astfel 20 de numere. Numărul erorilor introduse pentru cele 20 de numere
sunt reprezentate pe diagrama blocului Scope.

8
Laborator 1 TIC Coduri Hamming

Fig. 1.6

În acest caz blocul Error Meter va afişa următoarele rezultate:

Fig. 1.7
Comparând rezultatele reprezentate în fig. 1.6 şi 1.7 se observă că la transmiterea
primului simbol, 13, a fost introdusă o singură eroare care a fost corectată; la
transmiterea celui de al doilea simbol, 10, a fost introdusă tot o singură eroare care a

9
Laborator 1 TIC Coduri Hamming

fost corectată; la transmiterea celui de al treilea simbol, 10, au fost introduse două erori
care nu au putut fi corectate; la transmiterea celui de al patrulea simbol, 5, au fost
introduse două erori care nu au putut fi corectate; ş.a.m.d.

Desfasurarea lucrarii:
1. Sa se simuleze schema de mai sus notand efectele acesteia la modificarea
parametrului Error probability din blocul BCS si sa se specifice rolul
acestuia in schema.
2. Sa se modifice numarul de simboluri pentru care se face simularea
mentionand care este parametrul asupra caruia trebuie sa actionam.
3. Sa se repete simularea modificandu-se secventa de numere generate si sa
se specifice parametrul care trebuie modificat.

10