Efectul Puncturării asupra codurilor TURBO şi a decodării MAP Cîrlea D. Ovidiu Mihail 16 iunie 2009
Cuprins Descrierea codorului TURBO utilizat 2018-11-30 Descrierea codorului TURBO utilizat Codarea Turbo fără puncturare Puncturarea codului turbo Decodarea MAP Rezultate experimentale Concluzi
Descrierea Codorului TURBO Parallel Concatenated Convolutional Code (PCCC) Interleaver aleator între RSC1 şi RSC2 Reduce şansele ca ambele RSC-uri să genereze biţi de paritate de polaritae scăzuta în acelaşi timp Codoarele au câte doua registre de memorie Diagrame de codare trelis are doar 4 stări Codorul TURBO
Codorea TURBO Codul arătat mai sus este de rată 1/3 şi are două coduri RSC identice Diagrama trelis de codare este afişată mai jos Liniile roşi arată translaţia la recepţia unui 0 şi cele roşi la recepţia unui 1 În notaţia 1/11: Primul bit este bitul de intrare Următorii doi sunt biţI de cod: Primul este bitul sistematic şi este identic cu bitul de intrare Al doilea este bitul de paritate Ambele codoare folosesc această diagramă pentru codare
Codarea TURBO Secvenţa de intrare este: 1,0,1,0,1,0,0 şi este codată bipolar devenind: 1,-1,1,-1,1,-1,-1 Secvenţa prin primul codor Interleaverul aleator rearanjaează biţii astfel al doilea codor Cod 1 K=1 K=2 K=3 K=4 K=5 K=6 K=7 Sistematic 1 -1 Bit paritate, ENC 1 Întreţesare 1-2 1-3 2-4 3-1 4-5 5-2 6-6 7-7 Deîntreţesare 2-1 2-5 4-2 5-4 Cod 2 K=1 K=2 K=3 K=4 K=5 K=6 K=7 Sistematic 1 -1 Bit paritate, ENC 2
Codarea TURBO Diagrama trelis a secvenţei prin primul codor Diagrama trellis a secvenţei prin al doilea codor
Date recepţionate de DEC1 Codarea TURBO Secvenţa transmisă arată ca în tabel rata fiind de 1/3 biţii sunt transmişi pe coloană După trecerea secvenţei printr-un canal afectat de zgomot alb aditiv gaussian cu Es/N0=0.25 secvenţa va arăta astfel: Lc este o măsură a RSZ şi este 4x Es/N0=4x0.25=1 Transmitere K=1 K=2 K=3 K=4 K=5 K=6 K=7 Sistematic 1 -1 Paritate, ENC1 Paritate, ENC2 Recepţie K=1 K=2 K=3 K=4 K=5 K=6 K=7 Sistematic 2 1 3 -2 -4 -5 Paritate, ENC1 -1 Paritate, ENC2 6 5 -6 Date recepţionate de DEC1 K=1 K=2 K=3 K=4 K=5 K=6 K=7 Lcxs 2 1 3 -2 -4 -5 Lcx1p -1 Lcx2p 6 5 -6
Puncturarea Puncturarea este procedeul de ştergere a unor biţi din secvenţa turbocodată în scopul măririi ratei de codare şi implicit a eficienţei transmisiei. Din codul nostru de rată 1/3 se poate obţine unul de rată ½ Rata totală a turbocodului se calculează cu: Prin puncturare se şterg o parte din biţii de paritate după o matrice numită matrice de puncturare P. O matrice de puncturare folosită în acest caz poate fi: La recepţie, în locul biţilor şterşi se inserează zerouri, iar în algoritmul de decodare nu se ţine seama de de valoarea acestor biţi în calculul coeficienţilor γ pentru algoritmi de tip MAP. Astfel secvenţa transmisă către decodor este Transmitere K=1 K=2 K=3 K=4 K=5 K=6 K=7 Sistematic 1 -1 Paritate, ENC1 Paritate, ENC2
Decodarea MAP Metrica ramuri se calculează cu: Pentru ramura 1-1 la K=1; Metricile ramurilor pentru întreg semnaul În tabelul alăturat sunt afişate metricile parţiale necesare pentru calculul valorilor extrinseci Le -1 2 -5 4.4817 1 0.0302 0.2231 33.1155 K=1 K=2 K=3 K=4 K=5 K=6 K=7 γ(1,1) 4.48 0.22 0.36 7.38 20.08 γ(2,3) γ(3,4) 0.03 1.64 0.13 1.00 0.60 2.71 γ(4,2) γ(1,3) 0.04 γ(2,1) γ(3,2) 33.11 γ(4,4) K=1 K=2 K=3 K=4 K=5 K=6 K=7 γ(1,1) 12.18 0.36 1.64 2.71 0.60 γ(2,3) γ(3,4) 0.08 γ(4,2) γ(1,3) γ(2,1) 0.6 γ(3,2) γ(4,4)
Decodarea MAP Metrica forward se calculează cu formula Metrica forward se calculează pentru stări şi nu pentru ramuri Vom calcula întâi numărătorul după care numitorul pe care îl folosim pentru a normaliza valorile metricilor Metricile forward ale fiecărei stări şi numitorul care este sumă între ele Metricile forward normalzate necesare pentru calculul la momentul k=2 (s) K=0 K=1 K=2 K=3 K=4 K=5 K=6 K=7 (1) 1 4.48 0.02 0.03 0.16 0.35 0.47 (2) 0.00 6.87 0.05 1.59 0.71 0.22 (3) 4.26 0.12 6.97 0.10 13.74 0.95 (4) 0.07 0.25 0.59 0.21 6.76 Numitor 4.70 4.58 7.29 7.23 2.32 15.02 8.42 (s) K=0 K=1 K=2 K=3 K=4 K=5 K=6 K=7 (1) 1 0.95 0.04 0.01 0.02 0.03 0.05 (2) 0.94 0.68 (3) 0.93 0.96 0.91 0.11 (4) 0.25 0.80
Decodarea TURBO Metrica backword se calculează cu formula Metrica backword se calculează ca şi cea forward numai că în sensul înapoi. De data aceasta se începe cu ultima stare la timpul k=7 şi se continuă până la început Metricile backword ale stărilor Metricile bacword normalizate (s) K=1 K=2 K=3 K=4 K=5 K=6 K=7 (1) 0.3634 2.7979 2.6319 2.5766 26.855 20.085 1 (2) 2.7440 1.3419 0.0987 51.705 0.0666 0.0498 (3) 2.7810 0.2327 7.1484 0.0495 0.0012 0.0000 (4) 1.4400 7.2464 0.0237 0.0090 (s) K=1 K=2 K=3 K=4 K=5 K=6 K=7 (1) 0.0772 0.6097 0.3610 0.3561 11.5369 1.3371 1 (2) 0.5832 0.2924 0.0135 7.1451 0.0286 0.0033 (3) 0.5911 0.0507 0.9804 0.0068 0.0005 (4) 0.3061 1.5792 0.0039 Numitor 4.7048 4.5886 7.2910 7.2364 2.3278 15.0221 8.4209
Decodarea TURBO Calculul valorilor extrinseci: Sunt mărimile a-posteriori din log(…) Aceste sunt calculate în tabelul următor După care se împarte sumă din prima jumătate din tabel la sumă din a doua jumătate si reies valorile care trebuiesc logaritmate σ(s) Ramura Produs al K=1 K=2 K=3 K=4 K=5 K=6 K=7 σ(1) 1-1 0.9409 0.2137 0.0276 0.0045 0.1568 0.0582 0.0390 σ(2) 2-3 0.0000 0.0101 0.0175 σ(3) 3-4 0.2036 0.5533 0.0061 σ(4) 4-2 0.0001 0.0908 0.0003 1-3 0.0485 0.1313 0.0275 2-1 0.0014 0.1235 0.1370 0.33656 0.0288 3-2 0.0051 0.0208 0.3416 0.0167 0.0004 4-4
Decodarea MAP Acum putem calcula L(uk) care va decide dacă s-a transmis un 1 sau un -1 În mod normal decodareas nu se termină aici, probabilitatea a-posteriorii devine probabilitatea apriorii a decodorului 2 pentru o nouă iteraţie Decodorul continuă sa calculeze valorile extrinseci un număr fix de ori sau până converge Interleaver 1-3 2-4 3-1 4-5 5-2 6-6 7-7 L(uk) S-a decis S-a transmis -2.965 -1.118 -2.035 1.417 -0.060 1.750 -0.306 -2.035 -0.060 -2.965 -1.118 1.417 1.750 -0.306 2.000 1.000 3.000 -2.000 2.000 -4.000 -5.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 -0.965 -0.118 0.965 -0.583 1.940 -2.250 -5.306 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 Eroare L(extrinsec) Le, întreţesat
Rezultate experimentale Codarea TURBO cu şi fără puncturare şi decodarea MAP după 10 iteraţii cu RSZ variabil Codarea TURBO cu şi fără puncturare şi decodarea MAP după 10 iteraţii cu densitate de înregistrare variabilă
Rezultate experimentale Codarea TURBO cu şi fără puncturare şi decodarea MAP după 20 iteraţii cu RSZ variabil Codarea TURBO cu şi fără puncturare şi decodarea MAP după 20 iteraţii cu densitate de înregistrare variabilă
Concluzii Puncturarea duce la o rată de codare mai bună si la o eficientizare a ratei de transmisie însă cu costul degradării performanţei deoarece rata de eroare a bitului este mai mare decât în cazul fără puncturare. Codarea cu puncturare are BER aproape constant pentru RSZ variabil în comparaţie cu cea fără puncturare ceea ce face din codarea cu puncturare o alegere potrivită când avem de-a face cu canale afectate de zgomot si nu numai. Deşi BER este mai mare la codarea cu puncturare decăt la cea fără în cazul densităţilor de înregistrare mici, la densităţi de înregistrare mari codarea fără puncturare scade în performanţă, BER crescănd odată cu creştere densităţii pe când la codarea cu puncturarea creşterea BEReste cu mult mai lentă