> hamming | (7,4) | ecc <
// Codice di Hamming – Codice di correzione degli errori per una trasmissione dati affidabile
Correzione degli errori
Rileva e corregge automaticamente gli errori a singolo bit nei dati.
Rilevamento errori doppi
Può rilevare (ma non correggere) errori a due bit in ogni blocco.
Overhead minimo
Solo 3 bit di parità per ogni 4 bit di dati (efficienza del 75%).
>> dettagli tecnici
Come funziona il codice Hamming:
Il codice Hamming(7,4) aggiunge 3 bit di parità a ogni gruppo di 4 bit di dati, creando blocchi da 7 bit. I bit di parità sono posizionati in posizioni che sono potenze di 2 (1, 2, 4). Quando si verificano errori, la sindrome (risultato del controllo di parità) indica direttamente la posizione del bit errato.
Struttura Hamming(7,4):
Dati: 1011 (4 bit) Posizioni: P1 P2 D1 P3 D2 D3 D4 Hamming: 1 0 1 1 0 1 1 P1 = D1 ⊕ D2 ⊕ D4 = 1 ⊕ 0 ⊕ 1 = 0 P2 = D1 ⊕ D3 ⊕ D4 = 1 ⊕ 1 ⊕ 1 = 1 P3 = D2 ⊕ D3 ⊕ D4 = 0 ⊕ 1 ⊕ 1 = 0
Perché usare il codice Hamming:
- >Correzione degli errori in memoria
- >Comunicazioni satellitari
- >Sistemi di archiviazione dati
- >Trasmissione di rete
- >Array RAID
>> domande frequenti
Che cos’è il codice Hamming?
Il codice Hamming è un codice di correzione degli errori inventato da Richard Hamming nel 1950. Aggiunge bit di parità ai dati per consentire il rilevamento e la correzione automatica degli errori a singolo bit.
Cosa significa (7,4)?
Hamming(7,4) significa 7 bit totali con 4 bit di dati e 3 bit di parità. Può correggere qualsiasi errore a singolo bit nel blocco di 7 bit. Altre varianti includono (15,11) e (31,26).
Come funziona la correzione degli errori?
Alla ricezione dei dati, i bit di parità vengono ricalcolati. Se non corrispondono, la sindrome (la differenza) indica direttamente quale bit è errato. L’errore viene corretto invertendo quel bit.
Hamming rispetto ad altri codici ECC?
Il codice Hamming è semplice ed efficiente per errori a singolo bit. Codici più complessi come Reed-Solomon possono correggere errori multipli ma con maggior overhead. Hamming è perfetto per canali a bassa rumorosità.
// Riferimento rapido
| Pos | bit | covered by |
|---|---|---|
| 1 | p1 | p1 |
| 2 | p2 | p2 |
| 3 | d1 | p1 p2 |
| 4 | p3 | p3 |
| 5 | d2 | p1 p3 |
| 6 | d3 | p2 p3 |
| 7 | d4 | p1 p2 p3 |
// Esempio svolto
Data 1011 -> positions 3,5,6,7 = 1,0,1,1 p1 = d3^d5^d7 = 1^0^1 = 0 p2 = d3^d6^d7 = 1^1^1 = 1 p3 = d5^d6^d7 = 0^1^1 = 0 Codeword (pos 1..7) 0110011 Received 0110111 (bit 5 flipped) Syndrome s3 s2 s1 = 1 0 1 = 5 -> flip bit 5 -> 0110011 corrected
>> Altre domande
D: Cosa significa (7,4) nel codice di Hamming?
R: 4 bit di dati vengono completati da 3 bit di parità per formare una parola di 7 bit. I bit di parità stanno nelle posizioni potenza di 2: 1, 2 e 4. La distanza minima è 3: corregge un errore e ne rileva due, senza correggerli.
D: Come indica la sindrome la posizione dell’errore?
R: Ogni bit di parità controlla le posizioni il cui numero ha attivo il bit corrispondente. I tre risultati formano in binario la posizione del bit errato (0 = nessun errore). Nell’esempio 101 indica la posizione 5.
D: Cos’è l’Hamming esteso (SECDED)?
R: Un bit di parità globale trasforma il (7,4) in (8,4): corregge 1 errore e ne rileva 2. La memoria ECC usa lo stesso principio, di solito come (72,64) con 8 bit di controllo per 64 di dati.