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.
7 | 6 | 5 | 4 | 3 | 2 | 1 |
D3 | D2 | D1 | C2 | D0 | C1 | C0 |
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 |
C0 | D3D1D0 |
C1 | D3D2D0 |
C2 | D3D2D1 |
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 dato | corrisponde ai bit di parità diversi |
D0 | C1C0 |
D1 | C2C0 |
D2 | C2C1 |
D3 | C2C1C0 |
La correzione consiste nel complementare il bit errato.
il dato da trasmettere sia
D3 | D2 | D1 | D0 |
1 | 1 | 0 | 1 |
Si formano i 3 gruppi di bit e su ciascuno di essi si calcola il bit di parità:
gruppo | valore | parità pari |
D3D1D0 | 101 | C0 = 0 |
D3D2D0 | 111 | C1 = 1 |
D3D2D1 | 110 | C2 = 0 |
Il messaggio inviato è:
7 | 6 | 5 | 4 | 3 | 2 | 1 |
D3 | D2 | D1 | C2 | D0 | C1 | C0 |
1 | 1 | 0 | 0 | 1 | 1 | 0 |
Ipotizzando che l'errore si verifiche sul bit D0, il messaggio ricevuto è:
7 | 6 | 5 | 4 | 3 | 2 | 1 |
D3 | D2 | D1 | C2 | D0 | C1 | C0 |
1 | 1 | 0 | 0 | 0 | 1 | 0 |
Il ricevitore ricalcola i 3 bit di parità:
gruppo | valore | parità pari |
D3D1D0 | 100 | C0 = 1 |
D3D2D0 | 110 | C1 = 0 |
D3D2D1 | 110 | C2 = 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.
C2 | C1 | C0 | |
bit di parità ricevuto | C2 = 0 | C1 = 1 | C0 = 0 |
bit di parità ricalcolato | C'2 = 0 | C'1 = 0 | C'0 = 1 |
C2 XOR C'2 | C1 XOR C'1 | C0 XOR C'0 | |
posizione del bit errato | 0 | 1 | 1 |
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.