Udine, 24 Febbraio 2005 Principi di Teoria dei Codici Andrea Tonello e-mail: [email protected] http://www.diegm.uniud.it/tlc/tonello UNIVERSITÀ DEGLI STUDI DI UDINE DIEGM DIPARTIMENTO DI INGEGNERIA ELETTRICA, GESTIONALE E MECCANICA Sommario Approcci alla Codifica di Canale Codici a Blocco Prestazioni Codici a Blocco Codici Convoluzionali Bibliografia: – J. Proakis, Digital Communications – S. Lin, D. Costello, Error Control Coding DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 2 Modello Sistema di Comunicazione Codificatore Sorgente Codificatore Canale Modulatore Numerico Canale De-Modul. • De-Cod. Canale De-Cod. Sorgente Lo scopo della Codifica di Canale e` di consentire la correzione e/o rivelazione degli errori introdotti dal canale. DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 3 Codifica di Canale Codificatore b c • Idea: Introdurre ridondanza in trasmissione, ad. es. ripetere l’informazione. • Il codificatore attua una trasformazione dalle parole di ingresso b alle parole di uscita c con una certa legge: b=[…,bi, bi+1,…] → c=[…,ci, ci+1,…] • Alfabeto: il campo cui appartengono gli elementi delle parole di ingresso, ad. es. GF(2). • Codice: insieme delle parole codificate. • Rate: rapporto tra numero di simboli di ingresso e quello di uscita (<1). DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 4 Approcci alla Codifica di Canale • Codici Algebrici a Blocco • Codici Convoluzionali • Codifica e Modulazione Congiunta – Modulazione codificata a traliccio (TCM) • Turbo Codici DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 5 Codici a Blocco DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 6 Codici a Blocco • Codice a blocco (n, k): – Parole (Vettori) di ingresso hanno lunghezza k : b=[b1,…,bk] – Parole di uscita hanno lunghezza n>k : – Alfabeto e` q-ario e le operazioni sono definite su un campo finito GF(q) con q primo o potenza di un c=[c1,…,cn] numero primo. – Se q e` primo, l’algebra e` modulo q. • Definizione: e` un insieme di qk parole di n elementi. • Codice Lineare: se c1 e c2 sono di codice allora ac1 + bc2=c3 e` di codice. – La parola nulla appartiene al codice. DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 7 Matrice di Codice c=b G • Matrice di Codice • Le k righe di G sono vettori linearmente indipendenti e sono di codice. • I vettori di codice appartengono al sottospazio k-dimensionale generato dalle righe di G. • Forma sistematica 1×n 1×k c = [b |c k +1 ,...,c n ] DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE k×n . Elementi appartenti a GF(q) ⎡ 1 ... 0 p11 ... p1n−k ⎤ ⎢ ⎥ G = ⎢... ... ... ... ... ... ⎥ ⎢ ⎥ ⎢ 0 ... 1 pk1 ... pkn−k ⎥ ⎣ ⎦ = [I |P] 8 Matrice di Controllo Parita` • Matrice di Controllo Parita` T (G) (H) = k×(n0−k ) k×n (n−k )×n • Le n-k righe di H sono vettori linearmente indipendenti e generano il codice duale (n-k,n) • Le parole del codice duale sono ortogonali a quelle del codice (n,k) • Se il codice e` in forma sistematica: ⎡−P ⎤ [Ik | P] ⎢ ⎥ = 0 ⎢⎣In−k ⎥⎦ G HT H = ⎡⎣−PT DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE In−k ⎤⎦ 9 Matrice di Controllo Parita` • Matrice di Controllo Parita`ci consente di verificare se un vettore e` di codice ⎧ = 0 se c ∈ ⎪ ⎪ cH ⎨ ⎪ ⎪ ⎩≠ 0 se c ∉ T s = cHT • Vettore Sindrome: • Assumendo il codice binario abbiamo: 1×(n−k ) – 2k vettori di ingresso e di codice. – 2n possibile vettori di dimensione n, quindi 2n -2k non sono di codice. – 2n-k sindromi. DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 10 Distanza e Peso di Hamming • Distanza di Hamming: numero di simboli di cui differiscono due parole con alfabeto q-ario dH (r1,r2 ) • Peso di Hamming: numero di simboli diversi da zero wH (r1) • Vale la seguente: DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE dH (c1, c2 ) = wH (c1 − c2 ) 11 Distanza Minima • Distanza Minima di Hamming: e` la minima distanza tra parole di codice dH,min = min {dH (c1, c 2 )} c1,c2 • In un codice lineare la distanza minima e` pari al peso minimo: dH,min = wH,min Dim: dH,min = min {dH (c1, c 2 )} c1,c2 = min {w H (c1 − c 2 )} c1,c2 = min {w H (c )} c≠0 DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 12 Singleton Bound • Bound di Singleton: In un codice lineare a blocco dH,min ≤ n − k + 1 • Codici a massima distanza verificano dH,min = n − k + 1 Dim: Basta pensare alla forma sistematica. • Gli unici codici binari a massima distanza sono quelli ripetitivi altrimenti ci sono quelli di Reed Solomon su GF(q). DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 13 Esempi di Codici Lineari a Blocco • Codici di Hamming. • Codici di Hadamard. • Codici BCH (Bose, Chaudhuri, Hocquenghem) e di Reed Solomon . DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 14 Codici di Hamming Binari • (n,k) = (2m-1,2m-1-m) m>1 intero n-k=m • La matrice H ha le n colonne ottenute prendendo tutti i vettori di m elementi binari escluso il vettore nullo. • Codice di Hamming (7,4) ⎡1 ⎢ T H = [P | In−k ] = ⎢ 1 ⎢ ⎢0 ⎣ ⎡1 ⎢ ⎢0 G = [Ik | P] = ⎢ ⎢0 ⎢ ⎢⎣0 • 0 1 1 | 1 0 0⎤ ⎥ 1 0 1 | 0 1 0⎥ ⎥ 1 1 1 | 0 0 1⎥⎦ 0 0 0 0 1 1⎤ ⎥ 1 0 0 1 1 0⎥ ⎥ 0 1 0 1 0 1⎥ ⎥ 0 0 1 1 1 1⎥⎦ Il peso minimo e` uguale a 3 DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 15 Codici di Hadamard • (n,k) = (2m,m+1) m>1 intero • Si ottengono dalle matrici di Hadamard cosi` definite ⎡M2 M 2 ⎤ ⎡ 0 0⎤ ⎥ ⎥ M4 = ⎢ M2 = ⎢ ⎢M M2 ⎥ ⎣⎢0 1⎥⎦ ⎣ 2 ⎦ • L’insieme delle parole di lunghezza n=4 ottenute dalle 4+4 righe di M4 e di M4 sono un codice a blocco lineare con k=3 e peso minimo dmin=n/2=2 DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 16 Codici BCH e Reed Solomon • Binari (n,k) hanno parametri – n=2m-1 – n-k ≤ mt con m≥3 t≥1 – dmin=2t+1 • Reed Solomon sono una sottoclasse non binaria. DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 17 Modello di Canale DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 18 Modello di Canale Canale Codificatore b De-Codificatore Equivalente c y b • Modulatore – Canale – Demodulatore possono essere visti come un blocco equivalente. • Bisogna definire la relazione ingresso-uscita. Essa dipende dal tipo di modulazione e demodulazione/decodifica: – Demodulazione/Decodifica Congiunta. – Demodulazione/Decodifiva disgiunta: • HARD • SOFT DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 19 Modello di Canale • Alfabeto di codice binario, Modulazione 2-PAM, Rumore Additivo Gaussiano Bianco yi = ES x i + ni xi = 2c i − 1 c i ∈ {0,1} xi ∈ {+1,−1} ni = N(0,N0 / 2) ed indip. • In forma vettoriale possiamo raccogliere le n osservazioni in un vettore e scrivere y = ES x + n • C’e` una relazione biunivoca tra c ed x x = 2c − 1 DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 20 Decodifica Soft DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 21 Decodifica Ottima a Massima Verosimiglianza • Il decodificatore ML decide per la parola di codice che massimizza la densita` di probabilita` del vettore ricevuto condizionata dal vettore trasmesso: n pY|X ( y | x ) = ∏ p Yi|Xi (yi | xi ) i=1 n =∏ i=1 1 πN0 − e − = (πN0 )n / 2 e • 1 ( yi − ES xi )2 N0 1 ||y− ES x||2 N0 Il decodificatore ML decide per il vettore di codice che e` a distanza Euclidea minima dal vettore ricevuto 2 xˆ = argmin{|| y − ES x || } x∈ DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 2 || y − ES x || = n ∑ ( yi − i=1 ES xi )2 22 Probabilita` Errore con Decodifica Soft Pe = P[cˆ ≠ c] = P[ xˆ ≠ x ] = ∑ P[ x = x i ]P[ xˆ ≠ x | x = x i ] xi ∈ P[Eij ] ≤ P[ xˆ ≠ x | x = x i ] = P[∪ Eij ] ≤ ∑ P[Eij ] j j Eij = {xˆ = x j ≠ x = x i } DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 23 Probabilita` Errore a Coppie P[Eij ] = P[ x = x i → xˆ = x j ] = P[dE ( y, ES xˆ ) < dE ( y, ES x )] = P[|| ES ( x − xˆ ) + n ||2 − || n ||2 < 0] = P[ES || x − xˆ ||2 −2 ES ( x − xˆ )nT < 0] V.a. gaussia a media nulla e varianza: 2N0ES || x − xˆ ||2 ⎛ E || x − xˆ ||2 ⎞ ⎛ E d2 ( x, xˆ ) ⎞ ⎟⎟ ⎟⎟ ⎜⎜ S E P[Eij ] = Q ⎜⎜⎜ S Q = ⎟⎟ ⎟⎟ ⎜ 2N0 2N0 ⎜⎝ ⎠⎟ ⎝⎜ ⎠⎟ Q(a) distribuzione gaussiana complementare DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 24 Probabilita` Errore Condizionata P[ xˆ ≠ x | x = x i ] ≤ ∑ P[Eij ] j ⎛ E d2 ( x , xˆ ) ⎞ ⎜⎜ S E i j ⎟⎟ ≤ ∑ Q⎜ ⎟⎟ ⎜⎜ 2N0 xˆ j ≠ xi ⎝ ⎠⎟ ⎛ E d2 ⎞ ⎜⎜ S E,min ⎟⎟ ≤ ∑ Q⎜ ⎟⎟ ⎜ 2N ⎜⎝ xˆ j ≠ xi 0 ⎠⎟ ⎛ E d2 ⎞ ⎜⎜ S E,min ⎟⎟ ≤ (2 − 1)Q ⎜ ⎟ ⎜⎜⎝ 2N0 ⎠⎟⎟ k dE,min = min {|| x 1 − x 2 ||} x1,x 2 ∈ Minima distanza Euclidea tra parole di codice 2-PAM DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 25 Probabilita` Errore Pe = ∑ P[ x = x i ]P[ xˆ ≠ x | x = x i ] xi ∈ ⎛ E d2 ⎞ ⎟ ⎜ ≤ (2k − 1)∑ P[ x = x i ]Q ⎜⎜ S E,min ⎟⎟ ⎜⎜⎝ 2N0 ⎠⎟⎟ xi ∈ ⎛ E d2 ⎞ ⎟ ⎜ ≤ (2 − 1)Q ⎜⎜ S E,min ⎟⎟ ⎜⎜⎝ 2N0 ⎠⎟⎟ k Pe blocco Pe bit ⎛ E d2 ⎞ ⎛ E d2 ⎞ n. parole a dE,min ⎜⎜ S E,min ⎟⎟ ⎜⎜ S E,min ⎟⎟ k LQ ⎜ ≤1 ⎟ ≤ Pe ≤ (2 − 1)Q ⎜ ⎟ L= k ⎜⎜⎝ ⎜⎝⎜ 2N0 ⎠⎟⎟ 2N0 ⎠⎟⎟ 2 ⎛ ⎞ ⎛ E d2 ⎞ 2 L ⎜ ES dE,min ⎟⎟ ⎜⎜ S E,min ⎟⎟ k ≤ ≤ − Q ⎜⎜ P (2 1)Q ⎟ ⎟ b ⎜⎜ k ⎜⎜⎝ 2N0 ⎠⎟⎟ 2N0 ⎠⎟⎟ ⎜⎝ DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 26 Confronto Sistema Codificato e Non Codificato Pb,COD ⎛ 2E Rd ⎞ b H.min ⎟ ⎜ ⎟⎟ = Q⎜ ⎜⎜⎝ N0 ⎠⎟ dE,min = 2dH,min Pb,UNCOD Eb = ES / R = ESn / k Per mantenere la velocita` di TX uguale bisogna incrementare la banda di 1/R Esempio: Hamming (7,4) DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE ⎛ 2E ⎞ b ⎟ ⎟ = Q ⎜⎜ ⎜⎜⎝ N ⎠⎟⎟ 0 G = RdH,min G = 3 × 4 / 7 = 2.34 dB 27 Canale Binario Simmetrico DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 28 Modello di Canale Binario Simmetrico (BSC) Decodifica hard: operiamo la demodulazione ottenendo un canale equivalente binario 0 1-p yi → ri ∈ {0,1} p 1 • 0 1 Probabilita` di transizione (con trasmissione 2-PAM) e` ⎛ 2E ⎞ b ⎟ ⎟ p = Pe = Q ⎜⎜ ⎜⎜⎝ N ⎠⎟⎟ 0 DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 29 Decodifica ML in Canale BSC • In forma vettoriale abbiamo per il canale binario simmetrico senza memoria r =c+e • Decodifica ML hard: massimizziamo la probabilita n P[r = rˆ | c = cˆ ] = ∏P[r = rˆi | c = cˆ i ] i=1 n = ∏P[ei = rˆi − cˆ i | c = cˆ i ] i=1 ˆ ˆ ˆ ˆ = p wH (r−c ) (1− p)n−wH (r−c ) Se p<1/2, decidiamo per il vettore di codice a distanza di Hamming minima cˆ = argmin{dH (r, c )} c∈ DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 30 Correzione • Con decodifica Hard possiamo correggere tutti i pattern di errore di peso minore uguale di ⎢1 ⎥ t = ⎢ (dH,min − 1)⎥ ⎢⎣ 2 ⎥⎦ – Puo` accadere che correggiamo errori di peso > t DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 31 Rivelazione • Con decodifica Hard possiamo rivelare tutti i pattern di errore di peso minore uguale di dH,min − 1 • Con la decodifica a sindrome, un pattern di errore di peso dH,min-1 non puo` trasformare la parola originaria in un’altra parola di codice. • Tuttavia possiamo anche rivelare pattern errore di peso maggiore di dH,min-1 poiche`: – 2k di codice e 2n ricevute – 2n-2k non sono di codice quindi rivelabili via decodifica a sindrome – 2n -2n+2k = 2k non sono rivelabili – Frazione di non rivelabili e` piccola: (2k – 1) /( 2n – 1) ~ 2k-n DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 32 Probabilita` di Errore • Con decodifica Hard possiamo correg. tutti i pattern di errore di peso minore uguale di t ⎛n⎞ i Pe (blocco) ≤ P[w(e ) > t] = ∑ ⎜⎜ ⎟⎟⎟ p (1− p)n−i ⎜ i= t +1⎝ i ⎠ n • Tipicamente la decodifica Hard differisce per 1-2 dB da quella Soft in termine di Eb/No per ottenere la stessa Pe. DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 33 Codici Convoluzionali DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 34 Codice Convoluzionale • Un codificatore convoluzionale e` una macchina a stati finiti lineare. • Codice convoluzionale binario di rate k/n genera ogni k bit d’ingresso n bit di uscita combinando modulo 2 i contenuti di uno shif register di lunghezza kK: bi 1 2 K 1 2 … k 1 2 … k 1 2 … k + + + c i1 c in • • Gli shift sono k bit d’ingresso alla volta. K e` detta constraint length (lunghezza di vincolo). DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 35 Codice Convoluzionale Binario 1/n • Esempio rate ½ e K=3 + bi 1 2 K=3 + • c i1 c i2 Viene descritto da una sequenza generatrice (detta polinomio di codice) g(1) = [101] → [5] in ottale g(2) = [111] → [7] in ottale • Ciascuna uscita puo` essere ottenuta da un filtraggio modulo 2 (n) c (n) = b ⊗ g (i) i DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 36 Diagramma a Traliccio (Trellis) • Ingresso-uscita puo` essere rappresentata da un traliccio 00 01 0/00 1/11 10 11 stato transizioni ingresso/uscite • Numero di stati uguale a 2K-1 • Numero di rami entranti/uscenti per stato uguale a 2 (rate 1/n) • Lungezza del traliccio uguale al numero totale di bit di ingresso • Se il codice e` terminato si parte dallo stato 0 e si ritorna allo stato 0 DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 37 Decodifica ML • Il decodificatore soft a massima verosimiglinza cerca tra tutte le parole di codice quelle a distanza euclidea minima (con rumore AWGN). • Se consideriamo trasmissione 2-PAM e rumore additivo bianco il modello e`: yi = • ES x i + n i 2 || y − ES x || = ∑ ( yi − i ES xi )2 Se assumiamo un codice di rate 1/n, allora n 2 || y − ES x || = dE ( y, ES x ) = ∑ ∑ ( yni+m − i ES xni+m )2 m=1 BM( xi ) = ∑ BM( xi ) = ∑ BM(x j ) + BM( x i ) i j<i PM(i−1) • La distanza totale e` ottenibile come somma di Branch metrics DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 38 Algoritmo di Viterbi • La ricerca esaustiva delle sequenza a distanza minima si ottiene con una operazione ricorsiva di ADD, COMPARE, SELECT sul traliccio 00 01 10 11 • Ciascun ramo puo` essere etichettato con il bit di ingresso, gli n bit di uscita, e la metrica di ramo (Branch Metric). • Percorsi entranti in uno stesso stato (nodo) sono competitors e sopravvive solo quello con metrica di percorso (Path Metric) piu` piccola. • Giunti alla fine del traliccio sompravviveranno un numero di percorsi pari al numero di stati. Scelgo quello di metrica piu` piccola, da cui ottengo la sequenza di bit di ingresso (sequenza decodificata). DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 39 Conclusioni • La codifica di canale e` essenziale per consentire comunicazioni affidabili. • Il codice deve essere progettato in funzione dell’applicazione e del canale trasmissivo. DIEGM UNIVERSITÀ DEGLI STUDI DI UDINE 40