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 (