07- Codifica di canale
Transcript
07- Codifica di canale
Codifica di canale (dalle dispense e dalle fotocopie) Trasmissione dell’Informazione Codici lineari a blocchi • • Un codice lineare (n,k) è un codice che assegna una parola lunga n ad ogni blocco lungo k. Si dice che il codice abbia un rate di codifica di k/n, quindi < 1 se il codice aggiunge ridondanza. I bit di ridondanza possono servire a due scopi: – rilevare un errore; – correggere l’errore rilevato. • Le parole in uscita si ottengono come combinazione lineare di quelle k in ingresso x i = " g ji u j per i = 1,2,...,n j=1 bit informativi u1 !! ! x1 ! ! uk u2 x = uG Matrice generatrice ! x2 Trasmissione dell’Informazione xn ! ! Codici lineari • Un codice lineare è sistematico se le prime k cifre sono quelle della parola originale. x = [u x p ] G = [I P] • Per capire quanto due parole sono differenti tra loro, un metodo semplice è!calcolare il numero ! di bit di cui sono differenti (distanza di Hamming). Si parla di distanza minima del codice ad indicare la minima distanza di Hamming tra due parole del codice stesso. • d min = min d h (x, y) x,y" codice • Questo valore corrisponde al numero di 1 nella parola che ne ha meno e che appartiene al codice. ! Trasmissione dell’Informazione Decodifica dei codici lineari • Assumendo un canale con rumore AWGN e campioni indipendenti, se il canale ha un probabilità d’errore media pari a p, P ( y | x) = p • • • d xy (1" p) n"d xy # p & d xy n =% ( (1" p) $1" p ' La scelta va per il valore di dxy minimo, che massimizza questa probabilità. Il!ricevitore dunque non si sbaglierà se il numero di errori è pari o inferiore a # d min "1% t =$ $ 2 && Questo valore è dunque il numero di errori che il codice è in grado di correggere.! Trasmissione dell’Informazione Decodifica hard e soft • • Una decodifica siffatta si dice hard, in quanto assume che il decisore sia a monte del decodificatore, e che i bit delle parole siano già stati identificati. La decodifica soft prevede invece che si usino i campioni, ma senza decidere prima di decodificare. In questo caso la distanza di Hamming è sostituita da quella Euclidea: n de = # ( s ji " ri ) 2 i=1 • La decodifica soft è molto più utile per i codici convoluzionali che per quelli lineari. ! Trasmissione dell’Informazione Metodo degli array standard (I) • • • Il metodo degli standard array è il metodo di decodifica più semplice ma anche quello più oneroso computazionalmente. Si costruisce una tabella avente nella prima riga tutte le parole di codice e in quelle successive tutte le possibili versioni errate di quelle parole che il codice è in grado di riconoscere. Il decodificatore confronta la parola ricevuta con tutti gli elementi della tabella e produce come risultato della decodifica la parola di codice corrispondente alla colonna in cui si è trovata una parola uguale a quella ricevuta. Trasmissione dell’Informazione Metodo degli array standard (II) Esempio di codice a blocchi: " 0 1 1 1 0 0% $ ' G = $1 0 1 0 1 0' $#1 1 0 0 0 1'& Ha una distanza minima di 3 e dunque corregge un errore al ! massimo. input 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 | | | | | | | | 0 1 1 0 0 1 1 0 output 0 0 0 1 0 0 0 1 0 1 1 0 1 1 1 0 1 1 1 0 1 0 0 1 000000 110001 101010 011011 011100 101101 110110 000111 000001 110000 101011 011010 011101 101100 110111 000110 000010 110011 101000 011001 011110 101111 110100 000101 000100 110101 101110 011111 011000 101001 110010 000011 001000 111001 100010 010011 010100 100101 111110 001111 010000 100001 111010 001011 001100 111101 100110 010111 100000 010001 001010 111011 111100 001101 010110 100111 Trasmissione dell’Informazione ! 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 Metodo delle sindromi • • La matrice P deriva il suo simbolo dal nome di “matrice di controllo di parità” (Check Parity Matrix), ed è di dimensioni n per n-k. Definiamo: # P & H =% ( $In"k ' Ciascuna parola di codice x soddisfa la condizione: # P & xH!= [u uP]% ( = uP + uP = 0 $In"k ' • La parola demodulata y può essere scritta come x+e, dove e rappresenta la sequenza errore. In questo caso: ! yH = (x + e)H = eH = s • Il vettore di n-k elementi s è detto sindrome in quanto mette in evidenza, se non nullo, la presenza di errori. ! Trasmissione dell’Informazione Semplificazione degli standard array • Tutti i vettori di una stessa riga della matrice degli standard array hanno la stessa sindrome. Infatti: y1 = x1 + e y2 = x2 + e s1 = y1H = (x1 + e)H = (x 2 + e)H = y 2 H = s 2 " s1 = s 2 = s • Nella decodifica mediante sindromi si costruisce una tabella a due ! colonne di cui la prima contiene le sequenze errore e la seconda i ! rispettivi vettori sindrome. – Si calcola quindi la sindrome della parola ricevuta; – si sceglie il vettore errore e corrispondente nella tabella; – si somma il vettore e alla parola ricevuta per ottenere la sequenza corretta. Trasmissione dell’Informazione Esempio • Si consideri il codice • Volendo decodificare [0 0 1 1 0 0] " 1 0 0 0 1 1% $ ' G = $ 0 1 0 1 0 1' $# 0 0 1 1 1 0'& ! s = yH = [0 1 0] ! x = y + e = [ 0 0 1 1 1 0] ! Trasmissione dell’Informazione &0 $1 $ $1 H=$ $1 $0 $ $%0 1 0 1 0 1 0 1# 1!! 0! ! 0! 0! ! 1!" sequenze errore sindromi 000001 001 000010 010 000100 100 001000 110 010000 101 100000 011 Prestazioni dei codici lineari a blocchi • È possibile calcolare per un codice, almeno teoricamente, la generica probabilità di ricevere y avendo trasmesso x. Da qui si calcola la probabilità d’errore: k n 1 2 2 Pw (e) = 1 " k $ $ P ( y j | x i ) 2 i=1 j=1 j# j 0 • Normalmente il calcolo è difficile. Si può dare però un limite superiore. Infatti, nel caso di segnali binari su canale simmetrico, la probabilità si sbagliare m bit su parole lunghe n è ! • "n% m n(m P( m, n) = $ ' p (1( p) # m& Se il codice è in grado di rilevare t errori, allora ! Trasmissione dell’Informazione n n $n' m n*m Pw (e) " # P( m,n) = # & ) p (1* p) m=t+1 m=t+1 % m (