> hamming | (7,4) | ecc <
// Hamming-kod – felkorrigeringskod för tillförlitlig dataöverföring
Felkorrigering
Upptäcker och korrigerar automatiskt enbitfel i data.
Detektering av dubbla fel
Kan upptäcka (men inte korrigera) tvåbitfel i varje block.
Minimal overhead
Endast 3 paritetsbitar för varje 4 databitar (75 % effektivitet).
>> teknisk info
Hur Hamming-kod fungerar:
Hamming(7,4)-koden lägger till 3 paritetsbitar till varje 4 databitar och skapar 7-bitarsblock. Paritetsbitarna placeras på positioner som är potenser av 2 (1, 2, 4). När fel uppstår pekar syndromet (resultatet av paritetskontrollen) direkt ut den felaktiga bitpositionen.
Hamming(7,4)-struktur:
Data: 1011 (4 bitar) Positioner: 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
Varför använda Hamming-kod:
- >Felkorrigering i minne
- >Satellitkommunikation
- >Datasystem för lagring
- >Nätverkstransmission
- >RAID-array
>> vanliga frågor
Vad är Hamming-kod?
Hamming-kod är en felkorrigeringskod som uppfanns av Richard Hamming 1950. Den lägger till paritetsbitar till data så att enbitfel kan upptäckas och korrigeras automatiskt.
Vad betyder (7,4)?
Hamming(7,4) betyder 7 bitar totalt, med 4 databitar och 3 paritetsbitar. Koden kan korrigera vilket enbitfel som helst i 7-bitarsblocket. Andra varianter inkluderar (15,11) och (31,26).
Hur fungerar felkorrigering?
När data tas emot beräknas paritetsbitarna om. Om de inte stämmer överens anger syndromet (skillnaden) direkt vilken bit som är felaktig. Felet åtgärdas genom att den biten vänds.
Hamming jämfört med andra ECC-koder?
Hamming-kod är enkel och effektiv för enbitfel. Mer komplexa koder som Reed–Solomon kan korrigera flera fel men med högre overhead. Hamming är perfekt för kanaler med låg brusnivå.
// Snabbreferens
| 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 |
// Genomgånget exempel
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
>> Fler frågor
F: Vad betyder (7,4) i Hamming-koden?
S: 4 databitar kompletteras med 3 paritetsbitar till ett kodord på 7 bitar. Paritetsbitarna ligger på tvåpotenspositionerna 1, 2 och 4. Minsta avståndet är 3: ett fel rättas, två fel upptäcks men rättas inte.
F: Hur visar syndromet felets position?
S: Varje paritetsbit kontrollerar de positioner vars nummer har motsvarande bit satt. De tre resultaten bildar binärt positionen för den felaktiga biten (0 = inget fel). I exemplet pekar 101 på position 5.
F: Vad är utökad Hamming (SECDED)?
S: En extra totalparitetsbit gör (7,4) till (8,4): rättar 1 fel och upptäcker 2. ECC-minne använder samma princip, oftast som (72,64) med 8 kontrollbitar per 64 databitar.