Codifica di Hamming

La codifica di Hamming ha lo scopo di individuare e correggere un errore di trasmissione.

Il dato di 4 bit da trasmettere D3D2D1D0 viene integrato con 3 bit di parità C0, C1 e C2. I 3 bit di parità vengono collocati nelle posizioni corrispondenti a potenze di 2 (1, 2, 4, 8) a partire dalla cifra meno significativa.

7654321
D3D2D1C2D0C1C0

Il dato di 4 bit viene suddiviso in 3 gruppi di 3 bit. Per ognuno dei gruppi viene calcolato il bit di parità secondo il seguente schema:

bit di paritàgruppo di bit valutati
C0D3D1D0
C1D3D2D0
C2D3D2D1

Si può osservare che se in trasmissione si verifica un errore su uno dei 4 bit, il ricevitore ricalcolando i 3 bit di parità e confrontandoli con quelli ricevuti trova che un …

errore sul bit del datocorrisponde ai bit di parità diversi
D0C1C0
D1C2C0
D2C2C1
D3C2C1C0

La correzione consiste nel complementare il bit errato.

Esempio:

il dato da trasmettere sia

D3D2D1D0
1101

Si formano i 3 gruppi di bit e su ciascuno di essi si calcola il bit di parità:

gruppovaloreparità pari
D3D1D0101C0 = 0
D3D2D0111C1 = 1
D3D2D1110C2 = 0

Il messaggio inviato è:

7654321
D3D2D1C2D0C1C0
1100110

Ipotizzando che l'errore si verifiche sul bit D0, il messaggio ricevuto è:

7654321
D3D2D1C2D0C1C0
1100010

Il ricevitore ricalcola i 3 bit di parità:

gruppovaloreparità pari
D3D1D0100C0 = 1
D3D2D0110C1 = 0
D3D2D1110C2 = 0

Dal confronto il ricevitore determina che sono errati i bit di parità C0 e C1, quindi corregge il bit in posizione 3, cioè D0.

Il confronto viene eseguito calcolando l'exclusive or tra i bit di parità ricevuti e i bit di parità calcolati dal ricevitore.

 C2C1C0
bit di parità ricevutoC2 = 0C1 = 1C0 = 0
bit di parità ricalcolatoC'2 = 0C'1 = 0C'0 = 1
 C2 XOR C'2C1 XOR C'1C0 XOR C'0
posizione del bit errato011

Il risultato 011 corrisponde al numero decimale 3, Cioè la codifica di Hamming ha fornito la posizione del bit da correggere. Se il risultato fosse stato 000 il dato sarebbe stato corretto.