Salta al contenuto
Note per Studenti Codifica di canale - codici a blocco, distanza minima, rivelazione e correzione

Codifica di canale - codici a blocco, distanza minima, rivelazione e correzione

In questa pagina 7

A che cosa serve

Il canale numerico (Canale numerico, ISI e codifica di GrayNella catena bit $\to$ BMAP $\to$ modulatore $\to$ canale $\to$ proiezione $\to$ rivelatore $\to$ IMAP, un simbolo da $b=\log_2M$ bit dura $T=T_b\log_2M$. Per non avere interferenza intersimbolo (ISI) le forme d'onda devono essere ortogonali alle loro traslate di $kT$: $\langle\phi_i(t),\phi_j(t-kT)\rangle=0$ per $k\ne0$ (per esempio un impulso che dura al più $T$). Il canale numerico equivalente (bit in ingresso, bit decisi in uscita) è un canale binario simmetrico di probabilità $P_{bit}$; con la codifica di Gray simboli adiacenti differiscono in un solo bit e $P_{bit}\approx\frac{P[E]}{\log_2M}$.Canale numerico, ISI e codifica di Gray →) sbaglia ogni tanto un bit: con la modulazione si può scendere a Pbit=10−3P_{bit}=10^{-3} o 10−510^{-5}, ma alcuni servizi richiedono 10−910^{-9} o meno, e alzare ancora la potenza costa. La codifica di canale (channel coding) aggiunge ridondanzabit aggiunti che non portano informazione nuova ma permettono di controllare la parola ai bit di informazione in modo che il ricevitore possa:

Non va confusa con la codifica di sorgente (Codifica di sorgente - codici a prefisso e teorema di ShannonLa codifica di sorgente riduce il numero di bit mappando le parole della sorgente in parole di lunghezza variabile (più corte per le più probabili), senza perdere informazione. Il codice deve essere decodificabile; i codici a prefisso (nessuna parola è prefisso di un'altra) lo sono. Kraft-McMillan: se il codice è decodificabile $\sum M_y^{-L(b)}\le1$. Teorema di Shannon: $L_y\ge\frac{H(x)}{\log_2M_y}$ e esiste un codice a prefisso con $L_y\le\frac{H(x)}{\log_2M_y}+1$; l'efficienza è $\eta=\frac{H(x)}{L_y\log_2M_y}$.Codifica di sorgente - codici a prefisso e teorema di Shannon →), che toglie ridondanza per risparmiare bit: la codifica di canale la mette, in modo controllato. Nella catena trasmissiva si trova dopo la codifica di sorgente e prima del modulatore.

Codice a blocco (n,k)(n,k)

Si raggruppano i bit di informazione in blocchi di kk bit, detti parole di informazione (ce ne sono 2k2^k), e a ciascuna si associa una parola di codicesequenza di nn bit associata a una parola di informazione di n>kn>k bit (la mappa deve essere iniettiva). L'insieme delle 2k2^k parole di codice è il codice C⊂{0,1}n\mathcal C\subset\{0,1\}^n. Grandezze:

Rc=kn  (rendimento),n−k  (bit di ridondanza),1Rc=nk  (espansione di banda).R_c=\frac kn\ \ (\text{rendimento}),\qquad n-k\ \ (\text{bit di ridondanza}),\qquad\frac1{R_c}=\frac nk\ \ (\text{espansione di banda}).

Se il canale sostiene un bit-rate RbR_b di bit trasmessi, i bit utili sono RbRcR_bR_c. Il codice è sistematico se i primi kk bit della parola di codice coincidono con la parola di informazione (gli altri n−kn-k sono i bit di parità).

Esempi. Ripetizione (n,1)(n,1): ogni bit è ripetuto nn volte, Rc=1nR_c=\frac1n. Singolo bit di parità (n,n−1)(n,n-1): si aggiunge un bit che rende pari il numero di uni, Rc=n−1nR_c=\frac{n-1}n. Hamming (7,4)(7,4): Rc=47R_c=\frac47 (Codici a blocco lineari - matrice generatrice, controllo di parità, sindrome e codici di HammingUn codice a blocco è lineare se la somma (bit a bit, modulo 2) di due parole di codice è una parola di codice. Si descrive con la matrice generatrice $G$ ($k\times n$, $\mathbf c=\mathbf mG$) e con la matrice di controllo di parità $H$ ($(n-k)\times n$, $G H^T=0$); in forma sistematica $G=[I_k\mid P]$ e $H=[P^T\mid I_{n-k}]$. La distanza minima è il peso minimo delle parole non nulle. La sindrome $\mathbf s=\mathbf rH^T$ dipende solo dall'errore: se è nulla la parola è valida, altrimenti identifica l'errore (un solo errore ha per sindrome la colonna di $H$ corrispondente). I codici di Hamming $(2^m-1,,2^m-1-m)$ hanno $d_{min}=3$.Codici a blocco lineari - matrice generatrice, controllo di parità, sindrome e codici di Hamming →).

Distanza di Hamming e distanza minima

Il peso di Hammingnumero di uni di una parola wH(c)w_H(\mathbf c) è il numero di uni di c\mathbf c; la distanza di Hammingnumero di posizioni in cui due parole hanno bit diversi tra due parole è il numero di posizioni in cui differiscono: dH(c,c′)=∑j=1n(1−δcjcj′)=wH(c⊕c′)d_H(\mathbf c,\mathbf c')=\sum_{j=1}^n\left(1-\delta_{c_jc'_j}\right)=w_H(\mathbf c\oplus\mathbf c') (con ⊕\oplus somma bit a bit modulo 2). La distanza minima del codice è la più piccola distanza tra due parole distinte: dmin=min⁡c≠c′∈CdH(c,c′).d_{min}=\min_{\mathbf c\ne\mathbf c'\in\mathcal C}d_H(\mathbf c,\mathbf c'). È l'analogo discreto della distanza minima della costellazione (Introduzione alla modulazione digitale e spazio dei segnaliLa modulazione digitale associa a ognuna delle $M=2^b$ parole di $b$ bit un segnale $s_m(t)$ di energia finita; il demodulatore deve capire quale segnale è stato trasmesso da $r(t)=s_m(t)+w(t)$. Per studiarlo i segnali si vedono come vettori: con il prodotto scalare $\langle x,y\rangle=\int xy^*dt$ e una base ortonormale ${\phi_i}$ ogni segnale è $\mathbf s_m=[\langle s_m,\phi_i\rangle]$ e l'insieme dei punti è la costellazione. La base si trova con il procedimento di Gram-Schmidt; distanze ed energie dei punti dicono le prestazioni.Introduzione alla modulazione digitale e spazio dei segnali →): più le parole sono lontane, più errori servono per trasformarne una in un'altra.

Esempio. Codice (4,2)(4,2) con 00→000000\to0000, 01→011101\to0111, 10→101110\to1011, 11→111011\to1110. Distanze: 00000000–01110111: 33; 00000000–10111011: 33; 00000000–11101110: 33; 01110111–10111011: 22; 01110111–11101110: 22; 10111011–11101110: 22. Quindi dmin=2d_{min}=2.

Rivelazione e correzione degli errori

Un errore di ee bit sposta la parola trasmessa a distanza ee.

dmind_{min} rivela corregge
22 11 00
33 22 11
44 33 11 (oppure rivela 2 e corregge 1)
55 44 22
77 66 33

Esempio. Ripetizione (3,1)(3,1): parole 000000 e 111111, dmin=3d_{min}=3: corregge t=1t=1 errore (si decide a maggioranza: 010→0010\to0). Singolo bit di parità: dmin=2d_{min}=2, rivela 11 errore ma non lo corregge. Un codice che deve correggere almeno 33 errori ha dmin≥7d_{min}\ge7 (per esempio il (63,45)(63,45) dell'esercizio Esercizio 27 · TDMA, codice a blocco (63,45) e PAM a quattro livelli (tema d'esame luglio 2021)).

Limiti sui codici

Con un codice (n,k)(n,k) e distanza dmind_{min}:

  • Limite di Singletondmin≤n−k+1d_{min}\le n-k+1: la distanza non supera i bit di ridondanza più uno: dmin≤n−k+1d_{min}\le n-k+1 (togliendo dmin−1d_{min}-1 posizioni le parole restano distinte). I codici che lo raggiungono sono detti a massima distanza (MDS). Serve per trovare il kk massimo con nn e tt dati: k≤n−dmin+1k\le n-d_{min}+1, con dmin=2t+1d_{min}=2t+1.
  • Limite di Hammingle 2k2^k sfere di raggio tt non si sovrappongono, quindi non possono occupare più dello spazio disponibile (impacchettamento di sfere): le 2k2^k sfere di raggio tt non si sovrappongono nello spazio di 2n2^n parole, quindi 2n−k≥∑i=0t(ni)2^{n-k}\ge\sum_{i=0}^t\binom ni. Se vale l'uguaglianza il codice è perfettovale l'uguaglianza nel limite di Hamming: le sfere ricoprono tutto lo spazio (Hamming (7,4)(7,4): 23=1+72^3=1+7; Golay (23,12)(23,12): 211=1+23+253+17712^{11}=1+23+253+1771).

Prestazioni su un canale binario simmetrico

Il canale numerico è un BSC con probabilità di errore sul bit pp (per esempio p=Pbitp=P_{bit} della modulazione). Con decodifica di un codice che corregge tt errori:

  • la parola è decodificata correttamente se ci sono al più tt errori (la probabilità di avere ii errori su nn bit è binomialela probabilità di ii errori su nn bit è (ni)pi(1−p)n−i\binom ni p^i(1-p)^{n-i}): Pw≤∑i=t+1n(ni) pi(1−p)n−i≈(nt+1)pt+1(p≪1);P_w\le\sum_{i=t+1}^n\binom ni\,p^i(1-p)^{n-i}\approx\binom n{t+1}p^{t+1}\quad(p\ll1); (con uguaglianza per i codici perfetti);
  • la probabilità d'errore sul bit dopo la decodifica: quando c'è un errore di parola, la parola decodificata è a distanza almeno dmind_{min} dalla trasmessa, quindi sbaglia in media circa dmind_{min} bit su nn (e la parola più probabile decodificata è a distanza dmind_{min}): Pbit≈dminn(nt+1)pt+1(1−p)n−t−1.P_{bit}\approx\frac{d_{min}}n\binom n{t+1}p^{t+1}(1-p)^{n-t-1}.

Esempi (calcolati e controllati con Python).

  • Ripetizione (3,1)(3,1), p=10−2p=10^{-2}: errore se almeno 22 bit su 33 sono sbagliati: Pb=3p2(1−p)+p3=2,98⋅10−4P_b=3p^2(1-p)+p^3=2{,}98\cdot10^{-4} (circa 3434 volte meno, al prezzo di triplicare i bit). Ripetizione (5,1)(5,1) (t=2t=2): 9,9⋅10−69{,}9\cdot10^{-6}.
  • Hamming (7,4)(7,4), t=1t=1, p=10−2p=10^{-2}: Pw=∑i≥2(7i)pi(1−p)7−i=2,03⋅10−3≈21p2P_w=\sum_{i\ge2}\binom7ip^i(1-p)^{7-i}=2{,}03\cdot10^{-3}\approx21p^2 (simulazione su 4⋅1054\cdot10^5 parole: 2,06⋅10−32{,}06\cdot10^{-3}), contro la probabilità 1−(1−p)4=3,9⋅10−21-(1-p)^4=3{,}9\cdot10^{-2} di sbagliare almeno uno dei 44 bit senza codice.
  • Codice (63,45)(63,45) con t=3t=3 (dmin≥7d_{min}\ge7) e p=2,9⋅10−5p=2{,}9\cdot10^{-5}: Pw=4,2⋅10−13P_w=4{,}2\cdot10^{-13} e Pbit≈763(634)p4=4,6⋅10−14P_{bit}\approx\frac7{63}\binom{63}4p^4=4{,}6\cdot10^{-14}.

Il prezzo della ridondanza. Se il bit-rate del canale resta fisso, i bit utilibit di informazione effettivamente trasportati, esclusa la ridondanza calano di RcR_c; se invece si vuole mantenere il rate utile, il tempo di bit si riduce di RcR_c e, a potenza fissa, l'energia per bit trasmesso cala (e quindi pp cresce): il guadagno di codificariduzione della potenza necessaria, a parità di probabilità d'errore, grazie al codice va confrontato con questa perdita. Per pp molto piccola il guadagno è grande; per pp vicino a 12\frac12 la codifica non conviene. Il limite teorico a cui un codice può arrivare è dato dalla capacità del canale (Capacità di canale - canale binario simmetrico, a cancellazione e AWGNLa capacità $C=\max_{p_x}I(x;y)$ è il massimo di informazione mutua tra ingresso e uscita del canale; per il teorema di Shannon si può comunicare con probabilità d'errore arbitrariamente piccola se e solo se il rate è minore di $C$. Per il canale binario simmetrico $C=1-H_2(p)$ bit per uso (ingresso uniforme), per il canale a cancellazione $C=1-\varepsilon$, per l'AWGN $C=\frac12\log_2(1+\text{SNR})$ per uso reale, cioè $C=B\log_2(1+\text{SNR})$ bit/s su una banda $B$. Il limite $R_b<C$ dà il minimo $\frac{E_b}{N_0}\ge\frac{2^\nu-1}\nu$ ($-1{,}59$ dB per $\nu\to0$).Capacità di canale - canale binario simmetrico, a cancellazione e AWGN →).

Errori comuni

  • Dire che dmind_{min} errori sono rivelati: se ne rivelano dmin−1d_{min}-1 (con dmind_{min} errori si può finire in un'altra parola di codice).
  • Correggere dmin2\frac{d_{min}}2 errori: sono ⌊dmin−12⌋\left\lfloor\frac{d_{min}-1}2\right\rfloor (dmin=4d_{min}=4 corregge solo 11).
  • Usare dmin≥2td_{min}\ge2t al posto di 2t+12t+1 per correggere tt errori (per t=8t=8: dmin≥17d_{min}\ge17, non 1616).
  • Dimenticare che il rendimento kn\frac kn riduce il rate utile.
  • Confondere la probabilità di parola con quella di bit dopo la decodifica (differiscono di circa dminn\frac{d_{min}}n).

Versione ripasso

Esercizi su questo argomento

Teoria collegata