> hamming | (7,4) | ecc <
// Hamming-Code – Fehlerkorrekturcode für zuverlässige Datenübertragung
Fehlerkorrektur
Erkennt und korrigiert automatisch Ein-Bit-Fehler in Daten.
Erkennung doppelter Fehler
Kann Zwei-Bit-Fehler in jedem Block erkennen (aber nicht korrigieren).
Geringer Overhead
Nur 3 Prüf-Bits für 4 Datenbits (75 % Effizienz).
>> technische infos
Wie Hamming-Code funktioniert:
Der Hamming(7,4)-Code fügt zu jeweils 4 Datenbits 3 Paritätsbits hinzu und bildet so 7-Bit-Blöcke. Die Paritätsbits liegen an Positionen, die Potenzen von 2 sind (1, 2, 4). Tritt ein Fehler auf, zeigt das Syndrom (Ergebnis der Paritätsprüfung) direkt auf die fehlerhafte Bitposition.
Hamming(7,4)-Struktur:
Daten: 1011 (4 Bits) Positionen: 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
Warum Hamming-Code verwenden?:
- >Fehlerkorrektur im Speicher
- >Satellitenkommunikation
- >Datenspeichersysteme
- >Netzwerkübertragung
- >RAID-Arrays
>> häufig gestellte fragen
Was ist Hamming-Code?
Der Hamming-Code ist ein Fehlerkorrekturcode, der 1950 von Richard Hamming entwickelt wurde. Er fügt den Daten Paritätsbits hinzu, mit denen sich Ein-Bit-Fehler automatisch erkennen und korrigieren lassen.
Was bedeutet (7,4)?
Hamming(7,4) bedeutet 7 Gesamtbits mit 4 Datenbits und 3 Paritätsbits. Der Code kann jeden Ein-Bit-Fehler im 7-Bit-Block korrigieren. Andere Varianten sind zum Beispiel (15,11) und (31,26).
Wie funktioniert die Fehlerkorrektur?
Beim Empfang der Daten werden die Paritätsbits neu berechnet. Stimmen sie nicht überein, zeigt das Syndrom (die Differenz) direkt auf das fehlerhafte Bit. Der Fehler wird behoben, indem dieses Bit umgeklappt wird.
Hamming vs. andere ECC-Codes?
Der Hamming-Code ist einfach und effizient für Ein-Bit-Fehler. Komplexere Codes wie Reed–Solomon können mehrere Fehler korrigieren, haben aber höheren Overhead. Hamming eignet sich ideal für Kanäle mit geringer Störrate.
// Kurzreferenz
| 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 |
// Durchgerechnetes Beispiel
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
>> Weitere Fragen
F: Was bedeutet (7,4) beim Hamming-Code?
A: Es werden 4 Datenbits mit 3 Paritätsbits zu einem 7-Bit-Codewort ergänzt. Die Paritätsbits stehen an den Zweierpotenz-Positionen 1, 2 und 4. Der Mindestabstand beträgt 3: ein Fehler lässt sich korrigieren, zwei Fehler lassen sich erkennen, aber nicht korrigieren.
F: Wie zeigt das Syndrom die Fehlerposition?
A: Jedes Paritätsbit prüft die Positionen, deren Nummer das entsprechende Bit gesetzt hat. Die drei Prüfergebnisse ergeben als Binärzahl direkt die Position des fehlerhaften Bits (0 = kein Fehler). Im Beispiel liefert 101 die Position 5.
F: Was ist erweiterter Hamming-Code (SECDED)?
A: Ein zusätzliches Gesamtparitätsbit macht aus (7,4) einen (8,4)-Code, der 1 Fehler korrigiert und 2 Fehler erkennt. ECC-Speicher nutzt dasselbe Prinzip, meist als (72,64) mit 8 Prüfbits für 64 Datenbits.