Wat is Hamming-code?

De bekendste foutcorrigerende code die fouten van 1 bit corrigeert. Met r controlebits is een codewoord 2^r − 1 bits lang, waarvan 2^r − 1 − r bits gegevens dragen. De Hamming-code (7, 4), met r = 3, voegt 3 controlebits toe aan 4 bits gegevens. Elke controlebit is de pariteit van een overlappende groep bits, en het resultaat van het opnieuw uitvoeren van de controles bij de ontvanger (het syndroom) geeft de positie van de foute bit als binair getal. De minimale Hamming-afstand is 3, en SECDED, dat 1 bit totale pariteit toevoegt, kan ook fouten van 2 bits detecteren. Ze wordt bijvoorbeeld gebruikt voor ECC in servergeheugen.

Japanse benaming: ハミング符号

“Hamming-code” komt voor in 5 oefenvragen uit 2 onderwerpen, bijv. Basis van informatietheorie en codering, Logische schakelingen.

Vakgebied: Basis van informatietheorie en codering

Hoe de (7, 4)-code werkt

De bitposities worden genummerd van 1 tot 7, en de posities die machten van 2 zijn, 1, 2 en 4, zijn de controlebits. Controle 1 maakt het aantal enen even over de posities waarvan het nummer binair geschreven een 1 op de plaats van de eenheden heeft (1, 3, 5, 7), controle 2 over die met een 1 op de plaats van de tweeën (2, 3, 6, 7), en controle 4 over die met een 1 op de plaats van de vieren (4, 5, 6, 7). Alleen de controles die horen bij de binaire cijfers die 1 zijn in het nummer van de foute positie, falen, dus het optellen van de gewichten van de falende controles geeft de foute positie.

Coderatio en lengte

Met r controlebits is het codewoord 2^r − 1 bits lang, en hoe langer de code, zoals bij (7, 4), (15, 11) en (31, 26), hoe hoger de coderatio: 4/7 ≈ 0,57, 11/15 ≈ 0,73 en 26/31 ≈ 0,84. Daar staat tegenover dat één codewoord slechts 1 bit kan corrigeren, dus hoe langer het codewoord, hoe groter de kans dat het een fout van 2 of meer bits krijgt.

SECDED en geheugen

Door 1 bit totale pariteit aan een Hamming-code toe te voegen stijgt de minimale Hamming-afstand tot 4, wat enkelvoudige foutcorrectie (SEC) en dubbele foutdetectie (DED) mogelijk maakt. 64 bits gegevens hebben 8 controlebits nodig, daarom is servergeheugen 72 bits breed. Flashgeheugen en andere componenten die meer fouten moeten verwerken, gebruiken BCH-codes of LDPC-codes.

Nu oefenen: vragen over Hamming-code

Welke waarde ligt het dichtst bij de coderatio van de Hamming-code (7, 4), die 3 controlebits toevoegt aan 4 databits om een codewoord van 7 bits te vormen?

  1. AOngeveer 0,43
  2. BOngeveer 0,57
  3. C1,75
Antwoord en toelichting tonen

Antwoord: B. Ongeveer 0,57

De coderatio is k/n, het deel van de codewoordlengte n dat door de k databits wordt ingenomen. Voor de Hamming-code (7, 4) is ze 4/7 ≈ 0,57, dus ongeveer 57% van de verzonden bits zijn gegevens. Een lagere coderatio betekent meer controlebits en maakt het makkelijker om bestand te zijn tegen fouten, maar verlaagt de efficiëntie waarmee gegevens worden verzonden.

In een Hamming-code (7, 4) worden de zeven bits van links af genummerd van 1 tot 7, en de bits 1, 2 en 4 zijn controlebits. Ze worden zo ingesteld dat het aantal enen even is in de bits 1, 3, 5 en 7 (controle 1), in de bits 2, 3, 6 en 7 (controle 2) en in de bits 4, 5, 6 en 7 (controle 4). Als het ontvangen woord 0110001 een fout van 1 bit bevat, welke bit is dan fout?

  1. ABit 2
  2. BBit 3
  3. CBit 6
