INFO-COM Dpt. Dipartimento di Scienza e Tecnica dell Informazione e della Comunicazione Università degli Studi di Roma Sapienza Codifica di Canale Codici a blocco TELECOMUNICAZIONI Profs. Roberto Cusani Francesca Cuomo
Codici di canale 2 Contesto in cui si utilizzano i codici di canale : un sistema di trasmissione (o di memorizzazione) soggetto ad errori di trasmissione (o di recupero dell informazione) Obiettivo della codificazione: ridurre la probabilità di errore nella trasmissione di un messaggio, tramite introduzione di ridondanza nel messaggio trasmesso Codici semplici e noti: lingua parlata codice a ripetizione codice a controllo di parità Si fa riferimento a messaggi e sistemi binari e quindi a codici binari
Codici di canale 3 Esempi pratici: codice fiscale codici a barre numerazione assegni biglietti aerei La ridondanza implica un allungamento del messaggio trasmesso, con conseguenze indesiderate del tipo: aumento dello spazio di memoria richiesto ( storage ) aumento di tempi di trasmissione (e/o memorizzazione) aumento della banda richiesta (es. applicazioni real-time)
Applicazioni della codifica di canale 4 L importanza della codifica di canale cresce con le trasmissioni digitali Primo impiego dei codici: trasmissioni con lo spazio profondo: canale AWGN, banda illimitata, pochi ricevitori (costi trascurabili) Memorie di massa: compact disc, digital versatile disc, nastri magnetici Comunicazioni digitali senza filo ( wireless ): GSM, UMTS, wifi, wimax Comunicazioni digitali su filo ( wired ): Modem per linea telefonica Broadcasting digitale: DAB, DVB
Prestazioni e complessità della codificazione 5 I primi sistemi di comunicazione numerici sono stati progettati cercando di ottenere una bassa probabilità di errore con l uso di elevata potenza oppure bande più larghe In trasmissione tale approccio è adeguato se la probabilità di errore richiesta non è troppo bassa, ed è basato sul concetto di ottenere buone prestazioni acquistandole con le risorse più preziose, cioè potenza e banda Grazie ai risultati ottenuti da C. E. Shannon si è visto che l impiego di complesse tecniche di co-decodifica, consentite dal progresso tecnologico, si possono ottenere elevate prestazioni al prezzo di aumentare la complessità del sistema
Modello di Sistema di Trasmissione Sequenza binaria (data stream) emessa dalla sorgente Il data stream va in ingresso al codificatore di canale che effettua l operazione di codifica (introduzione di ridondanza) Code stream in uscita dal codificatore. In ricezione il decodificatore, rimuovendo la ridondanza, effettua rivelazione o correzione di eventuali errori introdotti dal canale
Errori sui bit Il canale di comunicazione (attraverso la sua risposta impulsiva) può introdurre distorsioni nel segnale ricevuto Condizioni di Nyquist non verificate in ricezione Negli apparati in ricezione è presente una componente additiva di rumore termico Disturbo sovrapposto al segnale ricevuto Entrambi questi fenomeni possono portare ad errori sul flusso binario in uscita al demodulatore numerico Ex: Tx [001010001] Rx [000010001] Errore sul terzo bit
Effetto della codifica di canale Mediante l introduzione di ridondanza nel flusso binario trasmesso l operazione di codifica di canale mira a Rilevare la presenza di errori Ex: codice di parità 00-0 01-1 10-1 11-0 permette di rilevare la presenza di un errore Correggere un numero limitato di errori Ex: codice a ripetizione 0-000 1-111 Diminuzione della probabilità di errore sul bit SENZA AUMENTARE LA POTENZA TRASMESSA
Classificazione dei codici di canale 9 Codici di canale Codici a blocchi Codici ad albero Codici lineari Codici non lineari Codici lineari (convoluzionali) Codici non lineari Codici ciclici TCM Turbo codici
Codici a blocchi 10 Data stream (non codificato) e code stream (codificato) vengono segmentati in blocchi di lunghezza prestabilita (dataword e codeword) Per un codice a blocchi (n,k) le data word consistono in k bit e le codeword in n bit (n<k) Codice di canale: è l insieme delle 2 k n-ple di bit, le code word x Codificatore: è l insieme delle 2 k coppie (u, x) con u = data word (k-pla di bit) x = corrispondente code word (n-pla di bit)
Esempi di codici elementari 11 Codice a ripetizione (3,1) ovvero n=3, k=1 Nel codice si usano solo 2 delle 8 possibili sequenze di lunghezza 3 Codice a controllo di parità (3,2) L ultimo bit è un bit di parità rispetto ai primi 2. codificatore Data words Code words 0 000 1 111 codificatore Data words Code words 00 000 01 011 10 101 11 110
Esempio di codice di controllo di parità (4,3) 12 Esempio di codice di parità (4, 3): [0000], [0011], [0101], [0110] [1001], [1010], [1100], [1111] Il numero di 1 presenti in tutte le parole è sempre pari La ricezione della parola: [0100] è affetta da errore poiché contiene un numero dispari di 1
Esempio di codice di controllo di parità (6,3) 13 Esempio di codice di parità (6, 3): [000000], [001011], [010110], [011101] [100101], [101110], [110011], [111000] gli ultimi 3 bit sono calcolati sommando bit 1-2, 2-3 e 1-3 rispettivamente Ricevendo la seguente parola: [010111] si rivela un errore dal momento che il bit 6 è diverso dalla somma del bit 1 e 3
Codici a blocchi (senza memoria) 14 Differenza tra codice e codificatore : Codice: è una collezione di code word, indipendente dal modo nel quale le code word stesse sono ottenute Codificatore: si riferisce alla corrispondenza uno-a-uno tra data word e code word, e si applica anche al dispositivo che realizza tale compito Il codice (n,k) è a blocchi quando il codificatore è senza memoria, cioè quando agli stessi k bit della data word corrispondono sempre gli stessi n bit della code word Il rapporto R c = k/n è la frequenza del codice ( rate ) Ogni dataword (blocco) viene codificata indipendentemente senza interazioni con le data word precedenti o successive
Codici ad albero 15 La corrispondenza tra data word e code word ha memoria: gli n bit della codeword dipendono anche da alcune data word precedenti Riferimento a data stream infinitamente lunghi ed a code stream che iniziano al tempo zero e continuano indefinitamente nel futuro il data stream viene diviso in segmenti (data frame) di k 0 data bit, con k 0 (generalmente) un intero piccolo Codificatore: macchina a stati finiti che mantiene una certa memoria delle data frame precedenti: Nel caso più semplice memorizza le m data frame più recenti inviate
Codici lineari e non lineari 16 Codice lineare L insieme delle code word (ovvero code stream per i codici ad albero) è chiuso per la somma modulo 2, ovvero: considerate due qualsiasi code word, la loro somma modulo 2 è ancora una code word ciò implica che la parola di tutti zeri è una code word Codice non lineare In caso di non validità della proprietà precedente
Codificatori sistematici 17 Il Codificatore si dice sistematico quando i primi k bit di ogni code word x coincidono con i k bit della data word u A volte si parla di sistematicità del codice, anziché del codificatore: tuttavia, dal momento che la proprietà riguarda il mapping delle data word nelle code word, è propria del codificatore
Rivelazione di errore e ritrasmissioni 18 In accordo a come il sistema fa uso delle capacità del codice, si distingue tra: Codici a rivelazione d errore e Codici a correzione d errore Questa distinzione non riguarda i codici ma piuttosto le strategie seguite dal sistema di co-decodificazione Nella rivelazione d errore il decodificatore osserva la sequenza ricevuta all uscita del demodulatore/decisore, e rileva se sono avvenuti errori o meno
Rivelazione d errore Automatic Repeat request - ARQ 19 La rivelazione d errore è utilizzata per realizzare uno di due possibili schemi: Nel monitoraggio dell errore (error monitoring), il decodificatore fornisce all utente una indicazione continua sulla qualità della sequenza ricevuta, in modo che si possa scartare la sequenza se l affidabilità diviene troppo bassa Nella richiesta di ripetizione (ARQ, Automatic Repeat request) si chiede al trasmettitore di ripetere le trasmissioni fallite e, dunque, deve essere disponibile un canale di ritorno (feedback) dal ricevitore al trasmettitore
Correzione d errore (Forward Error Correction-FEC FEC) 20 Il decodificatore tenta di ripristinare la corretta sequenza trasmessa quando vengono rilevati errori nella sequenza ricevuta A parità di codice la Forward Error Correction (FEC) richiede algoritmi di decodifica più complessi rispetto alla rivelazione d errore con ARQ
Correzione d errore (Forward Error Correction - FEC) 21 Il decodificatore tenta di ripristinare la corretta sequenza trasmessa ESEMPIO: Codice ciclico (6, 3): [000000], [001011], [010110], [011101], [100101], [101110], [110011], [111000] utilizzato su un sistema con correzione di errore Sequenza di parole ricevute: [000100] [011101] [101111] [111000] La prima e la terza parola non appartengono al codice e quindi se ne può tentare una correzione, ad esempio limitando al minimo il numero di bit da modificare nelle parole errate: [000000] [011101] [101110] [111000]
Confronto tra ARQ e FEC 22 La scelta dipende dalla particolare applicazione e dalla complessità del sistema di trasmissione considerato Lo schema ARQ è usualmente impiegato nelle comunicazioni tra computer, essendo disponibile un canale di trasmissione a due vie insieme a dispositivi con grande memoria che memorizzano le informazioni entranti mentre effettuano, su richiesta, la procedura di trasmissione Lo schema FEC si adotta quando si vuole proteggere l informazione in un canale a una via oppure quando è richiesto il tempo reale oppure ritardi controllati (es. trasmissioni vocali digitali interattive, deep-space communications)
Codici a blocco lineari 23 Un codice a blocco è lineare se l insieme delle codeword è chiuso per la somma modulo 2, ovvero, considerate due qualsiasi codeword, la loro somma modulo 2 è ancora una codeword Le operazioni di somma nelle sequenze binarie sono trattate con l aritmetica modulo 2 ovvero definendo un Campo di Galois GF(2) Nella pratica tale aritmetica è realizzata tramite operatori logici: somma prodotto 0+0 = 0 0 x 0 = 0 0+1 = 1 0 x 1 = 0 1+0 = 1 1 x 0 = 0 1+1 = 0 1 x 1 = 1 Somma algebrica modulo 2 EXOR logico 0+0 = 0 0 0 = 0 0+1 = 1 0 1 = 1 1+0 = 1 1 0 = 1 1+1 = 2 0 1 1 = 0 Prodotto algebrico AND logico 0 x 0 = 0 0 0 = 0 0 x 1 = 0 0 1 = 0 1 x 0 = 0 1 0 = 0 1 x 1 = 1 1 1 = 1
Codici a blocco lineari 24 Un codice lineare possiede le seguenti proprietà: La somma di due codeword è ancora una codeword. La n pla di tutti zeri è sempre una codeword Un codificatore a blocco (n, k) lineare è una corrispondenza tra: dataword u = [u 0,, u k-1 ] di k digit e codeword x = [x 0,, x n-1 ] di n digit È realizzabile tramite una coppia di registri a scorrimento connessi tra di loro attraverso un banco di sommatori modulo 2 (EXOR logici)
Codici sistematici 25 Codificatore (n, k) sistematico: i primi k bit delle codeword generate corrispondono ai bit delle dataword che le generano La sistematicità è una proprietà del CODIFICATORE, ovvero della regola di associazione tra dataword e codeword (un codice può, al limite, essere esprimibile in forma sistematica, i.e. contiene parole che iniziano come le dataword) Semplifica la struttura in decodifica Si può dimostrare che, dato un codice lineare con date prestazioni (probabilità di rilevare e/o correggere una parola errata) ne esiste sempre uno equivalente esprimibile in forma sistematica
Esempi di codici a blocco lineari 26 Codice a ripetizione (4,1): 0 0000 1 1111 x 0 = u 0 x 1 = u 0 x 2 = u 0 x 3 = u 0 x 3 k = 1 u 0 x 2 x 1 x 0 n = 4 Codice a parità doppia (4,2): 00 0000 01 0011 10 1101 11 1110 u 1 u 0 x 0 = u 0 x 1 = u 1 x 2 = u 0 +u 1 x 3 = u 0 +u 1 x 3 x 2 x 1 x 0
Codice di Hamming (7,4) 27 Il codice è sistematico ed utilizza solo 2 4 = 16 delle 2 7 = 128 possibili sequenze Il codice è dato da: x i = u i x 5 = u 1 +u 2 +u 3 x 6 = u 2 +u 3 +u 4 x 7 = u 1 +u 2 +u 4 i=1,2,3,4 + + + k=4 u 4 u 3 u 2 u 1 x 7 x 6 x 5 x 4 x 3 x 2 x 1 n=7 Codice di Hamming (7,4) Data words Code words 0000 0000 000 0001 0001 011 0010 0010 110 0011 0011 101 0100 0100 111 0101 0101 100 0110 0110 001 0111 0111 010 1000 1000 101 1001 1001 110 1010 1010 011 1011 1011 000 1100 1100 010 1101 1101 001 1110 1110 100 1111 1111 111
Matrice generatrice del codice 28 Il codice viene specificato dalle connessioni tra gli stadi del registro di ingresso ed i sommatori Se il codice è sistematico, vanno assegnate solo le (n-k) equazioni del controllo di parità L informazione che specifica la regola di codifica (ovvero, la struttura del codificatore) è rappresentabile in modo sintetico da una matrice binaria G di dimensioni k x n (matrice generatrice del codice) L elemento (i,j) di G vale 1 se l i-esima cella del registro d ingresso è connessa al j-esimo sommatore, altrimenti vale 0
Matrice generatrice del codice 29 Si può quindi scrivere: x = u G (1) con x = [x 1,,x n ] vettore (1 x n) ed u = [u 1,,u k ] vettore (1 x k) Dalla (1), x viene ottenuto sommando le righe di G che corrispondono agli 1 nella u
Esempio 30 Per il codice di Hamming (7,4), la matrice generatrice G può essere ricavata per ispezione dal codificatore: x i = u i i=1,2,3,4 1 0 0 0 1 0 1 x 5 = u 1 +u 2 +u 3 0 1 0 0 1 1 1 G = x 6 = u 2 +u 3 +u 4 0 0 1 0 1 1 0 x 7 = u 1 +u 2 +u 4 0 0 0 1 0 1 1 Ad esempio, la code word che corrisponde alla data word u = [1100] si calcola sommando (mod. 2) le prime due righe di G: x = u G 1000101 + code word 0100111 = (coincide con risultato nella 1100010 tabella del codificatore)
Matrice generatrice del codice 31 Per un codice sistematico le prime k colonne di G formano una matrice identità k x k, ovvero I k,e si ha: G = [ I k P ] dove P è una matrice di dimensioni [k x (n-k)] contenente le informazioni relative ai controlli di parità Per un codice sistematico la conoscenza di P definisce in modo completo la regola di codifica ESEMPIO Per il codice di Hamming (7,4) si ha: 1 0 0 0 1 0 1 1 0 0 0 0 1 0 0 1 1 1 0 1 0 0 G = I 0 0 1 0 1 1 0 4 = 0 0 1 0 0 0 0 1 0 1 1 0 0 0 1 P 1 0 1 1 1 1 = 1 1 0 0 1 1
Proprietà dei codici a controllo di parità 32 Proprietà 1: Ogni code word è una somma di righe della matrice generatrice Proprietà 2: Il codice a blocchi è costituito da tutte le possibili somme delle righe della matrice generatrice Proprietà 3: La somma di due code word è ancora una code word Proprietà 4: La n-pla di tutti zeri è sempre una code word Dalle proprietà 1-4, i codici a controllo di parità sono anche detti codici lineari In effetti, la linearità viene espressa dalla: x = u G
Equivalenza tra codici a blocchi e sistematici 33 Ogni codice a blocchi (n,k) non sistematico è equivalente a un codice sistematico (n,k) a blocchi Quindi si possono considerare solo codici sistematici Infatti due codici con matrici generatrici ottenibili l una dall altra con operazioni sulle righe e permutazioni sulle colonne hanno la stessa probabilità di rilevare una parola errata codici equivalenti la probabilità di errore sul bit può essere diversa: codici equivalenti possono avere codificatori diversi e, cioè, diversi mapping tra le data word e le code word Se interessa la probabilità di rilevare una parola errata si possono considerare solo codici sistematici
Peso e distanza di Hamming, e distanza minima 34 Peso di Hamming di una code word: numero di 1 contenuti Distribuzione dei pesi del codice: insieme di tutti i pesi di un codice, insieme al numero di code word di quel peso Codici equivalenti hanno la stessa distribuzione dei pesi Distanza di Hamming d ij tra due code word x i e x j : numero di posizioni in cui le due code word differiscono. Si ha : 0 d ij n Distanza minima d min del codice: la più piccola tra le distanze di Hamming di distinte code word (i j) TEOREMA: la distanza minima di un codice a blocchi lineare è il peso minimo della code word diversa da zero
Peso e distanza di Hamming, e distanza minima 35 TEOREMA: la distanza minima di un codice a blocchi lineare è il peso minimo della code word diversa da zero Dimostrazione in un codice lineare: la somma di due parole è una parola di codice e restituisce la parola nulla se e solo se le due parole sono uguali la distanza di Hamming tra due parole è pari al peso della somma le possibili distanze di Hamming tra coppie di parole diverse corrispondono ai pesi delle parole del codice diverse dalla parola nulla La distanza minima di Hamming è il peso minimo tra i pesi delle parole di codice diverse dalla parola nulla.
Esempio 36 Per il codice di Hamming (7,4) si ha la seguente distribuzione dei pesi: Peso Numero di code words 0 1 3 7 4 7 7 1 Dalla proprietà (5) si ottiene: d min = 3 Codice di Hamming (7,4) Data words Code words 0000 0000 000 0001 0001 011 0010 0010 110 0011 0011 101 0100 0100 111 0101 0101 100 0110 0110 001 0111 0111 010 1000 1000 101 1001 1001 110 1010 1010 011 1011 1011 000 1100 1100 010 1101 1101 001 1110 1110 100 1111 1111 111
Rivelazione d errore 37 TEOREMA (SULLA RILEVAZIONE D ERRORE): Un codice lineare a blocchi (n,k) con distanza minima d min può rilevare tutti i vettori errore di peso non maggiore di: d min -1 ovvero si rivela un numero massimo di errori pari a (d min -1) Una configurazione di errori tale da tramutare una parola di codice valida in un altra parola di codice valida non è rilevabile (i.e. un numero di errori pari in un codice a parità) La distanza minima tra due codeword valide è d min Un numero di errori minore di d min è pertanto sempre rilevabile
Correzione di Errori Laddove si riceva una parola y si hanno due possibilità y è una parola di codice valida Non vi sono errori Vi sono errori tali da modificare la parola trasmessa in un altra parola di codice valida y non è una parola di codice valida Si richiede la ri-trasmissione avendo rilevato la presenza di errori Si corregge la parola ricevuta y è data dalla parola trasmessa più il vettore di errore si assume sia stata trasmessa la parola di codice a distanza minima da y (si ipotizza cioè che sia avvenuto il numero minimo di errori possibili) DECODIFICA a MASSIMA VEROSIMIGLIANZA (ML)
Correzione di errori 39 L algoritmo di decodifica basato sulla minima distanza ipotizza che e, il vettore errore effettivamente occorso, sia quello a minimo peso nell insieme dei 2 k vettori errore che portano alla sindrome associata alla sequenza ricevuta y TEOREMA (SULLA CORREZIONE D ERRORE): un codice lineare a blocchi (n,k), con distanza minima d min, può correggere tutti i vettori d errore contenenti un numero di errori non maggiore di: t ( d 1) 2 min =
Decodifica a massima verosimiglianza (ML) 40 Rappresentazione qualitativa delle regioni di decisione assegnate alle code words: Code words d min Sequenze ricevute con errori Detected Errors Corrected Errors dmin ( dmin 1) ( dmin 1)/2 2 1 0 3 2 1 4 3 1 5 4 2 6 5 2 7 6 3 8 7 3 9 8 4
Decodifica a massima verosimiglianza (ML) 41 ESEMPIO: Il codice di Hamming (7,4) presenta d min = 3 e quindi può t = (3 1) / 2 = 1 correggere errori, ovvero gli errori singoli Un codice a blocchi (n,k) con distanza minima d min è un codice a correzione di t errori (t-error correcting code), o codice (n,k,t) L obiettivo di un codice a blocchi (n,k) è di usare la propria ridondanza per ottenere la maggiore d min possibile
Probabilità di errore sul bit e sulla parola 42 Obiettivo generale della codifica: minimizzare la probabilità d errore sul bit P b (e) Codici a blocchi: si cerca di minimizzare la probabilità d errore sulla parola codificata P w (e) Nella correzione dell errore, se il codice (n,k) corregge t errori: si ha un errore sulla parola quando si hanno almeno t+1 bit errati su n della parola di codice ricevuta la parola di codice decisa, con errore, contiene almeno d min = 2t+1 bit errati su n nella parola dati ci sono, in media, k(2t+1)/n bit errati relazione tra probabilità d errore sulla parola e probabilità d errore sul bit: 2t + 1 Pb ( e) Pw ( e) n