Sommario:
Un codice a blocco (n,k) è completamente definito se sono assegnate le 2k sequenze binarie (parole codice) di lunghezza n:
Assumiamo che L=2 cioè consideriamo i codici binari con
Ogni parola codice è un vettore n-dimensionale con componenti con valori 0 oppure 1.
Un codice (binario) è lineare se ogni combinazione lineare di parole codice è ancora una parola codice
La linearità di un codice dipende solo dalle parole codice è non da come esse sono associate ai blocchi di informazione.
Esempio:
La proprietà di chiusura (rispetto alla somma modulo 2) e la presenza di c0=(0000…0) implica che C è un sottospazio vettoriale dello spazio costituito da tutti i vettori n-dimensionali binari
Il sottospazio vettoriale C può essere generato da un sottoinsieme di vettori di C cioè da una base.
Esempio 1:
Il codice (5,2) con C={00000, 10100, 01111, 11011} è lineare perché verifica la proprietà di chiusura e ha la parola codice (00000).
E’ naturale associare ad ogni parola codice ci una sequenza di informazione xi e ad ogni cj↔xj in modo che:
xi⊕xj ↔ ci⊕cj∀i , j a
Se consideriamo questa associazione per il codice C(5,2):
00 → 00000
01 → 01111
10 → 10100
11 → 11011
è facile constatare che la proprietà a è soddisfatta.
Se consideriamo questa altra associazione:
00 → 10100
01→ 01111
10 → 11011
11 → 11011
La proprietà a non è soddisfatta. Comunque, In entrambi i casi il codice è lineare.
Assumiamo da questo momento che il codice lineare C verifica la proprietà a.
Definizioni:
Per un codice lineare dmin:
Il codice C(5,2) che stiamo considerando ha una distanza minima dmin=2.
In ogni codice lineare C è possibile individuare k parole codice dalle quali poter ottenere tutte le parole codice di C attraverso combinazioni lineari.
Assumiamo di considerare le sequenze di informazione (vedi immagine):
Queste k parole codici gi definiscono una matrice binaria kxn detta matrice generatrice del codice.
Dalla matrice generatrice G si evince che le componenti di c=(c1,c2,c3,c4,c5) con
Il codice è sistematico perché i primi k (k=2) simboli della parola codice coincidono con i simboli della sequenza di informazione.
La matrice G in questo caso si scrive:
Definizione del codice duale del codice C:
E’ il codice C(n,n-k) che ha matrice generatrice H pari
Si può dimostrare che le parole codice di C sono ortogonali alle parole codice di CT:
cHt = 0 ∀c∈C
cGt = 0 ∀c∈CT
La matrice H è detta matrice controllo di parità del codice C.
Poiché tutte le righe di G sono parole codice si ha: GHt=0.
I codici di Hamming sono codici lineari a blocco con C(2m-1, 2m-1-m) e dmin=3 costruiti nel seguente modo:
Le colonne della matrice H del codice sono tutte le sequenze binarie di lunghezza m esclusa quella con tutti “0” il cui numero è pari a 2m-1.
Esempio: costruire il codice di Hamming con m=3 cioè il codice di Hamming C(7,4).
I codici di Hamming avendo una dmin=3 possono correggere un errore.
Determinare il dizionario del codice di Hamming (7,4), la distribuzione dei pesi e verificare che la distanza minima è 3.
Dimostrare che la distanza minima di un codice di Hamming è pari al minimo numero di colonne della matrice di controllo di parità H linearmente dipendenti.
La matrice H può essere espressa nella forma:
Sia c=[c1,...,cn] una parola codice con l componenti non nulle. Denotiamo con ci1,…,cil le l componenti uguali a 1.
Poichè cHt = 0 ⇒
c1h1+c2h2+…+cnhn = 0 ⇒
ci1hi1+ci2hi2+…+cinhin = 0
Quindi se una parola codice ha peso di Hamming l, allora l colonne di H saranno linearmente dipendenti.
Se un codice ha distanza minima dmin, allora esiste almeno una parola codice di peso dmin, e, quindi, dmin è il numero minimo di colonne di H linearmente dipendenti.
L’obiettivo della codifica a blocchi è quello di aumentare la distanza euclidea tra i segnali per aumentare le prestazioni (la P(e)) a parità di potenza e pagando in banda.
Il confronto tra i codici può essere fatto con le distanze di Hamming poiché quelle euclidee aumentano con esse.
Possiamo avere due alternative:
Supponiamo che si utilizza una segnalazione antipodale la parola codice ci=(ci1,ci2,…,cin) è associata al segnale:
Il ricevitore ottimo per AWGN calcola le distanze euclidee tra r(t) e si(t) e decide per il segnale più prossimo a r(t).
Il demodulatore hard esegue singole decisioni sugli n simboli di canali ricevuti e consegna la parola ricevuta al decodificatore che stima la parola codice calcolando le distanze tra la parola ricevuta e le M possibili parole codice.
Nella decodifica hard si riconoscono tre fasi:
La decodifica si realizza sulla base della costruzione dell’array standard che individua le 2k regioni di decisione.
La procedura di costruzione dell’array standard consente di ripartire lo spazio di osservazioni costituito da 2n vettori in 2k regioni di decisione.
L’array si costruisce nel seguente modo:
Tutti gli elementi dell’array sono distinti
Assumiamo che due elementi siano uguali. Ciò può accadere solo in due casi:
Tutti gli elementi di una riga (coset) sono caratterizzati dalla seguente proprietà:
Ogni coinsieme può essere identificato univocamente da una sindrome s.
E’ possibile definire una tabella di corrispondenze (s,e) (vedi figura in alto)
Strategia di decodifica:
Esercizio: Confrontare le prestazioni di un sistema che non utilizza la codifica con un sistema che utilizza un codice di Hamming (7,4) con R=10 Kbit/sec, P=10-6W, N0/2 =10-11W/Hz e una segnalazione binaria PSK.
Senza codifica (vedi figura)
In questo caso la cascata mod.+AWGN+ demod. hard è un canale BSC (vedi figura):
Perché, essendo il codice lineare, dipendono solo dalla distribuzione dei pesi wk con k=1,…,M-1.
La probabilità di corretta decisione può essere calcolata come la probabilità che si verifichi una configurazione di errore correggibile (vedi costruzione array standard). Essa può essere anche stimata con la maggiorazione dell’unione.
(vedi figura in alto)
Affinché le sfere di decisione non si sovrappongano il loro raggio ec (il numero di errori correggibili) dipende dalla dmin.
(vedi figura in basso)
Poiché il decodificatore opera a minima distanza di Hamming si ha:
Il decodificatore con decisione hard riesce ad ottenere le stesse prestazioni di quello ottimo (decisione soft) pagando un prezzo in termini di Eb/N0<2 dB per prestazioni di interesse applicativo.
Se si demodula con 8 livelli si riduce il prezzo cioè Eb/N0<0.1 dB.
Si supponga di utilizzare un codice di Hamming (7,4) con R=104 bps, P=10-6 W, N0/2=10-11 W, un BPSK, e un demodulatore hard con decodifica a MV (minima distanza di Hamming):
Riassunto della lezione
Codici ciclici
Argomenti della lezione 13
1. Schema canonico di un sistema di trasmissione numerico punto-punto
4. Rappresentazione geometrica dei segnali
5. Trasmissione numerica su canale AWGN
6. Prestazioni del ricevitore ottimo su canale AWGN I
7. Prestazioni del ricevitore ottimo su canale AWGN II
8. Demodulazione MV non coerente di segnali FSK
9. Trasmissione su canale AWGN a banda limitata
10. Capacità di canale e codifica
11. Codifica di canale a blocchi
13. Codici ciclici