Tehnici de codare folosite în sistemele MIMO [625702]
Universitatea “Politehnica” din București
Facultatea de Electronică, Telecomunicații și Tehnologia Informației
Tehnici de codare folosite în sistemele MIMO
Proiect de diplomă
prezentat ca cerință parțială pentru obținerea titlului de
Inginer în domeniul Inginerie electronică, telecomunicații și tehnologii
informaționale
programul de studii de licență Tehnologii și Sisteme de Telecomunicații
Conducător științific Absolvent: [anonimizat]. Carmen VOICU Veronica -Cătălina PERJERU
Anul 2019
Cuprins
Lista figurilor ………………………….. ………………………….. ………………………….. ………………………….. 9
Lista abrevierilor ………………………….. ………………………….. ………………………….. …………………… 11
Introducere ………………………….. ………………………….. ………………………….. ………………………….. .. 13
1. Tehnici de modulație digitală ………………………….. ………………………….. ………………………….. .. 14
1.1 Modulația în fază a semnalului binar (BPSK) ………………………….. ………………………….. ……. 14
1.1.1 Modulatorul BPSK ………………………….. ………………………….. ………………………….. … 14
1.1.2 Demodulatorul BPSK ………………………….. ………………………….. …………………………. 17
1.2 Modulația în cuadratură a semnalului binar (QPSK) ………………………….. ……………………….. 17
1.2.1 Modulatorul QPSK ………………………….. ………………………….. ………………………….. … 18
1.2.2 Demodulatorul QPSK ………………………….. ………………………….. …………………………. 21
1.3 Modulația amplitudinii în cuadratură (QAM) ………………………….. ………………………….. …….. 22
1.3.1 Modulatorul QAM ………………………….. ………………………….. ………………………….. …. 23
1.3.2 Demodulatorul QAM ………………………….. ………………………….. ………………………….. 24
2. Sisteme MIMO ………………………….. ………………………….. ………………………….. …………………… 25
2.1 Evoluția sistemelor SISO ………………………….. ………………………….. ………………………….. ….. 25
2.2 Evoluția sistemelor SIMO ………………………….. ………………………….. ………………………….. …. 26
2.3 Evoluția sistemelor MISO ………………………….. ………………………….. ………………………….. …. 26
2.4 Evoluția sistemelor MIMO ………………………….. ………………………….. ………………………….. .. 27
2.4.1 Fading ………………………….. ………………………….. ………………………….. ……….. 32
2.4.2 Tehnici de codare ………………………….. ………………………….. …………………….. 35
3. Simulări și rezultate ………………………….. ………………………….. ………………………….. …………… 45
4. Concluzii ………………………….. ………………………….. ………………………….. ………………………….. . 57
Bibliografie ………………………….. ………………………….. ………………………….. ………………………….. .. 58
Anexa 1 ………………………….. ………………………….. ………………………….. ………………………….. …….. 60
Lista figurilor
Fig. 1 .1 Constelația de semnal BPSK …………………………………………………………… ……………………….14
Fig. 1 .2 Reprezentarea celor do i vectori în funcție de vectorul bazei ………………….. …………………. …16
Fig. 1 .3 Modulator BPSK (schemă bloc) ……………………………………………………… ……………………….17
Fig. 1 .4 De modulator BPSK (schemă -bloc) ……………………………………………………………….. ………….17
Fig. 1 .5 Emițătorul/Receptorul/Refacerea purtătoarei BPSK (schemă -bloc) ………. ………………………17
Fig. 1 .6 Constelația de semnal QPSK ……………………………………………………………. ……………….. ……18
Fig. 1 .7 Emițătorul QPSK …………………………………………………………………………… ………………………18
Fig. 1.8 Receptorul QPSK …………………………………………………………………………………………… ………19
Fig. 1 .9 Modulatorul QPSK ………………………………………………………………………… ……………………….19
Fig. 1 .10 Reprezentarea în spațiu a semnalelor QPSK ………………………………………… …………………..20
Fig. 1.11 Demodulator QPSK ……………………………………………………………….. …………………………….22
Fig. 1 .12 Constelația 16QAM ……………………………………………………………………… ………………………22
Fig. 1 .13 Constelația 32QAM ……………………………………………… ……………………… ………………………23
Fig. 1 .14 Constelația 64QAM ……………………………………………………………………… ………………………23
Fig. 1 .15 Modulator QAM ………………………………………………………………………….. ……………………….24
Fig. 1. 16 Demodulatorul QAM …………….. …………………………………………………….. ………………………24
Fig. 2.1 Sistemele SISO, SIMO, MISO, MIMO …………………………………………………………………. ….25
Fig. 2 .2 Sistem SISO ………………………………………………………………………………….. ……………….. …….26
Fig. 2 .3 Variația semnalului recepționat funcție de distanță în cazul propagării multicale ……………32
Fig. 2 .4 a. Fading datorat dispersiei întârzierii ……………………………………………….. ………………………35
Fig. 2 .4 b. Fading datorat dispersiei Doppler ………………………………………………….. ……………… ……..35
Fig. 2.5 Codoare convoluționale ………………………………………………………………….. ………………………36
Fig. 2 .6 Schema -bloc a unui codor turbo cu rata 1/ 3………………………………………………..37
Fig. 2 .7 Schema -bloc a unor coduri convoluționale concatenate în paralel …………. ……………………..37
Fig. 2 .8 Structura unui codor turbo de bază…………………………………………………………38
Fig. 2 .9 Structura unui decodor turbo de bază………………………………………………………38
Fig. 2 .10 Decodor turbo: inițializare și decodare propriu -zisă…………………………… …………………….. 39
Fig. 2 .11 Graful conținând doar legăturile dintre prima linie și prima coloană ……………………41
Fig. 2 .12 Graful complet pentru codorul simplu LDPC ……………………………………………42
Fig. 2 .13 Cod LDPC ………… ………………………………………………………………………42
Fig. 2 .14 Construcție cu codor rapid ………………………………. ………………………………………… ………….43
Fig. 3 .1 Sistem MIMO 2×2, 1 utilizator, fără codare……………………………………………… 45
Fig. 3 .2 Sistem MIMO 2×2, 1 utilizator, LDPC…………………………………………………… 46
Fig. 3.3 Sistem MIMO 2×2, 1 utilizator, Codare convoluțională, Rata ½ ………….. ………….. …………. 47
Fig. 3.4 Sistem MIMO 2×2, 1 utilizator, Codare convoluțională, Rata 2/3 ………………… ………………48
Fig. 3.5 Sistem MIMO 2×2, 1 utilizator, Codare convoluțională, Rata ¾…………………………………..49
Fig. 3.6 Sistem MIMO 2×2, 1 utilizator, LDPC și Codare convoluțională (Rata = ½)………………….50
Fig. 3.7 Sistem MIMO 2×2, 1 utilizator, LDPC și Codare convoluțională (Rata = 3/4)………………..50
Fig. 3.8 Sistem SISO, 1 util izator, fara codare, in canalul Rayleigh ……………………………….51
Fig. 3.9 Sistem SISO, 1 utilizator, LDPC, in canalul Rayleigh …………………………………….52
Fig. 3.10 Sistem SISO, 1 utilizator, Codare Convolutionala, Rata ½, in canalul Rayleigh …………5 3
Fig. 3.11 Sistem SISO, 1 utilizator, Codare Convolutionala, Rata 2/3, in canalul Rayleigh ………54
Fig. 3.12 Sistem SISO, 1 utilizator, Codare Convolutionala, Rata ¾, in canalul Rayleigh …………55
Fig. 3.13 Sistem SISO, 1 utilizator, LDPC si Codare Convolutionala (Rata = ½) …………………56
Fig. 3.14 Sistem SISO, 1 utilizator, LDPC si Codare Convolutionala (Rata = ¾) …………………56
Lista abrevierilor
BEC canal binar cu ștergere Binary Erasure Channel
BER probabilitatea de eroare de bit Bit Error Rate
BPSK modulația în fază a semnalului
binar Binary Phase -Shift Keying
FEC corecție antegradă a erorilor Forward Error Correction
ISI interferență intersimbol Intersymbol Interferrence
LDPC control al parității cu densitate
scăzută Low Density Parity Check
MA Modulația în amplitudine Amplitude modulation
MAP Maximum A posteriori
Probability
MIMO mai multe intrări, mai multe
ieșiri Multiple Input Multiple
Output
MISO intrări multiple și o ieșire Multiple Input Single Output)
NRZ fără revenire la zero Non Return to Zero
OSTBC codare ortogonală al blocului
spațio -temporal Orthogonal Space -time block
codes
PSK Phase Shift Keying
QAM modulația amplitudinii în
cuadratură Quadrature amplitude
modulation
QPSK modulația în cuadratură a
semnalului binar Quadrature Phase -Shift
Keying
RF semnal de radio Radio -frequency
RSC codor convoluțional recursiv
sistematic Recursive Sistematic Codes
RSZ raportul semnal -zgomot Signal -to-noise ratio
SISO o intrare și o ieșire Single Input Single Output
SIMO o intrare și ieșiri multiple Single Input Multiple Output
SOVA Soft output Viterbi algorithm
STBC codarea blocului spațio –
temporal Space –Time Block Codes
ZAGA Zgomot Aditiv Gaussian Alb Additive White Gaussian
Noise
13
Introducere
Într-o epocă a telecomunicațiilor, specialiștii în domeniu consideră sistemele „fără fir” o
provocare în depășirea barierelor tehnologice . Din nevoia de a crește capacitatea și debitele de
informație pentru a oferi suport aplicațiilor de voce, video în timp real, filme, jocuri, etc. a luat
amploare îmbu nătățirea echipamentelor „fără fir”. În mediul de transmisie „fără fir”, sistemul
MIMO s -a dovedit a fi o tehnică foarte inter esantă, competitivă și populară. MIMO (intrări și ieșiri
multiple) este o metodă de multiplicare a capacității unei legături radio utilizând mai multe antene
de emisie și de recepție pentru a exploata propagarea pe mai multe căi. Acest sistem presupune:
micșorarea interferențelor inter -simbol, o viteză de transmisie ridicată, fiabilitate ridicată și o mai
bună performanță într -un mediu domin at de căi multiple de propagare [1]. Pentru a exploata
diversitatea spațială, se vor folosi tehnicile de codare.
În cadrul acestei lucrări se vor analiza diferite tehnici de codare folosite în tehnologia
MIMO, cu scopul de a evidenția avantajele și dezavantajele fiecăreia în funcție de situație și
scenariile utilizate.
Se va realiza în mediul de simulare Matlab un sistem MIMO, performanțele acestui sistem
vor fi testate inițial fără tehnică de codare. Următorul pas îl presupune implementarea diferitelor
tipuri de codare, urmând să se stabilească cea mai eficientă codare, în funcție de scenariul simulat.
Aceiași pași vor fi făcuți și pentru un sistem SISO pentru a face comparație între acesta și sistemul
MIMO.
În capitolul 1 vor fi prezentate tehnicile de modulație digitală: modulația în fază a
semnalului binar (BPSK), modulația în cuadratură a semnalului binar (QPSK) , modulația în
cuadratură (QAM).
În capitolul 2 va fi prezentată evoluț ia sistemelor SISO, SIMO, MISO și în final evoluția
sistemelor MIMO. în cadrul sistemelor SISO și MIMO se vor detalia două tipuri de tehnici de
codare , respectiv tehnicile codare convol uțională și codurile de control al parității cu densitate
scăzută (LDPC) . De asemenea va fi descris fadingul (generalități, principalii factori care
influențează fenomenul de fading, tipuri de fading).
În capitolul 3 vor fi enumerate rezultatele simularilor ce folosesc un sistem MIMO 2×2,
modulație în cuadratură, în prima fază fără codare, apoi cu codare LDPC și în cele din urmă codare
convoluțională cu rata ½, 2/3, respectiv ¾ . De asemenea și pentru sistemul SISO .
Capitolul 4 va cuprinde concluzii pe baza simularilor făcute în capitolul anterior .
14
Capitolul 1
Tehnici de modulație digitală
Modulația reprezintă un proces prin intermediul căruia parametrii semnalului purtător suferă
modificări cu scopul de a transmite semnalul modulator ( semnal ce cuprinde informația), rezultând
un alt semnal, numit semnal modulat.
Modulația prezintă un proces invers, numit demodulație, prin intermediul căruia începând de
la semnalul modulat se reface semnalul modulator.
În cazul modulației digitale, semnalul modulator are formă digitală. Semnalele digitale se
pot transmite în două moduri: fie în banda de bază (neprelucrate), fie într -o bandă translatată pe axa
frecvențelor, prin procedeul de modulație. Selectarea unei tehnici propice de modulație permite
dobândirea performanțelor maxime [2].
În continuare sunt prezentate tehnicile de modulație BPSK, QPSK și QAM , utilizate în
simulările sistemelor MIMO din lucrarea curentă.
1.1 Modulația în fază a semnalului binar (BPSK)
BPSK este o modulație ce se realizează bit cu bit, fiecare simbol fiind alcătuit dintr -un
singur bit. În funcție de valoarea bitului de date transmis, faza semnalului de radiofrecvență modulat
realizează salturi de fază. În ceea ce privește BPSK, cele două stări de fază posibile (salturi de fază)
sunt 0°, respectiv 180°, una dintre ele fiind asociate unei valori binare 0, respectiv 1. Nu contează
exact unde sunt poziționate punctel e de constelație, iar în Fig. 1.1 sunt reprezentate pe axa reală, la
0° și 180°. Prin urmare, BPSK măsoară cel mai mare nivel de zgomot sau distorsiune înainte ca
demodulatorul să ia o decizie i ncorectă. Aceasta face ca BPSK să fie cel mai robust dintre toate
PSK-urile. Este totuși capab il să moduleze numai la 1 bit/ simbol (așa c um se vede în figură) și deci
nu este potrivit pentru aplicații cu rate mari de date [3].
Fig. 1.1 Constelația de semnal BPSK
1.1.1 Modulatorul BPSK
Pentru a realiza modulația, BPSK folosește o sinusoidă, faza acesteia având salturi la treceri
prin 0, în funcție de semnalul modulator. Salturile de fază au valori de 0° și 180°. Modulația are
expresia matematică:
𝑠𝐵𝑃𝑆𝐾(𝑡)=𝐴𝑐𝑜𝑠(𝜔0𝑡+𝑑(𝑡)𝜋) (1.1)
15
și este dată de ecuațiile:
𝑠0(𝑡)=+𝐴cos(𝜔0𝑡) (1.2)
𝑠1(𝑡)=+𝐴cos(𝜔0𝑡+ 𝜋)=−𝐴cos(𝜔0𝑡) (1.3)
Semnalul 𝑠0(𝑡) are data transmisă d(t)=0, amplitudinea constantă A, frecvența 𝜔0=2π𝑓0, faza
egală cu 0, dacă se transmite +1 , pentru tϵ[0,𝑇𝑏], unde 𝑇𝑏 reprezintă durata de bit .
Semnalul 𝑠1(𝑡) are data transmisă d(t)=1, amplitudinea constantă A, frecvența 𝜔0=2π𝑓0, faza
egală cu π, dacă se transmite -1, pentru tϵ[0,𝑇𝑏], unde 𝑇𝑏 reprezintă durata de bit .
Dacă vom nota cu 𝑑1(t)=1−2d(t), 𝑑1(t) ϵ{±1}, t ϵ[k𝑇𝑏,(k+1) 𝑇𝑏], semnalul BPSK poate fi
gândit ca un semnal MA, pentru t ϵ[0,𝑇𝑏]
𝑠𝐵𝑃𝑆𝐾(𝑡)=𝐴𝑑1(t)cos(𝜔0𝑡)={+𝐴cos(𝜔0𝑡),𝑑1(t)=1
−𝐴cos(𝜔0𝑡),𝑑1(t)=−1 (1.4)
În cazul densității spectrale de putere, se definește impulsul de bază (suportul temporal):
𝑝1(t)=A[σ(t)− σ(t−𝑇𝑏)] (1.5)
ce include toate simbolurile emise de sursă
𝑠𝐵𝑃𝑆𝐾(𝑡)=∑𝑑1∞
−∞(k𝑇𝑏)𝑝1(t−𝑘𝑇𝑏)cos (𝜔0𝑡) (1.6)
Densitatea spectrală de putere a semnalului modulat în banda de bază:
𝑆̅𝐵𝑃𝑆𝐾𝐵𝐵(𝜔)=𝜎𝑎2
𝑇|P(𝜔)|2+𝑚𝑎22𝜋
𝑇2∑|𝑃(𝑛2𝜋
𝑇)|2
𝛿(𝜔−𝑛2𝜋
𝑇
𝑘) (1.7)
𝑆̅𝐵𝑃𝑆𝐾(𝜔)=1
4𝑆̅𝐵𝑃𝑆𝐾𝐵𝐵(𝜔−𝜔0)+ 1
4𝑆̅𝐵𝑃𝑆𝐾𝐵𝐵(𝜔+𝜔0) (1.8)
În cazul de față
𝑃1(𝜔)=F{A[σ(t)−σ(t−𝑇𝑏)]}=𝐴
𝑗𝜔(1−𝑒−𝑗𝜔𝑇𝑏)=A𝑇𝑏𝑒−𝑗𝜔𝑇𝑏
2sinc(𝜔𝑇𝑏
2) (1.9)
𝑚𝑑1=𝐸{𝑑1}=0,𝜎𝑑12=E{𝑑12}−(𝐸{𝑑1})2=1 (1.10)
Densitatea spectrală de putere a semnalului modulat este:
𝑆𝐵𝑃𝑆𝐾𝐵𝐵(f)=𝐴2𝑇𝑏𝑠𝑖𝑛𝑐2(𝜔𝑇𝑏
2) (1.11)
𝑆𝐵𝑃𝑆𝐾(f)=𝐴2𝑇𝑏
4[𝑠𝑖𝑛𝑐2((𝜔−𝜔0)𝑇𝑏
2)+ 𝑠𝑖𝑛𝑐2((𝜔+𝜔0)𝑇𝑏
2)] (1.12)
În spațiul semnalelor, reprezentarea este
– Se alege un vector (set de vectori) ortonormați
16
∫𝜑2(𝑡)=1𝑇𝑏
0 => 𝜑(𝑡)=𝐶𝜑𝑐𝑜𝑠(𝜔0𝑡)=∫(𝐶𝜑2𝑇𝑏
0𝑐𝑜𝑠2(𝜔0𝑡))=𝐶𝜑2𝑇𝑏
2=1 (1.13)
𝐶𝜑=√2
𝑇𝑏 => 𝜑(𝑡)=√2
𝑇𝑏 𝑐𝑜𝑠(𝜔0𝑡) (1.14)
– Se reprezintă vectorii în funcție de această bază
𝑆1=+𝐴cos(𝜔0𝑡)=+A√2
𝑇𝑏𝜑(𝑡) (1.15)
𝑆1=−𝐴cos(𝜔0𝑡)=−A√2
𝑇𝑏𝜑(𝑡) (1.16)
– Se reprezintă cei doi vectori în funcție de vectorul bazei în Fig. 1 .2
Fig. 1.2 Reprezentarea celor doi ve ctori în funcție de vectorul bazei [4]
Pentru a determina probabilitatea de eroare (𝑃𝑒), se utilizează spațiul semnalelor:
– Ipoteză: semnalul BPSK se transmite printr -un canal afectat doar de
ZAGA
– Se reprezintă vectorul zgomot în funcție de vectorul bazei
n(t)=𝑛0𝜑(𝑡)= 𝑛0√2
𝑇𝑏 𝑐𝑜𝑠(𝜔0𝑡) (1.17)
𝑛0-variabilă aleatoare Gaussiană cu { 𝑛0=0−𝑚𝑒𝑑𝑖𝑒
𝜎2=𝑛02̅̅̅=𝑁0
2−𝑎𝑏𝑎𝑡𝑒𝑟𝑒𝑎 𝑝ă𝑡𝑟𝑎𝑡𝑖𝑐ă 𝑚𝑒𝑑𝑖𝑒
Se presupune că am transmis 𝑠1:
𝑃𝑐|𝑠1=P(𝑛0<𝑑
2)=∫1
√2𝜋𝜎2𝑑
2
−∞𝑒−𝑛02
2𝜎2d𝑛0=1−Q(𝑑
2𝜎)=1−Q(√2𝐸𝑏
𝑁0)= 𝑃𝑐|𝑠2 (1.18)
Q(x)=∫1
√2𝜋∞
𝑥𝑒−𝑥2
2dx (1.19)
𝑃𝑐= 1
2𝑃𝑐|𝑠1+1
2𝑃𝑐|𝑠1=1−Q(√2𝐸𝑏
𝑁0) (1.20)
17
𝑃𝑒=1−𝑃𝑐= Q(√2𝐸𝑏
𝑁0) (1.21)
Modulatorul BPSK poate fi implementat prin codarea biților de mesaj (1 reprezentat prin
tensiunea pozitivă, iar 0 prin tensiunea negativă) fără revenire la zero (NRZ), urmată de un
multiplicator utilizând un oscilator de referință cu frecvență purtătoare 𝜔0.
Fig. 1.3 Modulator BPSK (schemă bloc)
1.1.2 Demodulatorul BPSK
Demodulatorul este cunoscut ca fiind coerent atunci când are cu recepția un oscilator local
sincronizat în frecvență și în fază cu frecvența emisă.
Semnalul recepționat este multiplicat de către un generat or de frecvență de referință, iar
ieșirea acestui bloc este integrată pe o perioadă de bit folosind un integ rator. Decizia este luată de
către un detector de prag; întrucât se folosește un format NRZ cu amplitudini pozitive și negative
egale, pragul pentru acest detector este 0 [5].
Fig. 1.4 Demodulator BPSK (schemă -bloc)
Fig. 1.5 Emițătorul/Receptorul/Refacerea purtătoarei BPSK (schemă -bloc) [4]
1.2 Modulația în cuadratură a semnalului binar (QPSK)
18
Un avantaj al semnalului QPSK față d e BPSK este faptul că durata de simbol=2*durata de
bit, astfel că fiecare simbol, în loc să reprezinte 0 sau 1, reprezintă 00, 01, 10 sau 11, de unde rezultă
că lărgimea de bandă necesară transmiterii semnalelor QPSK este jumătate din cea necesară
transmiterii semnalelor BPSK.
QPSK este o modulație 4PSK la care s -a realizat o rotație de fază punc telor constelației.
Pentru modulația QPSK se pot realiza mai multe moduri de asociere dintre grupul de doi biți și
punctul din constelația de semnal, dar constelația realizată are în toate variantele patru puncte, iar
fazele acestora sunt π/4, 3π/4, 5π/4, 7π/4.
Fig. 1.6 Constelația de semnal QPSK
1.2.1 Modulatorul QPSK
În QPSK sunt luate ca funcții de bază pentru modulare două sinusoide (sin us și cos inus).
Modularea este realizată prin modificarea fazei funcțiilor de bază în funcție de simbolurile
mesajelor [6].
Fig. 1.7 Emițătorul QPSK [4]
Datele de tip d(t) sunt introduse la intrarea ambilor bistabili de tip D, unul înscriind pe
frontul pozitiv al ceasului și celalalt pe frontul negativ al ceasului. Bistabilii rețin datele pe un
interval de 2𝑇𝑏, de aici rezultând că rata de bit a 𝑑𝑜(𝑡) și 𝑑𝑒(𝑡) este
𝑅𝑜=𝑅𝑒=1
2𝑇𝑏 (1.22)
Cele două date 𝑑𝑜(𝑡) și 𝑑𝑒(𝑡) comută alternativ și de aici rezultă QPSK. Dacă se dorește
comutarea simultană a acestora, trebuie sa fie introdus un circuit de întarziere cu 𝑇𝑏 pe ramura în
fază.
Următoarea ecuație prezintă tehnica de modulare QPSK:
𝑠𝑄𝑃𝑆𝐾(𝑡)= 𝐴 𝑑𝑜(𝑡) cos 𝜔𝑜𝑡+ 𝐴 𝑑𝑒(𝑡) sin 𝜔𝑜𝑡 (1.23)
În cazul receptorului QPSK, se utilizează demodularea sincronă pentru a reface purtatoarea,
precum in cazul BPSK.
19
Fig. 1.8 Receptorul QPSK [4]
Diagrama constelației de semnal QPSK va arăta simb oluri atât pe axa x, cât și pe axa y, de
aici rezultând faptul că semnalul modulat va prezenta o componentă în fază (I) și o componentă în
cuadratură (Q).
Modulatorul QPSK poate fi implementat astfel: utilizând un demultiplexor (convertor serial –
paralel), care separă biții impari și biții pari de biții de informație generați. Fiecare dintre biții
impari (componenta în cuadratură) și fiecare dintre biții pari (componenta în fază) sunt convertiți
într-o manieră paralelă în format NRZ. Componenta în fază este înmulțită cu cosinus, iar ce a în
cuadratură cu sinus. Semnalul modulat QPSK se obține însumând cele două componente.
Fig. 1.9 Modulatorul QPSK
Reprezentarea în spațiu a semnalelor se realizează astfel:
– Se alege un set de vectori ortonormați :
𝜑1(𝑡)=√2
𝑇𝑠cos𝜔0𝑡=√1
𝑇𝑏cos 𝜔0𝑡 (1.24)
𝜑1(𝑡)=√2
𝑇𝑠sin𝜔0𝑡=√1
𝑇𝑏sin 𝜔0𝑡 (1.25)
cu condiția:
∫𝜑12𝑇𝑠
0(𝑡)=1 (1.26)
atunci
20
𝑠𝑄𝑃𝑆𝐾(𝑡)=𝐴√𝑇𝑠
2𝑑𝑜(𝑡)𝜑1(𝑡)+𝐴√𝑇𝑠
2𝑑𝑒(𝑡)𝜑2(𝑡) (1.27)
unde 𝑑𝑜(𝑡) și 𝑑𝑒(𝑡) ∈{±1},𝑡∈ [0,𝑇𝑏]
〈𝑠𝑄𝑃𝑆𝐾,𝜑1〉=∫(𝐴𝑑𝑒(𝑡)cos𝜔0𝑡+ 𝐴𝑑𝑜(𝑡)sin𝜔0𝑡)√2
𝑇𝑠cos𝜔0𝑡𝑑𝑡= 𝑇𝑠
0
= 𝐴𝑑𝑒(𝑡)√2
𝑇𝑠∫𝑐𝑜𝑠2 𝜔0𝑇𝑠
0𝑡𝑑𝑡+ 𝐴√2
𝑇𝑠∫𝑑𝑒(𝑡)𝑇𝑠
0sin𝜔0𝑡cos𝜔0𝑡𝑑𝑡=
= 𝐴𝑑_𝑒 (𝑡) √(2/𝑇_𝑠 )=𝑑_𝑒 (𝑡) √(𝐴^2/2) 𝑇_𝑠=𝑑_𝑒 (𝑡) √(𝐸_𝑠 ) (1.28)
〈𝑠𝑄𝑃𝑆𝐾,𝜑2〉=𝑑𝑜(𝑡)√𝐴2
2𝑇𝑠=𝑑𝑜(𝑡)√𝐸𝑠 (1.29)
unde
𝐸𝑠=𝐴2𝑇𝑠
2 (1.30)
Fig. 1.10 Reprezentarea în spațiu a semnalelor QPSK [4]
Distanța dint re două puncte adiacente este
𝑑=2√𝐸𝑠 (1.31)
Zgomotul reprezentat în ac elași sistem de coordonate este
𝑛(𝑡)=𝑛𝑜(𝑡)𝜑1(𝑡)+𝑛𝑒(𝑡)𝜑2(𝑡) (1.32)
unde 𝑛𝑜(𝑡) și 𝑛𝑒(𝑡) sunt variabile aleatoare Gaussiene , independente, cu media mulă și v arianță
𝜎2=𝑁0
2 (1.33)
Pentru a determina probabilitatea de eroare:
– Probabilitatea de detecție corectă: se presupune că s -a transmis 𝑠1, detecția este corectă
dacă zgomotul nu va deplasa vectorul recepționat 𝑟 din primul cadran
𝑃(𝑐|𝑠1)=𝑃(𝑛1>−𝑑
2,𝑛1>−𝑑
2)
=∫1
√2𝜋𝜎2∞
−𝑑
2𝑒−𝑛12
2𝜎𝑑𝑛1∫1
√2𝜋𝜎2∞
𝑑
2𝑒−𝑛22
2𝜎𝑑𝑛2=𝑄2(−𝑑
2𝜎)
=[1−𝑄( 𝑑
2𝜎 )]2
(1.34)
21
𝑃𝑐=∑𝑃(𝑐|𝑠𝑖)𝑃(𝑠𝑖)=[1−𝑄( 𝑑
2𝜎 )]24
1 (1.35)
𝑃𝑒=1−𝑃𝑐=1−[1−𝑄(𝑑
2𝜎)]2
=1−[1−𝑄(√2𝐸𝑠
𝑁0) ]2
=2𝑄( √2𝐸𝑠
𝑁0 )−𝑄2(√2𝐸𝑠
𝑁0 ) (1.36)
Semnalul poate fi scris sub forma:
𝑠𝑄𝑃𝑆𝐾(𝑡)=√2 [ 𝐴𝑑𝑒(𝑡)1
√2cos𝜔𝑜𝑡
+ 𝐴𝑑𝑜(𝑡)1
√2sin𝜔𝑜𝑡 ]= √2 𝐴𝑑𝑜(𝑡)cos[𝜔𝑜𝑡− 𝑑𝑜(𝑡) 𝑑𝑒(𝑡)𝜋
4
+𝜋𝜎(−𝑑𝑒)];𝑖=1,4 (1.37)
De aici rezultă:
𝑑𝑜=±√2cos(2𝑖+1)𝜋
4 (1.38)
𝑑𝑒=±√2sin(2𝑖+1)𝜋
4 (1.39)
Pentru a determina densitatea spectrală de putere a QPSK:
– QPSK are impulsul de bază:
𝑝2=[ 𝜎(𝑡)−𝜎(𝑡−𝑇𝑏) ] (1.40)
F{𝑝2(𝑡)=1
𝑗𝜔( 1−𝑒−𝑗𝜔2𝑇𝑏)=𝑇𝑏2𝑗sin𝜔𝑇𝑏
𝑗𝜔𝑇𝑏𝑒−𝑗𝜔𝑇𝑏
=2𝑇𝑏𝑒−𝑗𝜔𝑇𝑏 𝑠𝑖𝑛𝑐 (𝜔𝑇𝑏)=𝑇𝑠𝑒−𝑗𝜔𝑇𝑠
2 𝑠𝑖𝑛𝑐 (𝜔𝑇𝑠
2) (1.41)
Densitatea spectrală de putere a semnalului în banda de bază:
𝐸{[𝐴𝑑𝑜(𝑡)]2}=𝐴2 (1.42)
𝐺𝑄𝑃𝑆𝐾𝐵𝐵(𝜔)=2𝐴2
𝑇𝑠𝑇𝑠𝑠𝑖𝑛𝑐2(𝜔𝑇𝑠
2 )=2𝐴2𝑇𝑠𝑠𝑖𝑛𝑐2(𝜔𝑇𝑠
2) (1.43)
𝐺𝐵𝑃𝑆𝐾(𝜔)=1
4𝐺𝐵𝑃𝑆𝐾𝐵𝐵(𝜔+𝜔0)+1
4𝐺𝐵𝑃𝑆𝐾𝐵𝐵(𝜔−𝜔0) (1.44)
1.2.2 Demodulatorul QPSK
În cazul acestui tip se utilizează un demodulator coerent, urmat de o multiplicare a
semnalului cu ajutorul unui oscilator de frecvență cu două ramuri, câte una pentru fiecare dintre
componentele în fază și în cuadratură . Fiecare ramură este integrată folosind un integrator, urmat de
un detector de prag care ia decizia asupra fiecărui bit integrat pe baza unei valori de prag. La sfârșit,
biții componentei în fază (biți pari) și biții c omponentei în cuadratură (biți impari) sunt remapați
pentru a reface șirul inițial de date transmise
22
Fig. 1.11 Demodulator QPSK [4]
1.3 Modulația amplitudinii în cuadratură (QAM)
Modulația amplitudinii în cuadratură (QAM) este o metodă care utilizează atât amplitudinea,
cât și componentele de fază pentru a furniza o formă de modulare care este capabilă să asigure un
nivel ridicat de eficiență a utilizării spectrului . QAM este folosit în special în aplicațiile fără fir.
QAM este un semnal în care două purtătoare mutate în fază cu 90 de grade (sinus și cosinus)
sunt modulate și combinate. Dat fiind faptul că diferența de fază este de 90 °, ele sunt în cu adrat ură
și acest lucru dă naștere denumirii . Adesea, un sem nal este denumit semn al în fază sau "I", iar
celălalt este semnalul în cuadratură sau "Q".
Semnalele I și Q pot fi reprezentate prin ecuațiile de mai jos:
𝐼=𝐴 𝑐𝑜𝑠(𝜓) (1.45)
𝑄=𝐴 𝑠𝑖𝑛(𝜓) (1.46)
În cazul transmisiei digitale, QAM poate transporta rate mai mari de date decât schemele
modulate în amplitudine și schemele modulate în fază. Semnalele obișnuite prezintă doar două
poziții care permit transferul fie a 0 sau fie a 1. Cu ajutorul QAM, există multe puncte diferite care
pot fi folosite, fiecare având valori de finite ale fazei și amplitudinii. Aceasta este cunoscută sub
forma unei diagrame de constelație. Pozițiilor diferite le sunt atribuite diferite valori, astfel încât un
singur semnal este capabil să transfere date într -o rată mult mai mare. Avantajul trecer ii la formatele
de ordin superior este că există mai multe puncte în constelație și, prin urmare, este posibil să se
transmită mai mulți biți pe simbol. Dezavantajul este că punctele de constelație sunt mai apropiate
și, prin urmare, legătura este mai susc eptibilă la zgomot. Ca urmare, versiunile de ordin mai înalt
ale QAM sunt utilizate numai atunci când există un raport suficient de mare de semnal / zgomot.
Diagramele de constelație arată diferite poziții pentru stările din diferite forme ale
modulației d e amplitudine în cuadratură. Pe măsură ce ordinea modulației crește, numărul de puncte
din diagrama constelației QAM crește de asemenea [11].
Diagrame de constelație pentru o varietate de formate de modulare [12]:
Fig. 1.12 Constelația 16QAM
23
Fig. 1.13 Constelația 32QAM
Fig. 1.14 Constelația 64QAM
Se observă din aceste câteva diagrame de constelație QAM că odată cu creșterea ordinii de
modulare, distanța dintre punctele de pe constelație scade. Prin urmare, cantități mici de zgomot pot
provoca probleme mai mari.
În orice sistem care utilizează modulația amplitudinii în cuadratură, QAM, vor fi modulatori
și demodulatori. Acești modulatori și demodulatori QAM sunt necesari pentru a asigura capacitatea
de a modula atât componentele în fază, cât și cele de cuadratură.
1.3.1 Modulatorul QAM
Modulatorul QAM constă în două semnale purtătoare cu o deplasare de fază de 90° între ele.
Acestea sunt modulate în amplitudine cu cele două fluxuri de date cunoscute ca fluxuri de date I (în
fază) și Q (în cuadratură). A cestea sunt generate în zona de procesare a benzii de bază [10].
24
Fig. 1.15 Modulator QAM
Cele două semnale rezulta te sunt sintetizate și apoi procesate conform cerințelor în lanțul de
semnale RF, în mod obișnuit transformându -le în frecvență până la frecvența finală necesară și
amplificându -le după cum este necesar.
Este de remarcat faptul că, deoarece amplitudinea semnalului variază, orice amplificator RF
trebuie să fie liniar pentru a păstra integritatea semnalului. Orice non -linearități va modifica nivelele
relative ale semnalelor și va modifica diferența de fază, distorsionând astfel semnalul și introducând
posibilitatea erorilor de date.
1.3.2 Demodulatorul QAM
Demodulatorul QAM este inversul modulatorului QAM. Semnalele intră în sistem, sunt
împărțite și fiecare parte este aplicată unui mixer. O jumătate are aplicat oscilatorul local în fază, iar
cealaltă jumătate are aplicat oscilatorul în cuadratură [9].
Fig.1.16 Demodulatorul QAM
25
Capi tolul 2
Sisteme MIMO
Un sistem reprezintă un ansamblu în care mărimile de int rare (materie, energie, informaț ie),
introduse la un moment de timp dat, determină evoluția unor mărimi de ieșire, la un moment de
timp dat. Mărimea obținuta la ieșire trebuie să fie de aceeași natură cu cea de la intrare. Sistemele se
evidențiază prin intermediul schemelor bloc .
Clasificare sisteme după numărul de intrări și de ieșiri [8]:
SISO (Single Input Single Output) – o intrare și o ieșire
SIMO (Single Input Multiple Output) – o intrare și ieșiri multiple
MISO (Multiple Input Single Output) – intrări multiple și o ieșire
MIMO (Multiple Input Multiple Output) – intrări multiple și ieșiri multiple
Fig. 2 .1 Sistemele SISO, SIMO, MISO, MIMO [14]
2.1 Evoluția sistemelor SISO
SISO reprezintă un sistem de comunicații fără fir în care se utilizează la sursă o antenă
(transmițător) și la destinație altă antenă (receptor). Sistemele SISO mai sunt numite sisteme
monovariabile (au o singură intrare și o singură ieșire). Reprezentarea schemei bloc a sistemului
SISO se regăsește în Fig. 2 .2 [13].
26
Fig. 2 .2 Sistem SISO
Mărimea de la intrare u, mărimea de la intrare perturbatoare p și mărimea de la ieșire y sunt
mărimi scalare. Mărimile de la intrare influențează evoluția în timp a sistemului și mărimile de la
ieșire caracterizează evoluția în timp a sistemului [7].
SISO este cea mai ușoară tehnologie de antenă. Aceste sisteme, în unele medii, pot fi
vulnerabile la problemele cauzate de efectele multiple. În momentul în care un câmp
electromagnetic întâmpină obstacole precum dealuri, canioane, cladiri , fire de utilitate, fronturile de
undă sunt împrăștiate, ele având astfel multe căi de a ajunge la destinație. Sosirea întârziată a
porțiunilor împrăștiate ale semnalului , provoacă probl eme precum fadingul , decuplarea și recepția
intermitentă. Într -un sistem de comunicații digitale, poate provoca o reducere a vitezei de transmisie
și o creștere a numărului de erori.
Cu scopul de a micșora sau elimina problemele cauzate de propagarea unde lor în căi
multiple, este folosită tehnologia inteligentă a antenei. Există trei forme de antene inteligente,
cunoscute sub numele de SIMO (o intrare și ieșiri multiple), MISO (intrări multiple și o ieșire) și
MIMO (intrări multiple și ieșiri multiple).
2.2 Evoluția sistemelor SIMO
SIMO reprezintă un sistem de comunicații fără fir în care se utilizează la sursă o singură
antenă (transmițător) și la destinație mai multe antene (receptor). Acest sistem este folosit deseori
pentru a permite unui sistem recept or care primește semnale de la o serie de surse independente să
combată efectele fadingului . A fost folosit timp de mulți ani cu stații de ascultare / recepție a
undelor scurte pentru a combate efectele interfer enței și fadingului [15].
Un avantaj al lui S IMO ar fi faptul că este relativ ușor de implementat, deși are unele
dezavantaje în faptul că este cerută procesarea în receptor. SIMO poate fi destul de acceptabilă în
multe aplicații, dar în cazul în care receptorul este localizat într -un dispozitiv mobi l, cum ar fi un
telefon mobil, nivelurile de procesare pot fi limitate de mărime, cost și golire a bateriei.
În cadrul acestui sistem există două forme ce pot fi utilizate:
Schimbarea diversității SIMO: Această formă caută cel mai puternic semnal și trece la
antena respectivă.
Raportul maxim combinând SIMO: Această formă ia ambele semnale și le însumează pentru
a oferi o combinație. În acest fel, semnalele de la ambele antene contribuie la semnalul
global.
2.3 Evoluția sistemelor MISO
MISO reprezintă un sistem de comunicații fără fir în care se utilizează la sursă mai multe
antene (transmițător) și la destinație o antenă (receptor). Sistemul MISO mai este numit și
diversitate de transmitere . Aceleași date sunt transmise redundant de la cele două antene de
27
transmisie. Receptorul este apoi capabil să primească semnalul optim pe care îl poate utiliza pentru
a primi extragerea datelor necesare [15].
Un avantaj al utilizării MISO ar fi faptul că codarea / procesarea redundanței sunt mutate de
la receptor la emi țător. În situații precum telefonia mobilă, acest lucru poate fi un avantaj
semnificativ în ceea ce privește spațiul pentru antene și reducerea nivelului de procesare necesar în
receptor pentru codarea redundanței. Acest lucru are un impact pozitiv asupra mărimii, costului și
duratei de viață a bateriei, deoarece nivelul redus de procesare necesită un consum redus de baterie.
2.4 Evoluția sistemelor MIMO
Odată cu integrarea internetului și a aplicațiilor multimedia în următoarea generație a
comunicațiilor fără fir, cererea serviciilor de comunicații cu rate mari de date în bandă largă crește.
Deoarece spectrul de frecvențe radio disponibil este limitat, vitezele mari de transmisie pot fi
realizate numai prin elaborarea unor tehnici de semnalizare mai eficie nte. Capacitatea diferitelor
configurații ale antenei, cum ar fi SISO, SIMO și MISO, este comparată cu MIMO. Capacitatea
MIMO se dovedește a fi mai bună decât toate celelalte configurații [15].
MIMO reprezintă un sistem de comunicații fără fir în care se u tilizează atât la sursă mai
multe antene (transmițător) cât și la destinație (receptor). MIMO poate fi folosit pentru a oferi
îmbunătățiri atât în ceea ce privește robustețea canalului, cât și performanța canalului.
Pentru a putea folosi pe deplin MIMO, es te necesar să se poată utiliza codificarea pe canale
pentru a separa datele de diferitele căi. Acest lucru necesită procesare, dar oferă o capacitate
suplimentară de canalitate.
MIMO prezintă mai multe formate care pot fi folosite de la SISO, prin SIMO și MISO la
sistemele complete MIMO. Toate sunt capabile de a oferi îmbunătățiri semnificative ale
performanței, dar în general cu costul procesării suplimentare și a numărului de antene utilizate.
Odată cu alegerea opțiunii corecte trebuie să se facă balanțe de performanță, în raport cu costurile,
mărimea, prelucrarea disponibilă și durata de viață a bateriei.
Un avantaj cheie al multiplexării spațiale MIMO este capabilitatea de a furniza o capacitate
suplimentară de date. Distribuția spațială MIMO realizează acest lucru prin utilizarea căilor
multiple și utilizarea eficientă a acestora ca și "canale" suplimentare pentru a transporta date.
Cantitatea maximă de date care poate fi transmisă de un canal radio este limitată de limitele
fizice definite în Legea lui Shannon.
Legea lui Shannon
Această lege, care îi poartă numele persoanei ce a formulat -o, se referă la: precum în alte
domenii ale științei există o limită teoretică, peste care nu se poate trece, acest lucru fiind valabil
pentru cantitatea de date care poate fi transmisă de -a lungu l unui anumit canal în prezența
zgomotului. Tehnologia MIMO oferă o metodă de a nu încălca leagea, dar crescând ratele de date
dincolo de cele posibile pe un singur canal, fără utilizarea acestora [15].
Legea lui Shannon determină rata maximă la care date le fără erori pot fi emise pe o anumită
lățime de bandă în prezența zgomotului. Forma acesteia este:
𝐶=𝑊𝑙𝑜𝑔2(1+𝑆
𝑁) (2.1)
28
unde C este capacitatea canalului în biți pe secundă, W este lățimea de ba ndă în Hertz, iar S / N este
RSZ (raportul semnal -zgomot).
Din aceasta se poate observa că există o limită superioară a capacității unui canal cu o
anumită lățime de bandă. Cu toate acestea, înainte de atingerea acestui punct, capacitatea este de
asemenea limitată de raportul semnal / z gomot al semnalului recepționat.
Având în vedere aceste limite, trebuiesc luate multe decizii cu privire la modul în care este
făcută o transmisie. În acest caz, schema de modulare joacă un rol important. Capacitatea canalului
poate fi mărită prin utiliza rea unor scheme de modulare de ordin mai înalt, dar acestea necesită un
raport mai bun al semnalului / zgomotului decât schemele de modulare de ordin inferior. Astfel,
există un echilibru între rata de date și rata de eroare admisă, raportul semnal / zgomo t și puterea
care poate fi transmisă.
Deși pot fi făcute îmbunătățiri în ceea ce privește optimizarea schemei de modulare și
îmbunătățirea raportului semnal / zgomot, aceste îmbunătățiri nu sunt întotdeauna ușoare sau ieftine
și reprezintă un compromis, ec hilibrând diferiții factori implicați. Prin urmare, este necesar să se
analizeze alte modalități de îmbunătățire a transferului de date pentru canalele individuale. MIMO
este o modalitate prin care comunicațiile fără fir pot fi îmbunătățite și, prin urmare , primesc un grad
considerabil de interes.
Multiplexarea spațială MIMO
Cu scopul de a profita de capacitatea de transfer suplimentar, MIMO utilizează mai multe
seturi de antene. În multe sisteme MIMO, sunt utilizate doar două antene, dar nu există niciun motiv
pentru care antenele suplimentare nu pot fi utilizate și acest lucru crește capacitatea de transfer. În
orice caz, pentru multiplexarea spațială MIMO, numărul de antene de recepție trebuie să fie egal
sau mai mare ca numărul de antene de transmisie [15].
Sistemele fără fir, MIMO, folosesc o abordare matriceală matematică. Fluxurile de date
𝑡1,𝑡2,…,𝑡𝑛 pot fi transmise din antenele 1, 2,. . . n. Apoi, există o varietate de căi care pot fi
utilizate cu fiecare cale având proprietăți diferite ale cana lului. Pentru a permite receptorului să
diferențieze fluxurile de date diferite, este necesar să fie utilizate. Acestea pot fi r eprezentate de
proprietățile ℎ12, care călătoresc de la antena de transmisie 1 pentru a primi antena de recepție 2 și
așa mai de parte. În acest fel, pentru trei sisteme de transmisie, trei receptoare de antenă se poate
configura o matrice:
𝑟1=ℎ11𝑡1+ℎ21𝑡2+ℎ31𝑡3
𝑟2=ℎ12𝑡1+ℎ22𝑡2+ℎ32𝑡3 (2.2)
𝑟3=ℎ13𝑡1+ℎ23𝑡2+ℎ33𝑡3
Unde 𝑟1 este semnalul recepționat la antena 1, 𝑟2 este semnalul recepționat la antena 2 și asa mai
departe.
În format matrice, aceasta poate fi reprezentată ca:
[𝑅]=[𝐻]×[𝑇] (2.3)
În scopul recuperării fluxul ui de date transmis la receptor, este necesar să se efectueze o
cantitate considerabilă de procesare a semnalelor. În primul rând, decodorul sistemului MIMO
trebuie să estimeze caracteristica de transfer individual ă a canalului ℎ𝑖𝑗 pentru a determina matri cea
de transfer a canalului. Odată ce toate acestea au fost estimate, atunci matricea [H] a fost produsă și
fluxurile de date transmise pot fi reconstruite prin înmulțirea vectorului recepționat cu inversul
matricei de transfer.
29
[𝑇]=[𝐻]−1×[𝑅] (2.4)
În realit ate, situația este puțin mai dificilă decât aceasta deoarece propagarea nu este
niciodată atât de simplă și, în plus, fiecare variabilă constă într -un flux de date în desfășurare, ceea
ce demonstrează principiul de bază al sistemelor fără fir MIMO.
Pentru ca multiplexarea spațială MIMO să poată fi utilizată, este necesar să se adauge
codarea la diferite canale, astfel încât receptorul s ă poată detecta datele corecte.
Există diferite forme de terminologie folosite: Codarea blocului spațio -temporal (STBC),
precodarea MIMO, codarea MIMO și codarea Alamouti.
Codarea blocului spațio -temporal este utilizată pentru sistemele MIMO pentru a permite
transmiterea mai multor copii ale fluxului de date într -un număr de antene și pentru a exploata
diferitele ve rsiuni primite ale datelor pentru a îmbunătăți fiabilitatea transf erului de date. Codarea
spațio -temporală combină toate copiile semnalului recepționat într -un mod optim pentru a extrage
cât mai multe informații din fiecare dintre ele [15].
Codarea bloculu i spațio -temporal folosește atât diversitatea spațială, cât și cea temporală,
ceea ce permite obținerea unor câștiguri semnificative.
Codificarea spațio -temporală presupune transmiterea mai multor copii ale datelor. Aceasta
ajută la compensarea problemelor canalului, cum ar fi fadingul și zgomotul termic. Deși există o
redundanță a datelor, unele copii pot ajunge mai puțin corupte la receptor.
Când se utilizează codarea blocului spațio -temporal, fluxul de date este codat în blocuri
înainte de transmisie. A ceste blocuri de date sunt apoi distribuite între antene multiple (care sunt
distanțate pentru a decorela calea de transmisie), iar datele sunt de asemenea distanțate în timp.
Codarea blocului spațio -temporal este reprezentată de obicei de o matrice. Fieca re rând
reprezintă un interval de timp și fiecare coloană reprezintă transmisiile unei antene în timp.
[𝑆11…𝑆1𝑛
⋮…⋮
𝑆𝑚1…𝑆𝑚𝑛] (2.5)
În această matrice, 𝑆𝑖𝑗 este simbolul modulat care trebuie transmis în slotul de timp i de la
antena j. Trebuie să existe sloturi de timp T și antene de transmisie nT, precum și antene receptoare
nR. Acest bloc este de obicei considerat a fi de "lungime" T.
Codarea Alamouti : O s chemă deosebit de elegantă pentru codarea MIMO a fost dezvoltată
de Alamouti. Codurile asociate sunt adesea numite coduri MIMO Alamouti sau doar codurile
Alamouti [15].
Schema MIMO Alamouti este o schemă inteligentă de diversitate a transmisiilor pentru do uă
antene de transmisie care nu necesită cunoașterea canalului de transmisie. Codul MIMO Alamouti
este un cod simplu de blocare a timpului, dezvoltat în 1998.
Codarea blocului spațio -temporal (𝑛𝑡,𝑝,𝑘) este reprezentată de o matrice 𝑋𝐶∈∁𝑛𝑡×𝑝, unde
𝑛𝑡 și p denotă numărul de antene de transmisie și numărul de uti lizări ale canalelor, respectiv k
reprezintă numărul de simboluri de date comp lexe trimise într -o matrice de codare al blocului
spațio -temporal . Intrarea (i, j) în 𝑋𝐶 reprezintă num ărul complex transmis de la antena de transmisie
i în canalul utilizat j . Rata este dată de r = k / p, care reprezintă numărul de simboluri pe canal. Se
dorește un r mare deoarece mai multe informații su nt încărcate într -o matrice a codării blocului
spațio -temporal [25].
30
O matrice X este considerată a fi o codare ortogonală al blocului spațio -temporal
𝑋𝐻𝑋=(|𝑥1|2+|𝑥2|2+⋯+|𝑥𝑘|2)𝐼𝑛𝑡 (2.6)
unde 𝑥1, 𝑥2,…, 𝑥𝑘 sunt simboluri de informație, iar elementele lui X sunt combinații liniare ale 𝑥1,
𝑥2,…, 𝑥𝑘 și conjugatele lor.
Codarea Alamouti reprezintă o codare ortogonală a l blocului spațio -temporal , fiind un cod
2×2. Două simboluri 𝑥1 și 𝑥2 și conjugatele lor sunt trimise în două sloturi de timp utilizând două
antene de transmisie. Matricea corespunzătoare codării blocului spațio -temporal este dată de
𝑋=[ 𝑥1 −𝑥2∗
𝑥2 𝑥1∗] (2.7)
Se poate observa că k=2 și prin urmare rata r=k/p=1. Un avantaj al codării ortogonale al
blocului spațio -temporal este faptul că acceptă decodificarea simplă. Acest lucru poate fi explicat
folosind decodarea codului Alamouti cu o antenă de recepție ( 𝑛𝑟=1) după cum urmează: ℎ1 și ℎ2
denotă câștigurile de canal de la antenele de transmisie 1 și respectiv 2, la antena de recepție.
Semnalele recepționate în două sloturi de timp, notate cu 𝑦1 și 𝑦2, sunt date de
𝑦1=ℎ1𝑥1+ℎ2𝑥2+𝑛1 (2.8)
𝑦2=−ℎ1𝑥2∗+ℎ2𝑥1∗+𝑛2 (2.9)
care pot fi scrise în formă vectorală ca
𝑦=[𝑦1
𝑦2∗ ]=[ℎ1ℎ2
ℎ2∗−ℎ1∗][𝑥1
𝑥2 ]+[𝑛1
𝑛2∗ ]=𝐻∙𝑥+𝑛 (2.10)
Rețineți că H în cele de mai sus este ortogonală
𝐻𝐻𝐻=(|ℎ1|2+|ℎ2|2)𝐼2=‖ℎ‖2𝐼2 (2.11)
unde
ℎ=[ℎ1
ℎ2] (2.12)
Presupunând că receptorul cunoaște câștigurile canalului, poate fi efectuată următoarea
operație a receptorulu
𝑦̃=𝐻𝐻𝑦=‖ℎ‖2𝑥+𝑛̃ (2.13)
Vectorul de zgomot n este încă alb. Prin urmare, 𝑥1 și 𝑥2 pot fi decodificate separat și nu în
comun. Deoarece ‖ℎ‖2 este amplitudinea simbolurilor, ordinea diversității este 2, care este
diversitatea de transmisie realizată (de la nr = 1). Dacă se utilizează antene de recepție 𝑛𝑟, atunci
rezultă operația de recepție
𝑟̃=∑𝐻𝑖𝐻𝑛𝑟
𝑖=1𝑟𝑖=(∑‖ℎ‖2𝑛𝑟
𝑖=1)𝑥+𝑛̃ (2.14)
care realizează o diversitate spațială maximă de 2 𝑛𝑟.
Principalele avantaje ale OSTBC sunt complexitatea scăzută a decodificării și diversitatea de
transmisie completă. Cu toate acestea, un dezavantaj major al OSTBCs, în special în contextul
sistemelor MIMO cu un număr mare d e antene, este că rata OSTBC scade liniar cu creșterea
numărului de antene de transmisie. Știm că cu 𝑛𝑡=2, rata OSTBC (codul Alamouti) este 1.
Comparăm această rată cu rata obținută în mu ltiplexarea spațială cu 𝑛𝑡=2, care este 2 . Rata
OSTBC scade sub 1 pentru 𝑛𝑡 > 2; această scădere este liniară în creșterea lui 𝑛𝑡. STBC cvasi –
ortogonal , în care proprietatea de decodare separată este relaxată (rezultând complexitatea
decodificării), atinge o rată de 1. Această rată este încă mult mai mică decât rata maximă a
31
simbolurilor 𝑛𝑡 pe canalul utilizat (spcu) obținută prin multiplexarea spațială. Prin urmare, se
dorește proiectarea STBC care poate atinge simultan atât rata maximă a 𝑛𝑡 spcu, cât și diversitatea
spațială maximă a 𝑛𝑡𝑛𝑟. NO -STBC ating aceste două atribute dorite simultan pentru orice număr de
antene de transmisie. Acest lucru face ca aceste NO -STBCs să fie preferate în sistemele mari
MIMO [25].
Codarea blocului spațio -temporal diferențial este o formă de codare a blocului spațio –
temporal care nu trebuie să cunoască deficiențele canalului pentru ca semnalul să fie decodificat.
Acesta se bazează, în mod normal, pe codur ile blocului spațio -temporal standard. Un cod bloc este
transmis dintr -un set ca răspuns la o schimbare a semnalului de intrare. Acest lucru permite
sistemului să funcționeze deoarece diferențele dintre blocurile din set sunt proiectate să permită
receptorului să extragă datele cu o f iabilitate bună 15].
Tehnologiile antenei MIMO folosite sunt cheia performanței generale MIMO. În plus,
formarea fasciculului MIMO este o opțiune care vine în prim plan.
Pe măsură ce diferite forme de tehnologie îmbunătățesc tehnologia antenei MIMO, pot fi
împinse în continuare permițând tehnici precum formarea fasciculului MIMO să fie luate în
considerare.
Antena MIMO și dezvoltarea MIMO a formării fasciculului
De mulți ani, tehnologia antenei a fost utilizată pentru a îmbunătăți performanța sistemelor.
Antenele de direcție au fost utilizate pentru a îmbunătăți nivelurile de semnal și pentru a reduce
interferențele [15].
Sistemele de antenă directivă au fost utilizate, de exemplu, pentru a îmbunătăți capacitatea
sistemelor de telecomunicații celulare. Pri n divizarea unui site de celule într -un sector în care
fiecare antenă se aprinde la 60 ° sau 120 °, capacitat ea poate crește mult – se triplează când se
utilizează antene de 120 °.
Odată cu dezvoltarea unor sisteme mai adaptive și a unui nivel mai mare de putere de
procesare, este posibil să se utilizeze tehnici de formare a fasciculului de antenă cu sisteme precum
MIMO.
Antene inteligente de formare a fasciculului MIMO
Tehnicile de fabricație pot fi utilizate cu orice sistem de antenă – nu numai pe siste mele
MIMO. Ele sunt folosite pentru a crea un a numit model cerut de directiva antenei pentru a oferi
performanțele necesare în condițiile date [15].
Antene le inteligente sunt utilizate în mod normal – acestea sunt antene care pot fi controlate
automat în funcție de performanța necesară și de condițiile predominante.
Antenele inteligente pot fi împărțite în două grupuri:
Sistemele de tablouri în fază sunt comutate și au un șir de modele predefinite – cea
necesară este comutată în funcție de direcția cerută.
Sisteme adaptive de tablouri: Acest tip de antena utilizează ceea ce se numește formare de
fascicule adaptive și are un număr infinit de modele și poate fi adaptat cerințelor în timp
real.
Formarea prin fascicul MIMO folosind sisteme de tablouri fazate necesită ca întregul sistem
să determine direcția de sosire a semnalului de intrare și apoi să schimbe fasciculul cel mai adecvat.
32
Acesta este un luc ru de compromis, deoarece este puțin probabil ca fasciculul fix să se potrivească
exact cu direcția dorită.
Sistemele adaptive de tablouri sunt capabile să direcționeze fascicu lul în direcția exactă
necesară și, d e asemenea, să deplaseze fascicu lul în timp real – acesta este un avantaj special pentru
sistemele în mișcare – un factor care se întâmplă adesea în telecomunicațiile mobile. Cu toate
acestea, costul este complexitatea extraordinară necesară.
2.4.1 Fading
Generalități
În comunicațiile fără fir, f adingul reprezintă o variație a atenuării unui semnal cu variabile
diferite. Aceste variabile includ timpul, poziția geografică și frecvența radio. Fadingul este adesea
modelat ca un proces aleatoriu. Un canal de fading este un canal de comunicație care se confruntă
cu fadingul. În sistemele fără fir, acesta poate fi cauzat de propagarea multicale , vremea (în special
ploaia) sau umbrirea de la obstacolele care afectează propagarea undelor, denumite uneori și
estomparea umbrelor [16].
Fenomenul de fading face referire la fluctuațiile semnalului care pot fi rapide (cauzate de
propagarea multicale), denumit fading rapid, sau lente (datorate medierii amplitudinii semnalului
recepționat ), denumit fading lent sau umbrire. În Fig. 2 .3 este reprezentată variația semnalului
recepționat în funcție de distanță în cazul propagării multicale.
Fig. 2 .3 Variația semnalului recepționat funcție de distanță în cazul propagării multicale
Factorii principali ce influențează fenomenul de fading sunt:
Propagarea multicale
Provenirea semnalului din două sau mai multe căi la recepție p roduce interferențe care pot fi
constructive sau distructive pentru semnal, precum și o schimbare a fazei semnalului.
Viteza mobilului
Viteza relativă dintre stația de bază și stația mobile cauz ează modulații de frecvență
aleatoare datorate efectului Doppler la nivelul fiecărei componente multicale. Efectul
Doppler reprezintă modificarea frecvenței undei emise când acesta se deplasează față de
receptor (se apropie sau se depărtează). Modificarea frecvenței între sursă și receptor este
cauzată de deplasarea relativă a sursei față de receptor.
Viteza obiectelor din jur
33
Dacă pe canalul radio se află obiecte în mișcare, acestea provoacă o deviație Doppler asupra
componentelor multicale. Dacă obiectele respective se mișcă cu o viteză mai mare decât
mobilul, atunci acest efect este semnificativ pentru fenomenul de fading.
Banda de trasmisie a semnalului
Dacă banda semnalului transmis este mai mare decât banda canalului multicale, atunci
semnalul este rec epționat cu distorsiuni.
Efectul Doppler reprezintă variația frecvenței unei unde emi se de o sursă de oscilații, în
cazul în care aceasta se află în mișcare față de receptor. Ef ectul Doppler poate fi regăsit atât în cazul
undelor electromagnetice (inclusiv lumina), cât și în cazul undelor elastice (inclusiv sunetul).
Frecvența măsurată crește atunci când sursa se apropie de receptor și scade când sursa se depărtează
de receptor [17].
Fie [18]:
𝑓𝑒 – frecvența emițătorului;
𝑓𝑟 – frecvența receptorului;
v – viteza de propagare a undei;
𝑣𝑒 – viteza emițătorului;
𝑣𝑟 – viteza receptorului;
Se numește frecvență Doppler ( 𝑓𝐷) diferenț a dintre frecvența recepționată ( 𝑓𝑟) și frecvența
emisă ( 𝑓𝑒 ):
𝑓𝐷=𝑓𝑟−𝑓𝑒 (2.15)
Pentru determinarea formulei cu ajutorul căreia se calculează frecvența Doppler (𝑓𝐷), se pot
identifica 5 situații :
Emițătorul este fix ( 𝑣𝑒=0), receptorul se apropie de emițător cu viteza 𝑣𝑟 . Viteza undei
percepută la receptor va fi 𝑣+𝑣𝑟 . Lungimea de undă – λ a undei ajunse la receptor va fi
constantă :
𝑓𝐷=𝑓𝑟−𝑓𝑒=𝑓𝑒[𝑣+𝑣𝑟
𝑣−1]=𝑓𝑒∗(𝑣𝑟
𝑣) (2.16)
Emițătorul este fix ( 𝑣𝑒=0), receptorul se depărtează de emițător cu viteza 𝑣𝑟 . Viteza undei
percepută de receptor va fi v – 𝑣𝑟 .
𝑓𝐷=−𝑓𝑒∗(𝑣𝑟
𝑣) (2.17)
Receptorul este fix ( 𝑣𝑟 =0), emițătorul se apropie de receptor cu viteza 𝑣𝑒. În această
situație, lungimea de undă se va micșora:
𝑓𝐷=𝑓𝑟−𝑓𝑒=𝑓𝑒[𝑣
𝑣−𝑣𝑒−1]=𝑓𝑒∗(𝑣𝑒
𝑣−𝑣𝑒) (2.18)
Receptorul este fix ( 𝑣𝑟=0), emițătorul se depărtează de receptor cu viteza 𝑣𝑒. În această
situație, lungimea de undă se va mări:
𝑓𝐷=−𝑓𝑒∗𝑣𝑒/(𝑣+𝑣𝑒) (2.19)
Emițătorul și receptorul se mișcă simultan cu vitezele 𝑣𝑒 și 𝑣𝑟:
𝑓𝐷=𝑓𝑒∗(𝑣𝑟+𝑣𝑒)/(𝑣−𝑣𝑒) (2.20)
când distanța dintre emițător și receptor se mișcorează (ace stea se apropie unul de altul)
𝑓𝐷=−𝑓𝑒∗(𝑣𝑟+𝑣𝑒)/(𝑣+𝑣𝑒) (2.21)
când distanța dintre emițător și receptor se mărește (acestea se depă rtează unul de altul)
34
Tipuri de fading
Clasificarea fadingului:
1. Fading datorat dispersiei întârzierii
Fading plat
Fading selectiv în frecvență
2. Fading datorat dispersiei Doppler
Fading rapid
Fading lent
Fading plat
Canalul wireless este considerat a fi fading plat dacă are un câștig constant și un răspuns de
fază liniară pe o lățime de bandă care este mai mare decât lărgimea de bandă a semnalului transmis
[19].
În acest tip de fading, toate componentele de frecvență ale semnalului recepționat fluctuează
simultan în aceleași proporții. Este, de asemenea, cun oscut sub numele de fading neselectiv. Efectul
fadingului pl at este văzut ca o scădere a RSZ . Aceste canale de fading plat sunt cunoscute ca și
canale care variază în funcție de amplitudine sau canale de bandă îngustă.
Fading selectiv în frecvență
Acesta afectează diferitele componente spectrale ale unui semnal radio cu diferite
amplitudini. Bazat pe dispersia Doppler , există două tipuri de fading : rapid și lent . Aceste tipuri
depind de viteza mobilă, adică viteza receptorului față de transmițător [19].
Fading rapid
Fenomenul de fading rapid este reprezentat de fluctuațiile rapide ale semnalului pe zone
mici (adică de lățimea de bandă). Atunci când semnalele sosesc din toate direcțiile din plan, se va
observa fadingul rapid pentru toate direcțiile de mișcare.
Fadingul rapid apare atunci când răspunsul la impulsul canalului se modifică foarte rapid în
timpul duratei simbolului. În cadrul acestuia, semnalul de recepție este suma a numeroase semnale
care se reflectă pe diferite suprafețe. Acest semnal est e suma sau diferența de semnale multiple care
pot fi constructive sau distructive pe baza schimbării relative a fazelor între ele. Relațiile de fază
depind de viteza mișcării, frecvența transmisiei și lungimile relative ale traseului.
Blocarea rapidă disto rsionează forma impulsului benzii de bază. Această distorsiune este
liniară și creează ISI (inter interferența simbolică). Ecuația adaptivă reduce ISI prin eliminarea
distorsiunii liniare induse de canal [19].
Fading lent
Fadingul lent este rezultatul umbr irii de către clădiri, dealuri, munți și alte obiecte de -a
lungul căii.
Acesta duce la pierderea RSZ . Codificarea corectării erorilor și tehnicile diversității
receptorului sunt utilizate p entru a depăși efectele fadingului lent [19].
Concluzii
Atunci când spunem despre un canal că este afectat de fading lent sau rapid, nu specificăm
dacă acesta prezintă fading plat sau selectiv în frecvență, deci pentru o caracterizare corectă a
35
canalului, tipul de fading poate fi de patru tipuri, adică toate co mbinațiile posibile ale variantelor
menționate mai sus, respectiv:
Fading rapid plat
Fading rapid selectiv în frecvență
Fading lent plat
Fading lent selectiv în frecvență
În Fig. 3.4 sunt ilustrate cele patru tipuri de fading prezentate anterior:
Fig. 2 .4 a. Fading datorat dispersiei întârzierii
Fig. 2 .4 b. Fading datorat dispersiei Doppler
2.4.2 Tehnici de codare
În cadrul acestui capitol vom discuta codarea de canal utilizată în sistemele MIMO și vom
studia tehnicile Turbo și LDPC. Aceste tehnici sunt folosite pentru corecția antegradă de erori
(FEC) ce pot apărea pe canalul de comunicație.
Coduri bloc. Coduri convoluționale
Diferența între codurile -bloc și codurile convoluționale constă în principiul folosit pentru
codare. În cadrul codurilor bloc , biții de informație sunt urmați de biți de paritate, în timp ce în
cazul codurilor convoluționale, biții de informație sunt răspândiți de -a lungul secvenței utilizate .
Codurile convoluționale sunt coduri detectoare de erori și se folosesc pentru a transmite în
mod fidel date digitale prin canale de comunicație afectate de zgomot. Acestea sunt generate prin
trecerea unei secvențe de date printr -un filtru liniar, care folosește regiștri de deplasare care mută
datele de la dreapta la stânga. În fiecare filtru există un bit de intrare și doi biți de ieșire, ceea ce
înseamnă că rata de cod trebuie să fie ½.
Codurile -bloc sunt coduri corectoare de erori care folosesc blocuri pentru a coda informația.
Codarea constă în asocierea unui bloc d de k simboluri u nui bloc c, numit cuvânt de cod, format din
36
n simboluri, cu n≥k. Diferența n -k reprezintă informația redundantă introdusă de cod. Cu noașterea
regulii de codare la recepție face posibilă detectarea și corectarea erorilor, în anumite condiții.
Raportul k/n s e numește rată de cod.
Este de dorit o rată de cod mai mică, adică redundanță mai mare, întrucât codurile cu această
proprietate corectează mai multe erori. În plus, sistemele de comunicație care transmit cu o rată de
cod mai mică pot opera cu o putere de transmisie mai mică, pot transmite pe distanțe mai lungi, sunt
mai rezistente la interferențe, folosesc antene mai mici și transmit cu rate mai mari, fiind mai
eficiente din punct de vedere energetic. În plus, sunt mai avantajoase din punct de vedere al
decodării, întrucât complexitatea acesteia crește odată cu lungimea codului.
Tehnicle Turbo
Introducere
Teoretic, este posibilă atingerea limitei stabilite de Shannon pentru canalele afectate de
zgomot folosind blocuri de lungimi mari sau coduri convoluționale având lungime constantă, dar
puterea necesară decodării acestora este foarte mare, ideea nemaifiind practică.
Codurile turbo fac parte din clasa codurilor care rezolvă această problemă, folosind codoare
recursive și decodoare iterative sen zitive. În 1993, Berrou , Glavieux și Thitimajshima (de la
Télécom Bretagne, Franța) au propus „o nouă clasă de coduri convoluționale: codurile turbo, ale
căror performanțe din punct de vedere al ratei erorii de bit (BER) se apropie de limita stabilită de
Shannon” [20].
Codarea
Pentru a genera coduri turbo, se folosește un anumit tip de codor convolu țional. De
exemplu, în Fig. 2 .5 este ilustrat un codor convoluțional care folosește o intrare, x, ieșirile po și p1 și
o lungime constantă K = 3 . Multiplexând ieșirile, este generat codul cu rata R = 1
2.
Fig. 2 .5 Codoare convoluționale
Codorul din figura b diferă față de cel din figura a prin faptul că ieșirea p0 nu mai există,
aceasta fiind înlocuită cu intrarea x, ceea ce îl face să devină recursiv. Faptul că este recursiv
permite creș terea lungimii blocului, fără a afecta lungimea constantă a codorului. Intrarea devine
ieșire a codorului, ceea ce îl face să devină sistematic. As tfel, acest tip de codor se numește codor
convoluțional recursi v sistematic (RSC) [20].
În codurile convoluționale nerecursive, se obișnuieste popularea codorului cu zerouri, pentru
a aduce decodorul la o stare finală.
37
În Fig.2 .6 este un exemplu de schemă -bloc a unui codor turbo cu rata 1/3:
Fig. 2 .6 Schema -bloc a unui codor turbo cu rata 1/3
Codurile turbo sunt formate prin concatenarea mai multor coduri recursive convoluționale,
de obicei două, întrucât performanța datorată folosirii mai multor coduri nu este dată de
complexitatea acestora și nu cre ște semnificativ. În Fig. 2 .7 este ilustrată o sche mă-bloc a unor
coduri convoluționale concatenate în paralel, generând un cod turbo:
Fig. 2 .7 Schema -bloc a unor coduri convoluționale concatenate în paralel
Un bloc foarte important pentru înțelegerea codurilor turbo este blocul de întrețesere , bloc
de al cătui tip depind performanțele unui cod turbo. De altfel, un cod turbo presupune concatenarea
unor coduri convoluționale, combinată cu operația de întrețeser e [21]. Acest bloc primește la intrare
un set de simboluri pe care le rearanjează, fără a repeta sau omite vreun simbol din cele primite.
Numărul de simboluri din fiecare set este fix pentru un bloc de întrețesere dat. Operația de
rearanjare a unui bloc de întrețesere pentru un set de simboluri este independentă de operațiile
aceluiași bloc pentru alte seturi de simboluri.
În continuare, în Fig. 2 .8 și Fig. 2 .9 sunt prezentate câte un exemplu de codor și decodor de bază
turbo:
38
Fig. 2 .8 Structura unui codor turbo de bază
Fig. 2 .9 Structura unui decodor turbo de bază
În exemplul de mai sus, există două codoare convoluționale montate în paralel, de obicei
fiind luate identice. Biții de informație sunt intercalați înainte de a intra în ce l de-al doilea codor.
Cuvântul de cod într -un cod turbo presupune o secvență de biți de intrare ( x0), urmați de biții de
paritate de la primul codor ( x1) și de cei de la cel de -al doilea codor ( x2). Fiecare codor prezintă,
deci, la ieșire, o secvență de pa ritate ( xi). Așa cum am mai menționat, biți de umplutură sunt folosiți
pentru a forța toate codoarele ca la sfarșitul cadrului transmis să se afle într -o “stare de zero” [21].
Decodorul lucrează iterativ, astfel că primul decodor va decoda secvența, iar de cizia îi va
aparține celui de -al doilea decodor. Cel de -al doilea decodor va utiliza estimatul acestei decizii
produs de primul codor, astfel având informație suplimentară de decoda t. După un anumit număr de
iterații, este luată o decizie, iar secvența estimată este transmisă utilizatorului.
Întrețeserea poate fi de două tipuri: întrețesere -bloc și întrețesere convoluțională.
Întrețeserea -bloc se execută rând cu rând cu L cuvinte de cod, fiecare având o lungime de n biți.
Cele L cuvinte de cod sunt ulter ior transmise coloană cu coloană, până când blocul de intercalare se
golește. Apoi operația este reluată în mod ciclic. Singurul dezavantaj al acestui tip de întrețesere
este întârtierea introdusă de fiecare parcurgere rând cu rând menționată anterior.
Această problemă este rezolvată de către al doilea tip de bloc de întrețesere – blocurile de
întrețesere convoluționale. Acestea nu rezolvă, însă, întârzierea asociată primei parcurgeri.
Întârzierea este o funcție de lungimea L și de rata datelor, pentru anumi te canale având valori de
câteva secunde.
39
Această întârziere este considerată inacceptabilă în anumite aplic ații, cum ar fi cele de voce, atunci
când introduce pauze între transmisiunile dintre vorbitori. Acest tip de intercalare mai are un
avantaj, respe ctiv reduce consumul de memorie aproximativ la jumătate față de cazul precedent.
Decodarea
Pentru a decoda un mesaj, semnalul este demodulat împreună cu zgomotul aferent canalului.
Semnalul de la recepție poate lua forma unei valori cuantizate a bitului decodat împreună cu
zgomotul sau poate fi un bit cu o anumită probabilitate asociată (de exemplu, 0 cu P(0) = 0,55). Cel
mai des se folosește raportul probabilității de încărcare, definit astfel:
𝛬𝑖= ln𝑃(𝑚𝑖=1|𝑦′)
𝑃(𝑚𝑖=0|𝑦′) (3.22 )
unde 𝛬𝑖 este o măsură a probabilității ce exprimă că, fiind dat un semnal la ieșire 𝑦′, bitul de mesaj
asociat transmisiei, 𝑚𝑖, este 0 sau 1. Dacă evenimentele sunt echiprobabile, atunci ieșirea este 0, în
caz contrar, 𝛬𝑖 ia valori pozitive sau negative.
Procesul de decodare presupune două faze: inițializarea decodorului și decodarea propriu –
zisă a secvenței., așa c um este ilustrat și în Fig. 3.10 :
Fig. 2 .10 Decodor turbo: inițializare și decodare propriu -zisă
Ieșirea demodulatorului conține valorile secvenței 𝑥’ și biții de paritate 𝑝1′ și 𝑝2′. Aceste
valori sunt folosite pentru a inițializa decodorul. Secvența întrețesută este transmisă decodorului 2,
iar secvența derivată din 𝑥’ este transmisă decodorului 1, apoi decodorului 2, trecând printr -un bloc
de întrețesere. Acesta rearanjează biții proveniți din fluxurile de date 𝑥’ și 𝑝1′ , astfel încât biții
rezultați din același bit din 𝑥 sunt prezentați simultan decodorului 2, fie de la 𝑥, fie de la 𝑝1′, fie de
la 𝑝2′.
Decodorul poate cunoaște probabilitatea de transmitere a mesajului, mai exact poate
cunoaște dacă anumite mesaje au probabilitate de apariție mai mare decât altele, adică decodorul
deține informație a priori . Această informație, împreună cu informația extrasă din procesul de
decodare, generează o ieșire de tip a posteriori , folosind informațiile primi te pentru a estima cât mai
bine secvența recepționată. Urmează apoi un anumit număr de iterații prin decodoarele 1 și 2,
combinate cu procesul de întrețesere și de -întrețesere, până când la ieșire este generată o versiune
finală a mesajului, 𝑥′′.
La recepție, în cazul întrețeserii -bloc, cuvintele de cod sunt supuse operației inverse
întrețeserii, pe care o vom numi de-întrețesere. Un grup de lungime L biți sau mai puțin nu va putea
genera mai mult de o eroare de bit în fiecare cuvânt de cod. Un anumit tip de decodor numit
decodor aleator prezintă o probabilitate mai mare de corectare a acestei erori singulare decât a
întregului grup. Parametrul L se numește gradul blocului de întrețesere sau adâncimea de
întrețesere . Acesta este ales considerând condițiile cele mai defavorabile ale canalul ui; el trebuie să
fie suficient de mare astfel încât codul întrețesut să poată suporta lungimea maximă de grupuri de
erori ce pot apărea pe canal.
40
Codurile turbo ating performanțe foarte bune folosind algoritmi de codare și decodare de
complexitate relativ scăzută.
Algoritmi de decodare
Principalii algoritmi de decodare folosiți sunt MAP și SOVA. MAP caută simbolul cu cea
mai mare probabilitate de recepție, iar SOVA caută secvența cu cea mai mare probabilitate de
recepție. Acești algoritmi au performanțe similare în condițiile unui raport semnal -zgomot ridicat.
La raporturi semnal -zgomot mici, MAP este mai complex. MAP a fost propus de către Bahl și a fost
ales de câtre Berrou ca fiind decodorul optim pentru codurile turbo . MAP caută simbolul cu cea mai
mare probabilitate de recepție, calculând probabilitatea condițională a transmisiei folosind bitul
anterior și având la dispoziție probabiliatea bitului recepționat. Pentru acest tip de decodor, se
evaluează raportul p robabilității de încărcare [22].
Un de zavantaj al acetui tip de decodor este că necesită o cantitatate mare de memorie pentru
stocarea datelor intermediare, precum și o latență ridicată cauzată de recursivitate, întrucât
decodorul are nevoie de simbolurile anterioare pentru deco darea simboluri lor curente [23].
Algoritmul SOVA se bazează pe algoritmul Viterbi, care reprezintă o soluție pentru
estimarea probablitității maxime a posteriori pentru o secvență de stare a unui process Markov în
timp discret și de stare finită.
LDPC (Low -Density Pari ty Check)
Introducere
Reprezintă un tip de cod uri corectoare de erori, concep tual LDPC fiind prima d ată introdus
în 1960, la M.I.T. , fiind o perioadă de timp ignorate, întrucât se considera că acestea nu sunt
practice, ceea ce mai târziu s -a dovedit a fi complet neadevărat. Codurile LDPC sunt eficiente în
sistemele MIMO, întrucât au performanțe foarte bune în ceea ce privește limita t eoremei lui
Shannon, aspect ce prezintă interes din punct de vedere al capacității canalului [24].
Acestea sunt similare codurilor turbo, însă au o serie de avantaje referitoare la implementare,
avantaje ce vor fi prezentate în continuarea lucrării.
Coduri de control al parității și matricea de control al parității (H)
În general, un cod de control al parității reprezintă un cod -bloc, adică o colecție de vectori
binari de lungime fixă n. Simbolurile codului satisfac r ecuații de control al parității de form a
următoare:
𝑥𝑎⊕𝑥𝑏⊕𝑥𝑐⊕…⊕𝑥𝑧 = 0 (2.23)
unde 𝑥𝑎,𝑥𝑏,…,𝑥𝑧 reprezintă simbolurile ecuației, iar operatorul ⊕ reprezintă suma modulo 2.
Fiecare cuvânt de cod de lungime n poate conține (n-r)=k biți de informație și r biți de control.
Matricea de control al parității este o matrice cu simboluri binare, având r linii și n coloane,
între care există relația k = n -r. Elementul cu indicele ij este 1 doar dacă ecuația j conține bitul i. De
exemplu, un cod Hamming cu n = 7, k = 4 și r = 3, de forma c 1, c2, c3, c4, c5, c6, c7, ecuațiile
corespunzătoare sunt:
𝑐1⊕𝑐2⊕𝑐3⊕𝑐5= 0
𝑐1⊕𝑐2⊕𝑐4⊕𝑐6= 0 (2.24)
𝑐1⊕𝑐3⊕𝑐4⊕𝑐7= 0
41
Matricea de control în acest caz este 𝑯= [1 1 1 0 1 0 0
1 1 0 1 0 1 1
1 0 1 1 0 0 1], de unde se observă faptul că se verifică
includerea lui c 1 doar în primele două ecuații, acolo unde elemental corespunzător din matrice are
valoarea 1.
Ce sunt codurile LDPC?
Din cele prezentate anterior, se observă că procentul de biți de 1 este destul de mic.
Un cod LDPC regulat are proprietatea că fiecare bit de cod este conținut în același număr de
ecuații și fiecare ecuație conține același număr de simboluri de cod.
Exemplu : Considerăm un cod LDPC cu n = 12 care prezintă următorul si stem de ecuații:
𝑐3⊕𝑐6⊕𝑐7⊕𝑐8= 0
𝑐1⊕𝑐2⊕𝑐5⊕𝑐12= 0
𝑐4⊕𝑐9⊕𝑐10⊕𝑐11= 0
𝑐2⊕𝑐6⊕𝑐7⊕𝑐10= 0
𝑐1⊕𝑐3⊕𝑐8⊕𝑐11= 0 (2.25)
𝑐4⊕𝑐5⊕𝑐9⊕𝑐12= 0
𝑐1⊕𝑐4⊕𝑐5⊕𝑐7= 0
𝑐6⊕𝑐8⊕𝑐11⊕𝑐12= 0
𝑐2⊕𝑐3⊕𝑐9⊕𝑐10= 0
De fapt, sunt doar 7 ecuații independente din cele 9, deci sunt 7 biți de paritate.
Matricea de control al parității este următoarea:
𝑯=
[ 0 0 1 0 0 1 1 1 0 0 0 0
1 1 0 0 1 0 0 0 0 0 0 1
0 0 0 1 0 0 0 0 1 1 1 0
0 1 0 0 0 1 1 0 0 1 0 0
1 0 1 0 0 0 0 1 0 0 1 0
0 0 0 1 1 0 0 0 1 0 0 1
1 0 0 1 1 0 1 0 0 0 0 0
0 0 0 0 0 1 0 1 0 0 1 1
0 1 1 0 0 0 0 0 1 1 0 0]
Se observă cum fiecare simbol este conținut în 3 ecuații și fiecare ecuație conține 4 simboluri de
cod.
Decodarea codurilor LDPC poate fi mai ușor înțeleasă printr -un graf în care fie care nod -bit
semnifică un simbol de cod, iar fiecare nod -paritate înseamnă o ecuație de paritate. Există o legătură
trasată între nodul -bit și nodul -paritate doar dacă există acel bit este conținut în ecuația
respectivă [24].
Mai jos, în Fig.2 .11, sunt prez entate doar legăturile între prima linie și prima coloană:
Fig. 2 .11 Graful conținând doar legăturile dintre prima linie și prima coloană.
42
În Fig. 2 .12, pătratele reprezintă ecuații de paritate, iar cercurile simboluri de cod. Este
reprezentat graful complet pentru codul simplu LDPC. Analizându -l, se observă că fiecare nod -bit
generează 3 legături către nodurile de paritate și fiecare nod de paritate generează 4 legături către
nodurile -bit.
Fig. 2 .12 Graful complet pentru codorul simplu LDPC
Un graf bipartit este un graf G = (X,U) cu proprietatea că există două mulțimi A și B incluse
în X, astfel încât mulțimile A și B nu au nici un punct comun, reuniunea mulțimilor A și B o
constituie mulțimea X și toate muchiile grafului au o extremitate în A și cealaltă în B. Astfel,
codurile LDPC sunt coduri liniare obținute din grafuri bipartite cu elemente de 1 cu probabilitate de
apariție scăzută cu n noduri numite noduri -mesaj și r noduri numite noduri de control. Graful
generează un cod -bloc de lungime n și dimensiune minim n-r astfel: cele n coordonate ale
cuvintelor de cod sunt asociate cu n noduri -mesaj. Cuvintele de cod sunt acei vectori de forma (c 1,
c2,…,c n) pentru care, pentru toate nodurile de control, suma pozițiilor vecine din nodurile -mesaj
este 0 .
Un a lt exemplu este dat în Fig. 2 .13
Fig. 2.1 3 Cod LDPC
Reprezentarea prin graf este echivalentă cu reprezentarea prin matrice, analizând matricea
de adiacență a grafului. În cazul general, orice matrice binară r×n conduce la un graf bipartit cu n
mesaje și r noduri de control, matricea H generând codul asociat grafului respectiv. Așadar, orice
cod liniar are asociat un cod pornind de la graful bipartit (graful nu este însă definit în mod unic de
către cod). Totuși, nu orice cod binar liniar are o reprezentare sub formă de graf bipartit împrăștiat.
Dacă acest lucru se întâmplă însă, atunci codul este un cod de control al parității de densitate
scăzută [24].
43
Proprietatea -cheie care face algoritmii LDPC să fie eficienți este tocmai acestă proprietate
că apariția elementului unitate este scăzută.
Algoritmi de codare
Codarea pentru un cod binar liniar de dimensiune k și lungime a blocului n presupune
realizarea unui algoritm care să alcătuiască un cuvânt de cod pornind de la k biți originali: x1,
x2,…,x k. Algoritmii pot fi comparați între ei pe criterii de cost, idee ce va fi prezentată în continuare
prin explicarea conceptului de operații aritmetice necesare pe care le folosește un algoritm.
Dacă se cunoaște o bază pentru codul liniar: x1, x2,…,x k, atunc i codarea poate fi realizată
calculând 𝑥1𝑔1+ 𝑥2𝑔2+…+ 𝑥𝑘𝑔𝑘. Dacă se folosește algoritmul direct pentru a face calculul și nu
se cunoaște a -priori tipul de algoritm folosit, atunci numărul de operații necesare calculului depinde
de ponderile Hamm ing ale vectorilor bazei. Dacă acești vectori au densitate mare, atunci costul
algoritmului de codare este proporțional cu nk. Pentru coduri cu rate constante, costul este
proporțional cu n2, ceea ce poate face algorimul prea încet pentru anumite tipuri de aplicații.
Din nefericire, codurile LDPC sunt dictate de spațiile nule ale matricii care nu este densă,
mai degrabă decât de spațiile generate de rândurile sale, astfel că pentru un cod LDPC dat,
probabilitatea să existe o bază formată din vectori „rari” este foarte mică, deci algoritmul direct va
utiliza un număr de operații proporțional cu n2. Acest lucru nu este de dorit din cauza complexității
algoritmului și ne dorim realizarea unor algoritmi care să fie proporționali cu n. Pentru aceasta,
există două posibilități:
a. să modificăm codul LDPC care conține algoritmi rapizi de codare
b. să mărim viteza algoritmilor deja existenți pentru codurile LDPC
O modalitate simplă de a obține coduri pornind de la grafuri de densitate scăzută este aceea
de a face modificări asupra codului, astfel încât nodurile de control să aibă valori, valori obținute
prin adunarea valorilor corespunzătoare nodurilor -mesaj adiacente lor. În acest caz, nodurile de
control sunt noduri redundante, iar nodurile -mesaj devin noduri pur tătoare de informație. În
continuare, așa cum arată și figura, nodurile din dreapta vor fi numite “noduri de control”, iar cele
din stânga “noduri -mesaj”.
Fig. 2 .14 reprezintă un exemplu de construcție cu codor rapid. Numărul de adunări este limitat
superi or de numărul de margini; astfel, codarea eficientă este posibilă numai dacă graful are
densitate scăzută. Cuvintele de cod constau în valorile nodurilor -mesaj, la care se adaugă valorile
nodurilor de control [24].
Fig. 2.14 Construcție cu codor rapid
44
Aceste preliminarii conduc la ideea unui codor de timp liniar, dar apar probleme în cazul decodării.
De exemplu, în cazul canalului BEC, nu putem ști cu siguranță dacă la recepție vor fi
decodați corect biții șterși, întrucât, în procesul de decodare, nodu rile de control pot fi de asemenea
șterse. Presupunând că pe canalul de tip BEC este transmis un cuvânt de cod cu probabilitatea de
ștergere p, atunci se așteaptă la recepție să fie șterse un procent p din nodurile -mesaj și un procent p
din nodurile de con trol. Notăm acest procent cu Λ i, a nodur ilor mesaj de grad i. Întrucât graful este
aleator, probabilitatea ca un nod -mesaj să aibă toți vecinii printre nodurile de control șterse este pi.
Această probabilitate este condițonată de evenimentul ca gradul nodului -mesaj să fie i; așadar,
probabilitatea ca un nod -mesaj să aibă toți vecinii printer nodurile șterse este ∑Λ𝑖𝑖𝑝𝑖, care este o
valoare constantă independent de lungime cuvântului de cod, ceea ce înseamnă că decodorul nu va
fi capabil să recupereze nodul -mesaj. Pentru a rezolva problema, apare ideea folosirii unui graf în
cascadă, prin care fiecare nod redundant va fi protejat de către un alt nivel al grafului pentru a
obține un al do ilea set de noduri redundante, și așa mai departe. În fiecare etapă, numărul nodurilor
de mesaj și de control scade cu un anumit raport constant. După un anumit număr de niveluri ale
grafului, număru l nodurilor de control devine suficient de mic astfel înc ât acestea să fie protejate
folosind un cod binar, pentru care putem utiliza un decodor destul de complex. Problemele apar aici
din cauza varianței raportului de ștergere care va avea o valoare prea mare pentru procedeul de
decodare, precum și din cauza co ntrolului tuturor grafurilor, care poate produce deficiențe ale
decodorului [24].
Algoritmi de decodare
Tipul de algoritmi folosiți pentru decodarea LDPC se numesc algoritmi de trecere (trimitere)
a mesajelor, aceștia fiind iterativi. Se numesc așa deoarece la fiecare iterație a algoritmului,
mesajele trec de la noduri -mesaj la noduri de control, apoi de la noduri de control la noduri -mesaj.
Trecerea de la noduri -mesaj la noduri de control se face pe baza valorilor observate ale nodurilor –
mesaj și al e anumitor mesaje trecute de la nodurile de control vecine la nodurile -mesaj respective.
Această operație se realizeză independent, fără a ține cont de trecerile realizate în pasul anterior de
iterație.
Un tip important de algoritm de trecere al mesajelor este algoritmul de propagare cu
pobabilități , prezentat într -o lucrare aparținând lui Gallager, folosit de asemenea și în inteligența
artificială [24]. Numele său vine de la faptul că mesajele trecute în cadrul lui reprezintă
probabilități, mai exact mesaj ul trimis de la un nod -mesaj, v, la un nod de control, c, este, de fapt,
probabilitatea ca v să aibă o anumită valoare, fiind dată valoarea observată a nodului -mesaj și toate
valorile communicate lui v în cadrul iterației anterioare de la nodurile de contr ol incidente lui v,
altele decât c. Pe de altă parte, probabilitatea trimisă de la c la v este probabilitatea ca v să aibă o
anumită valoare, fiind date toate probabilitățile trimise către c la iterația anterioară de către
nodurile -mesaj, altele decât v. Uneori, în loc să se lucreze cu probabilități, este mai avantajos să se
lucreze cu plauzibilități.
Unul dintre principalele avantaje ale algoritmului de propagare cu probabili tăți, ori cu
plauzibilități, este timpul de execuție. Întrucât algoritmul parcurge marginile grafului, iar graful are
probabilitate mică de apariție a elementului unitate, numărul de margini traversate este mic. În plus,
dacă algoritmul rulează pentru un număr constant de timpi, atunci fiecare margine este parcursă de
un număr constant de ori, algoritmul folosind un număr de operații liniare în numărul de noduri –
mesaj. Un alt avantaj al acestui algoritm este faptul că este independent de tipul de canal folosit,
deoarece probabilitățile trimise nu depind de canal.
Un dezavantaj este faptul că acest algoritm are performanțe mai slabe decât decodarea cu
plauzibiliate maximă, fiind mai ușor să con struim clase de coduri LDPC pentru care, decodând
folosind plauzibilitate maximă, putem corecta mai multe erori decât folosind algoritmul de
propagare cu probabilități.
45
Capitolul 3
Simulări și rezultate
Codul Matlab utilizat în partea practică a lucrării se regăsește în anexa 1 .
I.
În primul caz, am folosit un sistem MIMO de dimensiune 2×2, cu un utilizator, inițial fără
nicio tehnică de codare și modu lație QPSK, 8QAM, 16QAM, 32QAM, respectiv 64QAM, pentru
care am reprezentat valoarea erorii de bit, variind valoarea raportului semnal -zgomot.
În Fig. 3.1 am reprezentat cazul fără codare, cu 5 tipuri de modulații. Observ ăm că în toate
cazurile, pe măsură ce raportul semnal -zgomot crește, rata de eroare de bit scade, doar că în cazul
QPSK obținem cele mai bune rezultate față de celelalte cazuri deoarece în cazul QPSK sunt doar
doi biți care formează un simbol față de cazul, de exemplu, 16QAM când am 4 biți care formează
un simbol și atunci cand zgomotul sau fadingul afectează bitul, nu distruge un singur bit ci distruge
mai mulți biți.
Fig. 3 .1 Sistem MIMO 2×2, 1 utilizator, fără codare
Mai d eparte ne îndreptat ăm către caz ul MIMO cu codare, în care am testat codarea codurilor
de canale LDPC și convoluționale.
Am folosit un sistem MIMO de dimensiune 2×2, cu un utilizator, cu tehnica de codare
LDPC și modulație QPSK, 8QAM, 16QAM, 32QAM, respectiv 64QAM, pentru care am
repreze ntat valoarea erorii de bit, variind valoarea ra portului semnal -zgomot.
46
În Fig. 3 .2 am reprezentat cazul cu codare LDPC. Și în acest caz QPSK prezintă cele mai
bune rezultate față de celelalte cazuri (8QAM, 16QAM, 32QAM, 64QAM), explicația fiind aceeași
ca în cazul fără codare. De asemenea, o bservăm față de cazul anterior, că în cele 5 cazuri cu ajutorul
codorului obținem rezultate mai bune .
Comparând, de exemplu, 8QAM, pentru a obține 𝐵𝐸𝑅=10−2 fără codare avem nevoie de
un RSZ = 3,5 dB și în cazul în ca re folosim LDPC avem nevoie doar de un RSZ = 3 dB. Observam
un câștig de 0,5 dB.
Un alt exemplu care denotă faptul ca folosind tehnica de codare LDPC obținem rezultate
mai bune decât în cazul fără codare, este: comparând 32QAM, pentru a obține 𝐵𝐸𝑅=10−1 fără
codare avem nevoie de un RSZ = 2,9 dB și în cazul în care folosim LDPC avem nevoie doar de un
RSZ = 2,5 dB. Observăm un câștig de 0,4 dB.
Fig. 3 .2 Sistem MIMO 2×2, 1 utilizator, LDPC
În cele ce urmează a m folosit un sistem MIMO de dimensiune 2×2, cu un utilizator, cu
codare de canal convoluțională cu rata ½, 2/3, respectiv ¾ și modulație QPSK, 8QAM, 16QAM,
32QAM, respectiv 64QAM, pentru care am reprezentat valoarea erorii de bit, variind val oarea
raportului semnal -zgomot.
În Fig. 3.3 am reprezentat cazul cu codare convoluțională și rata de 1/2 .
Observăm în cazul codării convoluționale că atunci când Rata = ½ obținem rezultate mai
bune față de cazul fără codare.
47
Comparând, de exemplu, QPSK, pentru a obține 𝐵𝐸𝑅=10−2 fără codare avem nevoie de
un RSZ = 1,9 dB și în cazul în care folosim codare convolu țională cu rata ½ este nevoie doar de
RSZ = 0,3 dB. Astfel reiese un câștig de 1,6 dB.
Un alt exemplu care denotă faptul ca folosind tehnica de codare convoluțională obținem
rezultate mai bune decât în cazul fără codare, este: comparând 16QAM, pentru a obține 𝐵𝐸𝑅=
10−2 fără codare avem nevoie de un RSZ = 4,8 dB și în cazul în care folosim codare convoluțională
cu rata de 1/2 avem nevoie doar de un RSZ = 3 dB. Observăm un câștig de 1,8 dB.
Fig. 3.3 Sistem MIMO 2×2, 1 utilizator, Codare convoluțională, Rata ½
În Fig. 3. 4 am reprezentat cazul cu codare convoluțională și rata de 2/3.
Observăm în cazul codării convoluționale că atunci când Rata = 2/3, obținem rezultate mai
bune față de cazul fără codare , însă obținem rezultate mai puțin bune față de codarea convoluțională
cu Rata = 1/2.
Comparând, de exemplu, 64QAM, pentru a obține 𝐵𝐸𝑅=10−2 fără codare avem nevoie de
un RSZ = 7,4 dB și în cazul în care folosim codare convolu țională este nevoie doar de RSZ = 5,6
dB. Astfel reiese un câștig de 1,8 dB.
Un exemplu care denot ă faptu l ca folosind tehnica de codare convoluțională cu Rata = 2/3
obținem rezultate mai puțin bune decât în cazul codării convoluționale cu Rata = 1/2 , este:
comp arând 8 QAM, pentru a obține 𝐵𝐸𝑅=10−1 când Rata = 2/3 avem nevoie de un RSZ = 0,7 dB
și în cazul în care Rata = 1/2 avem nevoie doar de un RSZ = 0,3 dB.
48
Fig. 3.4 Sistem MIMO 2×2, 1 utilizator, Codare convoluțională, Rata 2/3
În Fig. 3.5 am reprezentat cazul cu codare convoluțională și rata de 3/4.
Observăm în cazul codării convoluționale că atunci când Rata = ¾, obținem rezulta te mai
bune față de cazul fără codare și mai puțin bune față de celelalte două tipuri de codări
convoluționale .
Comparând, de exemplu, 32QAM, pentru a obține 𝐵𝐸𝑅=10−2 fără codare avem nevoie de
un RSZ = 7 dB și în cazul în care folosim codare convolu țională este nevoie de RSZ = 5,6 dB.
Astfel reiese un câștig de 1,4 dB.
Un exemplu care denotă faptul ca folosind tehnica de co dare convoluțională cu Rata = 3/4
obținem rezultate mai puțin bune decât în cazul c odării convoluționale cu Rata = 2/3, este:
comp arând 16 QAM, pentru a obține 𝐵𝐸𝑅=10−1 când Rata = 3/4 avem nevoie de un RSZ = 2,9
dB și în cazul în care Rata = 2/3 avem nevoie doar de un RSZ = 2,4 dB.
Un alt exemplu care denotă faptul ca folosind tehnica de codare convoluțională cu Rata =
3/4 obținem rezultate mai puțin bune decât în cazul codării convoluționale cu Rata = 1/2, este:
comparând QPSK, pentru a obține 𝐵𝐸𝑅=10−1 când Rata = 3/4 avem nevoie de un RSZ = 0,2 dB
și în cazul în care Rata = 1/2 avem nevoie doar de un RSZ = -1,5 dB.
49
Fig. 3 .5 Sistem MIMO 2×2, 1 utilizator, Codare convoluțională , Rata 3/4
În Fig. 3 .6 și Fig. 3.7 am realizat o comparație între codarea LDPC și codarea
convoluțională cu Rata = ½ , respectiv Rata =2/3 . Observăm faptul că în cazul LDPC se obțin cele
mai bune rezultate.
Comparând, de exemplu, 8QAM, pentru a obține 𝐵𝐸𝑅=10−1 cu codare convoluțională
(Rata = 1/2) avem nevoie de un RSZ = 0,3 dB și în cazul în care folosim codare LDPC avem nevoie
doar de RSZ = 0 dB.
Comparând, de exemplu, 64 QAM, pentru a obține 𝐵𝐸𝑅=10−1 cu codare convoluțională
(Rata = 3 /4) avem nevoie de un RSZ = 6 dB și în cazul în care folosim codare LDPC avem nevoie
doar de RSZ = 4 dB.
50
Fig. 3 .6 Sistem MIMO 2×2, 1 utilizator, LDPC și Codare convoluțională (Rata = ½)
Fig. 3.7 Sistem MIMO 2×2, 1 utilizator, LDPC și Codare convoluțională (Rata = 3/4)
51
II.
În al doilea caz, am folosit un sistem SISO , cu un utilizator, inițial fără nicio tehnică de
codare și modulație QPSK, 8QAM, 16QAM, 32QAM, respectiv 64QAM, pentru care am
reprezentat valoarea erorii de bit, variind valoarea raportului semnal -zgomot.
În Fig. 3.8 am reprezentat cazul fără codare, cu 5 tipuri de modulații. Obse rvăm că în toate
cazurile, pe măsură ce raportul semnal -zgomot crește, rata de eroare de bit scade, doar că în cazul
QPSK obținem cele mai bune rezultate față de celelalte cazuri.
Fig. 3.8 Sistem SISO, 1 utilizator, fara codare, in canalul Rayleigh
Mai departe ne îndreptatăm către cazul SISO cu codare, în care am testat codarea codurilor
de canale LDPC și convoluționale.
Am folosit un sistem SISO, cu un utilizator, cu tehnica de codare LDPC și modulație QPSK,
8QAM, 16QAM, 32QAM, respectiv 64QAM, pentru care am reprezentat valoarea erorii de bit,
variind valoarea raportului semnal -zgomot.
În Fig. 3.9 am reprezentat cazul cu codare LDPC. Și în acest caz QPSK prezintă cele mai
bune rezultate față de celelalte cazuri (8QAM, 16QAM, 32QAM, 64QAM). De asemenea,
observăm față de cazul anterior, că în cele 5 cazuri cu ajutorul codorului obținem rezultate mai
bune.
Comparând, de exemplu, 8QAM, pentru a obține 𝐵𝐸𝑅=10−1 fără codare avem nevoie de
un Eb/No = 8 dB și în cazul în care folosim LDPC avem nevoie doar de un Eb/No = 9 dB.
Observam un câștig de 1 dB.
52
Fig. 3.9 Sistem SISO, 1 utilizator, LDPC , in canalul Rayleigh
În cele ce urmează a m folosit un sistem SISO , cu un utilizator, cu codare de canal
convoluțională cu rata ½, 2/3, respectiv ¾ și modulație QPSK, 8QAM, 16QAM, 32QAM, respectiv
64QAM, pentru care am reprezentat valoarea erorii de bit, variind val oarea raportului semnal –
zgomot.
În Fig. 3.10 am reprezentat cazul cu codare convoluțională și rata de 1/2.
Observăm în cazul codării convoluționale că atunci când Rata = ½ obținem rezultate mai
bune față de cazul fără codare.
Comparând, de exemplu, QPSK, pentru a obține 𝐵𝐸𝑅=10−2 fără co dare avem nevoie de
un Eb/No = 16,5 dB și în cazul în care folosim codare convolu țională cu rata ½ este nevoie doar d e
Eb/No = 11 dB. Astfel reiese un câștig de 5,5 dB.
53
Fig. 3.10 Sistem SISO, 1 utilizator, C odare Convolutionala , Rata ½, in canalul Rayleigh
În Fig. 3.11 am reprezentat cazul cu codare convoluțională și rata de 2/3.
Observăm în cazul codării convoluționale că atunci când Rata = 2/3, obținem rezultate mai
bune față de cazul fără codare, însă obținem rezultate mai puțin bune față de codarea convoluțională
cu Rata = 1/2.
Comparând, de exemplu, 64QAM, pentru a obține 𝐵𝐸𝑅=10−1 fără codare avem nevoie de
un Eb/No = 16 dB și în cazul în care folosim codare convolu țională este nevoie doar de Eb/No = 19
dB. Astfel reiese un câștig de 3 dB.
Un exemplu care denotă faptul ca folosind tehnica de codare convoluțională cu Rata = 2/3
obținem rezultate mai puțin bune decât în cazul codării convoluționale cu Rata = 1/2, este:
comparând 8QAM, pentru a obține 𝐵𝐸𝑅=10−2 când Rata = 2/3 avem nevoie de un Eb/No = 16
dB și în cazul în care Rata = 1/2 avem nevoie doar de un Eb/No = 14 dB.
54
Fig. 3.11 Sistem SISO, 1 utilizator, C odare Convolutionala , Rata 2/3, in canalul Rayleigh
În Fig. 3.12 am reprezentat cazul cu codare convoluțională și rata de 3/4.
Observăm în cazul codării convoluționale că atunci când Rata = ¾, obținem rezultate mai
bune față de cazul fără codare și mai puțin bune față de celelalte două tipuri de codări
convoluționale.
Comparând, de exemplu, 8 QAM, pentru a obține 𝐵𝐸𝑅=10−2 fără codare avem nevoie de
un Eb/No = 20 dB și în cazul în care folosim codare convolu țională este nevoie de Eb/No = 18 dB.
Astfel reiese un câștig de 2 dB.
Un exemplu care denotă faptul ca folosind tehnica de codare convoluțională cu Rata = 3/4
obținem rezultate mai puțin bune decât în cazul codării convoluționale cu Rata = 2/3, este:
comparând 16QAM, pentru a obține 𝐵𝐸𝑅=10−1 când Rata = 3/4 avem nevoie de un Eb/No = 16,5
dB și în cazul în care Rata = 2/3 avem nevoie doar de un Eb/No = 16 dB.
Un alt exemplu care denotă faptul ca folosind tehnica de codare convoluțională cu Rata =
3/4 obținem rezultate mai puțin bune decât în cazul codării convoluționale cu Rata = 1/2, este:
comparând QPSK, pentru a obține 𝐵𝐸𝑅=10−1 când Rata = 3/4 avem nevoie de un Eb/No = 11 dB
și în cazul în care Rata = 1/2 a vem nevoie doar de un Eb/No = 7 dB.
55
Fig. 3.12 Sistem SISO, 1 utilizator, C odare Convolutionala , Rata ¾, in canalul Rayleigh
În Fig. 3.13 și Fig. 3.14 am realizat o comparație între codarea LDPC și codarea
convoluțională cu Rata = ½, respectiv Rata =2/3. Observăm faptul că în cazul LDPC se obțin cele
mai bune rezultate.
Comparând, de exemplu, 8QAM, pentru a obține 𝐵𝐸𝑅=10−1 cu codare convoluțională
(Rata = 1/2) avem nevoie de un RSZ = 9 dB și în cazul în care folosim codare LDPC avem nevoie
doar de RSZ = 8 dB.
Comparând, de exemplu, 64QAM, pentru a obține 𝐵𝐸𝑅=10−1 cu codare convoluțională
(Rata = 3/4) av em nevoie de un RSZ = 22 dB și în cazul în care folosim codare LDPC avem nevoie
doar de RSZ = 16,5 dB.
56
Fig. 3.13 Sistem SISO, 1 utilizator, LDPC si Codare Convolutionala (Rata = ½)
Fig. 3.14 Sistem SISO, 1 utilizator, LDPC si Codare Convolutionala (Rata = ¾)
57
Capitolul 4
Concluzii
În cadrul acestei lucrări am analizat difer ite tehnici de codare folosite î n tehnologia MIMO,
cu scopul de a evidenția avantajele și dezavantajele fiecăreia în funcție de situație și scenariile
utilizate. Aceeași pași i -am făcut și pentru un sistem SISO pentru a face comparație între sisteme și
a vedea care dintre ele are performanțe mai bune. Am structurat această lucrare pe 3 capitole.
În cadrul capitolului 1 a m prezentat următoarele tehnici de modulație: modulația în fază a
semnalului binar (BPSK), modulația în cuadratură a semnalui binar ( QPSK) și modulația în
cuadratură (QAM). În simularile făcute am folosit ca tehnici de modulație QPSK, 8QAM, 16QAM,
32QAM, 6 4QAM.
În capitolul 2 am realizat o scurtă prezentare a evoluției sistemelor SISO, SIMO, MISO, iar
la final am prezentat evoluția sistemelor MIMO, am descris fadingul și tehnicile de codare folosite
în cadrul lucrării: tehnicile codare convoluțională și codurile de control al parității cu densitate
scăzută (LDPC).
Capitolul 3 cuprinde rezultatele simulărilor ce folosesc un sistem MIMO 2×2, modulație în
cuadratură, în prima fază fără codare, apoi cu codare LDPC , codare convoluțională și în cele din
urmă comparație între codarea LDPC și codarea convoluțională. De asemenea cuprinde rezultatele
simulărilor ce folosesc un sistem SISO.
Pe baza simulărilor făcute am concluzionat următoarele:
în toate cazurile (fără codare, cu codare LDPC, cu codare convoluț ională) pe măsură ce
raportul semnal -zgomot crește, rata de eroare de bit scade, doar că în cazul QPSK obținem
cele mai bune rezultate față de celelalte cazuri deoarece în cazul QPSK sunt doar doi biți
care formează un simbol față de cazul, de exemplu, 16Q AM când am 4 biți care formează
un simbol și atunci cand zgomotul sau fadingul afectează bitul, nu distruge un singur bit ci
distruge mai mulți biți ;.
pe baza comparațiilor dintre cazul fără codare si celelalte două tipuri de codări am sesizat
faptul că Rata erorii de bit în cazul fără codare este cea mai puțin bună .
totodată, pe baza exemplelor date în capitolul anterior, am descoperit tehnica de codare
LDPC ca având cele mai bune rezultate datorită combinării biților cu matr icea de paritate,
modul in ca re e construită ajută la corectarea erorilor mult mai bine.
analizând comparațiile dintre codarile convoluționale cu rate diferite, am realizat că e ste de
dorit o rată de cod mai mică, adică redundanță mai mare, întrucât codurile cu această
proprietate cor ectează mai multe erori. În plus, sistemele de comunicație care transmit cu o
rată de cod mai mică pot opera cu o putere de transmisie mai mică, pot transmite pe distanțe
mai lungi, sunt mai rezistente la interferențe, folosesc antene mai mici și transmit cu rate
mai mari, fiind mai eficiente din punct de vedere energetic. În plus, sunt mai avantajoase din
punct de vedere al decodării, întrucât complexitatea acesteia crește odată cu lungimea
codului.
În concluzie , pe baza celor discutate mai sus, tehnica de codare LDPC este cea mai eficientă în
lucrarea curentă . De asemenea, comparând sistemul MIMO cu sistemul SISO reiese faptul că un
sistem MIMO oferă performanțe optime.
58
Bibliografie
[1] http://nos.iem.ro/bitstream/handle/123456789/265/Casu%20G.pdf?sequence=1&isAllowed=
y ( accesat la 6 iunie)
[2] http://www.agir.ro/buletine/857.pdf (accesat la 4 martie)
[3] https://www.scribd.com/document/57851343/BPSK#download ( accesat la 4 martie)
[4] Note de curs Comunicații de date, Simona Halunga , 2019
[5] https://hal.archives -ouvertes.fr/hal -00347510/document ( accesat la 4 martie)
[6] http://www.idc –
online.com/technical_references/pdfs/electronic_engineering/QPSK_modulation_and_Demo
dulation.pdf (accesat la 4 mart ie)
[7] http://www.creeaza.com/tehnologie/electronica -electricitate/Tehnici -de-transmisiuni –
digita511.php ( accesat la 20 aprilie)
[8] https://www.electronics -notes.com/articles/radio/modulation/quadrature -amplitude –
modulation -types -8qam -16qam -32qam -64qam -128qam -256qam.php ( accesat la 20 aprilie)
[9] http://stst.elia.pub.ro/news/RC/Teme_RC_IVA_2014_15/1_LazarMaMa__NistorescuAnEl_
WLAN.pd f (accesat la 20 aprilei)
[10] http://vega.unitbv.ro/~alexandrum/bclab/Modulatia%20digitala/Lab6_Modulatia%20QAM –
9.doc ( accesat la 20 aprilie)
[11] http://www.unibuc.ro/prof/dinca_m/curs -teor-
sist/docs/2016/mar/04_10_35_26Introducere.ppt ( accesat la 9 aprilie)
[12] file:///C:/Users/User/Downloads/IRNET_paper14.pdf ( accesat la 2 mai)
[13] https://searchmobilecomputing.techtarget.com/definition/SISO ( accesat la 2 mai)
[14] https://www.scribd.com/document/183922228/55213962 -Teoria -Sistemelor -pdf ( accesat la 9
aprilie)
[15] https://www.electronics -notes.com/articles/antennas -propagation/mimo/siso -simo -miso –
mimo.php ( accesat la 2 mai)
[16] A. Chockalingam and B. Sundar Rajan, Large MIMO Systems, Cambridge, 2014
[17] https://en.wikipedia.org/wiki/Fading ( accesat la 5 iunie)
[18] https://ro.wikipedia.org/wiki/Efectul_Doppler ( accesat la 5 iunie)
[19] https://despretot.info/efectul -doppler -definitie/ ( accesat la 5 iunie)
[20] http://www.rfwireless -world.com/Articles/Fading -basics -and-types -of-fading -in-wireless –
communication.html ( accesat la 5 iunie)
59
[21] G. A. &. T. P. Berrou C, Near Shannon Limit Error -Correcting Coding and Decoding : Turbo
Codes, IEEE International Commun ications Conference, Bretagne, 1993
[22] Y. J. Harbi, Effect of the interleaver types on the performance of the parallel concatenation of
convolutional codes, International Journal of Electrical & Computer Sciences IJECS -IJENS,
vol. Vol: 12 , nr. 03 , 20 12
[23] A. P. A. E. &. F. S. Berrou C, A Low Complexity, Soft Output, Viterbi Decoder
Architecture, Proceedings IEEE. International Conference on Communications, 1993
[24] W. J. G. a. P. G. G. E. Boutillon, VLSI architectures for the MAP algorithm, IEEE
Transactions on Communications, vol. 51, no. 2, p. 175 –185, 2003
[25] R. G. Gallager, Low Density Parity -Check Codes, Cambridge, MA, MIT Press, 1963
60
Anexa 1
I. Programe în Matlab utilizate pentru simul ări (MIMO)
1. Program ce implementează un sistem de comunic ații wireless MIMO 2×2 , fără tehnici de codare
și cu modulație QPSK , 8QAM, 16QAM, 32QAM, 64QAM .
clear all
close all
clc
% Numar de biti transmisi
N = 3000;
% Generarea secventei binare aleatoare (0/1)
data = randi([0, 1], 1, N );
% ––––- Modulatia si canalul ––––-
% Modulatie QPSK
Nbps = 6; % 2 QPSK, 3 8QAM , 4 16QAM, 5 32QAM,6 64QAM
data_mod = modulare_k(data, Nbps);
% Lungimea pachetului
L = length(data_mod);
% Zgomotul
zg = (1/sqrt(2))* (randn(2, L)+sqrt( -1)*randn(2, L));
% Coeficientii de pe canal
h = (1/sqrt(2))*(randn(2, L)+sqrt( -1)*randn(2, L));
% Raportul semnal -zgomot
RSZ = -2:2:10; % RSZ in dB
count = 1;
Tx = data_mod;
while count <= 10
for ii = 1:length(RSZ)
Rec = zeros(size(Tx));
for i = 1:2:length(Tx)
Data = [Tx(i) Tx(i+1)];
H = [h(:, i) h(:, i+1)];
n = [zg(:, i) zg(:, i+1)];
Semnal_receptionat = MIMO_2X2(Data, H, n,
RSZ(ii));
61
Rec(i) = Semnal_receptionat(1);
Rec(i+1) = Semnal_receptionat(2);
end
y_receptie = Rec;
data_dem = demodulare_k(y_receptie , Nbps);
ne_lin = 0;
[ex, ey] = find(data_dem ~= data);
ne_lin = ne_lin + length(ex);
ber(ii) = ne_lin/N;
end
ber_fin(count, 🙂 = ber;
count = count+1;
end
BER = sum(ber_fin)/(count -1);
save faracodare_QPSK
save faracodare_8QAM
save faracodare_16QAM
save faracodare_32QAM
save faracodare_64QAM
Realizarea figurii
clc
clear all
close all
load faracodare_QPSK
semilogy(RSZ, BER); grid on; hold on
load faracodare_8QAM
semilogy(RSZ, BER,'r'); grid on; hold on
load faracodare_16QAM
semilogy(RSZ, BER, 'g'); grid on; hold on
load faracodare_32QAM
semilogy(RSZ, BER, 'b'); grid on; hold on
load faracodare_64QAM
semilogy(RSZ, BER, 'm'); grid on; hold on
title('Sistem MIMO 2×2, 1 utilizator, fara codare' )
legend ( 'QPSK', '8QAM', '16QAM', '32QAM', '64QAM')
62
xlabel('RSZ')
ylabel('BER')
Funcție ce realizează codarea în matricea Alamouti
% Codare in matricea Alamouti
function Rec = MIMO_2X2(Data, H, n, RSZ)
for k = 1:2
suma_modulH(k) = sum((abs(H(:, k))).^2);
end
suma_modulH = sum(suma_modulH);
Txx = [Data(1) -conj(Data(2)); Data(2) conj(Data(1))];
% Datele codate
% Datele receptionate si zgomotul
RR = H*Txx+(10^( -RSZ/10))*n;
% Combinarea datelor la receptie
s1 = conj(H(1, 1))*RR(1, 1) + H(1, 2)*conj(RR(1, 2)) +
conj(H(2, 1))*RR(2, 1) + H(2, 2)*conj(RR(2, 2));
s2 = conj(H(1, 2))*RR(1, 1) – H(1, 1)*conj(RR(1, 2)) +
conj(H(2, 2))*RR(2, 1) – H(2, 1)*conj(RR(2, 2));
rec(1) = s1/suma_modulH; % bitul 1 estimat
rec(2) = s2/suma_modulH; % bitul 2 estimat
Rec = [rec(1) rec(2)];
end
Funcție ce realizează modularea QPSK
function [ user_mod ] = modulare_k(data, Nbps)
% modulatie qam
M = 2^Nbps;
norms = sqrt(2/3*(M -1));
[useri,biti] = size(data);
t1 = reshape(data', Nbps, useri*biti/Nbps)';
t2 = bi2de(t1, 'left-msb');
user_mod1 = qammod(t2, M, 0, 'gray')/norms;
user_mod = reshape(user_mod1, biti/Nbps, useri).';
end
Func ție ce realizează demodularea QPSK
function [ user_demod ] = demodulare_k(data, Nbps)
% modulatie qam
63
M = 2^Nbps;
norms = sqrt(2/3*(M -1));
[useri,date] = size(data);
t1 = reshape(data.', 1, date*useri).';
t2 = qamdemod(t1*norms, M, 0, 'gray');
t3 = de2bi(t2, 'left-msb');
user_demod = reshape(t3', date*Nbps, useri)';
end
2. Program ce implementează un sistem de comunicații wireless MIMO 2×2, modulație QPSK ,
8QAM, 16QAM, 32QAM, 64QAM și codare LDPC (modularea si demodularea se realizează
utilizând funcțiile modulare_k și demodulare_ k).
clear all
close all
clc
% Numar de biti transmisi
N = 2000;
% Perioada codului convolutional
T = 256;
% Numar de iteratii
iteratii = 5;
% ––––- Initializare ––––-
% Memoria codului convolutional
Ms = T + 1;
% Generarea secventei binare aleatoare (0/1)
data = randi([0, 1], 1, N );
% Crearea matricei de baza H transpusa
baseHT = makeBaseLdpccc(T, 2);
% ––––– Codare –––––
% Secventa codata
v = codareLdpccc(data, T, baseHT);
% ––––- Modulatia si canalul ––––-
% Modulatie QPSK
Nbps = 6; % 2 QPSK, 3 8QAM , 4 16QAM, 5 32QAM,6 64QAM
data_mod = modulare_k(v', Nbps);
% Lungimea pac hetului
L = length(data_mod);
64
% Zgomotul
zg = (1/sqrt(2))*(randn(2, L)+sqrt( -1)*randn(2, L));
% Coeficientii de pe canal
h = (1/sqrt(2))*(randn(2, L)+sqrt( -1)*randn(2, L));
% Raportul semnal -zgomot
RSZ = 0:2:10; % RSZ in dB
count = 1;
Tx = data_mod;
while count <= 5
for ii = 1:length(RSZ)
Rec = zeros(size(Tx));
for i = 1:2:length(Tx)
Data = [Tx(i) Tx(i+1)];
H = [h(:, i) h(:, i+1)];
n = [zg(:, i) zg(:, i+1)];
Semnal_receptionat = MIMO_2X2(Data, H, n,
RSZ(ii));
Rec(i) = Semnal_receptionat(1);
Rec(i+1) = Semnal_receptionat(2);
end
y_receptie = Rec;
data_dem = demodulare_k(y_receptie, Nbps).';
% ––––- Decodare ––––-
vHat = decodareLdpccc(data_dem, baseHT, T, (10^( –
RSZ(ii)/10)/sqrt(2)), iteratii);
uHat = [];
for i = 2:length(v)/(2*(Ms + 1)) – 1
% Se obtin bitii estimati
tmp = reshape(vHat(:, i), 2, length(vHat(:,
i))/2);
uHat = [uHat tmp(1, :)];
end
data_fin = uHat;
65
ne_lin = 0;
[ex,ey] = find(data_fin(1,1:N) ~= data);
ne_lin = ne_lin + length(ex);
ber(ii) = ne_lin/N;
end
ber_fin(count, 🙂 = ber;
count = count+1;
end
BER = sum(ber_fin)/(count -1);
save codareLDPC_QPSK
save codareLDPC_8QAM
save codareLDPC_16QAM
save codareLDPC_32QAM
save codareLDPC_64QAM
Realizarea figurii
clc
clear all
close all
load codareLDPC_QPSK
semilogy(RSZ, BER); grid on; hold on
load codareLDPC_8QAM
semilogy(RSZ, BER, 'r'); grid on; hold on
load codareLDPC_16QAM
semilogy(RSZ, BER, 'g'); grid on; hold on
load codareLDPC_32QAM
semilogy(RSZ, BER, 'b'); grid on; hold on
load codareLDPC_64QAM
semilogy(RSZ, BER, 'm'); grid on; hold on
title('Sistem MIMO 2×2, 1 utilizator, LDPC')
legend ( 'QPSK', '8QAM', '16QAM', '32QAM', '64QAM')
xlabel('RSZ')
ylabel('BER')
Funcții LDPC
Codare
function v = codareLdpccc(u, T, HT)
66
% Codarea LDPC -CC
%
% u : Secventa de biti (0/1)
% T : Perioda codului convolutional
% HT : Matricea be baza de control al paritatii,
transpusa
% v : Seventa codata (vector -coloana)
% Memoria codului convolutional
Ms = T + 1;
% Biti din coada
u = [zeros(1, Ms + 1) u zeros(1, 2*(Ms + 1)) zeros(1,
T)];
% Coeficienti h1
for i = 1:T
k = 1;
for j = 0:-1:-T – 1
indx = mod(j + i, T);
if indx == 0
indx = T;
end % if
h1(i, k) = HT(indx, k);
k = k + 1;
end % for j
end % for i
% Registri pentru codul convolutional
reg1 = zeros(1, Ms + 1);
reg2 = zeros(1, Ms);
% Coeficienti h2
h2 = [zeros(T) ones(T, 1)];
% Codor pentru codul convolutional
for i = 1:floor(length(u)/T)
for j = 1:T
% Primul registru de deplasare
reg1 = [u((T)*(i – 1) + j) reg1(1, 1:end – 1)];
% Feedback
v2((T)*(i – 1) + j) = mod(sum(reg1.*h1( j, :)) +
sum(reg2.*h2(j, :)), 2);
67
% Al doilea registru de deplasare
reg2 = [v2((T)*(i – 1) + j) reg2(1, 1:end – 1)];
end % for j
end % for i
u = u(1, 1:length(v2));
% Secventa codata (vector -coloana)
v = reshape([u; v2], 1, 2*length(u))';
% Lungimea lui v trebuie sa fie produs de 2*(Ms + 1)
unusedBits = length(v) – floor(length(v)/(2*(Ms +
1)))*(2*(Ms + 1));
v = v(1: end – unusedBits, 1);
end
Decodare
function vHat = decodareLdpccc(rx, baseHT, T, N0, iteratie)
% Decodare LDPC -CC
%
% rx : Vectorul simbolurilor receptionate
% baseHT : Baza pentru matricea de control al
paritatii H transpusa
% T : Perioada codului convolutional
% N0 : Varianta zgomotului
% iteratie : Numarul iteratiei
% vHat : Vector decodat (0/1)
% Memoria c odului convolutional
Ms = T + 1;
% Lungimea vectorului de la receptie
dataLen = length(rx);
% ––––- Initializare ––––-
% Probabilitatea de incarcare
L = (-4/N0).*reshape(rx, 2*(Ms + 1), dataLen/(2*(Ms +
1)));
% Punctul de plecare pentru H transpusa
offsetV = 0;
for k = 1:dataLen/(2*(Ms + 1)) – 1
% Crearea lui H transpusa
68
[maxH minH nextOffsetV] =
matrice_control_paritateHT(T, baseHT, offsetV);
offsetV = nextOffsetV;
[M N] = size(minH);
% H transpusa
HT(:, :, k) = [maxH; minH];
% Matricea probabilitatii de incarcare
Lqij(:, :, k) = minH.*repmat([L(:, k); L(1:end – 2, k
+ 1)], 1, N);
end
k = k + 1;
% Crearea lui H transpusa
[maxH minH nextOffsetV] = matrice_control_paritateHT(T,
baseHT, offsetV);
% H transpusa
HT(:, :, k) = [maxH; minH];
% Matricea probabilitatii de incarcare
Lqij(:, :, k) = minH.*repmat([L(:, k); zeros(2*(Ms + 1) –
2, 1)], 1, N);
% ––––- Decodare SumaMin ––––-
% Iteratie
for i = 1:iteratie
% Valoare initiala Lrji (probabilitatea de avea 0)
prevL = 1e10*maxH(:, :, 1);
for j = 1:dataLen/(2*(Ms + 1))
[currL newL(:, :, j) finalL(:, j)] = SumaMin(L(:,
j), prevL, Lqij(:, :, j), HT(:, :, j), Ms);
prevL = currL;
end % pentru j
% Actualizarea s tatisticilor
for k = 1:dataLen/(2*(Ms + 1)) – 1
% Statistici viitoare
nextL = [zeros(2*(Ms + 1) – 2, Ms + 1) newL(1:end –
2, 1:Ms, k + 1)];
69
% Statistici curente
Lqij(:, :, k) = [newL(:, :, k); nextL];
end % pentru k
k = k + 1;
% Statistici curente
Lqij(:, :, k) = [newL(:, :, k); zeros(2*(Ms + 1) – 2,
2*(Ms + 1) – 1)];
end % pentru i
% ––––- Decizie ––––-
for i = 1:dataLen/(2*(Ms + 1)) – 1
for j = 1:2*(Ms + 1)
% Decodare hard
if finalL(j, i) < 0
vHat(j, i) = 1;
else
vHat(j, i) = 0;
end
end % pentru j
end % pentru i
end
Algoritm de decodare LDPC bazat pe produsul sumelor minime
function [currL newLqij LQi] = SumaMin(Lci, prevL, Lqij, HT,
Ms)
% Algoritm de decodare LDPC bazat pe produsul sumelor
minime
%
% Lci : Vectorul receptionat al proabbilitatii de
incarcare (coloana)
% prevL : Matricea statisticilor anterioare
% Lqij : Matricea statisticilor
% HT : Matricea transpusa a lui LDPC -CC H
% Ms : Memoria codului convolutional
% currL : Matricea statisticil or curente
% newLqij : Matricea statisticilor actualizata
% LQi : Vector final al statisticilor (vector –
coloana)
70
% Dimensiunile lui H transpusa
[M N] = size(HT);
% Memorarea statisticilor curente pentru decodarea
unrmatoar ei perioade
currL = [Lqij(3:2*(Ms + 1), (Ms + 1) + 1:end) zeros(2*(Ms
+ 1) – 2, (Ms + 1))];
% Perioada de incarcare anterioara
Lqij = [prevL; Lqij];
% Actualizarea statisticilor
Lrji = zeros(M, N);
% Semnul si amplitudinea lui L(qij)
alphaij = sign(Lqij);
betaij = abs(Lqij);
% ––––- Pas vertical ––––-
for i = 1:N
% Gasirea elementelor nenule pe coloana
c1 = find(HT(:, i));
% Minimul lui betaij
for k = 1:length(c1)
% Minimul lui betaij \c1(k)
minOfbetaij = realmax;
for l = 1:length(c1)
if l ~= k
if betaij(c1(l), i) < minOfbetaij
minOfbetaij = betaij(c1( l), i);
end
end
end % pentru l
% Multiplicarea lui alphaij \c1(k)
% folosim '*' intrucat alphaij sunt -1/1
prodOfalphaij = prod(alphaij(c1, i))*alphaij(c1(k),
i);
% Actualizare L(rji)
Lrji(c1(k), i) = prodOfalphaij*minOfbetaij;
end % pentru k
end % pentru i
71
% ––––- Pas orizontal ––––-
% Procesarea statisticilor in cadrul perioadei Ms + 1
for j = (2*( Ms + 1) – 1):(4*(Ms + 1) – 2)
% Gasirea elementelor nenule pe linie
r1 = find(HT(j, :));
for k = 1:length(r1)
% Actualizarea L(qij) facand suma lui L(rij) \r1(k)
newLqij(j – (2*(Ms + 1) – 2), r1(k)) = Lci(j –
(2*(Ms + 1) – 2))…
+ sum(Lrji(j, r1)) – Lrji(j, r1(k));
end % pentru k
% Statistica finala pentru luarea deciziei
LQi(j – (2*(Ms + 1) – 2)) = Lci(j – (2*(Ms + 1) – 2))
+ sum(Lrji(j, r1));
end % pentru j
end
Crearea matricei de bază de control al parităț ii
function H = makeBaseLdpccc(N, numOfOne)
% Crearea matricei de baza de control al paritatii
%
% N : Dimensiunea matricei (N X N)
% numOfOne : Numar de 1 pe coloana sau pe linie
% H : Matricea de baza LDPC -CC
% Numar de 1 pe coloana sau pe linie
onePerCol = numOfOne;
onePerRow = numOfOne;
% Evenboth:Pentru fiecare coloana si linie, plaseaza 1
uniform si in mod aleator
% Distribuirea lui 1 uniform si aleator pe coloana
for i = 1:N
onesInCol(:, i) = randperm(N)';
end
% Crearea indexului elementelor nenule(1)
r = reshape(onesInCol(1:onePerCol, :), N*onePerCol, 1);
tmp = repmat([1:N], onePer Col, 1);
72
c = reshape(tmp, N*onePerCol, 1);
% Uniformizarea elementelor de 1 intre linii
% Ordonarea indexului liniei
[r, ix] = sort(r);
% Ordonarea indexului coloanei pe baza indexului liniei
for i = 1:N*onePerCol
cSort(i, 🙂 = c(ix(i));
end
% Crearea unu nou index pe linie, uniform
tmp = repmat([1:N], onePerRow, 1);
r = reshape(tmp, N*onePerCol, 1);
% Crearea matricei H
% Eliminarea duplicatelor elementelor 0 folosind SI logic
S = and(sparse(r, cSort, 1, N, N), ones(N, N));
H = full(S);
% Verificarea liniilor care nu au niciun 1 sau care au
unul singur
for i = 1:N
n = randperm(N);
% Adauga doi de 1 daca linia nu are nicun 1
if length(find(r == i)) == 0
H(i, n(1)) = 1;
H(i, n(2)) = 1;
% Adauga un 1 daca linia are un singur 1
elseif length(find(r == i)) == 1
H(i, n(1)) = 1;
end
end % pentru i
% Adauga biti de 0/1
H = [ones(N, 1) H zeros(N, 1)];
fprintf( 'Este creata matricea LDPC -CC.\n');
end
Funcție care realizează matricea de control al parității H transpusă
function [maxH minH nextOffsetV] =
matrice_control_paritateHT(T, baseMatrix, offsetV)
73
% Functie care realizeaza matricea de control al
paritatii H transpusa
% pe o perioada
%
% T : Perioada codului convolutional
% baseMatrix : Structura de baza pentru HT
% offsetV : Punctul in care incepe H trans pusa
% maxH : Limita superioara pentru H transpusa
% minH : Limita inferioara pentru H transpusa
% nextOffsetV :punctul de pornire a lui H transpusa
pentru urmatoarea
% perioada
% Memoria codului convolutional
Ms = T + 1;
% Crearea bazei pentru H transpusa
[baseMatrix ones(T, 1) zeros(T) ones(T, 1)];
baseHT = reshape([baseMatrix'; ones(1, T); zeros(T);
ones(1, T)], T + 2, 2*T)';
% Limita superioara pentru HT si limita inferioara pentru
HT
maxH = zeros(2*(Ms + 1) – 2, 3*(Ms + 1) – 2);
minH = zeros(2*(Ms + 1), 3*(Ms + 1) – 2);
subminH = zeros(2*(Ms + 1) – 2, 4*(Ms + 1) – 2);
% Limita inferioara a lui H
offsetH = 0;
for i = 1:2:(2*(Ms + 1))
for j = 1:Ms + 1
minH(i, j + Ms + offsetH) = baseHT(mod(i + offsetV,
2*T), j);
minH(i + 1, j + Ms + offsetH) = baseHT(2, j);
end
offsetH = offsetH + 1;
end
for i = 1:2:(2*(Ms + 1) – 2)
offset = mod(2*(Ms + 1), 2*T);
for j = 1:Ms + 1
subminH(i, j + Ms + offsetH) = baseHT(mod(i +
offset + offsetV, 2*T), j);
subminH(i + 1, j + Ms + offsetH) = baseHT(2, j);
end
offsetH = offsetH + 1;
74
end
% Limita superioara pentru H
offsetH = 0;
for i = (2*(Ms + 1) – 2) – 1:-2:1
for j = 1:Ms + 1
maxH(i, j + T + offsetH) = baseHT(mod(i + offsetV –
2, 2*T), j);
maxH(i + 1, j + T + offsetH) = baseHT(2, j);
end
offsetH = offsetH – 1;
end
% Ajustarea dimensiunii finale
maxH = maxH(:, (Ms + 1):end);
minH = [minH; subminH(:, 1:end – (Ms + 1))];
minH = minH(:, (Ms + 1):end);
% Offset vertical pentru urmatoarea perioada
nextOffsetV = mod(offsetV + 2*(Ms + 1), 2*T);
end
3. Program ce implementează un sistem de comunicații wireless MIMO 2×2, modulație QPSK ,
8QAM, 16QAM, 32QAM, 64QAM și codare de canal convoluțională cu rata 1/2, 2/3, 3/4 și
numărul de biți transmiși variabil (codarea si decodarea se realizează utilizând funcțiile
codare_conv și decodare_viterbi).
clear all
close all
clc
% Numar de biti transmisi
N = 2700;
% Generarea secventei binare aleatoare (0/1)
data = randi([0, 1], 1, N);
%––––- Codare convolutionala ––––- %
% Secventa codata
c = codare_conv(data, '3/4');
% ––––- Modulatia si canalul ––––- %
% Modulatie QPSK
Nbps = 6; % 2 QPSK, 3 8QAM , 4 16QAM, 5 32QAM, 6 64QAM
data_mod = modulare_k(c, Nbps);
75
% Lungimea pachetului
L = length(data_mod);
% Zgomotul
zg = (1/sqrt(2))*(randn(2, L)+sqrt( -1)*randn(2, L));
% Coeficientii de pe canal
h = (1/sqrt(2))*(randn(2, L)+sqrt( -1)*randn(2, L));
% Raportul semnal -zgomot
RSZ = -2:2:10;% RSZ in dB
count = 1;
Tx = data_mod;
while count <= 10
for ii = 1:length(RSZ)
Rec = zeros(size(Tx));
for i = 1:2:length(Tx)
Data = [Tx(i) Tx(i+1)];
H = [h(:, i) h(:, i+1)];
n = [zg(:, i) zg(:, i+1)];
Semnal_receptionat = MIMO_2X2(Data, H, n,
RSZ(ii));
Rec(i) = Semnal_receptionat(1);
Rec(i+1) = Semnal_receptionat(2);
end
y_receptie = Rec;
data_dem = demodulare_k(y_receptie,Nbps);
data_fin = decodare_viterbi(data_dem, '3/4');
ne_lin = 0;
[ex, ey] = find(data_fin ~= data);
ne_lin = ne_lin + length(ex);
ber(ii) = ne_lin/N;
end
ber_fin(count, 🙂 = ber;
count = count+1;
end
76
BER = sum(ber_fin)/(count -1);
save codareconv(unupedoi)_QPSK
save codareconv(unupedoi)_8QAM
save codareconv(unupedoi)_16QAM
save codareconv(unupedoi)_32QAM
save codareconv(unupedoi)_64QAM
save codareconv(doipetrei)_QPSK
save codareconv(doipetrei)_8QAM
save codareconv(doipetrei)_16QAM
save codareconv(doipetrei)_32QAM
save codareconv(doipetrei)_64QAM
save codareconv(treipepatru)_QPSK
save codareconv(treipepatru)_8QAM
save codareconv(treipepatru)_16QAM
save codareconv(treipepatru)_32QAM
save codareconv(treipepatru)_64QAM
Realizarea figurii
clc
clear all
close all
load codareconv(unupedoi)_QPSK
semilogy(RSZ, BER, 'r'); grid on; hold on
load codareconv(unupedoi)_8QAM
semilogy(RSZ, BER, 'g'); grid on; hold on
load codareconv(unupedoi)_16QAM
semilogy(RSZ, BER, 'b'); grid on; hold on
load codareconv(unupedoi)_32QAM
semilogy(RSZ, BER, 'm'); grid on; hold on
load codareconv(unupedoi)_64QAM
semilogy(RSZ, BER, 'k'); grid on; hold on
%
load codareconv(doipetrei)_QPSK
semilogy(RSZ, BER, 'c'); grid on; hold on
load codareconv(doipetrei)_8QAM
semilogy(RSZ, BER, 'r–'); grid on; hold on
load codareconv(doipetrei)_16QAM
semilogy(RSZ, BER, 'g–'); grid on; hold on
load codareconv(doipetrei)_32QAM
77
semilogy(RSZ, BER, 'b–'); grid on; hold on
load codareconv(doipetrei)_64QAM
semilogy(RSZ, BER, 'm–'); grid on; hold on
%
load codareconv(treipepatru)_QPSK
semilogy(RSZ, BER, 'k–'); grid on; hold on
load codareconv(treipepatru)_8QAM
semilogy(RSZ, BER, 'c–'); grid on; hold on
load codareconv(treipepatru)_16QAM
semilogy(RSZ, BER, 'r:'); grid on; hold on
load codareconv(treipepatru)_32QAM
semilogy(RSZ, BER, 'g:'); grid on; hold on
load codareconv(treipepa tru)_64QAM
semilogy(RSZ, BER, 'm:'); grid on; hold on
title('Sistem MIMO 2×2, 1 utilizator, Codare Convolutionala' )
legend ( 'QPSK(1/2)' , '8QAM(1/2)' , '16QAM(1/2)' , '32QAM(1/2)' ,
'64QAM(1/2)' ,'QPSK(2/3)' , '8QAM(2/3)' , '16QAM(2/3)' ,
'32QAM(2/3)' , '64QAM(2/3)' , 'QPSK(3/4)' , '8QAM(3/4)' ,
'16QAM(3/4)' , '32QAM(3/4)' , '64QAM(3/4)' )
xlabel('RSZ')
ylabel('BER')
Funcție ce realizează codarea convoluțională
function codedBits = codare_conv(msg , rata)
% CODARE_CONV: aceasta functie realizeaza codarea
convolutionala cu ratele 1/2, 2/3 si 3/4
% IESIRI
% codedBits = vector ce contine bitii codati
% INTRARI
% msg = sirul de biti necodati
%––––––––––––––––-
% rata 1/2
% Generare trellis:
% ConsLength=7
% g'(x)=x^6+x^2+x^1+x+1 G1=1111001(2)=171(8)
% g"(x)=x^6+x^5+x^3+x^2+1 G2=1011011(2)=133(8)
% 2/3 – vector de puncturare : 1 1 0 1 [X1 Y1 Y2] –
conform standardului [2]
% 3/4 – vector de puncturare : 1 1 0 1 1 0 [X1 Y1 Y2 X3]
– conform standardului [2]
%––––––––––––––––-
78
data = msg;
ConsLength = 7;
G1 = 171;
G2 = 133;
trel = poly2trellis(ConsLength, [G1 G2]);
if strcmp(rata, '1/2') == 1
codedBits = convenc(data, trel);
elseif strcmp(rata, '2/3') == 1
codedBits = convenc(data, trel, [1 1 0 1]);
elseif strcmp(rata, '3/4') == 1
codedBits = convenc(data, trel, [1 1 0 1 1 0]);
end
Funcție ce realizează decodarea Viterbi
function decodedBits = decodare_viterbi( msg, rata )
% DECODARE_VITERBI: decodare coduri convolutionale cu
ratele 1/2, 2/3 si 3/4
% IESIRI
% decodedBits = vector ce contine bitii decodati
% INTARI
% msg = sirul de biti codati
%––––––––––––––––-
% rata 1/2
% Generare trellis:
% ConsLength=7
% g'(x)=x^6+x^2+x^1+x+1 G1=1111001(2)=171(8)
% g"(x)=x^6+x^5+x^3+x^2+1 G2=1011011(2)=133(8)
% 2/3 – vector de puncturare : 1 1 0 1 [X1 Y1 Y2] –
conform standardului [2]
% 3/4 – vector de puncturare : 1 1 0 1 1 0 [X1 Y1 Y2 X3]
– conform standardului [2]
%––––––––––––––––-
codedBits = msg;
ConsLength = 7;
G1 = 171;
G2 = 133;
trel = poly2trellis(ConsLength, [G1 G2]);
if strcmp(rata, '1/2') == 1
decodedBits = vitdec(codedBits, trel, 10, 'trunc',
'hard');
elseif strcmp(rata, '2/3') == 1
decodedBits = vitdec(codedBits, trel, 35, 'trunc',
'hard', [1 1 0 1]);
elseif strcmp(rata, '3/4') == 1
79
decodedBits = vitdec(codedBits, trel, 35, 'trunc',
'hard', [1 1 0 1 1 0]);
end
II. Programe în Matlab utilizate pentru simul ări (SISO)
1. Program ce implementează un sistem de comunic ații SISO , fără tehnici de codare și cu modulație
QPSK, 8QAM, 16QAM, 32QAM, 64QAM.
clear all
close all
clc
% Numar de biti transmisi
N = 3000;
% Generarea secventei binare aleatoare (0/1)
ip = randi([0, 1], 1, N );
% ––––- Modulatia si canalul ––––-
% Modulatie QPSK
Nbps = 6; % 2 QPSK, 3 8QAM , 4 16QAM, 5 32QAM,6 64QAM
ip_mod = modulare_k(ip, Nbps);
% Lungimea pachetului
L = length(ip_mod);
Eb_N0_dB = [ -4:2:20]; % valori multiple Eb/N0 in dB
count = 1;
while count <= 10
for ii = 1:length(Eb_N0_dB)
n = 1/sqrt(2)*[randn(1, L) + 1i*randn(1, L)]; % Zgomot
gaussian alb, varianta 0 dB
h = 1/sqrt(2)*[randn(1, L) + 1i*randn(1, L)]; %
Canalul Rayleigh
% Canal ?i zgomot, Adaugarea zgomotului
y = h.*ip_mod + 10^( -Eb_N0_dB(ii)/20)*n;
% egalizare
yHat = y./h;
ip_dem = demodulare_k(yHat, Nbps);
% numararea erorilor
nErr(ii) = size(find([ip – ip_dem]), 2);
80
end
ber_fin(count, 🙂 = nErr/N;
count = count+1;
end
BER = sum(ber_fin)/(count -1);
%save SISO_faracodare_QPSK
%save SISO_faracodare_8QAM
%save SISO_faracodare_16QAM
%save SISO_faracodare_32QAM
save SISO_faracodare_64QA M
Realizarea figurii
clc
clear all
close all
load SISO_faracodare_QPSK
semilogy(Eb_N0_dB, BER); grid on; hold on
load SISO_faracodare_8QAM
semilogy(Eb_N0_dB, BER, 'r'); grid on; hold on
load SISO_faracodare_16QAM
semilogy(Eb_N0_dB, BER, 'g'); grid on; hold on
load SISO_faracodare_32QAM
semilogy(Eb_N0_dB, BER, 'b'); grid on; hold on
load SISO_faracodare_64QAM
semilogy(Eb_N0_dB, BER, 'm'); grid on; hold on
title('Sistem SISO, 1 utilizator, fara codare, in canalul
Rayleigh' )
legend ( 'QPSK', '8QAM', '16QAM', '32QAM', '64QAM')
xlabel('Eb/No, dB' )
ylabel('BER')
2. Program ce implementează un sistem de comunicații SISO, modulație QPSK, 8QAM, 16QAM,
32QAM, 64QAM și codare LDPC (modularea si demodularea se realizează utilizând funcțiile
modulare_k și demodulare_k).
clear all
close all
clc
% Numar de biti transmisi
81
N = 2000;
% Perioada codului convolutional
T = 256;
% Numar de iteratii
iteratii = 5;
% ––––- Initializare ––––-
% Memoria codului convolutional
Ms = T + 1;
% Generarea secventei binare aleatoare (0/1)
ip = randi([0, 1], 1, N );
% Crearea matricei de baza H transpusa
baseHT = makeBaseLdpccc(T, 2);
% ––––– Codare –––––
% Secventa codata
v = codareLdpccc(ip, T, baseHT).';
% ––––- Modulatia si canalul ––––-
% Modulatie QPSK
Nbps = 6; % 2 QPSK, 3 8QAM , 4 16QAM, 5 32QAM,6 64QAM
ip_mod = modulare_k(v, Nbps);
% Lungimea pachetului
L = length(ip_mod);
Eb_N0_dB = [ -4:2:20]; % valori multiple Eb/N0 in dB
count = 1;
while count <= 10
for ii = 1:length(Eb_N0_dB)
n = 1/sqrt(2)*[randn(1, L) + 1i*randn(1, L)]; %
Zgomot gaussian alb, varianta 0 dB
h = 1/sqrt(2)*[randn(1, L) + 1i*randn(1, L)]; %
Canalul Rayleigh
% Canal ?i zgomot, Adaugarea zgomotului
y = h.*ip_mod + 10^( -Eb_N0_dB(ii)/20)*n;
% egalizare
yHat = y./h;
82
ip_dem = demodulare_k(yHat, Nbps);
% ––––- Decodare ––––-
vHat = decodareLdpccc(ip_dem, baseHT, T, (10^( –
Eb_N0_dB(ii)/10)/sqrt(2)), iteratii);
uHat = [];
for i = 2:length(v)/(2*(Ms + 1)) – 1
% Se obtin bitii estimati
tmp = reshape(vHat(:, i), 2 , length(vHat(:,
i))/2);
uHat = [uHat tmp(1, :)];
end
ip_fin = uHat;
% numararea erorilor
nErr(ii) = size(find([ip – ip_fin(1,1:N)]),2);
end
ber_fin(count, 🙂 = nErr/N;
count = count+1;
end
BER = sum(ber_fin)/(count -1);
%save SISO_codareLDPC_QPSK
%save SISO_codareLDPC_8QAM
%save SISO_codareLDPC_16QAM
%save SISO_codareLDPC_32QAM
save SISO_codareLDPC_64QAM
Realizarea figurii
clc
clear all
close all
load SISO_codareLDPC_QPSK
semilogy(Eb_N0_dB, BER); grid on; hold on
load SISO_codareLDPC_8QAM
semilogy(Eb_N0_dB, BER, 'r'); grid on; hold on
load SISO_codareLDPC_16QAM
83
semilogy(Eb_N0_dB, BER, 'g'); grid on; hold on
load SISO_codar eLDPC_32QAM
semilogy(Eb_N0_dB, BER, 'b'); grid on; hold on
load SISO_codareLDPC_64QAM
semilogy(Eb_N0_dB, BER, 'm'); grid on; hold on
title('Sistem SISO, 1 utilizator, LDPC, in canalul Rayleigh' )
legend ( 'QPSK', '8QAM', '16QAM', '32QAM', '64QAM')
xlabel('Eb/No, dB' )
ylabel('BER')
3. Program ce implementează un sistem de comunicații SISO, modulație QPSK, 8QAM, 16QAM,
32QAM, 64QAM și codare de canal convoluțională cu rata 1/2, 2/3, 3/4 și numărul de biți transmiși
variabil (codarea si decodarea se realizea ză utilizând funcțiile codare_conv și decodare_viterbi).
clear all
close all
clc
% Numar de biti transmisi
N = 2700;
% Generarea secventei binare aleatoare (0/1)
ip = randi([0, 1], 1, N );
%––––- Codare convolutionala ––––- %
% Secventa codata
c = codare_conv(ip, '3/4');
% ––––- Modulatia si canalul ––––-
% Modulatie QPSK
Nbps = 6; % 2 QPSK, 3 8QAM , 4 16QAM, 5 32QAM,6 64QAM
ip_mod = modulare_k(c, Nbps);
% Lungimea pachetului
L = length(ip_mod);
Eb_N0_dB = [ -4:2:20]; % valori multiple Eb/N0 in dB
count = 1;
while count <= 10
for ii = 1:length(Eb_N0_dB)
n = 1/sqrt(2)*[randn(1, L) + 1i*randn(1, L)]; %
Zgomot gaussian alb, varianta 0 dB
84
h = 1/sqrt(2)*[randn(1, L) + 1i*randn(1, L)]; %
Canalul Rayleigh
% Canal ?i zgomot, Adaugarea zgomotului
y = h.*ip_mod + 10^( -Eb_N0_dB(ii)/20)*n;
% egalizare
yHat = y./h;
ip_dem = demodulare_k(yHat, Nbps);
ip_fin = decodare_viterbi(ip_dem, '3/4');
% numararea erorilor
nErr(ii) = size(find([ip -ip_fin(1, 1:N)]),2);
end
ber_fin(count, 🙂 = nErr/N;
count = count+1;
end
BER = sum(ber_fin)/(count -1);
%save SISO_codareconv(unupedoi)_QPSK
%save SISO_codareconv(unupedoi)_8QAM
%save SISO_codareconv(unupedoi)_16QAM
%save SISO_codareconv(unupedoi)_32QAM
%save SISO_codareconv(unupedoi)_64QAM
%save SISO_codareconv(doipetrei)_QPSK
%save SISO_codareconv(doipetrei)_8QAM
%save SISO_codareconv(doipetrei)_16QAM
%save SISO_codareconv(doipetrei)_32QAM
%save SISO_codareconv(doipetrei)_64QAM
%save SISO_codareconv(treipepatru)_QPSK
%save SISO_codareconv(treipep atru)_8QAM
%save SISO_codareconv(treipepatru)_16QAM
%save SISO_codareconv(treipepatru)_32QAM
save SISO_codareconv(treipepatru)_64QAM
Realizarea figurii
clc
clear all
close all
load SISO_codareconv(treipepatru)_QPSK
semilogy(Eb_N0_dB, BER); grid on; hold on
load SISO_codareconv(treipepatru)_8QAM
85
semilogy(Eb_N0_dB, BER, 'r'); grid on; hold on
load SISO_codareconv(treipepatru)_16QAM
semilogy(Eb_N0_dB, BER, 'g'); grid on; hold on
load SISO_codareconv(treipepatru)_32QAM
semilogy(Eb_N0_dB, BER, 'b'); grid on; hold on
load SISO_codareconv(treipepatru)_64QAM
semilogy(Eb_N0_dB, BER, 'm'); grid on; hold on
title('Sistem SISO, 1 utilizator, Codare Convolutionala, Rata
3/4, in canalul Rayleigh' )
legend ( 'QPSK', '8QAM', '16QAM', '32QAM', '64QAM')
xlabel('Eb/No, dB' )
ylabel('BER')
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Tehnici de codare folosite în sistemele MIMO [625702] (ID: 625702)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
