Transmisiuni de Date Maq 2d Codata Trellis
Cuprins
Introducere / 4
Capitolul 1. Modulația de amplitudine în cuadratură / 5
Definiții și teorii / 5
Densitatea spectrală de putere / 12
Probabilitatea de eroare de bit / 13
Emisie și receptie MAQ / 15
Capitolul 2. Modulația codată Trellis / 18
Scurt istoric / 18
Noțiuni fundamentale / 20
Exemplu de transmisie codată în banda de bază / 23
Algoritmul lui Viterbi / 26
Realizarea modulației codate – metoda generală / 30
Capitolul 3. Modulația de amplitudine în cuadratură codată / 32
Modulația 8/16MAQ cu patru stări / 34
Modulația 8/16MAQ cu opt stări / 38
Avizul ITU-T V.32 / 41
Capitolul 4. Simulare MATLAB-Simulink a unei transmisii de date prin MAQ codată trellis/ 43
Concluzii / 51
Lista acronimelor / 52
Bibliografie / 53
Anexe / 54
Introducere
Modulația trellis (cunoscută și ca modulația codată trellis) este o schema de modulație care permite transmiterea eficientă a informației peste canale cu bandă limitată, cum ar fi liniile de telefon. Modulația trellis a fost inventată de Gottfried Ungerboeck.
Contribuția unică a lui Ungerboeck a fost aplicarea verificării parității pentru simboluri în loc de vechea tehnică ce presupunea aplicarea acestei verificări pentru șirul de biți și apoi modulatea biților.
În ceea ce privește lucrarea mea de licență, voi folosi o modulație de amplitudine în cuadratură codată trellis. Modulația de amplitudine în cuadratură este o schemă de modulație care exprimă datele prin schimbarea (modularea) amplitudinii a două unde purtătoare. Acest tip de modulație codată este folosit și de modemurile care respectă recomandările standardului ITU-T V.32.
Voi încerca să observ care sunt avantajele codării trellis. Pentru aceasta voi folosi simulatorul Matlab-Simulink (dezvoltat de compania The Mathwork, este un program folosit pentru modelarea, simularea și analizarea sistemelor dinamice). Voi realiza un program de simulare al unei transmisiuni de date MAQ-2D codată trellis pe un canal cu zgomot alb Gaussian și voi încerca să observ ratele erorii.
În ceea ce privește modemurile cu modulație trellis, odată ce acestea au fost introduse, ratele de transmisie au crescut până la punctul în care transferul interactiv de date multimedia peste linia telefonică a devenit posibil.
Astfel, se poate spune că invenția lui Ungerboeck a jucat un rol cheie în era informațională.
Capitolul 1
Modulația de amplitudine în cuadratură
. Definiții și teorii
În telecomunicații, modulația este procesul în care se variază periodic o formă de undă, cu scopul de a folosi acest semnal pentru a transmite un mesaj. În general, ca semnal purtător este folosită o sinusoidă de înalte frecvențe. Cei trei parametri cheie ai unei sinusoide sunt: amplitudinea, faza și frecvența. Toți parametrii pot fi modificați în concordață cu un semnal informațional de joasă frecvență, pentru a se obține semnalul modulat. Unda originală, nemodulată, poate fi de orice tip: sunet, radiație electromagnetică, incluzând undele optice.
Dispozitivul care realizează modulația se numește modulator, iar cel care realizează operația inversă se numește demodulator. Un dispozitiv care poate realiza ambele operații se numește modem (prescurtare “Modulator-Demodulator”).
Există trei tipuri de modulație de bază: modulația de amplitudine (MA), la care se variază voltajul; modulația de frecvență (MF), la care se variază frecvența și modulația de fază (MΦ), la care se variază unghiul undei. La modulația de amplitudine în cuadratură (MAQ) atât amplitudinea cât și faza purtătoarei sunt variate.
Modulația de amplitudine în cuadratură este o schemă de modulație care exprimă datele prin schimbarea (modularea) amplitudinii a două unde purtătoare. Aceste două unde, de obicei sinusoide, sunt defazate cu 90° și sunt numite purtători în cuadratură, de unde și numele acestei scheme. Ca toate schemele de modulație, MAQ exprimă datele prin schimbarea unui aspect al semnalului purtător, sau al undei purtătoare, ca răspuns la un semnal de date.
MAQ Analog
Când se transmit 2 semnale prin modularea lor cu MAQ, semnalul transmis va avea forma:
s(t) = I(t) cos(2пfot) + Q(t) sin(2пfot),
unde I(t) și Q(t) sunt semnalele modulatoare și fo este frecvența purtătoare.
La recepție, aceste două semnale modulatoare, pot fi demodulate utilizând un demodulator coerent. Un astfel de receptor înmulțește semnalul recepționat separat cu semnalele de sinus și cosinus pentru a produce estimările recepționate ale lui I(t), respectiv Q(t). Datorită proprietății de ortogonalitate a semnalelor purtătoare este posibilă detectarea semnalelor modulatoare independent.
În cazul ideal în care I(t) este demodulat prin înmulțirea semnalului transmis cu un semnal cosinus:
ri(t) = s(t) cos(2пfot)
= I(t) cos(2пfot) cos(2пfot) + Q(t) sin(2пfot) cos(2пfot)
Folosind egalități trigonometrice standard acest lucru se poate scrie ca:
ri(t) = I(t)[1 + cos(4пfot)] + Q(t) sin(4пfot)
= I(t) + [I(t) cos(4пfot) + Q(t) sin(4пfot)]
Prin filtrarea trece-jos a semnalului ri(t) se elimină termenii de înaltă frecvența (ce conțin 4пfot), rămânând doar termenul I(t). Acest semnal filtrat este neafectat de Q(t), ceea ce demonstrează următorul fapt: componenta în fază poate fi recepționată independent de compenenta în cuadratură. Similar putem înmulți s(t) și apoi să o filtrăm trece-jos pentru a obține Q(t).
Faza semnalului recepționat se presupune a fi știută cu acuratețe la recepție. Dacă faza demodulatoare diferă de cea de la modulație pot apărea interferențe între semnalele modulate. Această problemă a sincronizării purtătoarei la recepție trebuie tratată în sistemele MAQ. Demodulatorul coerent trebuie să fie în fază exactă cu semnalul recepționat, pentru că altfel semnalele modulate nu pot fi recepționate independent.
MAQ Digital. M-MAQ (Modulația de amplitudine în cuadratură multi-nivel)
MAQ este considerată o extensie logică a modulației digitale de fază pe purtatoare ortogonale (Quadrature Phase Shift Keying), unde informația este conținută de faza purtătoare, folsindu-se 4 valori cu un defazaj egal de п/2 între ele. La fel ca și modulația digitală de fază pe purtatoare ortogonale, MAQ folosește 2 șiruri de date ortogonale. Modulația digitală de fază pe purtătoare ortogonale folosește numai modulația de fază cu semnalizare bipolară, permițând transmiterea a doi biți pe simbol, pe când M-MAQ combină modulația de fază cu modulația de amplitudine, permițând transmiterea a M simboluri independente pe o perioadă de simbol, fiecare simbol reprezentând log2(M) biți. Durata unui simbol (Ts) se află în urmatoarea relație cu durata unui bit:
Ts = Tb log2M . (1.1)
Forma generală a unei M-MAQ este definită de semnalul transmis:
Si(t)= ai cos(2 пfot) + bi sin(2пfot) (1.2)
Dacă alegem ai și bi egale cu , se observă că 4-MAQ este echivalentă cu modulația digitală de fază pe purtătoare ortogonale (QPSK). 4-MAQ transmite același număr de biți ca în șirul de date original, dar necesită numai jumătate din lățimea de bandă.
Ts = 2 Tb (1.3)
rs = rb (1.4)
MAQ rectangulară
Modulațiile MAQ rectangulare sunt, în general, sub-optime în sensul că acestea nu produc o spațiere maximă a punctelor constelației pentru o energie dată. Totuși, ele au avantajul considerabil că pot fi transmise ușor ca două semnale cu modulație a impulsului în amplitudine (PAM) pe purtătoare în cuadratură, și pot fi ușor demodulate. Pentru constelațiile care nu sunt pătratice se obțin rate ale biților eronați (BER) mai bune, dar sunt mai greu de modulat și demodulat.
Prima constelație a unei modulații MAQ rectangulare ce se întâlnește de obicei este cea pentru 16-MAQ (Figura 1.1). Este folosită o codare Gray. Motivul pentru care 16-MAQ este de obicei prima este că printr-o simplă studiere se arată că acestea sunt de fapt o modulație în fază a semnalului binar (BPSK), respectiv o modulație digitală de fază pe purtătoare ortogonale (QPSK).
MAQ nerectangulară
Este ceva natural pentru MAQ ca pentru mai toate ordinele constelațiilor de semnal să existe mai multe moduri de a le construi. Pentru constelația circulară 8-MAQ este cunoscut faptul că este constelația 8-MAQ optimă în sensul că necesită cea mai mică putere medie pentru o distanță euclidiană minimă dată. Constelația 16-MAQ este sub-optimă deși cea optimă poate fi construită pe aceleași linii de la constelația 8-MAQ. Constelația circulară scoate în evidentă relația dintre MAQ și PSK (Phase Shift Key). Alte tipuri de constelații pot fi construite pe linii similare (sau chiar foarte diferite). Este greu de stabilit o rată a erorii pentru o MAQ nerectangulară deoarece aceasta depinde de constelație. Totuși, o limită superioară a ratei este dependentă de distanța euclidiană minimă a constelației (cea mai scurtă linie dreaptă dintre două puncte).
Deși, în general, există o constelație nerectangulară care să fie optimă pentru un M oarecare, acestea nu sunt prea des folosite deoarece MAQ rectangulare sunt mult mai usor de modulat și demodulat.
16-MAQ
MAQ cu 16 puncte în constelație este cea mai simplă MAQ pentru modulația de amplitudine în cuadratură codată (MAQ cu 4 puncte poate fi tratată și ca o modulație de fază). Pentru MAQ, în general, trebuie ca numărul de puncte să fie o putere a lui 2 pentru a putea să corespundă unui grup de biți alocați fiecărui punct. Mai mult decât atât, numărul de puncte trebuie să fie un pătrat perfect, pentru ca proiecțiile lor pe axele în faza și în cuadratură să fie în număr egal.
Figura următoare reprezintă o diagramă a constelațiilor pentru un semnal 16-MAQ.
Figura 1.1
Diagrama constelațiilor 16-MAQ
Prin alegerea ai și bi egale cu sau (pentru a se asigura spațierea egală în diagrama constelațiilor), semnalele transmise vor fi:
S1(t)= cos(2 пfct) + sin(2пfct) (1.5)
S2(t)= cos(2 пfct) + 3sin(2пfct) (1.6)
S3(t)= 3cos(2 пfct) + 3sin(2пfct) (1.7)
S4(t)= 3cos(2 пfct) + sin(2пfct) (1.8)
S5(t)= cos(2 пfct) – sin(2пfct) (1.9)
S6(t)= cos(2 пfct) – 3sin(2пfct) (1.10)
S7(t)= 3cos(2 пfct) – 3sin(2пfct) (1.11)
S8(t)= 3cos(2 пfct) – sin(2пfct) (1.12)
S9(t)= -cos(2 пfct) – sin(2пfct) (1.13)
S10(t)= -cos(2 пfct) – 3sin(2пfct) (1.14)
S11(t)= -3cos(2 пfct) – 3sin(2пfct) (1.15)
S12(t)= -3cos(2 пfct) – sin(2пfct) (1.16)
S13(t)= -cos(2 пfct) + sin(2пfct) (1.17)
S14(t)= -cos(2 пfct) + 3sin(2пfct) (1.18)
S15(t)= -3cos(2 пfct) + 3sin(2пfct) (1.19)
S16(t)= -3cos(2 пfct) + sin(2пfct) (1.20)
Folosind ecuația (5.1) se poate observa că este necesar numai din lărgimea de bandă normală.
Ts = 4 Tb (1.3)
rs = rb (1.4)
64-MAQ
Continuând să folosim aceeași metodă ca și la 4-MAQ și 16-MAQ, diagrama constelațiilor pentru 64-MAQ este reprezentată în Figura 1.2.
Figura 1.2
Diagrama constelațiilor 64-MAQ
Alegând ai și bi egale cu , , , este simplu să construim semnalul transmis pentu 64-MAQ. Din ecuația (1.1) debitul binar pentru 64-MAQ este:
rs = rb (1.23)
Deși numărul de biți pe simbol crește(de obicei cu o putere pară a lui 2), incă se transmit doar două simboluri pe perioadă.
1.2 Densitatea spectrală de putere
Figura 1.3 (programul Matlab ce realizează acest lucru se află atașat în Anexa 2) ne arată reprezentarea grafică a densității spectrale de putere pentru 64-MAQ, 16-MAQ, 4-MAQ, și un semnal bipolar, toate pe același grafic. Densitatea spectrală de putere este normată cu Eb, energia bitului cu cea mai mică amplitudine. De notat este faptul că densitatea spectrală de putere pentru 4-MAQ este aceeași cu cea pentru modulația digitală de fază pe purtătoare ortogonale (QPSK). Spectrul de putere pentru un semnal M-MAQ poate fi aflat folosind ecuația:
S(f) = 2 Eb (log 2M) sinc2(Tb f log (1.23)
Deși numărul de biți pe simbol crește(de obicei cu o putere pară a lui 2), incă se transmit doar două simboluri pe perioadă.
1.2 Densitatea spectrală de putere
Figura 1.3 (programul Matlab ce realizează acest lucru se află atașat în Anexa 2) ne arată reprezentarea grafică a densității spectrale de putere pentru 64-MAQ, 16-MAQ, 4-MAQ, și un semnal bipolar, toate pe același grafic. Densitatea spectrală de putere este normată cu Eb, energia bitului cu cea mai mică amplitudine. De notat este faptul că densitatea spectrală de putere pentru 4-MAQ este aceeași cu cea pentru modulația digitală de fază pe purtătoare ortogonale (QPSK). Spectrul de putere pentru un semnal M-MAQ poate fi aflat folosind ecuația:
S(f) = 2 Eb (log 2M) sinc2(Tb f log 2M).
Densitatea spectrală de putere pentru semnalul bipolar NRZ (fară întoarcere la zero) se poate afla cu ecuația:
S(f) = Eb sinc2(Tb f ). (1.24)
Figura 1.3
Densitatea spectrală de putere pentru M-MAQ
Se poate observa că cea mai eficientă schemă de modulație din cele prezentate, din punct de vedere al lățimii de bandă, este 64-MAQ.
1.3 Probabilitatea de eroare de bit
De la o vreme, semnalele MAQ sunt foarte eficiente în reducerea lățimii de bandă. Un dezavantaj evident este degradarea performațelor erorii, și astfel nevoia pentru un raport semnal-zgomot mai mare. Voi explora efectele MAQ cu referire la probabilitatea erorii.
Ecuația pentru probabilitatea erorii pentru un simbol la un semnal M-MAQ este dată de:
Pe 2 erfc, (1.25)
unde erfc este funcția complementară de eroare. Pe baza acestei ecuații, se poate observa că degradarea performațelor erorii va apărea la creșterea lui M, sau la scăderea raportului semnal-zgomot (RSZ) . Relația între probabilitatea erorii pentru un simbol și rata biților eronați (BER) este:
BER Pe,,
iar relația dintre Eb și Es este:
Es=log2 M Eb.
Deși ecuația pentru performanțele erorii este dată, voi folosi un simulator emisie/recepție realizat în acest scop care calculează proporția biților eronați (Matlab, BerTool). Bazele transimisiei și recepției MAQ vor fi explicate în următorul subcapitol. De notat este faptul că se folosește codarea Gray pentru a minimiza erorile de bit. Proporția biților eronați pentru 4-MAQ și 16-MAQ este arătată în figura 1.4, în funcție de energia bitului Eb și de energia zgomotului alb, aditiv, gaussian N0.
Figura 1.4
BER pentru 4-MAQ, 16-MAQ
Se poate observa că 4-MAQ are o mai bună toleranță la zgomot decât 16-MAQ. Aceasta demonstrează avantajul dezvoltării tehnologiei în a furniza o calitate mai bună a semnalului, ceea ce ar permite inginerilor trimiterea mai multor date folosind aceeași lățime de bandă.
1.4 Emisie și recepție MAQ
Schema de emisie tipică pentru MAQ este reprezentată în Figura 1.5, unde L== numărul de nivele ale semnalului pe simbol. Convertorul Serial-Paralel împarte datele în biți pari și impari, ale căror debite binare sunt . Convertoarele următoare colectează apoi biți seriali și îi convertesc în semnale bipolare de L nivele. Ortogonalitatea permite însumarea componenetei în cuadratură cu cea în fază.
Figura 1.5
Emisia la MAQ
Receptorul din Figura 1.6 separă componentele în fază și în cuadratură prin înmulțirea cu funcțiile lor de bază ortonormată și filtrarea componentei de înalta frecvență rezultate. Semnalul în banda de bază este apoi trimis către un detector de prag pentru a determina datele binare potrivite. În ultima fază, convertorul paralel-serial combina biții pari și impari înapoi ca în secventa lor originală.
Figura 1.6
Receptia la MAQ
Semnalele MAQ pot fi folosite pentru a crește numărul de biți trimiși pe simbol fară a crește lățimea de bandă, însă cu cât numărul de biți pe simbol crește, performațele erorii scad.
Capitolul 2
Modulația codată Trellis
2.1 Scurt istoric
Modulația trellis (cunoscută și ca modulația codată trellis) este o schemă de modulație care permite transmiterea eficientă a informației peste canale cu bandă limitată, cum ar fi liniile de telefon. Modulația trellis a fost inventată de Gottfried Ungerboeck în anii 1970 și a fost descrisă prima dată într-o conferință, dar a trecut neremarcată până în anii ‘80 când acesta a publicat o prezentare mai detaliata, fapt care a dus la o apreciere unanimă.
În acea perioadă, modemurile operau peste linii telefonice Plain Old Telephone Service și în general atingeau 9.6 kbiți/s prin angajarea a 4 biți per simbol într-o modulație MAQ la 2400 baud. Această limitare a debitului binar exista în ciuda eforturilor depuse de mulți cercetători, iar unii ingineri prevedeau că fără un progres major al infrastructurii publice de telefonie, debitul binar maxim pentru un modem POTS ar putea fi 15 kbit/s pentru o comunicație bidirecțională (4 biți/simbol, folosind MAQ). Totuși, 14 kbiți/s reprezintă puțin peste o treime din maximul debitului binar teoretic pentru liniile telefonice mai sus amintite, conform teoremei lui Shannon (aproximativ 35 kbiți/s).
Originea numelui de “trellis” rezultă de la o tehnică a diagramelor de stare, care desenate pe hârtie arată ca un spalier de zăbrele (trellis lattice) folosit în grădinile de trandafiri. Schema este în principiu un cod convoluțional de rate (r,r+1). Contribuția unică a lui Ungerboeck a fost aplicarea verificării parității pentru simboluri în loc de vechea tehnică ce presupunea aplicarea acestei verificări pentru șirul de biți și apoi modularea biților. Ideea de bază presupunea folosirea unor partiții; se grupau simbolurile într-o formă de arbore, apoi acestea se separau în două ramuri de mărimi egale. Pe fiecare ramură a arborelui simbolurile erau în continuare separate. Deși în mai multe dimensiuni e greu de vizualizat, cazul simplu al unei singure dimensiuni ilustreaza procedura de bază. Presupunând că simbolurile sunt poziționate la [1,2,3,4,…] luăm, apoi, toate simbolurile pare și le plasăm într-un grup, iar pe cele impare într-un al doilea grup. Acest mod nu este tocmai precis pentru că Ungerboeck privea problema bidimensională, dar principiul este același, se ia fiecare din grupuri și se repetă procedura pentru fiecare ramură a arborelui. Odată ce această procedură a fost pe deplin descrisă, următorul lui pas a fost să programeze un algoritm într-un computer și să-l lase pe acesta să caute cele mai bune coduri. Rezultatele au fost surprinzătoare. Chiar și cel mai simplu cod (4 stări) a produs rate ale erorii aproape de o mie de ori mai mici decât sistemul echivalent necodat. Timp de doi ani, Ungerboeck a ținut aceste rezultate secrete, arătându-le doar colegilor apropiați. În 1982, Ungerboeck a publicat lucrarea ce descria principiile modulației trellis. A urmat o perioadă de intensă activitate de cercetare, iar în 1990 Uniunea Internațională a Telecomunicațiilor (UIT) a publicat primele standarde pentru modemuri cu modulație trellis la 14.4 kbit/s (2400 baud și 6 biți pe simbol). În următorii ani, codarea s-a dezvoltat mai mult, și în plus a avut loc o creștere a debitului simbolurilor de la 2400 baud la 3429 baud, lucruri ce au permis atingerea unui debit binar de 34.3 kbit/s (limitat de reguli prinvind puterea la 33.8 kbit/s). În prezent, cele mai comune modemuri V.34 cu modulație trellis folosesc un set 4-dimensional de partiții la care se ajunge prin tratarea a două simboluri bidimensionale ca o singură “zăbrea” (lattice). Acest set folosește 8, 16, 32 de stări ale codurilor convoluționale pentru a strecura echivalentul a 6 până la 10 biți în fiecare simbol trimis de modem (de exemplu: 2400 baud * 8 biți/simbol = 19.200 biți pe secunda).
Odată ce producătorii au introdus modemuri cu modulație trellis, ratele de transmisie au crescut până la punctul în care transferul interactiv de date multimedia peste linia telefonică a devenit posibil (melodii, imagini de ordinul a cativa MB putând fi descărcate în câteva minute). Transferul conținutului unui floppy disk în acest mod dura doar câteva minute, în loc de o ora. Astfel, se poate spune că invenția lui Ungerboeck a jucat un rol cheie în era informațională.
2.2 Noțiuni fundamentale
Metoda de transmisiune prezentată în capitolul 1 asigură un debit informațional departe de prezicerea făcută de formula lui Shannon:
C = B log(1 + PS / PZ)
Această valoare se obține presupunând că semnalul util este aleatoriu, cu distribuție gausiană, ca și zgomotul. Teorema respectivă nu arată cum anume se va realiza prelucrarea semnalului pentru a se atinge aceasta capacitate, ea este o teorma de existență. Expresia entropiei semnalului care trebuie maximizată:
H = –
Expresia se obține presupunând folosirea unor secvențe suficient de lungi de simboluri în care acestea au frecvențe de apariție date de valorile probabilităților pk.
Metodele de transmisiune clasice realizează o transmisie “bit cu bit” și o decizie “hard” (făcută la fiecare simbol independent de cele anterioare sau posterioare). Decizia facută în acest fel duce la o pierdere ireversibilă de informație, de exemplu: dacă zgomotul este mare sau mic nu contează pentru decizie, dacă se rămâne sub pragul de eroare. Se poate intui că la următoarea decizie zgomotul să producă eroare, în timp ce considerate împreună zgomotele ar putea fi redistribuite astfel încât să nu mai apară eroare.
Una dintre ideile de lucru ar fi de a lua în considerație un număr de eșantioane de semnal cu zgomot, împreună, și de a căuta acea secvență posibilă la emisie din care este cel mai posibil să provină secvența cu zgomot. Metoda se numește modulație codată (trellis).
Conform acestei metode se va realiza o codare pe grupe de simboluri, prin care se realizează o corelare a simbolurilor în succesiunea lor, după procedeele folosite la detecția și corecția erorilor. Dacă realizăm independent codarea și modulația rezultatele produse sunt mediocre. Debitul util este redus datorită redundanței introduse pentru codare, fără o reducere substanțială a procentului de erori. Se ajunge astfel la problema realizării unei sinteze între cele două domenii de îmbunătățire a performanțelor, modulația și codarea.
Se folosesc coduri din clasa codurilor recurente sau convoluționale, care se potrivesc mai bine la o transmisiune continuă. Acestea permit o decodare bazată pe principiul căutării într-un arbore, după criteriul drumului minim, eventual folosind algoritmul lui Viterbi. Adăugarea redundanței se face prin mărirea numărului de niveluri utilizate sau de puncte din constelația de semnal, pentru a nu se mări viteza de semnalizare necesară, cu creșterea nedorită a benzii de frecvență ocupată.
Un cod convoluțional (n,k) cu lungimea de constrângere își obține biții de control, în număr de (n-k), prin relații de recurență între k biți de informație succesivi. Transmisia este continuă, non-bloc. Rezultă că în practică este rentabil să folosim o transmisie paralelă pentru n biți disponibili la un moment dat prin codare, deci să folosim un numar de 2n niveluri de puncte de semnal. În acest fel nu este necesară și o sincronizare de bloc.
Codurile detectoare de erori folosesc noțiunea de distanță Hamming între cuvintele de cod, care se maximizează, astfel încât cu minimum de redundanță, să asigure detecția unui număr cât mai mare de erori. Aceste mărimi sunt însă discrete și nu operează decât pe un interval de timp dar de numărul de simboluri grupate în bloc. Cât timp nu există zgomot redundanța este inutilă, iar când zgomotul este mare aceasta poate fi insuficientă.
Demodularea “soft” analizează eșantioanele succesive ale secvenței rn = an + zn (semnal plus zgomot) și măsoară distanța euclidiană între secvența reală și toate secvențele bn posibile a fi fost transmise. Distanța euclidiană dE,a,b între două secvențe {an} și {bn} se definește astfel:
d2E,a,b = (2.1)
Decodorul optim de secvență va decoda secvența {rn} în acea secvență dintre {an} (dintr-un set C al tuturor secvențelor pe care le poate produce codorul) care are cea mai mică distanță euclidiană față de {rn}. Această secvență, care va fi cea decisă, satisface relația de optim din punct de vedere al zgomotelor:
d2E,a,b-min = = min (2.2)
{an} C
Secvența {} este secvența cea mai probabilă din punct de vedere al “cantității de zgomot” care a afectat semnalul. Eșantioanele recepționate sunt necuantizate, zgomotul este analizat în mod global, pe toată secvența. Pentru că zgomotul mare este foarte improbabil (distribuție gaussiană) și el este sumat în calcul cu altele, mici, are loc o distribuire uniformă a vârfurilor pertubatoare pe mai multe simboluri și pe fiecare în parte nu se mai atinge pragul de eroare. Corecția erorilor ca la teoria codurilor nu se mai face și nici nu mai este necesară, și nici posibilă. Eroarea cea mai probabilă este decodarea unei secvențe {an} în altă secvență {bn} din setul C care este cea mai apropiată din punct de vedere al distanței euclidiene. De aici rezultă că un parametru important al codării este distanța euclidiană minimă a mulțimii C folosită la codare:
d2E,C , min = min ; {an},{bn} C (2.3)
{an}{bn}
Daca vom avea o distanță euclidiană mare, aceasta va conduce la o rată a erorii mică.
Prin modulație codată se realizează o apropiere teoretic oricât de mare de limita lui Shannon, chiar pentru variante destul de simple se obțin 3-4 dB câștig de codare față de modulația necodată. Complicând codarea se obțin câștiguri de codare mai mari, dar apropierea de limita teoretică este asimptotică.
2.3 Exemplu de transmisie codată în banda de bază
Se consideră cea mai simplă transmisie standard, cea binară în banda de bază, pentru a exemplifica metoda trellis. Semnalul este codat având patru niveluri cu valorile +d/-d și +3d/-3d, corespunzătoare celor patru dibiți v0, v1 obținuți prin codarea simplă (întârziere) a unui singur bit de informație u.
Figura 2.1 Schema codor
În figura 2.1 este reprezentată schema codorului, care realizează o simplă întârziere a bitului u, iar în figura 2.2 este reprezentată diagrama de stări și de tranziții care corespunde stărilor automatului care furnizează dibiții convertorului numeric-analogic care generează cele 4 niveluri care se emit în linie.
La o primă vedere, transmisia are o protecție la zgomote inferioară celei binare de la care se pornește și totuși se obține o transmisie mai protejată la zgomote decât cea binară. Codorul are un singur bit de stare, J0; astfel că există numai două stări, notate 0 și 1. Deși se emit patru niveluri, acestea nu se pot genera la un moment dat în mod arbitrar. Se pot genera doar două niveluri la un moment dat, depinzând de valoarea bitului de stare v0 al codorului și de bitul de informație, u = v1.
Când bitul de stare este 0 (codorul se afla în starea A), atunci se pot emite doar nivelurile 3d și –d, după cum u = 0 sau u = 1.
Când automatul este în starea B (bitul de stare este 1) se generează pentru același bit de informație (u = 0 sau u = 1), nivelurile d sau -3d.
Pe următorul interval elementar codorul poate fi iar în starile A sau B și procesul de alocare al nivelurilor se repetă.
Având în vedere diagrama de tranziții permise se observă că două traiectorii care pornesc din aceeași stare vor converge în aceeași stare după cel puțin două tranziții. Distanța euclidiană între secvențele reprezentate cu culoarea roșie care pleacă din starea A și ajung tot în starea A este: d2E = 42+22 =20. În cazul de față, pentru semnalul cu patru niveluri puterea medie este: P = (12+32) d2 / 2, unde d este tensiunea minimă a nivelurilor. Un semnal binar cu aceeași putere medie (și de vârf) ar avea o amplitudine dată de A2 = 5d2 și distanța între niveluri egală cu 2A, ce corespunde la o distanță euclidiană: d2E necodata = 4 A2 = 20.
Codarea este inutilă, deoarece avem aceeași protecție la zgomote ca și în cazul codat. Această situație este cauzată de faptul că am folosit un cod recurent prea puțin performant și ce se câștigă prin codare se pierde prin creșterea numărului de niveluri de la două la patru.
Figura 2.2 Diagrama de stări și de tranziții
Trebuie ales un cod mai puternic cu o lungime de constrângere de doi biți. Un astfel de codor este reprezentat în figura 2.3. Acestuia îi corespunde o diagrama de tranziții cu patru stări, notate A, B, C, D.
Figura 2.3 Codor convoluțional
Biții memorați în codor sunt J0 și J1, iar biții de modulație sunt notați tot cu v0 și v1. Două secvențe care pleacă din starea A vor ajunge în aceeași stare, aleasă aici D, după trei intervale elementare de simbol 3T. Pe diagrama reprezentată în figura 2.4 se poate urmări trecerea în altă stare sub comanda bitului original de date u, prin emiterea a două niveluri din patru posibile.
Distanța euclidiană este suma pătratelor distanțelor dintre punctele an, bn ale secvențelor, superioară, respectiv inferioară, desenate cu linii roșii. Rezultă că avem:
(a1 – b1) 2 = (3 – (-1)) 2 d 2 = 16 d 2,
între momentele T și 2T, adică trecerile între stările C-A și C-B. În același mod se adună pătratic și distanța între punctele de coordonate –d și -3d, egală cu 2d, emise între momentele 2T și 3T, cu distanța între –3d și d prin care se ajunge în starea D, egală cu 4d. Distanța între secvențe este în total:
d2E min = (42 + 22 + 42 ) d 2 = 36 d 2
De aici rezultă un câștig de codare real de:
= 10lg() = 1,8 dB
Dezavantajul modulației în banda de bază cu patru niveluri este acela al unei risipe de putere pentru nivelurile +3d, -3d. Mai exact, există dibiți care cer mai multă putere (00 și 11), deși au aceeași probabilitate de apariție ca și ceilalți doi (01 si 10). Există astfel o neconcordanță cu cerințele teoremei lui Shannon. Semnalul trebuie să fie cât mai aproape de cel gaussian, simbolurile de putere mare trebuie să aibă probabilitate mică de apariție.
Figura 2.4 Diagrama de tranzitii cu patru stări
2.4 Algoritmul lui Viterbi
Demodularea de secvență este metoda de detecție a semnalului și de decizie a secvenței de biți emiși. Receptorul construiește o diagramă de stări succesive, care sunt cele ale codorul de la emisie. Forma specifică a desenului este cea care a dat și numele modulației (trellis=grătar, in limba engleză).
Traseele de trecere între stări (doar cele permise) sunt etichetate cu niște lungimi care corespund formal cu valorile nivelurilor de la emisie (sau cu coordonatele punctelor din constelația de semnal). Dar aici lungimile sunt niște numere proporționale cu zgomotele apărute pe intervalul respectiv, adică reprezintă distanțele dintre nivelul care ar fi trebuit să fie emis (și recepționat, în condiții ideale, la trecerea între stările respective) și nivelul real, afectat de zgomot și de interferență. Această distanță ar poate fi exprimată și pătratic. Suma acestor lungimi de-a lungul unui traseu (lungimea drumului în arbore) este o masură a puterii totale de zgomot. Altfel spus, dacă zgomotul este presupus gaussian, probabilitatea totală de a se realiza o anumită secvență de valori de zgomot fiind produsul probabilităților individuale, logaritmul acestei mărimi depinde și el monoton de probabilitatea zgomotului total. Acesta este de asemenea gaussian, exponentul funcției “clopot Gauss” este suma pătratelor valorilor zgomotelor de pe toate intervalele elementare implicate:
Extremumul funcției logaritm se realizează simultan cu extremumul funcției logaritmate. Argumentul funcției logaritm este proporțional cu lungimea drumului în arbore. Valorile mai mici ale zgomotului sunt cele mai probabile. Abaterile de la un nivel alocat unei tranziții și valoarea reală a acestuia nu depind numai de zgomot ci și de faptul că nivelul emis nu corespunde cu tranziția pe care o analizăm. La un moment dat se măsoară distanța, față de toate nivelurile posibile a fi emise, a nivelului real recepționat. Acesta corespunde însă unei singure tranziții. Deci ar fi suficient să reținem doar tranziția de care nivelul real este cel mai apropiat, ea fiind cea mai probabilă. Dar aceasta ar fi o detecție bit cu bit. Trebuie să găsim minimul lungimii întregii secvențe. În acest caz se pot evita situații când zgomotul momentan este peste pragul de eroare. Deoarece se urmărește minimizarea unei probabilități de zgomot, voi găsi secvența cea mai probabil a fi fost emisa. Rezultă că demodularea se face printr-o metodă de maximă plauzabilitate.
Figura 2.5 reprezintă diagrama trellis a receptorului, considerând că se va folosi algoritmul Viterbi. Receptorul parcurge stările posibile ale codorului și analizează toate traiectoriile în această grilă.
Figura 2.5 Căutarea drumului cel mai scurt într-un arbore la recepție
În acest timp el calculează distanțele dintre nivelul real și nivelurile care s-ar fi putut realiza. Apoi se calculează lungimile totale ale tuturor proiecțiilor {rn} și va reține pe cea mai apropiată traiectorie ideală {}. Biții corespunzători de informație {un} vor fi livrați la ieșire. Lungimile secvențelor și numărul lor fac metoda inaplicabilă în timp real.
Algoritmul Viterbi reduce mult efortul de calcul printr-o metodă iterativă, bazată pe o teoremă de topologie. Privind figura 2.4 se observă că două trasee care diverg dintr-o stare la emisie, datorită unor biți de informație diferiți, vor converge după alte două tranziții dacă se emit biți de informație identici.
Pentru cazul din figura 2.4, după u=0 și 1 (din C în A și din C în B), avem u=1 și 1 (din A în B și din B în D); în final, pentru u=1 și 1 se trece din B în D și din D se ajunge pe o a două ramură în starea comună cu prima în D.
În prima etapă a decodării, la fiecare moment de sondare se determină simbolul an, din subsetul permis, cel mai apropiat de eșantionul real rn. Apoi, acest simbol împreună cu pătratele distanțelor , se memorează.
Etapa a doua, și ultima, folosește ideea algoritmului Viterbi pentru a găsi secvența de semnal căreia îi corespunde valoarea minimă a sumei pătratelor distanțelor față de secvența reală {rn}.
Facem presupunerea că la un moment curent nT cunoaștem toate drumurile optime care vin de la un punct anterior foarte îndepărtat (n-D)T, și merg către toate stările de la acest moment. Acest moment îndepărtat este un moment de decizie. Avem un drum unic până la momentul (n-D)T, iar apoi drumurile diverg. Aceste trasee se extind la momentul (n+1)T. Este corect să reținem dintre drumurile posibile pe cele mai scurte, în cazul nostru dintre cele câte două ce converg într-o stare din cele patru.
Celelalte drumuri, mai lungi, care nu au șanse să devină mai scurte (în etapele următoare) decât cele care au fost mai scurte la momentul anterior, se șterg.
Dacă ne uităm pe diagramă putem observa că traseele optime rămase provin dintr-un singur traseu comun. Astfel, decizia se ia cu o întârziere DT.
În figura 2.5, în partea de jos, se poate observa că pentru un moment dat trebuie memorate numai patru drumuri optime, care ajung în cele patru stări. La momentul nT lungimile drumurilor sunt (citind de pe figură): 11, 10, 11, 13. La momentul (n+1)T în fiecare stare ajung câte 2 trasee. Lungimile acestor trasee sunt marcate pe figură în chenare dreptunghiulare. Din fiecare pereche va rămâne traseul cu valoarea mai mică a lungimii. Acesta va fi memorat împreună cu lungimea sa. Lucrul cu numere mari ale lungimilor (acestea se cumuleaza la fiecare pas) este evitat prin scăderea din toate valorile a lungimii traseului comun. Algoritmul se autosincronizează, fără proceduri speciale.
Pentru fiecare stare Sk sunt necesare 2S locații de memorie. Locațiile de memorie au capacitățile astfel încât să se poată memora lungimea traseului spre Sk și simbolurile corespunzătoare ce formează traseul. Traseul este trunchiat la D intervale.
Pe fiecare interval elementar și pentru fiecare dintre cele 2S stări, capacitatea de calcul trebuie să asigure următoarele operații:
calcularea lungimilor fiecăreia dintre cele 2m tranziții neparalele, ce pornesc din fiecare stare;
compararea lungimilor celor 2m-k tranziții paralele, reținând-o pe cea mai scurtă;
efectuarea a 2k adunări, câte una pentru fiecare dintre tranzițiile care converg în fiecare stare, cu scopul de a actualiza lungimea traseelor;
compararea lungimilor celor 2k trasee care ajung în fiecare stare și reținerea celui mai scurt.
2.4 Realizarea modulației codate – metoda generală
Facem presupunerea că avem de transmis m biți de informație pe simbol. În acest caz redundanta minim posibilă este de un bit suplimentar. Vom avea 2m+1 seturi de simboluri. În același timp avem m+1 biți de modulație. Notăm distanța între niveluri cu . Sub comanda bitului de cod v0 setul va fi divizat în două subseturi. Cele două subseturi vor avea fiecare distanța cea mai mare posibilă, . Vor exista s registre în codorul convoluțional, deci o memorie de 2s stări. Codorul furnizează biții v0,…,k, deci există k+1 biți codați.
Figura 2.7 Modulator codat trellis – schema bloc
Submulțimile vor fi divizate în câte două submulțimi respectând cerința distanței maxime, .
Operația de partajare se repetă de k+1 ori, până când se obține distanța euclidiană , mai mare sau egală cu valoarea . Rezultă un număr de 2k+1 submulțimi. Numărul de simboluri al modulației este 2m+1, rezultă că în fiecare subset rămas după partajare vom avea 2m-k niveluri (simboluri, puncte în constelație). Aceste simboluri vor fi selectate de către biții necodați. În diagrama de tranziții nivelurile neselectate prin codare vor fi emise prin tranziții paralele. Structura diagramei de tranziții trebuie să țină seama de faptul că indiferent de starea codorului, din fiecare stare trebuie să existe 2m tranziții, pentru a transporta cei m biți de informație noi care sosesc în paralel. Tranzițiile paralele sunt obligatoriu în număr de 2m-k . Deci tranzițiile se vor ramifica în 2m/2m-k direcții, spre unele dintre stări.
Pentru a evita cazul în care nu se poate găsi o stare în care să se tranziteze este necesară relația: s k. Se vrea un număr al stărilor codorului cât mai mare, pentru ca doua trasee care diverg să conveargă după un număr cât mai mare de stări, pentru a mări distanța euclidiană minimă a modulației. Aceasta este minimul dintre distanța între tranzițiile paralele și distanța minimă (k) dintre secvențele neparalele în grila:
= min {,(k) }.
Dintre cei m biți de date participă la codare numai k biți, pentru a se obține cei k+1 biți codați necesari realizării părțiilor. Restul de m-k biți rămân necodați pentru a participa la realizarea tranzițiilor paralele.
Capitolul 3
Modulația de amplitudine în cuadratură codată
MAQ cu 4 puncte este similară cu o modulație de fază, astfel MAQ cu 16 puncte în constelație este cea mai simplă MAQ specifică acestui tip de modulație. Pentru MAQ, în general, este necesar ca numărul de puncte să fie o putere a lui 2 pentru a putea să corespundă unui grup de biți alocați fiecărui punct și în plus, numărul de puncte trebuie să fie pătrat perfect, pentru ca proiecțiile lor pe axele în fază și în cuadratură să fie în număr egal. Astfel, pentru 8 puncte nu avem o MAQ standard ci o M8. Pentru a păstra aceeasi pe dublând numărul de puncte, prin adăugarea unui bit în multibit, vom avea o deteriorare a raportului semnal/zgomot cu 6 dB. Nu este recomandabil să se meargă pe această cale deoarece creșterea debitului de date este modestă.
Luăm exemplul unei MAQ codate cu 16 puncte în constelație. Se realizează partițiile constelației în 4 submulțimi. Puterea semnalului este aleasă astfel încât distanța euclidiană minimă să fie d0=1. Având această distanță între niveluri rezultă următoarele valori pentru acestea +1/2, -1/2 si +3/2, -3/2. Aceste lucruri sunt reprezentate în figura 3.1.
Figura 3.1 Partițiile constelației 8/16MAQ-2D
Prima partiție din constelația MAQ se face sub comanda primului bit b0 al cvadribitului și se obține o nouă distanță euclidiană d1 = . Cele 2 sub-constelații obținute vor avea câte opt puncte. Aceste puncte vor fi notate pentru b0 = 1 cu numerele impare: 1, 3, 5, 7, 9, 11, 13, 15 iar pentru b0 = 0 cu numerele pare: 2, 4, 6, 8, 10, 12, 14. Regula privind numerotarea este de a începe în sensul acelor de ceasornic, de la cadranul II. Această regulă este respectată și pentru fiecare cadran în parte.
Urmează o nouă împărțire sub comanda bitului b1. Fiecare constelație e împărțită în câte două sub-constelații de câte patru puncte. În cazul punctelor impare de mai sus, pentru b1 = 1 se rețin punctele 3, 7, 11, 15 iar pentru b1 = 0 se rețin punctele 1, 5, 9, 13. În cazul punctelor impare de mai sus, reținem punctele 2, 6, 10, 14 pentru b1 = 1 iar pentru b1 = 0 punctele 0, 4, 8, 12. Constelațiile pătrate de câte patru puncte au distanțele d2 = 2. Se poate continua cu biții următori. Bitul b2 va selecta două puncte din patru și bitul b3 va selecta punctul.
3.1 Modulația 8/16MAQ cu patru stări
În figura 3.3 este prezentată diagrama de tranziții. Subseturile cu distanța minimă d22 = 22 = 4 vor fi selectate cu biții codați b0 și b1. Se folosește un codor cu patru stări. Rezultă că vor exista câte patru tranziții paralele cu distanța d2 = 2. Acestea vor diferi sub comanda bitului necodat b2 și a bitului necodat b3. Subconstelațiile de patru puncte sunt selectate de biții codați.
Subconstelațiile sunt prezentate în figura 3.5. Coordonatele sunt folosite pentru a realiza sinteza logică a selectorului de semnal ce comandă modulatoarele de amplitudine (vezi figura 3.4). Între două secvențe convergente, care se întâlnesc după trei stări, DEP este:
= 2 + 1 + 2 = 5,
iar între tranzițiile paralele este mai mică, egală cu 4.
Figura 3.2 Diagrama de tranziții cu patru stări pentru 8/16MAQ-2D
Figura 3.3 Codorul convoluțional 4/8M-2D cu patru stări
Codorul convoluțional 8/16MAQ-2D cu patru stări este identic cu cel de la 4/8M-2D cu patru stări. Pentru sinteza codorului ne folosim de relațiile între stările Jn si Jn+1, ce sunt prezentate în figura 3.3.
Figura 3.4 Codorul convoluțional 8/16MAQ-2D cu patru stări
Figura 3.5 Partițiile constelației și modulatorul codat cu patru stări pentru o modulație 8/16MAQ-2D-4S
3.2 Modulația 8/16MAQ cu opt stări
Reținând doar două tranziții paralele din cele patru (selectabile cu un singur bit, b3, rămas necodat) se poate mări distanța. În figura 3.6 (diagrama de tranziții 8/16MAQ-2D-8S), tranziția notată 0 înseamnă emiterea punctelor 0 sau 8, între care distanța pătratică este: d32 = (2)2 = 8.
Dacă avem două secvențe ce pleacă din același punct (de exemplu: 0, 0, 0 și 0, 2, 0) acestea se întâlnesc după două tranziții.
În funcție de relațiile între stările Jin și Jin+1 și în raport cu biții de date care se codează, adică aici ain (i=1,2), se realizează sinteza codorului. Se va realiza un tabel:
Tabel – Calcularea biților de stare ai codorului cu 8 stări la momentul n+1 pentru 8/16MAQ-2D-8S
Rezultă că vom avea relațiile logice:
J0n+1 = J1n + a1;
J2n+1 = J0n 1;
J1n+1 = J2n + J0n + a2;
{0, 2, 4, 6} {0, 1, 2, 3}
{1, 3, 5, 7} {4, 5, 6, 7}
Figura 3.6 Diagrama de tranziții cu opt stări pentru 8/16MAQ-2D-8S
Punctele care se emit la tranzițiile ce pleacă din starea 0 se calculează în funcție de: bitul necodat b3, care selectează una din cele două tranziții paralele (în acest caz acesta poate fi 0 sau 1), de stările Jin+1 (în acest caz J1n+1 = 0 0 1 1 și J2n+1 = 0 1 0 1) și bitul b0 (în acest caz b0 = 0). Pentru b3 =0 rezultă punctele emise: 0000, 0010, 0100, 0110 adică punctele 0, 2, 4, 6 în baza zece. La fel se procedează și pentru tranzițiile care pleacă din alte stări.
În selectorul de semnal se combină biții codați bi, ca și în cazul codorul cu 4 stări, pentru a crea dibiții necesari unui modulator standard MAQ, pentru o constelație cu 16 puncte. Selectorul de semnal conține două sumătoare modulo doi pentru dibitul alocat axei în fază, dibit notat x0 x1. Dibitul y0 y1 este identic cu dibitul b1 b3, care este de fapt dibitul de date a1 a3.
Distanța pătratică între oricare două secvențe este mai mică decât cea între tranzițiile paralele:
= 22 + 2 = 6 < 8
Figura 3.7 Codorul recurent cu 8 stări pentru 8/16MAQ-2D-8S
3.3 Avizul ITU-T V.32
Avizul folosește o transmisie de date sincronă sau asincronă peste doua fire, cu modemuri duplex, având rate de până la 9600 biți/s. Acestea sunt folosite pe rețeua de telefonie fixă cu comutație sau pe circuite de tip linie închiriată.
Principalele caracteristici ale acestor modemuri sunt următoarele:
mod de operare duplex pe rețeua de telefonie fixă cu comutație și peste circuite închiriate punct-la-punct cu două fire
separarea canalelor prin tehnici de anulare a ecoului
modulație de amplitudine în cuadratură pentru fiecare canal cu transmisie sincronizată pe linie la 2400 bauds
poate fi implementată oricare dintre următoarele combinații pentru rata de semnalizare a datelor:
9600 biți/s sincron,
4800 biți/s sincron,
2400 biți/s sincron.
– pentru 9600 biți/s, în recomandare există două scheme alternative de modulație, una folosește 16 stări, iar cealaltă folosește o codare trellis cu 32 de stări. Modemurile care furnizează o rată de 9600 biți/s trebuie să fie capabile să conlucreze folosind alternativa cu 16 stări
– au loc schimburi de diferite secvențe la pornire pentru a stabili rata, tipul codării și alte facilități speciale
– furnizarea opțională a modului asincron de operare în conformitate cu avizele V.14 sau V.42
Ca o nota în aviz se afirmă că ratele de transmisie și recepție pentru fiecare modem trebuie să fie aceleași. Posibilitatea de operare asimetrică rămâne pentru studiu ulterior.
Frecvența purtătoare este 1800 1 Hz. Nu sunt furnizate alte tonuri pilot separate. Receptorul trebuie să fie capabil să opereze cu ofseturi de frecvență de până la 7 Hz.
Nivelul puterii transmise trebuie să fie conform cu avizul V.2. Aplicând în continuu 1 binar la intrarea în scrambler, energia transmisă la 600 Hz și la 3000 Hz ar trebui să fie atenuată cu 4.5 2.5 dB, considerând maximul densității energiei între 600 Hz și 3000 Hz.
Rata de modulație este impusă la 2400 bauds 0.01%.
Pentru codare sunt definite mai multe posibilități:
Codarea pentru 9600 biți/s
Prima alternativă este de a folosi o codare neredundantă. Fluxul de date de transmisie trecut prin scrambler este divizat în grupe consecutive de câte 4 biți de date. Primii doi biți, notați aici cu Q1n si Q2n (unde n arată numărul secvenței din grup) sunt codați diferențial în Y1n si Y2n conform tabelului 1 (vezi ANEXA 1). Biții Q3n, Q4n, Y1n si Y2n vor da starea transmisă conform constelației de semnal din figura 1 și tabelului 3 (vezi ANEXA 1).
A doua alternativă este de a folosi o codare trellis. Fluxul de date de transmisie trecut prin scrambler este divizat în grupe consecutive de câte 4 biți de date. După cum se poate observa în figura 2 (vezi ANEXA 1) primii doi biți, notați aici cu Q1n si Q2n (unde n arată numărul secvenței din grup), sunt codați diferențial în Y1n si Y2n conform tabelului 2 (vezi ANEXA 1). Cei doi biți codați diferențial Y1n si Y2n sunt apoi folosiți ca intrare a unui codor convoluțional de tip sistematic ce generează bitul de redundanță Y0n. Acest bit de redundanță împreună cu biții de informație Y1n, Y2, Q3n, Q4n vor da starea transmisă conform constelației de semnal din figura 3 și tabelului 3 (vezi ANEXA 1).
Codarea pentru 4800 biți/s
Fluxul de date de transmisie trecut prin scrambler este divizat în grupe consecutive de câte 2 biți de date. Biți, notați aici cu Q1n si Q2n (unde n arată numărul secvenței din grup) sunt codați diferențial în Y1n si Y2n conform tabelului 1 (vezi ANEXA 1). Figura 1 (vezi ANEXA 1) arată submulțimile A, B, C, D ale stărilor semnalului folosite pentru transmisia la 4800 biti/s.
Codarea pentru 2400 biti/s
Aceasta nu este tratată în aviz, fiind lasată pentru o studiere ulterioară.
Capitolul 4
Simulare MATLAB-Simulink a unei transmisii de date prin MAQ codată trellis
Simulink, dezvoltat de compania The Mathwork, este un program comercial folosit pentru modelarea, simularea și analizarea sistemelor dinamice. Este compus dintr-o interfață grafică unde pot fi așezate diferite blocuri din librăria sa, blocuri ce pot fi configurate.
Voi încerca să simulez o transmisie de date MAQ cu 16 puncte în constelație codată trellis, pentru diferite valori ale raportului semnal-zgomot pe canalul de comunicație.Voi încerca, de asemenea, să analizez ratele erorii în funcție de acest raport. Pentru aceasta, voi avea nevoie să introduc în schema de proiectare (Figura 4.1) următoarele blocuri: un generator de secvență (Sequence Generator), un codor MAQ MCT – Modulație Codată Trellis (Rectangular QAM TCM Encoder), un bloc ce adaugă semnalului de la intrare un zgomot alb Gaussian (AWGN- Add White Gaussian Noise), un decodor MAQ MCT (Rectangular QAM TCM Decoder), un bloc folosit pentru alinierea semnalelor (Align Signals), un bloc ce calculează rata erorii (Error Rate Calculation), și în final un bloc ce este folosit pentru vizualizarea grafică a rezultatelor (Scope).
Blocurile sunt conectate în modul următor:
primul bloc este generatorul de secvență, iar ieșirea acestuia este legată la intrarea codorului MAQ MCT și la una dintre intrările blocului de aliniere a semnalelor (pentru a putea compara semnalul generat cu semnalul transmis folosind MAQ codată Trellis)
codorul MAQ MCT are la intrare legătura ce provine din blocul de mai sus iar ieșirea sa este conectată la generatorul de zgomot alb Gaussian
blocul de adăugare a zgomotului alb Gaussian are la intrare o legătură ce provine din ieșirea codorului MAQ MCT, iar la ieșire o legătură ce se conectează la intrarea decodorului MAQ MCT
decodorul MAQ MCT are la intrare o legătură ce provine din ieșirea blocului de generare a zgomotului alb Gaussian, iar ieșirea sa este conectată în cea de-a doua intrare a blocului de aliniere a semnalelor
blocul de aliniere a semnalelor are conectat la cele două intrări ale sale o legătură ce provine de la generatorul de secvență și o legătură ce provine din decodorul MAQ MCT, iar cele două ieșiri ale sale sunt conectate la cele două intrări ale blocului de calcul a ratei erorii
blocul de calcul al erorii are două intrări la care sunt conectate cele două semnale ce provin de la blocul de aliniere a semnalelor și o ieșire ce este conectată la analizorul grafic
ultimul bloc, folosit pentru analizarea grafică a ratei erorii, are o intrare ce este conectată, printr-o legătură, la ieșirea blocului de calcul a erorii.
Figura 4.1 Schema folosită pentru simularea transmisiei MAQ codată trellis
Voi prezenta în cele ce urmează funcțiile diferitelor blocuri componenete ale schemei și datele cu care acestea au fost configurate.
Generatorul de secvență
Acest bloc generează o secvență pseudoaleatoare de numere binare. A fost configurat parametrul Sample Time (perioada de eșantionare) la valoarea 1/9600 și a fost selectată opțiunea Frame-based outputs, ceea ce reprezintă faptul că ieșirile vor fi de tip cadru.
Codorul rectangular MAQ MCT
Blocul implementează o modulație codată trellis prin codarea convoluțională a semnalului de intrare binar și distribuirea rezultatului într-o constelație MAQ. Parametrul M-ary number reprezintă numărul de puncte din constelația de semnal. Acestuia i-a fost atribuită valoarea 16 pentru că ne interesează o MAQ cu 16 puncte în constelație. Pentru a defini codorul convoluțional ne folosim de parametrul Trellis structure. Acest parametru a fost definit folosind comanda poly2trellis. Comanda are urmatoarea formă generală:
poly2trellis(Lungimea de constrângere, Generator de cod)
Lungimea de constrângere este un vector a cărui lungime reprezintă numărul de intrări în codor. Elementele vectorului reprezintă numărul de biți memorați în fiecare registru de deplasare, incluzând și biții curenți de intrare. În cazul de față, acest parametru a fost configurat cu valoarea [3 1 1], ceea ce înseamnă că vom avea trei intrări în codor și pentru acestea numărul de biți memorați în registrele de deplasare sunt 3, 1, respectiv 1. Parametrul Generator de cod este structurat sub formă de matrice. În cazul în care codorul are k intrări și n ieșiri atunci voi folosi o matrice de dimensiuni k X n. Elementul din randul i și coloana j indică modul în care contribuie intrarea i la ieșirea j a codorului. În cazul de față, această matrice a fost configurata cu valoarea [ 5 2 0 0; 0 0 1 0; 0 0 0 1], ceea ce definește codorul reprezentat în Figura 4.2.
Figura 4.2 Codorul convoluțional conform matricii alese
Blocul de adăugare a zgomotului alb Gaussian (AWGN)
Acest bloc adaugă zgomot alb Gaussian semnalului de intrare. Folosește un alt bloc din setul Signal Processing Blockset's (setul pentru procesare semnal), denumit Random Source block (Bloc – Sursă aleatoare) pentru a genera zgomotul. Parametrul Initial Seed inițializează generatorul de zgomot. Tipul de date folosit este moștenit de la semnalul ce intră în portul de intrare. Parametrul Mode care reprezintă modul de operare a fost ales ca SNR (Signal to Noise Ratio = Raportul Semnal-Zgomot). În acest caz trebuie completată și valoarea parametrul SNR (exprimată în dB), ce va avea diferite valori pentru diferite rulări ale simulării. Pentru parametrul care se referă la puterea semnalului de intrare exprimată în Wați (Input signal power) a fost aleasa valoarea 1.
Decodorul rectangular MAQ MCT
Decodorul MAQ MCT folosește algoritmul Viterbi pentru a decoda semnalul de modulație codată trellis, ce a fost codat anterior în blocul de codare. Ca și la blocul de codare parametrul M-ary number reprezintă numărul de puncte din constelația de semnal. Acestuia i-a fost atribuită valoarea 16 folosită și la codare. Pentru a defini decodorul ne folosim de parametrul Trellis structure care va avea aceeași valoare ca la codare poly2trellis([3 1 1], [ 5 2 0 0; 0 0 1 0; 0 0 0 1]). Mai trebuie completat și parametrul denumit Traceback depth (adâncimea de urmărire înapoi a traseului), adică numărul de ramuri folosite de algoritmul Viterbi pentru a reface drumul. Valoarea acestui parametru a fost aleasa 21. Pentru parametrul Operation Mode (mod de operare) a fost aleasă opțiunea Continuous, adică modul de operare continuu.
Blocul de aliniere a semnalelor
Blocul aliniază două semnale de intrare s1 și s2, găsind întârzierea dintre acestea și întârziind s1 cu valoarea găsită. Parametrul folosit de acest bloc este Correlation Window Length (lungimea ferestrei de corelație) și a fost completat cu 200 ca valoare.
Blocul de calcul a ratei erorii
Are rolul de a calcula rata erorii pentru datele primite făcând o comparație a acestora cu versiunea întârziată a datelor transmise. Parametrii săi, Receive Delay și Computation Delay, au fost completați cu valoarea 0 pentru că semnalele sunt deja aliniate de blocul precedent de aliniere al semnalelor. Pentru parametrul Output Data (date de ieșire) a fost aleasă varianta Port, ceea ce înseamnă că datele de ieșire sunt trimise pe un port de ieșire.
Blocul Scope
Este un bloc folosit pentru vizualizarea grafică a rezultatelor.
Rezultatele simularii
Voi rula simularea pentru diferite valori ale zgomotului pe canal pentru a observa performațele schemei. Voi modifica parametrul SNR din blocul ce adaugă semnalului un zgomot alb Gaussian. Timpul de rulare este de aproximativ 200 de secunde.
Cazul 1. Cazul în care valoarea parametrul SNR este 5 dB.
În acest caz rezultă o rată a erorii de aproximativ 2 -3.
Cazul 2. Cazul în care valoarea parametrul SNR este 6 dB.
În acest caz rezultă o rată a erorii de aproximativ 8 -4.
Cazul 3. Cazul în care valoarea parametrul SNR este 7 dB.
În acest caz rezultă o rată a erorii de aproximativ 2,7 -4.
Cazul 4. Cazul în care valoarea parametrul SNR este 8 dB.
În acest caz rezultă o rată a erorii de aproximativ 7,4 -5.
Cazul 5. Cazul în care valoarea parametrul SNR este 9 dB.
În acest caz rezultă o rată a erorii de aproximativ 1 -5.
Cazul 6. Cazul în care valoarea parametrul SNR este 10 dB.
În acest caz rezultă o rată a erorii de aproximativ 1 -6.
Cazul 7. Cazul în care valoarea parametrul SNR este 11 dB.
În acest caz rezultă o rată a erorii de aproximativ 0.
Cu aceste date se poate trasa o curbă privind rata erorii în funcție de raportul semnal-zgomot, ca in figura (programul Matlab ce realizează acest lucru se află atașat în Anexa 3) următoare:
Concluzii
În cazul lucrării de față, am analizat o modulație de amplitudine în cuadratură codată trellis. Modulația de amplitudine în cuadratură este o schemă de modulație care exprimă datele prin schimbarea (modularea) amplitudinii a două unde purtătoare. Acest tip de modulație codată este folosit și de modemurile care respectă recomandările standardului ITU-T V.32 Modulația trellis (cunoscută și ca modulația codată trellis) este o schemă de modulație care permite transmiterea foarte eficientă a informației peste canale cu bandă limitată, cum ar fi liniile de telefon.
Am încercat să simulez o transmisie de date MAQ cu 16 puncte în constelație codată trellis, pentru diferite valori ale raportului semnal-zgomot pe canalul de comunicație, folosind programul Matlab-Simulink, ce este un program folosit pentru modelarea, simularea și analizarea sistemelor dinamice. Am încercat, de asemenea, să analizez ratele erorii în funcție de acest raport.
Din datele obținute în urma rulării programului de simulare se observă că dacă raportul semnal-zgomot pe canal crește, valoarea pentru rata erorii scade. Rezultă că pentru o scădere a zgomotului pe canal avem o scădere pentru valoarea ratei erorii. Pentru valorile raportului semnal-zgomot de: 5, 6, 7, 8, 9, 10, 11 dB obținem, în ordine, următoarele valori pentru rata erorii: 2 -3; 8 -4; 2,7 -4 ; 7,4 -5 ; 1 -5; 1 -6 si 0 (valorile urmează o tendință de scădere). De asemenea, observăm că față de modulația prezentată în primul capitol se obține un câștig datorat codării de aproximativ 5 dB.
Lista acronimelor
AWGN = Add White Gaussian Noise
BER = Bit Error Rate
BPSK = Binary Phase Shift Keying
DEP = Distanța Euclidiană Pătratică
ITU-T = International Telecommunication Union – Telecommunication
MA = Modulație de amplitudine
MAQ = Modulație de amplitudine în cuadratură
MB = MegaByte
MCT = Modulație Codată Trellis
MF = Modulație de frecvență
MΦ = Modulație de fază
NRZ = Non Return to Zero
PAM = Pulse Amplitude Modulation
POTS = Plain Old Telephone Service
PSK = Phase Shift Key
QAM = Quadrature Amplitude Modulation
QPSK = Quadrature Phase Shift Keying
RSZ = Raportul Semnal-Zgomot
SNR = Signal to Noise Ratio
TCM = Trellis Coded Modulation
UIT = Uniunea Internațională a Telecomunicațiilor
Bibliografie
Anderson, John B., Svensson, Arne. 2003. Coded Modulation Systems. New York.
Editura Kluwer Academic/Plenum Publishers.
Bănică, Ion. 2000. Comunicații de date. București. Editura UPB.
Couch II, Leon W. Digital and Analog Communication Systems. Ediția a 5-a.Gainesville.
Editura Prentince-Hall International.
Hanzo, L., S. X. Ng, et al, 2004. Quadrature Amplitude Modulation. Ediția a 2-a,
Editura John Wiley.
Kisiel, K., Sahota, D., Swaminathan, G. 2005. Quadrature Amplitude Modulation : A
simulation study. Editura Simon Fraser University, Canada.
Lathi, B. Pannalal. 1998. Modern Digital and Analog Communication Systems. Ediția a
3-a. New York. Editura Oxford University Press.
Popescu, Sorin. 2003. Transmisia datelor. București. Editura Matrix Rom.
Popescu, Sorin. 2005. Tehnici avansate de comunicație. Cluj-Napoca. Editura Albastră.
Proakis, John G. [1983](2000). Digital Communications. Editura Mc.Graw-Hill.
Schlegel, Christian B., Perez, Lance C. 2004. Trellis and Turbo Coding. Piscatway.
Editura IEEE Press.
Sklar, Bernard. Digital Communications. Fundamentals and Applications. Ediția a 2-a.
New Jersey. Editura Prentince Hall.
Ziemer, R. E., Ziemer, Tranter, W. H.. 1995. Principles of Communications, Ediția a 4-a,
New York, Editura John Wiley and Sons Inc.
International Telecommunication Union.1993. ITU-T Recommendation V.32.
http://www.complextoreal.com/chapters/tcm.pdf.
ANEXE
ANEXA 1
ANEXA 2
clear all;
Tb=1;
f=0:0.01:4;
M1=4;
M2=16
M3=64;
s1=2.*log2(M1).*sinc(Tb.*f.*log2(M1)).*sinc(Tb.*f.*log2(M1));
s2=2.*log2(M2).*sinc(Tb.*f.*log2(M2)).*sinc(Tb.*f.*log2(M2));
s3=2.*log2(M3).*sinc(Tb.*f.*log2(M3)).*sinc(Tb.*f.*log2(M3));
s4=sinc(Tb.*f).*sinc(Tb.*f);
plot(f,s1,'r');hold on;
plot(f,s2,'g');
plot(f,s3,'b');
plot(f,s4,'m');
ANEXA 3
clear all;
er=[0.0020,8.0288e-004,2.7365e-004,7.3810e-005,1.1549e-005,1.0042e-006,0];
f=5:1:11;
plot(f,er);hold on;
ANEXA 4
Model {
Name "tcmqam"
Version 6.3
MdlSubVersion 0
GraphicalInterface {
NumRootInports 0
NumRootOutports 0
ParameterArgumentNames ""
ComputedModelVersion "1.179"
NumModelReferences 0
NumTestPointedSignals 0
}
SavedCharacterEncoding "ibm-5346_P100-1998"
SaveDefaultBlockParams on
SampleTimeColors off
LibraryLinkDisplay "none"
WideLines off
ShowLineDimensions off
ShowPortDataTypes off
ShowLoopsOnError on
IgnoreBidirectionalLines off
ShowStorageClass off
ShowTestPointIcons on
ShowViewerIcons on
SortedOrder off
ExecutionContextIcon off
ShowLinearizationAnnotations on
RecordCoverage off
CovPath "/"
CovSaveName "covdata"
CovMetricSettings "dw"
CovNameIncrementing off
CovHtmlReporting on
covSaveCumulativeToWorkspaceVar on
CovSaveSingleToWorkspaceVar on
CovCumulativeVarName "covCumulativeData"
CovCumulativeReport off
CovReportOnPause on
ScopeRefreshTime 0.035000
OverrideScopeRefreshTime on
DisableAllScopes off
DataTypeOverride "UseLocalSettings"
MinMaxOverflowLogging "UseLocalSettings"
MinMaxOverflowArchiveMode "Overwrite"
BlockNameDataTip off
BlockParametersDataTip on
BlockDescriptionStringDataTip off
ToolBar on
StatusBar on
BrowserShowLibraryLinks off
BrowserLookUnderMasks off
CloseFcn ";slview('closediagram',bdroot);"
Created "Sat Oct 20 12:56:16 2001"
UpdateHistory "UpdateHistoryNever"
ModifiedByFormat "%<Auto>"
LastModifiedBy "kiario"
ModifiedDateFormat "%<Auto>"
LastModifiedDate "Sun Jul 05 12:34:47 2009"
ModelVersionFormat "1.%<AutoIncrement:179>"
ConfigurationManager "none"
LinearizationMsg "none"
Profile off
ParamWorkspaceSource "MATLABWorkspace"
AccelSystemTargetFile "accel.tlc"
AccelTemplateMakefile "accel_default_tmf"
AccelMakeCommand "make_rtw"
TryForcingSFcnDF off
ExtModeBatchMode off
ExtModeEnableFloating on
ExtModeTrigType "manual"
ExtModeTrigMode "oneshot"
ExtModeTrigPort "1"
ExtModeTrigElement "any"
ExtModeTrigDuration 1000
ExtModeTrigDurationFloating "auto"
ExtModeTrigHoldOff 0
ExtModeTrigDelay 0
ExtModeTrigDirection "rising"
ExtModeTrigLevel 0
ExtModeArchiveMode "off"
ExtModeAutoIncOneShot off
ExtModeIncDirWhenArm off
ExtModeAddSuffixToVar off
ExtModeWriteAllDataToWs off
ExtModeArmWhenConnect off
ExtModeSkipDownloadWhenConnect off
ExtModeLogAll on
ExtModeAutoUpdateStatusClock on
BufferReuse on
StrictBusMsg "None"
ProdHWDeviceType "32-bit Generic"
ShowModelReferenceBlockVersion off
ShowModelReferenceBlockIO off
Array {
Type "Handle"
Dimension 1
Simulink.ConfigSet {
$ObjectID 1
Version "1.1.0"
Array {
Type "Handle"
Dimension 7
Simulink.SolverCC {
$ObjectID 2
Version "1.1.0"
StartTime "0.0"
StopTime "19915900/96000"
AbsTol "1e-6"
FixedStep "auto"
InitialStep "auto"
MaxNumMinSteps "-1"
MaxOrder 5
ExtrapolationOrder 4
NumberNewtonIterations 1
MaxStep "auto"
MinStep "auto"
RelTol "1e-3"
SolverMode "SingleTasking"
Solver "ode45"
SolverName "ode45"
ZeroCrossControl "UseLocalSettings"
AlgebraicLoopSolver "TrustRegion"
SolverResetMethod "Fast"
PositivePriorityOrder off
AutoInsertRateTranBlk off
SampleTimeConstraint "Unconstrained"
RateTranMode "Deterministic"
}
Simulink.DataIOCC {
$ObjectID 3
Version "1.1.0"
Decimation "1"
ExternalInput "[t, u]"
FinalStateName "xFinal"
InitialState "xInitial"
LimitDataPoints off
MaxDataPoints "1000"
LoadExternalInput off
LoadInitialState off
SaveFinalState off
SaveFormat "Array"
SaveOutput on
SaveState off
SignalLogging on
InspectSignalLogs off
SaveTime on
StateSaveName "xout"
TimeSaveName "tout"
OutputSaveName "yout"
SignalLoggingName "logsout"
OutputOption "RefineOutputTimes"
OutputTimes "[]"
Refine "1"
}
Simulink.OptimizationCC {
$ObjectID 4
Array {
Type "Cell"
Dimension 5
Cell "ZeroExternalMemoryAtStartup"
Cell "ZeroInternalMemoryAtStartup"
Cell "InitFltsAndDblsToZero"
Cell "OptimizeModelRefInitCode"
Cell "NoFixptDivByZeroProtection"
PropName "DisabledProps"
}
Version "1.1.0"
BlockReduction on
BooleanDataType off
ConditionallyExecuteInputs on
InlineParams off
InlineInvariantSignals on
OptimizeBlockIOStorage on
BufferReuse on
EnforceIntegerDowncast on
ExpressionFolding on
FoldNonRolledExpr on
LocalBlockOutputs on
ParameterPooling on
RollThreshold 5
SystemCodeInlineAuto off
StateBitsets off
DataBitsets off
UseTempVars off
ZeroExternalMemoryAtStartup on
ZeroInternalMemoryAtStartup on
InitFltsAndDblsToZero on
NoFixptDivByZeroProtection off
EfficientFloat2IntCast off
OptimizeModelRefInitCode off
LifeSpan "inf"
BufferReusableBoundary on
}
Simulink.DebuggingCC {
$ObjectID 5
Version "1.1.0"
RTPrefix "error"
ConsistencyChecking "none"
ArrayBoundsChecking "none"
SignalInfNanChecking "none"
ReadBeforeWriteMsg "UseLocalSettings"
WriteAfterWriteMsg "UseLocalSettings"
WriteAfterReadMsg "UseLocalSettings"
AlgebraicLoopMsg "warning"
ArtificialAlgebraicLoopMsg "warning"
CheckSSInitialOutputMsg on
CheckExecutionContextPreStartOutputMsg off
CheckExecutionContextRuntimeOutputMsg off
SignalResolutionControl "TryResolveAllWithWarning"
BlockPriorityViolationMsg "warning"
MinStepSizeMsg "warning"
SolverPrmCheckMsg "none"
InheritedTsInSrcMsg "warning"
DiscreteInheritContinuousMsg "warning"
MultiTaskDSMMsg "warning"
MultiTaskRateTransMsg "error"
SingleTaskRateTransMsg "none"
TasksWithSamePriorityMsg "warning"
SigSpecEnsureSampleTimeMsg "warning"
CheckMatrixSingularityMsg "none"
IntegerOverflowMsg "warning"
Int32ToFloatConvMsg "warning"
ParameterDowncastMsg "error"
ParameterOverflowMsg "error"
ParameterUnderflowMsg "none"
ParameterPrecisionLossMsg "warning"
UnderSpecifiedDataTypeMsg "none"
UnnecessaryDatatypeConvMsg "none"
VectorMatrixConversionMsg "none"
InvalidFcnCallConnMsg "error"
FcnCallInpInsideContextMsg "Use local settings"
SignalLabelMismatchMsg "none"
UnconnectedInputMsg "warning"
UnconnectedOutputMsg "warning"
UnconnectedLineMsg "warning"
SFcnCompatibilityMsg "none"
UniqueDataStoreMsg "none"
BusObjectLabelMismatch "warning"
RootOutportRequireBusObject "warning"
AssertControl "UseLocalSettings"
EnableOverflowDetection off
ModelReferenceIOMsg "none"
ModelReferenceVersionMismatchMessage "none"
ModelReferenceIOMismatchMessage "none"
ModelReferenceCSMismatchMessage "none"
ModelReferenceSimTargetVerbose off
UnknownTsInhSupMsg "warning"
ModelReferenceDataLoggingMessage "warning"
ModelReferenceSymbolNameMessage "warning"
ModelReferenceExtraNoncontSigs "error"
}
Simulink.HardwareCC {
$ObjectID 6
Version "1.1.0"
ProdBitPerChar 8
ProdBitPerShort 16
ProdBitPerInt 32
ProdBitPerLong 32
ProdIntDivRoundTo "Undefined"
ProdEndianess "Unspecified"
ProdWordSize 32
ProdShiftRightIntArith on
ProdHWDeviceType "32-bit Generic"
TargetBitPerChar 8
TargetBitPerShort 16
TargetBitPerInt 32
TargetBitPerLong 32
TargetShiftRightIntArith on
TargetIntDivRoundTo "Undefined"
TargetEndianess "Unspecified"
TargetWordSize 32
TargetTypeEmulationWarnSuppressLevel 0
TargetPreprocMaxBitsSint 32
TargetPreprocMaxBitsUint 32
TargetHWDeviceType "Specified"
TargetUnknown on
ProdEqTarget on
}
Simulink.ModelReferenceCC {
$ObjectID 7
Version "1.1.0"
UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange"
CheckModelReferenceTargetMessage "error"
ModelReferenceNumInstancesAllowed "Multi"
ModelReferencePassRootInputsByReference on
ModelReferenceMinAlgLoopOccurrences off
}
Simulink.RTWCC {
$BackupClass "Simulink.RTWCC"
$ObjectID 8
Array {
Type "Cell"
Dimension 1
Cell "IncludeHyperlinkInReport"
PropName "DisabledProps"
}
Version "1.1.0"
SystemTargetFile "grt.tlc"
GenCodeOnly off
MakeCommand "make_rtw"
TemplateMakefile "grt_default_tmf"
GenerateReport off
SaveLog off
RTWVerbose on
RetainRTWFile off
ProfileTLC off
TLCDebug off
TLCCoverage off
TLCAssert off
ProcessScriptMode "Default"
ConfigurationMode "Optimized"
ConfigAtBuild off
IncludeHyperlinkInReport off
LaunchReport off
TargetLang "C"
Array {
Type "Handle"
Dimension 2
Simulink.CodeAppCC {
$ObjectID 9
Array {
Type "Cell"
Dimension 9
Cell "IgnoreCustomStorageClasses"
Cell "InsertBlockDesc"
Cell "SFDataObjDesc"
Cell "SimulinkDataObjDesc"
Cell "DefineNamingRule"
Cell "SignalNamingRule"
Cell "ParamNamingRule"
Cell "InlinedPrmAccess"
Cell "CustomSymbolStr"
PropName "DisabledProps"
}
Version "1.1.0"
ForceParamTrailComments off
GenerateComments on
IgnoreCustomStorageClasses on
IncHierarchyInIds off
MaxIdLength 31
PreserveName off
PreserveNameWithParent off
ShowEliminatedStatement off
IncAutoGenComments off
SimulinkDataObjDesc off
SFDataObjDesc off
IncDataTypeInIds off
PrefixModelToSubsysFcnNames on
CustomSymbolStr "$R$N$M"
MangleLength 1
DefineNamingRule "None"
ParamNamingRule "None"
SignalNamingRule "None"
InsertBlockDesc off
SimulinkBlockComments on
EnableCustomComments off
InlinedPrmAccess "Literals"
ReqsInCode off
}
Simulink.GRTTargetCC {
$BackupClass "Simulink.TargetCC"
$ObjectID 10
Array {
Type "Cell"
Dimension 12
Cell "IncludeMdlTerminateFcn"
Cell "CombineOutputUpdateFcns"
Cell "SuppressErrorStatus"
Cell "ERTCustomFileBanners"
Cell "GenerateSampleERTMain"
Cell "MultiInstanceERTCode"
Cell "PurelyIntegerCode"
Cell "SupportNonFinite"
Cell "SupportComplex"
Cell "SupportAbsoluteTime"
Cell "SupportContinuousTime"
Cell "SupportNonInlinedSFcns"
PropName "DisabledProps"
}
Version "1.1.0"
TargetFcnLib "ansi_tfl_tmw.mat"
TargetLibSuffix ""
TargetPreCompLibLocation ""
GenFloatMathFcnCalls "ANSI_C"
UtilityFuncGeneration "Auto"
GenerateFullHeader on
GenerateSampleERTMain off
IsPILTarget off
ModelReferenceCompliant on
IncludeMdlTerminateFcn on
CombineOutputUpdateFcns off
SuppressErrorStatus off
IncludeFileDelimiter "Auto"
ERTCustomFileBanners off
SupportAbsoluteTime on
LogVarNameModifier "rt_"
MatFileLogging on
MultiInstanceERTCode off
SupportNonFinite on
SupportComplex on
PurelyIntegerCode off
SupportContinuousTime on
SupportNonInlinedSFcns on
ExtMode off
ExtModeStaticAlloc off
ExtModeTesting off
ExtModeStaticAllocSize 1000000
ExtModeTransport 0
ExtModeMexFile "ext_comm"
RTWCAPISignals off
RTWCAPIParams off
RTWCAPIStates off
GenerateASAP2 off
}
PropName "Components"
}
}
PropName "Components"
}
Name "Configuration"
SimulationMode "normal"
CurrentDlgPage "Solver"
}
PropName "ConfigurationSets"
}
Simulink.ConfigSet {
$PropName "ActiveConfigurationSet"
$ObjectID 1
}
BlockDefaults {
Orientation "right"
ForegroundColor "black"
BackgroundColor "white"
DropShadow off
NamePlacement "normal"
FontName "Helvetica"
FontSize 10
FontWeight "normal"
FontAngle "normal"
ShowName on
}
BlockParameterDefaults {
Block {
BlockType Constant
Value "1"
VectorParams1D on
OutDataTypeMode "Inherit from 'Constant value'"
OutDataType "sfix(16)"
ConRadixGroup "Use specified scaling"
OutScaling "2^0"
SampleTime "inf"
}
Block {
BlockType EnablePort
StatesWhenEnabling "held"
ShowOutputPort off
ZeroCross on
}
Block {
BlockType FrameConversion
OutFrame "Frame based"
}
Block {
BlockType From
IconDisplay "Tag"
}
Block {
BlockType Goto
IconDisplay "Tag"
}
Block {
BlockType Ground
}
Block {
BlockType Inport
Port "1"
UseBusObject off
BusObject "BusObject"
BusOutputAsStruct off
PortDimensions "-1"
SampleTime "-1"
DataType "auto"
OutDataType "sfix(16)"
OutScaling "2^0"
SignalType "auto"
SamplingMode "auto"
LatchByDelayingOutsideSignal off
LatchByCopyingInsideSignal off
Interpolate on
}
Block {
BlockType Logic
Operator "AND"
Inputs "2"
AllPortsSameDT on
OutDataTypeMode "Logical (see Configuration Parameters: Optimiza"
"tion)"
LogicDataType "uint(8)"
SampleTime "-1"
}
Block {
BlockType Math
Operator "exp"
OutputSignalType "auto"
SampleTime "-1"
OutDataTypeMode "Same as first input"
OutDataType "sfix(16)"
OutScaling "2^0"
LockScale off
RndMeth "Floor"
SaturateOnIntegerOverflow on
}
Block {
BlockType Outport
Port "1"
UseBusObject off
BusObject "BusObject"
BusOutputAsStruct off
PortDimensions "-1"
SampleTime "-1"
DataType "auto"
OutDataType "sfix(16)"
OutScaling "2^0"
SignalType "auto"
SamplingMode "auto"
OutputWhenDisabled "held"
InitialOutput "[]"
}
Block {
BlockType Product
Inputs "2"
Multiplication "Element-wise(.*)"
InputSameDT on
OutDataTypeMode "Same as first input"
OutDataType "sfix(16)"
OutScaling "2^0"
LockScale off
RndMeth "Zero"
SaturateOnIntegerOverflow on
SampleTime "-1"
}
Block {
BlockType RelationalOperator
Operator ">="
InputSameDT on
LogicOutDataTypeMode "Logical (see Configuration Parameters: Optimiza"
"tion)"
LogicDataType "uint(8)"
ZeroCross on
SampleTime "-1"
}
Block {
BlockType Scope
ModelBased off
TickLabels "OneTimeTick"
ZoomMode "on"
Grid "on"
TimeRange "auto"
YMin "-5"
YMax "5"
SaveToWorkspace off
SaveName "ScopeData"
LimitDataPoints on
MaxDataPoints "5000"
Decimation "1"
SampleInput off
SampleTime "-1"
}
Block {
BlockType Selector
InputType "Vector"
IndexMode "One-based"
ElementSrc "Internal"
Elements "1"
RowSrc "Internal"
Rows "1"
ColumnSrc "Internal"
Columns "1"
InputPortWidth "-1"
IndexIsStartValue off
OutputPortSize "1"
}
Block {
BlockType "S-Function"
FunctionName "system"
SFunctionModules "''"
PortCounts "[]"
}
Block {
BlockType SubSystem
ShowPortLabels on
Permissions "ReadWrite"
PermitHierarchicalResolution "All"
SystemSampleTime "-1"
RTWFcnNameOpts "Auto"
RTWFileNameOpts "Auto"
SimViewingDevice off
DataTypeOverride "UseLocalSettings"
MinMaxOverflowLogging "UseLocalSettings"
}
Block {
BlockType Sum
IconShape "rectangular"
Inputs "++"
InputSameDT on
OutDataTypeMode "Same as first input"
OutDataType "sfix(16)"
OutScaling "2^0"
LockScale off
RndMeth "Floor"
SaturateOnIntegerOverflow on
SampleTime "-1"
}
Block {
BlockType Terminator
}
}
AnnotationDefaults {
HorizontalAlignment "center"
VerticalAlignment "middle"
ForegroundColor "black"
BackgroundColor "white"
DropShadow off
FontName "Helvetica"
FontSize 10
FontWeight "normal"
FontAngle "normal"
}
LineDefaults {
FontName "Helvetica"
FontSize 9
FontWeight "normal"
FontAngle "normal"
}
System {
Name "tcm_qam1ultim"
Location [2, 82, 1014, 718]
Open on
ModelBrowserVisibility off
ModelBrowserWidth 200
ScreenColor "white"
PaperOrientation "landscape"
PaperPositionMode "auto"
PaperType "usletter"
PaperUnits "inches"
ZoomFactor "100"
ReportName "simulink-default.rpt"
Block {
BlockType Reference
Name "AWGN\nChannel"
Ports [1, 1]
Position [280, 229, 330, 271]
SourceBlock "commchan3/AWGN\nChannel"
SourceType "AWGN Channel"
ShowPortLabels on
seed "67"
noiseMode "Signal to noise ratio (SNR)"
EbNodB "10"
EsNodB "40"
SNRdB "10"
bitsPerSym "1"
Ps "1"
Tsym "1"
variance "1"
}
Block {
BlockType Reference
Name "Align Signals"
Ports [2, 3]
Position [440, 118, 520, 162]
SourceBlock "commutil2/Align Signals"
SourceType "Align Signals"
ShowPortLabels on
corrLength "200"
stopUpdate off
numConstDelay "3"
}
Block {
BlockType Reference
Name "Error Rate\nCalculation"
Ports [2, 1]
Position [540, 114, 600, 161]
SourceBlock "commsink2/Error Rate\nCalculation"
SourceType "Error Rate Calculation"
N "0"
st_delay "0"
cp_mode "Entire frame"
subframe "[]"
PMode "Port"
WsName "ErrorVec"
RsMode2 off
stop off
numErr "100"
maxBits "1e6"
}
Block {
BlockType Reference
Name "Rectangular QAM\nTCM Decoder"
Ports [1, 1]
Position [360, 225, 415, 275]
SourceBlock "commdigbbndtcm2/Rectangular QAM\nTCM Decoder"
SourceType "Rectangular QAM TCM Decoder"
trellis "poly2trellis([3 1 1], [ 5 2 0 0; 0 0 1 0; 0 0 0"
" 1])"
M "16"
tbdepth "21"
opmode "Continuous"
reset off
outDtype "double"
}
Block {
BlockType Reference
Name "Rectangular QAM\nTCM Encoder"
Ports [1, 1]
Position [185, 227, 255, 273]
SourceBlock "commdigbbndtcm2/Rectangular QAM\nTCM Encoder"
SourceType "Rectangular QAM TCM Encoder"
ShowPortLabels on
trellis "poly2trellis([3 1 1], [ 5 2 0 0; 0 0 1 0; 0 0 0"
" 1])"
M "16"
outDtype "double"
}
Block {
BlockType Scope
Name "Scope1"
Ports [1]
Position [620, 224, 650, 256]
Floating off
Location [132, 374, 924, 577]
Open off
NumInputPorts "1"
ZoomMode "yonly"
List {
ListType AxesTitles
axes1 "%<SignalLabel>"
}
TimeRange "0.06"
YMin "-0.2"
YMax "1.3"
DataFormat "StructureWithTime"
SampleInput on
SampleTime "0"
}
Block {
BlockType Reference
Name "Sequence\nGenerator"
Ports [0, 1]
Position [65, 133, 145, 177]
SourceBlock "commseqgen2/PN Sequence\nGenerator"
SourceType "PN Sequence Generator"
poly "[1 0 0 0 0 0 1 1]"
ini_sta "[0 0 0 0 0 0 0]"
shift "0"
Ts "1/9600"
frameBased on
sampPerFrame "3"
reset off
outDataType "double"
}
Line {
SrcBlock "Rectangular QAM\nTCM Encoder"
SrcPort 1
DstBlock "AWGN\nChannel"
DstPort 1
}
Line {
SrcBlock "Error Rate\nCalculation"
SrcPort 1
DstBlock "Scope1"
DstPort 1
}
Line {
SrcBlock "AWGN\nChannel"
SrcPort 1
DstBlock "Rectangular QAM\nTCM Decoder"
DstPort 1
}
Line {
SrcBlock "Sequence\nGenerator"
SrcPort 1
Points [10, 0]
Branch {
Points [0, 95]
DstBlock "Rectangular QAM\nTCM Encoder"
DstPort 1
}
Branch {
Points [0, -25]
DstBlock "Align Signals"
DstPort 1
}
}
Line {
SrcBlock "Rectangular QAM\nTCM Decoder"
SrcPort 1
Points [5, 0]
DstBlock "Align Signals"
DstPort 2
}
Line {
SrcBlock "Align Signals"
SrcPort 1
DstBlock "Error Rate\nCalculation"
DstPort 1
}
Line {
SrcBlock "Align Signals"
SrcPort 2
DstBlock "Error Rate\nCalculation"
DstPort 2
}
}
}
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: Transmisiuni de Date Maq 2d Codata Trellis (ID: 161760)
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.
