3.5 Il canale AWGN a banda limitata 3.5.1 Canali “hard” e “soft” Fino a questo momento, abbiamo considerato un modello molto astratto di un canale di trasmissione discreto, cioè con sorgente finita e simboli di uscita scelti anch’essi da un alfabeto finito. È questo il caso dei sistemi delineati nelle Figg. CHANMOD (a) e (b) in cui ha avuto luogo la “rigenerazione” del messaggio discreto. Possiamo però considerare la “variabile di decisione” z[n] prima della “rigenerazione” come in Fig. CHANMOD (c) e modellare quindi il canale come avente ingresso binario (il bit di sorgente n-esimo) e uscita continua (nel senso delle teoria dei segnali, cioè ad ampiezza continua). Come già accennato, questa situazione viene anche indicata con l’appellativo di uscita “soft” contrapposta all’uscita “hard” del decisore a soglia. È intuitivo il fatto che il canale con uscita “soft” può rivelarsi più promettente dal punto di vista della capacità di canale. Infatti ridurre una grandezza da “infiniti” livelli come nel caso di uscita soft a due soli livelli come per l’uscita hard sembra apportare una qualche perdita di informazione. Questo è pienamente confermato dalla pratica se aggiungiamo al nostro schema di trasmissione anche un codificatore di canale. A parità di codice, ad esempio convoluzionale, è possibile decodificare il messaggio di sorgente all’uscita del canale soft o di quello hard, con algoritmi di decodifica di complessità confrontabile (algoritmi di Viterbi). Ebbene, la decodifica ad ampiezza continua mostra una robustezza nei confronti del rumore circa 2 dB maggiore della decodifica a soglia, nel senso che la probabilità di errore sui simboli decodificati “soft” con un dato livello di rumore è pari a quella ottenuta con decodifica “hard”, ma un livello di rumore di 2 dB inferiore. 3.5.2 Canale Gaussiano “soft” a tempo discreto Questa osservazione induce anche a riconsiderare il canale “lato trasmettitore”: se usiamo un modello di canale meno astratto, riconosciamo che ciò che in realtà viene inviato per trasmettere l’informazione della sorgente è una forma d’onda continua nelle ampiezze e nel tempo ottenuta con un qualche metodo di codifica e modulazione. Considerare forme d’onda anziché simboli è particolarmente significativo se il canale fisico di trasmissione pone delle limitazioni sulla larghezza di banda a disposizione per la comunicazione, un aspetto del tutto assente dal modello più astratto di canale discreto. Per arrivare a trattare la situazione di trasmissione di segnali su di un canale a banda limitata bisogna procedere per gradi, partendo dalla considerazione (semplificata) di un canale a tempo discreto e ampiezze di ingresso/uscita continue. Se la sorgente e il canale sono entrambi stazionari, possiamo restringerci al caso di trasmissione isolata (one-shot) di un unico simbolo (continuo) di sorgente. Una situazione rappresentativa di alcuni problemi pratici (trasmissione via satellite, su fibra ottica con limitazioni di rumore termico ecc.) è quella delineata in Fig. KANALE in cui la trasmissione del simbolo (continuo) di sorgente S [n ] viene disturbata dalla presenza di una componente di rumore Gaussiano additivo W [n ] , cosicchè l’uscita del canale risulta C [n ] = S [ n ] + W [n ] . - 1 di 1 - Fig. KANALE La considerazione di una grandezza continua costringe a un ripensamento della definizione di informazione da associare a tale grandezza. Cerchiamo, come spesso accade, di estendere a questo scenario la definizione già nota per il caso discreto tramite un procedimento al limite. La nostra sorgente continua stazionaria senza memoria S [n] sarà adesso caratterizzata da una funzione densità di probabilità f S ( s ) . “Modelliamo” questa sorgente come una sorgente discreta S∆ [n] a infiniti valori equispaziati di un certo ∆s . L’entropia è ∞ ∞ m =−∞ m =−∞ H ( S ∆ ) = − ∑ ( f S ( m∆s ) ∆s ) log ( f S ( m∆s ) ∆s ) = − ∑ f S (m∆s ) log( f S (m∆s )) ⋅ ∆s ∞ − log(∆s ) ∑ f S (m∆s ) ⋅ ∆s m =−∞ Facendo ora ∆s → 0 , le due sommatorie tendono a risultati finiti. In particolare la seconda sommatoria tende banalmente a 1. Purtroppo però, la quantità − log(∆s ) tende a +∞ , e la definizione così formulata diventa inutilizzabile. Qual è il motivo di questo “fallimento” del nostro procedimento al limite ? A una sorgente con un numero finito di livelli è associata informazione finita che può essere rappresentata con un numero finito di bit pari, per definizione, all’entropia H ( S ) . È immediato rendersi conto allora che a una sorgente continua con “infiniti” livelli è associata un’informazione che può essere rappresentata solo con un numero infinito di cifre, e quindi essa stessa infinita. Come uscire da quest’impasse ? Nel calcolo della capacità di canale o comunque dell’informazione mutua sorgente-canale si ha a che fare con una differenza tra entropie, precisamente quella sorgente meno l’equivocazione. Se consideriamo in generale una seconda sorgente T [n] , la differenza tra le entropie delle due sorgenti discretizzate S∆ [n] e T∆ [n] sarà (usando lo stesso passo ∆s per entrambe) ∞ ∞ H ( S ∆ ) − H (T∆ ) = − ∑ f S (m∆s ) log( f S (m∆s )) ⋅ ∆s − log(∆s ) ∑ f S (m∆s ) ⋅ ∆s m =−∞ m =−∞ ∞ ∞ m =−∞ m =−∞ − ∑ fT (m∆s ) log( fT (m∆s )) ⋅ ∆s − log(∆s ) ∑ fT (m∆s ) ⋅ ∆s Se di nuovo facciamo ∆s → 0 , i due termini divergenti si elidono, e il risultato è che la differenza delle due entropie è ∞ 1 1 ∞ lim ∑ f S (m∆s ) log lim s fT (m∆s ) log ∆ − ∆s ∑ ∆s → 0 f S (m∆s ) ∆s →0 m =−∞ fT (m∆s ) m =−∞ = ∞ ∫ −∞ ∞ 1 1 f S ( s ) log ds − ∫ fT ( s ) log ds fT ( s ) f S (s) −∞ - 2 di 2 - Dunque per caratterizzare il “contenuto informativo” della sorgente continua, e in particolare per procedere poi a valutazioni di capacità di canale, si può usare la cosiddetta entropia differenziale ∞ 1 f S ( s ) log ds f S (s) −∞ con l’accortezza che questa, contrariamente al caso di sorgente discreta, non rappresenta direttamente l’informazione generata dalla sorgente. L’entropia differenziale h( S ) delle sorgenti continue ha alcune proprietà simili a quelli dell’entropia H ( S ) delle sorgenti discrete, ma altre nettamente diverse. Innanzitutto, essa è additiva per sorgenti indipendenti. Inoltre, se la sorgente ha densità di probabilità diversa da zero solo su di un intervallo finito [ s1 ; s2 ] , la h( S ) è massima per una distribuzione uniforme e vale h( S ) ∫ h( S ) = log( s2 − s1 ) Se però s2 − s1 è più piccolo di 1, questa grandezza è negativa, cosa impossibile per l’entropia di una sorgente discreta. Il vincolo di un intervallo di variazione limitato della sorgente è significativo per qui casi in cui si ha una limitazione sul valore di picco del segnale. In altri casi però è più significativa una limitazione sulla potenza della sorgente stessa. Qual è la allora la densità di probabilità che massimizza l’entropia differenziale senza limitazioni di ampiezza sul segnale, ma con un vincolo di potenza σ 2 (supponendo valor medio nullo) ? Vogliamo dunque ∞ ∞ −∞ −∞ − ∫ f S ( s ) log( f S ( s )) ds = max con ∫ s 2 f S ( s ) ds = σ 2 e ∞ ∫ f S ( s ) ds = 1 −∞ Usando il calcolo delle variazioni, si deve massimizzare ∞ ∫ − f S −∞ ( s ) log( f S ( s )) + λ s 2 f S ( s ) + µ f S ( s ) ds = max Formalmente “derivando” rispetto a f S sotto il segno di integrale si ottiene ∞ ∫ −1 − log( f −∞ S ( s )) + λ s 2 + µ ds = 0 ovvero, tenendo conto dell’arbitrarietà di λ e µ , −1 − log( f S ( s )) + λ s 2 + µ = 0 f S ( s ) = exp( −1 + µ ) exp( λ s 2 ) ⇒ cioè esponenziale quadratica. Applicando le normalizzazioni, si trova naturalmente f S (s) = s2 exp − 2 2πσ 2 2σ 1 cioè la familiare distribuzione Gaussiana ! Per questa sorgente, ∞ h( S ) = − ∫ −∞ s2 1 s2 1 σ2 exp − 2 − log(2πσ 2 ) − 2 ds = log(2πσ 2 ) + 2σ 2 2σ 2 2πσ 2 2σ 2 1 ( ) 1 = [log(2πσ 2 ) + 1] = log 2π eσ 2 2 Il vincolo di potenza media assegnata che ha portato a questo risultato è significativo, perché spesso la trasmissione su canali reali ha un vincolo di questo tipo. L’entropia differenziale della sorgente - 3 di 3 - Gaussiana gioca un ruolo fondamentale nel calcolo della capacità del canale Gaussiano a banda limitata che affronteremo di seguito. 3.5.3 Il canale Gaussiano a banda limitata Estendiamo adesso al canale continuo i concetti già introdotti per il canale discreto. Un canale a ingresso e uscita contiunua è caratterizzato non appena si conosce la densità di probabilità f C|S ( c | s ) dell’uscita del canale condizionata a un certo valore dell’ingresso del canale stesso. Nel canale additivo Gaussiano di Fig. KANALE, se il rumore è a media nulla e varianza σ W2 , si ha banalmente 1 f C|S (c | s ) = 2πσ W2 e − ( c − s )2 2σ W2 Continuando con l’estensione di concetti noti, per la trasmissione di una sorgente continua su di un canale continuo la mutua informazione è I ( S , C ) h ( S ) − h( S | C ) dove l’entropia differenziale condizionata a secondo membro è 1 f s c dsdc ( , ) log S , C ∫∫ f ( s | c) −∞ −∞ −∞ −∞ S |C Si dimostra facilmente (come abbiamo già visto per il caso discreto) che ∞ ∞ h ( S | C ) = − ∫ f C (c ) ∫ f S |C ( s | c ) log ( f S |C ( s | c ) ) dsdc = ∞ ∞ ∞ ∞ fC (c | s) f C (c | s ) f S ( s ) log ∞ dcds −∞ −∞ ∫ f C (c | s ) f S ( s ) ds −∞ La capacità di canale si troverà naturalmente variando la distribuzione di probabilità della sorgente f S ( s ) in modo che l’informazione mutua risulti massima I (S, C) = ∫∫ C max I ( S , C ) = max fS fS ∞ ∞ ∫∫ −∞ −∞ fC (c | s) f C (c | s ) f S ( s ) log ∞ dcds ∫ f C (c | s ) f S ( s ) ds −∞ Per questa capacità di canale vale ancora il secondo teorema della codifica nella stessa forma della sorgente discreta. Trovare una soluzione di questa equazione per il caso generale è arduo. Per il canale Gaussiano additivo stazionario però le cose sono abbastanza semplici. Sappiamo infatti che I ( S , C ) h ( S ) − h ( S | C ) = I (C , S ) h (C ) − h (C | S ) Ma h (C | S ) è facilmente calcolabile: condizionatamente ad un valore noto della sorgente s, l’uscita del canale è C [n ] = s + W [n ] cioè s è il valore medio dell’uscita del canale C che risulta Gaussiana: h (C | s ) = log ( 2π eσ W2 ) Mediando ulteriormente su S il risultato non cambia, per cui - 4 di 4 - h (C | S ) = log ( 2π eσ W2 ) che non dipende dalle caratteristiche della sorgente. Il lettore dimostri che questa proprietà vale per tutti i canali additivi. Dunque C max I ( S , C ) = max [h (C ) − h (C | S )] = max h(C ) − log fS fS fS ( 2π eσ W2 ) Dai risultati già noti sappiamo che il massimo si ha quando C è Gaussiana, il che implica che anche la sorgente S deve essere Gaussiana. Indichiamo allora con σ S2 la varianza della sorgente; concludiamo facilmente che (poichè S e W sono indipendenti) la varianza di C è σ C2 = σ S2 + σ W2 e quindi C log ( ) 2π e (σ S2 + σ W2 ) − log ( ) 2π eσ W2 = σ2 1 log 1 + 2S (bit/simbolo) 2 σW È interessante discutere i casi-limite: se il rumore ha una varianza (potenza) che tende a decrescere illimoitatamente, si nota che la capacità di canale tende a zero e si arriva alla consueta situazione di canale inutile. Viceversa, se il rumore ha una varianza che tende a decrescere, cioè se il canale tende a diventare ideale, il rapporto σ S2 / σ W2 tende a crescere illimitatamente, e così anche il suo logaritmo. La conclusione è che la capacità di canale cresce indefinitamente, contrariamente al caso del canale discreto in cui essa resta comunque limitata dalla dimensione dell’alfabeto di canale anche per il caso ideale. Tale risultato non ci sorprende, al contrario è un effetto dell’aver supposto che l’ingresso del canale è un valore continuo con, in teoria, “infinite cifre decimali”. Come già accennato, sarebbe teoricamente possibile in assenza di rumore codificare una stringa di bit arbitrariamente lunga in un unico valore con un numero di decimali arbitrariamente grande. Si potrebbe poi trasmettere tale valore (simbolo) in un unico atto di trasmissione e recuperare tale valore al ricevitore in maniera esatta e senza possibilità di equivocazione. In tal modo sarebbe possibile trasmettere una quantità di informazione arbitrariamente grande. La presenza del rumore pone naturalmente un limite di “accuratezza” nel recuperare il valore continuo trasmesso: alcune delle cifre decimali meno significative diventano incerte, e la quantità di informazione trasmissibile diventa limitata. L’accuratezza è tanto migliore quanto più grande è la potenza (varianza) di segnale nei confronti della potenza (varianza) di rumore. È questa un’interpretazione euristica della formula della capacità di canale per il canale additivo Gaussiano. Cerchiamo adesso di recuperare l’aspetto temporale di trasmissione dell’informazione. Se la velocità di segnalazione sul canale è Rs = 1/ Ts baud, la capacità in termini di bit/s è naturalmente σ2 1 log 1 + 2S (bit/s) 2Ts σW Attraverso questo risultato, siamo in grado di trattare il caso di trasmissione con forme d’onda continue nel tempo e limitate in banda. Per semplicità, esamineremo il solo caso di rumore Gaussiano additivo bianco, caratterizzato da una densità spettrale di potenza C= SW ( f ) = N 0 / 2 nella banda B del segnale. La potenza di rumore è allora - 5 di 5 - PW = σ W2 = N 0 B Per quanto riguarda il segnale, sappiamo che la capacità si realizza quando la sorgente è Gaussiana, e stavolta anche limitata in banda. In questo caso, essa può essere rappresentata, secondo il teorema del campionamento, da 2B campioni al secondo che presenteranno tutti la medesima potenza PS = σ S2 (sorgente stazionaria). Questa situazione si può duque assimilare ad una trasmissione a tempo discreto in cui la cadenza di segnalazione è naturalmente 1/ Ts = 2 B . Applicando la formula già trovata per il tempo discreto, se ne conclude PS = B log 1 + (bit/s) N B 0 Questo è il risultato fondamentale di Shannon sulla capacità del canale AWGN a banda limitata. Anche se, purtroppo, non è un risultato di carattere costruttivo, serve comunque da pietra di paragone per valutare l’efficacia dei sistemi di trasmissione che si possono realizzare in pratica, nel senso che nessun sistema può operare con “piccole” probabilità di errore al di sopra della capacità testé calcolata. Si può notare che la quantità PS /( N 0 B ) rappresenta il cosiddetto rapporto segnalerumore; la capacità del canale Gaussiano è dunque proporzionale alla banda disponibile (e questo non è sorprendente, visto che aumentando la banda si può aumentare la velocità di segnalazione), ma anche al logaritmo del rapporto segnale-rumore cioè, in pratica, al rapporto segnale rumore espresso in dB (per lo meno quando questo è >>1). Aumentare la banda a parità di livello del rumore è sempre la maniera migliore per aumentare la capacità del canale proprio per questa proporzionalità logaritmica che rende più difficile aumentare la capacità aumentando la potenza in trasmissione. C= σ2 1 log 1 + 2S 2Ts σW 3.6. Metodi di modulazione e codifica – I turbo codici 3.6.1 Confronto tra metodi di modulazione e codifica La formula della capacità di canale permette dunque di misurare la bontà dei metodi di modulazione e codifica impiegati sul canale Gaussiano. Riprendiamola: P C RPT C = B log 1 + S ⇒ = log 1 + b S b N0B B N0B Dove Rb = 1/ Tb è la velocità di informazione del sistema. Supponiamo ora di aver trovato un metodo per trasmettere esattamente a una velocità pari alla capacità di canale. Per questo sistema si ha C = Rb e quindi C PS Tb C C Eb C = log 1 + ⇒ = log 1 + B B N0 B B N0 ovvero Eb 2C / B − 1 = N0 C /B - 6 di 6 - dove Eb è l’energia per bit ricevuta. Questa relazione può essere interpretata come una curva-limite sul piano ( Eb / N 0 , Rb / B ) , chiamato anche piano di Shannon, nel senso che, dovendo essere Rb ≤ C , sarà anche Eb 2 Rb / B − 1 ≥ N0 Rb / B e quindi il piano è diviso da quella curva in due zone, delle quali una “permessa”, l’altra “impossibile”, come indicato in Fig. PIANOSH. Il parametro Rb / B si misura in (bit/s)/Hz (o bit/simbolo in una modulazione lineare) e misura l’efficienza spettrale di uno schema di trasmissione. Maggiore è questa quantità, minore sarà la banda richiesta al sistema per trasmettere un flusso con una data velocità di informazione. Un errore di nomenclatura in cui si cade spesso, specialmente trattando di gestione delle reti di telecomunicazione, è quello di chiamare “banda” la velocità di informazione Rb che è misurata in bit/s e dipende solo dalle caratteristiche della sorgente di informazione. La vera banda B misurata in Hz è una caratteristica del segnale fisico utilizzato per veicolare il flusso informativo, e dipende anche dal metodo di modulazione (ad esempio multilivello o binaria) e dal tasso dell’eventuale codifica di canale. Se il collegamento avesse a disposizione una banda infinita, la relazione della capacità dice che è possibile una trasmissione con equivocazione arbitrariamente piccola (cioè in pratica senza errori) purché Eb Eb 2 Rb / B − 1 ≥ lim = ln 2 ≅ −1.6 dB N 0 N 0 min B→∞ Rb / B Efficienza Spettrale, C/B (bit/s/Hz) 8 7 6 5 ZONA PROIBITA 4 16QAM 3 ln2=-1.6 dB 8PSK TCM 32 stati 2 QPSK 1 BPSK QPSK r=1/2 K=7 Convoluzionale 0 0 5 10 15 20 Eb/N0 (dB) Fig. PIANOSH Per confrontare l’efficienza di un sistema pratico di trasmissione con la capacità di canale, si comincia fissando un valore finito della P( E ) sul bit ritenuto soddisfacentemente piccolo per l’applicazione, e si calcola poi il valore di Eb / N 0 necessario per ottenere tale prestazione, valore - 7 di 7 - che chiameremo efficienza energetica. Per una QPSK ad esempio, si può fissare P( E ) = 10−5 e, dalla curva del ricevitore ottimo per AWGN si ottiene il valore Eb / N 0 = 9.6 dB. Questa modulazione inoltre è capace di trasmettere 2 bit/simbolo (costellazione quaternaria) e quindi l’efficienza spettrale è Rb / B =2. La modulazione QPSK senza nessuna codifica corrisponde dunque al punto (9.6,2) sul piano di Shannon, come indicato. La modulazione BPSK corrisponderà al punto (9.6,1) e si allontana quindi dalla curva limite nella direzione verticale, cioè quella dell’efficienza spettrale. Sul piano di Shannon possono anche essere valutate le efficienze di sistemi con codifica di canale. Una modulazione QPSK con codice convoluzionale avente tasso di codifica r=1/2 ha la stessa efficienza spettrale della BPSK senza codifica di canale, cioè 1 bit/simbolo. Il codice convoluzionale standard r=1/2 K=7 delle trasmissioni televisive DVB-S via satellite ha un “guadagno di codifica” pari a 5.2 dB, cioè richiede un valore di Eb / N 0 più piccolo di 5.2 dB rispetto ad una BPSK senza codifica, a parità di P( E ) = 10−5 . Ciò significa che il punto rappresentativo di una QPSK codificata con tale codice è (4.4,1). Per una modulazione 8PSK con codifica a traliccio di Ungerböck, l’efficienza spettrale è quella di una QPSK non codificata, cioè 2 bit/s/Hz, ma c’è un guadagno nella codifica a traliccio che, per il codificatore a 32 stati ottimo è di circa 3.2 dB. Il punto rappresentativo è dunque (6.4,2). Le modulazioni di tipo M-QAM con costellazione quadrata incrementano l’efficienza spettrale della trasmissione, ma penalizzano l’efficienza energetica di circa 6 dB per ogni quadruplicazione dei punti della costellazione. Sulla Fig. PIANOSH abbiamo indicato il punto (13.5,4) rappresentativo della 16-QAM. 3.6.2 Il canale Gaussiano binario con uscita continua (soft) Torniamo adesso a un modello di sistema BPSK disturbato da AWGN in cui abbiamo una sorgente discreta binaria e consideriamo come uscita del canale il valore soft della variabile di decisione campionata z[n ] . Aggiungiamo però un codificatore di canale binario con tasso di codifica r come indicato in Fig. BISO. Il canale è di nuovo Gaussiano a tempo discreto, però di un tipo diverso da tutti quelli presi in considerazione finora: è un canale a ingresso binario e uscita continua. La capacità di canale si può ricavare di nuovo come C = max [ h(C ) − h(C | S ) ] = max h(C ) − log fS fS ( 2π eσ W2 ) ove σ W2 è la varianza della componente di rumore di canale. Se si usa una trasmissione con sagomatura radice di Nyquist in trasmissione e ricezione e si normalizza l’ampiezza dei simboli trasmessi al valore 1, si trova facilmente che −1 σ W2 = ( 2 Es / N 0 ) = ( 2rEb / N 0 ) −1 Fig. BISO In questa relazione, Es è l’energia per simbolo codificato che è uguale alla frazione r dell’energia per bit di sorgente Eb . Per calcolare h (C ) dobbiamo ora ricavare f C ( c) , e dobbiamo poi procedere - 8 di 8 - alla massimizzazione rispetto alla probabilità dei simboli di sorgente. Possiamo dare per scontato, sulla base di quanto visto finora, che la massimizzazione della h (C ) relativamente alla distribuzione dei simboli di sorgente si realizza quando questi sono equiprobabili. Poiché i codici di canale normalmente non alterano le probabilità dei simboli, si trova f C ( c) = = 1 1 1 1 f C (c | 0) + f C (c |1) = 2 2 2 2πσ W2 1 rEb / N 0 π 2 ( c + 1) 2 ( c − 1)2 exp exp − + − 2 2 2σ W 2σ W Eb E ( c + 1)2 + exp − r b (c − 1)2 exp − r N0 N0 da cui ∞ 1 rEb / N 0 π 2 −∞ C =−∫ 1 rEb / N 0 ⋅ log 2 π Eb E (c + 1)2 + exp − r b (c − 1)2 exp − r N0 N0 Eb E πe 1 (c + 1)2 + exp − r b ( c − 1) 2 dc − log exp − r 2 N0 N0 rEb / N 0 Questa capacità è misurata in bit per simbolo di codice, e non potrà mai essere maggiore di r bit/simbolo di codice. Per avere una trasmissione con affidabilità alta quando si usano sorgenti perfettamente compresse (cioè ad entropia unitaria), il tasso del codice dovrà essere minore di questa capacità di canale, cioè si dovrà avere r ≤ C . Nel caso-limite di uguaglianza avremo Eb Eb 1 rEb / N 0 2 2 − + + − − exp r ( c 1) exp r ( c 1) ∫2 π N0 N0 −∞ 1 rEb / N 0 Eb Eb πe 1 2 2 exp r ( c 1) exp r ( c 1) dc + log ⋅ log − + + − − =0 2 π 2 N0 N0 rEb / N 0 r+ ∞ Notiamo anche che in questo caso-limite r coincide con l’efficienza spettrale: se infatti la segnalazione avviene alla velocità di Rs simboli di codice al secondo, la velocità di informazione di sorgente è Rb = r ⋅ RS bit/s. Usando la banda minima per la segnalazione, cioè la banda di Nyquist si ha anche (per un segnale passa-banda modulato) B = Rs , e quindi Rb / B = r . La relazione appena ricavata, in cui l’integrazione deve essere calcolata numericamente, definisce implicitamente la curva sul piano di Shannon che caratterizza la capacità del canale Gaussiano binario con uscita “soft” e che è mostrata in Fig. TURBOTURBO a tratto spesso, confrontata con la curva di capacità del canale Gaussiano analogico (tratto fino) analizzato precedentemente. Possiamo confrontare con questa curva il punto caratteristico di una modulazione BPSK con il consueto codice convoluzionale con decodifica “soft” e notare che il punto si trova piuttosto distante dalla curvalimite. Qual è il metodo di codifica e modulazione indicato dal simbolo quadrato che giunge assai più vicino a questa curva ? - 9 di 9 - 1 Canale Gaussiano Analogico 7 6 5 Tasso di Codifica, r 4 BPSK convoluzionale ??!!?? 3 2 0.1 7 6 5 ln2=-1.6 dB 4 3 2 0.01 ZONA PROIBITA -4 -2 0 2 4 6 8 10 12 Eb/N0 (dB) Fig. TURBOTURBO 3.6.2 I Codici “Turbo” A tutt’oggi, tra i metodi di codifica usati in pratica i più efficienti dal punto di vista della protezione dagli errori sono quelli della famiglia dei cosiddetti codici Turbo. Essi sono stati presentati per la prima volta nel 1993 dai francesi Berrou e Glavieux, e sono stati successivamente studiati e perfezionati in tutto il mondo. I codici turbo sono quanto si sia mai visto di più vicino al concetto di codice casuale con parole lunghe adoperato da Shannon per la dimostrazione del secondo teorema della codifica, e questo ne giustifica le buone prestazioni in assoluto. Naturalmente, anche nel passato ci sono stati altri tentativi di giungere vicino alla curva di capacità di canale con l’uso di codici casuali con parole lunghe, ma essi si sono sempre scontrati con insormontabili difficoltà di decodifica, nel senso che i decodificatori per simili codici risultavano di complessità proibitiva (crescente esponenzialmente con la lunghezza delle parole). La chiave di volta per la risoluzione del problema è stata, per i codici turbo, l’invenzione di un algoritmo di decodifica iterativa (“turbo”) che ha appunto reso possibile con complessità ragionevole la decodifica di particolari codici “casuali”. Il codificatore turbo è un codificatore a blocco e ha una struttura in principio molto semplice, basata su due codificatori convoluzionali in forma ricorsiva sistematica (RSC, Recursive Systematic Convolutional), chiamati codificatori costituenti. Facendo un esempio in cui il tasso di codifica dei due codici costituenti è r=1/2, per ogni bit di sorgente ogni codificatore produce una replica dello stesso bit (codificatore sistematico) seguita da un bit in più specificamente prodotto dal codificatore stesso e detto di parità. Inoltre, gli schemi dei codificatore sono con reazione, cioè ricorsivi, contrariamente allo schema dei codificatori convoluzionali standard più usati in pratica, che sono del tipo “in avanti” (feedforward) senza reazione. Un esempio di codificatore RSC è indicato in Fig. CODER. La caratterizzazione del codificatore avviene mediante i polinomi della matrice di generazione. Per un codificatore RSC, quest’ultima ha la forma generale - 10 di 10 - g ( D) g ( D) = 1, 2 g1 ( D) Fig. CODER ed è da intendersi come un operatore che agisce sulla stringa di bit di sorgente per fornire la stringa di bit codificati. In particolare, il primo termine uguale a 1 indica la sistematicità (si crea cioè la replica inalterata del bit d’ingresso), mentre la variabile D usata nel secondo termine è l’operatore di ritardo unitario sulle sequenze di ingresso/uscita. Il rapporto g 2 ( D ) / g1 ( D ) è allora una sorta di “funzione di trasferimento” uscita/ingresso espressa come rapporto di polinomi nella variabile D. Indicando con S [n ] i bit di sorgente e con P[n ] i bit di parità, il rapporto di polinomi nella matrice di generazione va allora interpretato nel senso che g1 ( D) ( P[n]) = g 2 ( D) ( S[n]) Nell’esempio di Fig. CODER, i coefficienti dei polinomi di codifica sono (in notazione ottale e binaria) g1 ( D) = 31 = 011001 e g 2 ( D) = 27 = 010111 e quindi (1 + D + D ) ( P[n]) = (1 + D 4 2 + D 3 + D 4 ) ( S [ n]) che, riportato in ambito temporale e tenendo conto che tutte le operazioni vanno intese “modulo 2”, dà P[n ] ⊕ P[n − 1] ⊕ P[n − 4] = S [n ] ⊕ S [n − 2] ⊕ S [n − 3] ⊕ S [n − 4] ovvero P[n] = P[n − 1] ⊕ P[n − 4] ⊕ S [n] ⊕ S [n − 2] ⊕ S [n − 3] ⊕ S [n − 4] cioè l’equazione ricorrente con cui ottenere i simboli di parità da quelli di sorgente. Nel codificatore turbo, i due RSC possono essere differenti o anche uguali, e sono connessi come in Fig. TURBO. - 11 di 11 - Per costruire un blocco di simboli codificati, il codificatore n. 1 riceve la sequenza inalterata di N bit consecutivi di sorgente S [n ] , n = 0,..., N − 1 e produce i bit di parità P1[n ] , n = 0,..., N − 1 . Viceversa, il codificatore n. 2 riceve una versione permutata della sequenza dei bit di sorgente, nel senso che l’ordine temporale con cui tali bit compaiono all’uscita del permutatore non è quello naturale con il quale sono stati prodotti. I bit di parità P2 [n ] sono dunque ottenuti dalla sequenza S [p( n )] , dove p( n ) è la permutazione implementata dal blocco interlacciatore (interleaver). Questa permutazione è pseudo-casuale perche l’interlacciatore ha lo scopo di “sparpagliare” i bit di sorgente in un blocco nella maniera più casuale possibile. In questo modo si ottiene la cosiddetta concatenazione parallela di codificatori RSC, e si implementa la strategia di codifica casuale di Shannon. Lunghezze di blocco usuali per i codici turbo vanno da un migliaio a qualche decina di migliaia di bit, e i relativi permutatori possono essere realizzati usando permutazioni basate sulle sequenze binarie pseudo-casuali a massima lunghezza. Per facilitare la decodifica, come vedremo, si fa in modo che gli RSC inizino la loro evoluzione dallo stato “nullo” e la terminino nello stesso stato. Questo costringe ad aggiungere alla stringa di bit di sorgente alcuni bit terminali cha hanno appunto questo scopo (bit di terminazione o di coda). Naturalmente se per ogni bit di sorgente S [n ] inviassimo sul canale oltre a questo stesso anche i due bit di parità P1[n ] e P2 [n ] otterremmo globalmente un codice di tasso r=1/3. Per ottenere tassi diversi, in particolare ½ o ¾ che sono assai usati in pratica, si provvede a perforare le due successioni di bit di parità in modo da scartare qualcuno di questi elementi. Un modo di perforazione (puncturing) è quello rappresentato in Fig. PUNCTURE in cui la stringa di bit di parità finale PF [n ] è ottenuta alternando i bit di posto pari di P1[n ] a quelli di posto dispari di P2 [n ] come indicato. Viene così eliminato un bit su due di parità, e il tasso di codifica torna ad essere r=1/2. ...P1[0] • P1[2] • ... • P2 [1] • P1[4] • P1[6] • ... P2 [3] • P2 [5] • P2 [7]... Fig. PUNCTURE La concatenazione parallela dei due RSC attraverso permutazione crea, ripetiamo, un dizionario di codice altamente casuale. In realtà il codificatore è comunque una macchina sequenziale (lineare) con un numero finito di stati, e quindi in teoria il codice sarebbe decodificabile con algoritmi noti, come quello di Viterbi, per stimare a massima verosimiglianza la sequenza di - 12 di 12 - simboli in un blocco. A causa del permutatore però, la memoria del codificatore è molto profonda (pari in generale alla lunghezza del blocco su cui si effettua la permutazione), e quindi il numero di stati nella descrizione della macchina a stati finiti è altissimo. Questo impedisce ogni tentativo di decodifica “tradizionale” basata su algoritmo di Viterbi o similari a complessità ridotta. Lo schema di decodifica del codice turbo è alquanto peculiare, ed è appunto da qui che il nome “turbo” trae origine. Il processo di decodifica è organizzato in due stadi, ciascuno sostanzialmente relativo ad ognuno dei due codificatori RSC. La peculiarità sta nel fatto che la decodifica è iterativa, cioè il decodificatore effettua più volte la stessa elaborazione sul segnale in uscita dal canale riportando però all’indietro ogni volta un’informazione relativa all’affidabilità del bit di sorgente da decidere, affidabilità che di volta in volta tende ad aumentare. Questo “ripassare” la stessa informazione più volte viene assimilata al moto di rotazione vorticosa del turbocompressore di un motore a scoppio. Fig. DECODER L’architettura generale del decodificatore turbo (che segue lo schema di principio appena descritto) è mostrata in Fig. DECODER. Si nota l’informazione di affidabilità, chiamata anche estrinseca, che viene riportata dall’uscita del secondo stadio verso l’ingresso del primo e propagata dal primo stadio verso il secondo. Nasono due domande: i) Che cos’è quest’affidabilità o informazione estrinseca? ii) Come si procede alla decisione finale sul bit di sorgente? L’informazione estrinseca è di carattere continuo (soft), e per capirne la natura è necessario capire come sono costituiti i due stadi di decodifica. Essi sono basati sull’algoritmo di decodifica a massima probabilità a-posteriori di Bahl-Cocke-Jelinek-Raviv (BCJR) sviluppato negli anni ’70 e mai utilizzato in pratica fino all’avvento dei codici turbo. Questo algoritmo opera su di un blocco di valori soft (nella versione originale le uscite rumorose del canale) per fornire in uscita un blocco di N valori continui sui quali è possibile prendere una decisione finale a soglia. La decisione presa in questa maniera massimizza la probabilità di una corretta decisione su ogni singolo bit condizionata all’aver osservato tutto il blocco di valori soft dato in ingresso all’algoritmo, cioè segue un criterio di massima probabilità a-posteriori (MAP). La particolarità dell’algoritmo BCJR è che opera in maniera ricorsiva incrociata, con due ricorsioni che procedono in avanti a partire dal primo simbolo soft del blocco, come un algoritmo di decodifica tradizionale, ma anche a ritroso, cioè a partire dall’ultimo simbolo soft del blocco verso il primo. L’algoritmo, al contrario della decodifica di Viterbi non è causale e richiede, per effettuare una decisione ottima, anche l’osservazione di simboli soft futuri all’interno della finestra (blocco) di osservazione. Ecco perché è anche necessario - 13 di 13 - conoscere lo stato in cui i decodificatori terminano la loro evoluzione: per far partire correttamente la ricorsione a ritroso ! Che cosa rappresentano i valori continui in uscita all’algoritmo BCJR? La risposta è semplice: questi valori sono i cosiddetti rapporti di log-probabilità a posteriori (LAPP), cioè il logaritmo del rapporto tra le probabilità che ogni singolo bit assuma il valore rispettivamente +1 o – 1 (con modulazione antipodale), conseguentemente (cioè condizionatamente) all’osservazione del blocco di segnale dato. Se indichiamo con C il vettore dei campioni “soft” di segnale all’uscita del canale con disturbo prodotti da un singolo blocco di N bit di sorgente, il rapporto di log-probabilità a posteriori è Pr{S[n] = 1| C} L( S[n]) = log Pr{S[n] = 0 | C} Questo rapporto costituisce l’informazione di affidabilità prodotta dal decodificatore BCJR e necessaria al decoder turbo. Essa permette anche di prendere decisioni a soglia, perché è >0 quando il valore più probabile a posteriori è +1, viceversa se il valore più probabile è –1. Quanto maggiore è in modulo questa quantità, tanto maggiore è la probabilità del simbolo deciso rispetto all’altra, e quindi tanto maggiore è l’“affidabilità” della decisione. Ora, si nota che ognuno dei due decodificatori nello schema del decoder turbo ha tre ingressi, e cioè il segnale ricevuto e la parità rispettiva, come un qualunque decodificatore standard dei codici costituenti, più l’informazione estrinseca di affidabilità proveniente dall’altro decodificatore. È questa informazione addizionale che permette di “migliorare” ad ogni iterazione l’affidabilità delle decisioni, cioè diminuire ad ogni iterazione la probabilità di errore. Riscriviamo il rapporto di probabilità a posteriori come segue, sfruttando le regole di Bayes: Pr{S[n] = 1| C} Pr{C | S [n] = 1} Pr{S[n] = 1} L( S[n]) = log = log + log Pr{S[n] = 0 | C} Pr{C | S[n] = 0} Pr{S[n] = 0} Normalmente, in assenza di ulteriori informazioni, il secondo termine di informazione cosiddetta a priori è nullo, perché i bit di sorgente sono equiprobabili. Ma se è già stata in qualche modo effettuata una operazione preliminare di decodifica “tentativa”, dopo questa operazione le probabilità dei due valori non sono più uguali e quindi anche L( S [n]) può essere ricalcolato iterativamente tenendo conto di questa nuova informazione estrinseca ! Il gioco dei decodificatoride-permutatori è poi fatto in modo che il decoder n. 2 (D2) fornisce al decoder n. 1 (D1) un’informazione estrinseca calcolata sulla base di una quantità, cioè i bit di parità P2 [n] cui D1 non ha accesso e viceversa per l’informazione estrinseca in ingresso a D2 proveniente da D1. Al termine di ogni iterazione l’affidabilità nel messaggio ricostruito tende a migliorare ! La meccanizzazione dell’algoritmo BCJR è formalmente complicata, e non entreremo qui in ulteriori dettagli (si veda l’appendice). Vogliamo solo presentare in Fig. BER delle curve tipiche di probabilità di errore di un codice turbo con semplice modulazione BPSK su canale AWGN con ricezione coerente a filtro adattato. Le varie curve hanno come parametro il numero di iterazioni nella decodifica. La decisione finale viene presa a soglia all’uscita di D1. All’aumentare del numero di iterazioni oltre le 10 indicate in figura, non si ha praticamente più alcun miglioramento delle - 14 di 14 - prestazioni. Si vede che l’efficienza energetica di questa codifica di canale con tasso r=1/2 è molto elevata: fissando come di consueto una probabilità di errore P( E ) = 10−5 , il rapporto Eb / N 0 necessario è appena di circa 0.9 dB: questo è il punto segnato in Fig. TURBOTURBO che giace molto vicino alla curva-limite della capacità. Tre sono gli aspetti sfavorevoli dei codici turbo. Il primo riguarda la decodifica mediante l’algoritmo BCJR, la cui complessità non è trascurabile, e viene convenzionalmente valutata come pari ad alcune volte quella di un decodificatore di Viterbi ad ingresso soft per uno dei codici costituenti. Il secondo aspetto sfavorevole è che a tutt’oggi non esiste una metodologia di analisi e sintesi che consenta di trovare codici ottimi. Il codice qui utilizzato è quello di Fig. CODER e non ha alcuna pretesa di ottimalità. D’altronde,secondo l’approccio del codice “casuale” alla Shannon, ogni codice “casuale” è altrettanto buono quanto ogni altro, e quindi il problema è forse meno grave del previsto. Il terzo aspetto è legato al ritardo di decodifica che è pari alla lunghezza di un blocco più una ulteriore componente proporzionale al numero di iterazioni nella decodifica. Se il blocco di codice è lungo, questo ritardo può essere considerevole e può risultare intollerabile in applicazioni che richiedono il tempo reale, come una conversazione telefonica. Concludiamo osservando che i codici turbo sono già previsti dallo standard di trasmissione UMTS per la modalità “dati” non sensibile al ritardo, e saranno quasi certamente adottati anche nei futuri standard di trasmissione televisiva via satellite in corso di definizione. 10 0 -1 10 -2 10 BER 3 Iterazioni -3 10 -4 10 6 Iterazioni 10 Iterazioni -5 10 -6 10 0.0 0.5 1.0 Eb/N0 (dB) Fig. BER - 15 di 15 - 1.5