Turbo codici: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 1:
{{S|telecomunicazioni}}
I '''turbo codici
I codici turbo sono stati teorizzati da [[Claude Berrou]], [[Alain Glavieux]] e [[Punya Thitimajshima]] presentati nel [[1993]] ad una conferenza dell'[[IEEE]]<ref>Berrou C., A. Glavieux e P. Thitmajshima; "''Near Shannon Limit Error-Correcting Coding and Decoding: Turbo Codes''", Proceeding of the IEEE International Conference on Communications, 1993, [[Ginevra]], [[Svizzera]]. [http://www-elec.enst-bretagne.fr/equipe/berrou/Near%20Shannon%20Limit%20Error.pdf]</ref>.
Riga 10:
I codici turbo sono ancora ad oggi oggetto di ricerche in numerose università del mondo, allo scopo di raffinarli e di ottenere implementazioni più efficienti.
Nella [[teoria dell'informazione]], i '''turbo codici''' (originariamente Turbocodes, in francese
Il nome "turbo code" deriva dal loop di feedback usato durante la decodifica,
==Storia==
La prima domanda di brevetto per i
Il primo documento pubblico sui
I turbo codici furono così rivoluzionari al momento della loro introduzione che molti esperti nel campo della codifica non credettero ai risultati riportati. Quando la performance fu confermata, ebbe luogo una piccola rivoluzione nel mondo della codifica che ha portato allo studio di molti altri tipi di elaborazione di segnale iterativa.
La prima classe di codice turbo era il codice convoluzionale concatenato parallelo (PCCC). Dopo l'introduzione del primo turbo codice parallelo nel 1993, sono state realizzate molte altre classi di
Oltre all'invenzione dei
Prima dei codici turbo, le migliori implementazioni FEC erano costituite da codifiche seriali concatenati basate su un codice di correzione degli errori esterno [[Reed-Solomon]] combinato con un codice interno convoluzionale a lunghezza corta [[Viterbi]], noto anche come codice [[RSV]].
In un saggio successivo, Berrou ha generosamente riconosciuto l'intuizione di "G. Battail, J. Hagenauer e P. Hoeher, che, alla fine degli anni '80, hanno acceso l'interesse per l'elaborazione probabilistica". Aggiungendo che " R. Gallager e M. Tanner avevano già immaginato tecniche di codifica e decodifica i cui principi generali erano strettamente
==Un esempio di encoder==
Esistono molti casi diversi di turbo codici, che utilizzano diversi componenti di codificatori, rapporti di input/output, interleaver e pattern di foratura. Questo esempio di implementazione dell'encoder descrive un classico codificatore turbo e mostra la progettazione generale dei turbo codici paralleli.
Questa implementazione dell'encoder invia tre sotto-blocchi di bit. Il primo sottoblocco è il blocco ''m''-bit dei dati del payload o carico utile (che è inviato,
Dal punto di vista dell'hardware,
[[File:turbo encoder.svg]]
Nella figura, ''M'' è un registro di memoria. La linea di ritardo e l'interleaver
:<math>\begin{align}
Riga 46:
==Il decoder==
Il decodificatore è costruito in modo simile all'encoder. Due decodificatori elementari sono interconnessi tra loro
[[File:turbo decoder.svg]]
Considerando un canale AWGN senza memoria [[additive white Gaussian noise|AWGN]] si suppone che alla ''k''-esima iterazione, il decodificatore riceva una coppia di variabili casuali:
Riga 61:
dove <math>\scriptstyle a_k</math> e <math>\scriptstyle b_k</math> sono componenti di rumore indipendenti con la stessa varianza <math>\scriptstyle \sigma^2</math>. <math>\scriptstyle Y_k</math> è un ''k''-th bit dall'uscita dell'encoder <math>\scriptstyle y_k</math>.
Le informazioni ridondanti sono demultiplexate e inviate attraverso ''DI''
<math>\scriptstyle DEC_1</math>
:<math>\Lambda(d_k) = \log\frac{p(d_k = 1)}{p(d_k = 0)}</math>
e
L'[[algoritmo Viterbi ]] non è in grado di calcolare l'APP, quindi non può essere utilizzato in <math>\scriptstyle DEC_1</math>. Invece di
Tuttavia, la struttura rappresentata non è ottimale, perché <math>\scriptstyle DEC_1</math> utilizza solo una parte delle informazioni ridondanti disponibili. Per migliorare la struttura, viene utilizzato un ciclo di feedback (
==Approccio alla decisione Soft==
Il front-end del decoder produce un numero intero per ogni bit nel flusso di dati. Questo numero intero è una misura di quanto è probabile che il bit sia uno 0 o 1 ed è anche chiamato ''soft'' bit
* -127 significa "certamente 0"
Riga 81:
* 100 significa "molto probabile 1"
* 127 significa "certamente 1"
*
Questo introduce un aspetto probabilistico al flusso di dati dal front-end, ma trasmette più informazioni su ogni bit rispetto a un
Ad esempio, per ciascun bit, il front end di un ricevitore tradizionale deve decidere se una tensione analogica interna è al di sopra o al di sotto di un determinato livello di tensione di soglia. Per un decodificatore di turbo-codice, il front-end fornirebbe una misura di quanto è distante la tensione interna dalla soglia data.
Per decodificare il blocco di dati {{nowrap|''m'' + ''n''}}, il front-end del decoder crea un blocco di misure di verosimiglianza, con una misura di verosimiglianza per ogni bit nel flusso di dati. Ci sono due decodificatori paralleli, uno per
==Risoluzione delle ipotesi per trovare i bit==
L'innovazione chiave dei
Si può tracciare un'analogia tra questo processo e quello di risolvere enigmi
▲L'innovazione chiave dei codici turbo è il modo in cui utilizzano i dati di probabilità per riconciliare le differenze tra i due decodificatori. Ciascuno dei due decodificatori convoluzionali genera un'ipotesi (con probabilità relativa) per la sequenza di ''m'' bit nel sottoblocco del carico utile. I modelli di bit dell'ipotesi vengono confrontati e, se differiscono, i decodificatori scambiano le probabilità che hanno per ciascun bit nell'ipotesi. Ciascun decodificatore incorpora le stime di probabilità derivate dall'altro decodificatore per generare una nuova ipotesi per i bit nel carico utile. Quindi confrontano queste nuove ipotesi. Questo processo iterativo continua fino a quando i due decodificatori giungono alla stessa ipotesi sulla sequenza 'm' di bit del payload, e tipicamente ci riesce in 15 o 18 cicli.
▲Si può tracciare un'analogia tra questo processo e quello di risolvere enigmi di riferimenti incrociati come il cruciverba o il sudoku. Consideriamo un cruciverba parzialmente completato, probabilmente sbagliato. Due risolutori di rompicapo indipendenti (i decodificatori) cercano di risolverlo: uno possiede solo gli indizi "verticali" (bit di parità) e l'altro possiede solo gli indizi "orizzontali". Per iniziare, entrambi i solutori ipotizzano delle risposte alle domande, annotando quanto sono sicuri di ciascuna lettera (bit del payload). Quindi, confrontano le ipotesi, scambiandosi reciprocamente risposte e valutazioni di quando sono fiduciosi delle risposte, notando dove e come si differenziano. Sulla base di queste nuove conoscenze, entrambi forniscono risposte aggiornate e nuove valutazioni di fiducia, ripetendo l'intero processo fino a quando non convergono alla stessa soluzione.
==Prestazioni==
I codici Turbo funzionano bene grazie alla combinazione dell'aspetto casuale del codice
==Applicazioni pratiche
Telecomunicazioni:
* I
* [[MediaFLO]], sistema televisivo mobile terrestre
*
*
* La turbo codifica
==Formulazione bayesiana==
Dal punto di vista dell'intelligenza artificiale , i
| author1=McEliece, Robert J. | author1-link=Robert McEliece
| author2=MacKay, David J. C. | author2-link=David J. C. MacKay
|