> hamming | (7,4) | ecc <
// Hamming-code – foutcorrectiecode voor betrouwbare gegevensoverdracht
Foutcorrectie
Detecteert en corrigeert automatisch fouten van één bit in gegevens.
Detectie van dubbele fouten
Kan fouten van twee bits in elk blok detecteren (maar niet corrigeren).
Minimale overhead
Slechts 3 pariteitsbits voor elke 4 databits (75% efficiëntie).
>> technische info
Hoe Hamming-code werkt:
De Hamming(7,4)-code voegt 3 pariteitsbits toe aan elke 4 databits en vormt zo blokken van 7 bits. De pariteitsbits worden geplaatst op posities die machten van 2 zijn (1, 2, 4). Wanneer er fouten optreden, wijst het syndroom (het resultaat van de pariteitscontrole) direct naar de positie van het foutieve bit.
Hamming(7,4)-structuur:
Data: 1011 (4 bits) Posities: 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
Waarom Hamming-code gebruiken:
- >Foutcorrectie in geheugen
- >Satellietcommunicatie
- >Gegevensopslagsystemen
- >Netwerktransmissie
- >RAID-arrays
>> veelgestelde vragen
Wat is Hamming-code?
Hamming-code is een foutcorrectiecode die in 1950 werd ontwikkeld door Richard Hamming. Hij voegt pariteitsbits toe aan gegevens, zodat fouten van één bit automatisch kunnen worden gedetecteerd en gecorrigeerd.
Wat betekent (7,4)?
Hamming(7,4) betekent 7 bits in totaal, met 4 databits en 3 pariteitsbits. De code kan elke fout van één bit in het 7-bits blok corrigeren. Andere varianten zijn onder meer (15,11) en (31,26).
Hoe werkt foutcorrectie?
Bij het ontvangen van gegevens worden de pariteitsbits opnieuw berekend. Als ze niet overeenkomen, geeft het syndroom (het verschil) direct aan welk bit fout is. De fout wordt verholpen door dat bit om te klappen.
Hamming vs. andere ECC-codes?
Hamming-code is eenvoudig en efficiënt voor fouten van één bit. Complexere codes zoals Reed–Solomon kunnen meerdere fouten corrigeren, maar met meer overhead. Hamming is ideaal voor kanalen met weinig ruis.
// Snelle referentie
| 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 |
// Uitgewerkt voorbeeld
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
>> Meer vragen
V: Wat betekent (7,4) bij de Hamming-code?
A: 4 databits worden aangevuld met 3 pariteitsbits tot een woord van 7 bits. De pariteitsbits staan op de machten van 2: posities 1, 2 en 4. De minimale afstand is 3: één fout wordt gecorrigeerd, twee fouten worden gedetecteerd maar niet gecorrigeerd.
V: Hoe wijst het syndroom de foutpositie aan?
A: Elke pariteitsbit controleert de posities waarvan het nummer het bijbehorende bit heeft staan. De drie uitkomsten vormen binair de positie van het foute bit (0 = geen fout). In het voorbeeld wijst 101 naar positie 5.
V: Wat is uitgebreide Hamming (SECDED)?
A: Een extra totaalpariteitsbit maakt van (7,4) een (8,4)-code: corrigeert 1 fout en detecteert 2. ECC-geheugen gebruikt hetzelfde principe, meestal als (72,64) met 8 controlebits voor 64 databits.