Antwoord en toelichting tonen

Antwoord: C. Bit 6

In het ontvangen woord 0110001 zijn de bits 1, 3, 5 en 7 gelijk aan 0, 1, 0, 1, een even aantal enen (controle 1 geeft 0); de bits 2, 3, 6 en 7 zijn 1, 1, 0, 1, oneven (controle 2 geeft 1); en de bits 4, 5, 6 en 7 zijn 0, 0, 0, 1, oneven (controle 4 geeft 1). Leest men de resultaten van controle 4, 2 en 1 in die volgorde, 110, als binair getal, dan krijgt men 6, dus bit 6 is fout. Door bit 6 om te keren krijgt men 0110011, dat aan alle drie controles voldoet.

Veelgestelde vragen

Wat gebeurt er met een Hamming-code als er een fout van 2 bits optreedt?

In een Hamming-code zonder totale pariteit wijst het syndroom bij een fout van 2 bits toch naar een positie die niet nul is, zodat een correcte bit wordt omgeslagen en de fout groeit tot 3 bits. Om dat te voorkomen gebruiken geheugens en vergelijkbare componenten SECDED, dat totale pariteit toevoegt, en melden ze een fout van 2 bits als fout in plaats van haar te corrigeren.

Worden Hamming-codes vandaag nog gebruikt?

Ja. Ze zijn eenvoudig en snel te berekenen, dus ze worden veel gebruikt waar de vertraging klein moet blijven, zoals ECC voor geheugen en de bescherming van caches en registers. Waar veel fouten efficiënt moeten worden gecorrigeerd, zoals in communicatie, worden krachtigere codes zoals LDPC-codes gebruikt.

“Hamming-code” in de toelichting

Vragen met “Hamming-code” (5)

  1. Welke waarde ligt het dichtst bij de coderatio van de Hamming-code (7, 4), die 3 controlebits toevoegt aan 4 databits om een codewoord van 7 bits te vormen?
  2. In een Hamming-code (7, 4) worden de zeven bits van links af genummerd van 1 tot 7, en de bits 1, 2 en 4 zijn controlebits. Ze worden zo ingesteld dat het aantal enen even is in de bits 1, 3, 5 en 7 (controle 1), in de bits 2, 3, 6 en 7 (controle 2) en in de bits 4, 5, 6 en 7 (controle 4). Als het ontvangen woord 0110001 een fout van 1 bit bevat, welke bit is dan fout?
  3. Aan 32 databits wordt een SECDED-code toegevoegd, die fouten van 1 bit corrigeert en fouten van 2 bits detecteert. Het aantal controlebits r van een Hamming-code is de kleinste waarde die voldoet aan 2^r ≥ aantal databits + r + 1, en SECDED voegt daar 1 bit totale pariteit aan toe. Hoeveel controlebits zijn er nodig?
  4. Vijf codewoorden van de Hamming-code (7, 4) worden naast elkaar gezet en verzonden in de volgorde: bit 1 van elk van de vijf codewoorden, dan bit 2 van elk, enzovoort (interleaving met diepte 5). De ontvanger herstelt de oorspronkelijke volgorde en corrigeert daarna in elk codewoord een fout van 1 bit. Wat is de maximale lengte van een burstfout, geconcentreerd in opeenvolgende bits, die altijd kan worden gecorrigeerd?
  5. Wat is de waarde van het paritybit als aan de 7-bits data 1011001 een even-paritybit wordt toegevoegd?

Verwante termen

Pariteitsbit ECC (foutcorrigerende code) Binair symmetrisch kanaal Compressie met verlies Forward error correction (FEC) Gemiddelde codelengte Hamming-afstand Huffman-code Informatie-entropie Informatie-inhoud

Naar de woordenlijst