Documente Academic
Documente Profesional
Documente Cultură
Modulaţie Codată
5
1. Zoom-out asupra codării de canal
Trellis
1.1. Premise
Tehnicile de codare de canal protejează datele digitale de erori, introducând o anumită redundanţă în
secvenţa de date. Codurile de canal pot fi folosite fie pentru detecţia de erori, numindu-se coduri detectoare
de erori, fie pentru detecţia şi corecţia de erori, numindu-se coduri corectoare de erori.
În 1948, Shannon a demonstrat că erorile ce apar la transmisia pe un canal zgomotos pot fi reduse la
orice nivel dorit, prin alegerea unei tehnici de codare corespunzătoare, fără a înrăutăţi rata de transfer a
informaţiei. Formula lui Shannon aplicabilă pentru canale AWGN care exprimă capacitatea canalelor de
comunicaţie este dată de relaţia (1), în care C reprezintă capacitatea canalului (în biţi pe secundă), B este
banda semnalului transmis (în Hz ), P semnifică puterea semnalului recepţionat (în W ), iar N 0 este
densitatea spectrală de putere unilaterală a zgomotului (în W Hz ). Puterea recepţionată la receptor este dată
de relaţia (2), în care Eb este energia de bit medie, iar Rb este rata de bit a transmisiei. Ecuaţia (1) poate fi
normalizată la banda de transmisie, rezultând relaţia (3), în care C B denotă eficienţa de bandă.
P P
C= B log 2 1 + = B log 2 1 + (1)
N 0
B N
P = Eb Rb (2)
C E R
= log 2 1 + b b (3)
B N0 B
Principalul scop al tehnicilor de detecţie şi corecţie a erorilor este acela de a îmbunătăţi calitatea
transmisiei într-o legătură de comunicaţie, prin introducerea unui grad de redundanţă în fluxul de date.
Introducerea unor biţi redundanţi implică o creştere a fluxului de date transmis şi, prin urmare, şi o creştere a
necesarului de bandă a canalului, în condiţiile în care se doreşte a nu se afecta rata de transmisie a sursei de
date. Acest fapt conduce la reducerea eficienţei de bandă a legăturii de date atunci când transmisia este
caracterizată de un raport SNR ridicat, însă atunci când transmisia are loc în condiţii de raport SNR redus,
performanţele transmisiei cresc considerabil în termeni de BER .
Un circuit de codare de canal operează asupra mesajelor digitale produse de sursa de informaţie prin
transformarea lor în secvenţe de cod adecvate transmisiei pe canalul de comunicaţie. Există trei categorii de
bază de coduri detectoare şi corectoare de erori: codurile bloc, codurile convoluţionale şi codurile turbo.
Pagina 74
Modulaţie Codată Trellis
0 0
A= (8)
0 1
Faţă de cazul special tocmai considerat, când N = 2m ( m fiind o valoare întreagă pozitivă), codurile
Hadamarad pot avea şi alte lungimi, dar atunci nu mai sunt liniare.
Codurile Golay – Aceste coduri reprezintă un caz special netrivial de coduri binare liniare ( 23, 21) ,
având distanţa minimă egală cu 7 şi capacitatea de a corecta 3 biţi eronaţi.
Codurile ciclice – Acestea sunt o submulţime a clasei de coduri liniare, submulţime de coduri care
satisfac proprietatea de ciclicitate. Ca rezultat al acestei proprietăţi, aceste coduri posedă o structură
repetitivă, repetitivitate ce poate fi exploatată la codare, respectiv decodare.
Un cod ciclic poate fi generat folosind un polinom generator g ( p ) de grad ( n − k ) . Polinomul
generator al unui cod ciclic ( n, k ) este factor al polinomului p n + 1 şi are forma generală (9).
g ( p=
) p n−k + g n−k −1 p n−k −1 + ... + g1 p + 1 (9)
Un mesaj informaţional poate fi scris sub formă polinomială conform relaţiei (10), în care
( xk −1 ,..., x0 ) reprezintă cei k biţi de informaţie. Cuvântul de cod rezultat poate fi scris sub forma (11), în
care c ( p ) este un polinom de grad mai mic decât n .
( p ) xk −1 p k −1 + ... + x1 p + x0
x= (10)
c=( p) x( p) ⋅ g ( p) (11)
Implementarea unui codor pentru un cod ciclic se realizează de obicei cu un registru liniar de
deplasare cu reacţie, bazat fie pe polinomul generator, fie pe polinomul de paritate.
Codurile BCH – Aceste coduri ciclice sunt printre cele mai importante coduri bloc, având în vedere
faptul că ele există pentru o varietate de rate de codare, au câştiguri de codare ridicate şi pot fi implementate
pentru viteze mari de transmisie. Lungimea blocului unui cod este = n 2m − 1 , pentru m ≥ 3 , iar numărul
( )
erorilor corectabile este limitat la t < 2m − 1 2 . Codurile BCH binare pot fi generalizate pentru a crea clase
de coduri nonbinare utilizând m biţi pe simbol. Cea mai importantă şi mai cunoscută în acelaşi timp clasă de
coduri BCH sunt codurile Reed-Solomon.
Codurile Reed-Solomon (RS) – Acestea sunt coduri nonbinare care au capacitatea de a corecta erori
grupate (erori de burst) şi de obicei sunt utilizate în conjuncţie cu alte coduri în cadrul unor sisteme de codare
concatenate. Lungimea blocului acestui cod este = n 2m − 1 . Aceasta poate fi însă extinsă la 2m sau 2m + 1 .
Numărul simbolurilor de paritate care trebuie utilizate pentru a corecta un număr de e erori este n − k = 2e ,
iar distanţa minimă este d min= 2e + 1 . Codurile RS sunt cele care ating valoarea cea mai mare a distanţei
minime comparate cu toate celelalte coduri liniare.
1 2 n
Secvenţa codată (n biţi)
Figura 1. Structura generală a unui codor convoluţional.
Un cod convoluţional este generat prin trecerea secvenţei de date printr-un registru de deplasare cu
un număr finit de stări. La modul general, un registru conţine N nivele (celule de deplasare) a câte k biţi şi
n funcţii generatoare liniare, bazate pe polinoamele generatoare, conform schiţei din Figura 1. Datele de
Pagina 75
Tehnici de Comunicaţii Digitale
intrare sunt deplasate în cadrul registrului de deplasare (shift register) câte k biţi odată. Rata de codare este
Rc = k n . Parametrul N este denumit lungime de constrângere şi indică numărul de simboluri (de date) de
intrare de care depinde ieşirea codorului la un moment dat. Acest parametru indică, cât de puternic şi
complex este codul. În continuare sunt evidenţiate câteva modalităţi de reprezentare a codurilor
convoluţionale.
Matricea generatoare – Matricea generatoare a unui cod convoluţional poate defini codul, însă este
semi-infinită deoarece intrarea are lungime semi-infinită. Prin urmare, aceasta nu este o metodă convenientă
de reprezentare a unui cod convoluţional.
Polinoamele generatoare – Pentru codurile convoluţionale se specifică o mulţime de n vectori, câte
unul pentru fiecare dintre cele n sumatoare modulo 2. Fiecare vector, de dimensiune N ⋅ k indică,
conectarea codorului la sumatorul modulo 2. Un „1” pe poziţia „i” a vectorului indică faptul că celula
corespunzătoare din registrul de deplasare are conexiune către sumatorul respectiv, iar un „0” indică absenţa
unei astfel de legături.
Tabelul logic – Un astfel de tabel se poate construi pentru a indica ieşirile codorului convoluţional şi
starea codorului pentru toate secvenţele de intrare în codor.
Diagrama de stări – De vreme ce ieşirea codorului depinde de intrare şi de starea curentă a codorului,
se poate utiliza o diagramă de stări pentru a reprezenta procesul de codare. Diagrama de stări este pur şi
simplu un graf al tuturor stărilor posibile precum şi a tranziţiilor posibile între stări.
Diagrama arbore – Aceasta reprezintă structura codorului sub forma unui arbore, în funcţie de stările
şi ieşirile codorului.
Diagrama trellis – La o privire mai atentă asupra arborelui, se poate observa că structura acestuia se
repetă atunci când numărul de celule de deplasare (fiecare pe câte k biţi) este mai mare decât lungimea de
constrângere. Se poate observa că ramurile ce provin din două noduri având aceeaşi stare sunt identice în
sensul că acestea generează secvenţe de ieşire identice. Aceasta înseamnă că cele două noduri având aceeaşi
etichetă se pot contopi. În urma acestui proces de contopire, se obţine o altă diagramă, numită diagramă
trellis, care este o reprezentare mai compactă.
Starea a
Starea b
Starea c
Starea d
Timp
Pagina 77
Tehnici de Comunicaţii Digitale
bit de informaţie, codorul mai este alimentat cu încă două zerouri. Aceasta însemnă că secvenţa de
informaţie transmisă este de fapt x1 = (110101100 ) . Folosind această secvenţă rezultă prin codare cuvântul de
cod c = (111010000100101011) .
Starea S0 -> 00
Starea S1 -> 01
Starea S2 -> 10
Starea S3 -> 11
1 n n −i
PB ≅ ∑
n i = t +1
i ⋅ Cin ⋅ Pci (1 − Pc ) (17)
Prin urmare, dacă se cunoaşte probabilitatea de eroare caracteristică canalului de comunicaţie, rata
de eronare a mesajelor decodate (de informaţie utilă) este uşor de determinat. Iar câştigul de codare este o
măsură a valorii raportului semnal – zgomot necesar suplimentar pentru ca probabilitatea de eroare a unui
sistem de comunicaţii ce nu foloseşte o tehnică de codare să aibă aceeaşi valoare ca şi când ar folosi.
Pagina 81
Tehnici de Comunicaţii Digitale
cod cu rata de codare 2 3 în combinaţie cu o schemă de modulaţie 8PSK nu va produce creşterea benzii
semnalului transmis.
În cele ce urmează se doreşte determinarea câştigului de codare obţinut printr-o astfel de schemă de
modulaţie însoţită de codare. Presupunând că puterea de emisie este P , iar rata de bit R = 1 Tb , este evident
că legătura dintre energia de bit şi puterea de emisie, în valori medii, în cazul când nu se foloseşte nici
not
tehnică de codare este dată de relaţia (19), iar distanţa minimă Euclidiană d BPSK ,min = d este, după cum
sugerează şi Figura 6, dată de relaţia (20).
P
Eb = (19)
R
4P
d2 = (20)
R
Q
d
− Eb Eb I
Această pierdere trebuie compensată prin codare. Este firesc însă ca rata de codare de 2 3 propusă
aici pentru a-şi justifica utilizarea trebuie nu numai să compenseze această pierdere, dar trebuie să ofere chiar
un câştig suplimentar. Poate fi utilizat orice cod bloc sau convoluţional care oferă distanţa minimă necesară
obţinerii câştigului de codare dorit. De exemplu, dacă se doreşte ca prin combinarea tehnicii de modulaţie cu
cea de codare să se obţină un câştig de 3dB , atunci codul trebuie să ofere un câştig de codare de 8.33dB
pentru a compensa şi pierderea celor 5.33dB prin schimbarea tehnicii de codare. Problema este că obţinerea
unui astfel de câştig de codare se poate realiza printr-un cod complex (cu o lungime de constrângere mare) ce
necesită o implementare complicată a codorului, respectiv decodorului. Totuşi, prin interpretarea tehnicilor
de modulaţie şi codare ca o entitate unică, se pot obţine performanţe asemănătoare, dar printr-o schemă de
codare mult mai simplă, după cum se va vedea în secţiunea următoare.
Pagina 82
Modulaţie Codată Trellis
0 4 2 6 1 5 3 7
Figura 8. Partiţionarea unei constelaţii 8PSK.
Un exemplu de partiţionare a mulţimii punctelor unei constelaţii este ilustrat în Figura 8. Se porneşte
de la o constelaţie 8PSK având energia de simbol Es . Distanţa minimă între punctele acestei constelaţii este
dată de relaţia (24).
Pagina 83
Tehnici de Comunicaţii Digitale
=
d0 (2 − 2 ) E s (24)
Această constelaţie este partiţionată în două submulţimi similare notate cu B0 şi B1 . Există mai
multe modalităţi în care constelaţia originală 8PSK poate fi partiţionată în două submulţimi, însă B0 şi B1
oferă o distanţă de valoare maximă între punctele cele mai apropiate ale aceleiaşi submulţimi, distanţă dată
de relaţia (25).
d1 = 2 Es (25)
În continuare, B0 şi B1 sunt partiţionate la rândul lor, rezultând submulţimile C0 , C1 , C2 şi C3 .
Astfel, distanţă între punctele constelaţiei a crescut la valoarea dată de relaţia (26).
d 2 = 2 Es (26)
Se mai poate face încă un pas, obţinându-se opt partiţii, fiecare conţinând câte un punct al
constelaţiei. Submulţimile corespunzătoare sunt notate cu D0 , ..., D7 .
Un alt exemplu de partiţionare a mulţimii de puncte ale constelaţiei este cel din Figura 9 pentru
cazul unei modulaţii QAM.
Selectare
Codor submulţime
{1, 2,..., 2 }
binar n1
Punct din
constelaţia de
semnal
Selectare
Biţi punct din
necodaţi submulţime
{1, 2,..., 2 }
k2
Ieşirea codorului are n1 biţi. Aceşti biţi sunt utilizaţi pentru a alege una dintre cele 2n1 submulţimi.
Aceasta înseamnă că, constelaţia a fost divizată în 2n1 submulţimi. După alegerea sub-constelaţiei, cei k2
biţi rămaşi sunt folosiţi pentru alegerea unuia dintre punctele sub-constelaţiei alese. Aceasta înseamnă că
fiecare sub-constelaţiei are 2k2 puncte. Rezultă astfel un echilibru între dimensiunea sub-constelaţiilor şi
numărul de paşi de partiţionare efectuaţi.
Ungerboeck a arătat că prin alegerea n= 1 k1 + 1 şi k 2 = 1 şi folosirea unui cod convoluţional simplu
se poate obţine o schemă de modulaţie codată care să asigure un câştig total între 3 şi 6dB . O astfel de
schemă este cea ilustrată în Figura 11, în care k1 = 1 , n1 = 2 şi k2 = 1 . Constelaţia conţine 2n1 + k2 = 8 puncte,
care este împărţită în 2n1 = 4 submulţimi, fiecare conţinând 2k2 = 2 puncte. Constelaţia aleasă aici este
8PSK şi este partiţionată ca în Figura 8. Ca şi cod convoluţional, poate fi ales în acest exemplu orice cod cu
rata de codare k1 n1 = 1 2 . Lungimea de constrângere unui cod este un parametru de proiectare şi poate ales
pentru a obţine un anumit câştig de codare. Desigur că lungimi de constrângere mai mari oferă câştiguri de
codare mai ridicate, însă cu preţul unei complexităţi sporite a codorului şi a decodorului. În exemplul de faţă
se alege o lungime de constrângere egală cu 3 . Diagrama trellis (cu un singur nivel) a acestui cod este
reprezentată în Figura 11, alături de schema codorului, care este echivalentă cu cea din Figura 2, caracterizat
de diagrama de stări din Figura 3.
1
4 2
7 3
Intrare
(câte 1 bit)
6 0
5
Starea 00
Starea 10
Starea 01
Starea 11
Starea 000
Starea 010
Starea 100
Starea 110
Starea 001
Starea 011
Starea 101
Starea 111
Pagina 87
Tehnici de Comunicaţii Digitale
4. Cuprins
1. ZOOM-OUT ASUPRA CODĂRII DE CANAL .................................................................................................................... 73
1.1. Premise ............................................................................................................................................................. 73
1.2. Codurile bloc .................................................................................................................................................... 73
1.3. Proprietăţi ale codurilor bloc ........................................................................................................................... 74
1.4. Exemple de coduri bloc ..................................................................................................................................... 74
1.5. Codurile convoluţionale .................................................................................................................................... 75
1.6. Exemplu de cod convoluţional .......................................................................................................................... 76
1.7. Algoritmul Viterbi pentru decodarea codurilor convoluţionale........................................................................ 78
1.8. Câştigul de codare ............................................................................................................................................ 80
1.9. Codurile Turbo.................................................................................................................................................. 81
2. COMBINAREA TEHNICILOR DE CODARE ŞI MODULAŢIE .............................................................................................. 81
3. MODULAŢIA CODATĂ TRELLIS (TCM) ...................................................................................................................... 83
3.1. Principii de partiţionare a mulţimilor ............................................................................................................... 83
3.2. Modulaţie codată .............................................................................................................................................. 84
3.3. Decodarea codurilor TCM................................................................................................................................ 87
4. CUPRINS .................................................................................................................................................................... 88
Pagina 88