- 1 di 1 - 3.5 Il canale AWGN a banda limitata 3.5.1 Canali “hard” e

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