Hamming CodeFejlfinding og -korrektion med eksempler
โก Smart opsummering
Hamming-kode er en lineรฆr fejlkorrigerende kode, der tilfรธjer redundante paritetsbits ved potens-af-to positioner, hvilket giver en modtager mulighed for at detektere op til to-bit fejl og automatisk rette enhver enkelt-bit fejl under datatransmission.

Hvad er en fejl?
TransmitIndlรฆste data kan blive beskadiget under kommunikation. De vil sandsynligvis blive pรฅvirket af ekstern stรธj eller andre fysiske fejl. I en sรฅdan situation kan inputdataene ikke vรฆre de samme som outputdataene. Denne uoverensstemmelse kaldes en "fejl".
Datafejl kan forรฅrsage tab af vigtige eller sikre data. Det meste af dataoverfรธrslen i digitale systemer sker i form af "bitoverfรธrsel", og selv en lille รฆndring af en enkelt bit kan pรฅvirke hele systemets ydeevne. Hvis et 1-tal i en datasekvens รฆndres til et 0, eller et 0 รฆndres til et 1-tal, kaldes det en "bitfejl".
Typer af fejl
Der er primรฆrt tre typer bitfejl, der opstรฅr, nรฅr data transmitfra afsender til modtager. Diagrammet nedenfor illustrerer, hvordan hver type pรฅvirker en datasekvens:
- Enkelt bit fejl
- Flere bitfejl
- Burst fejl
Enkelt bit fejl
En รฆndring af รฉn bit i hele datasekvensen kaldes en "single-bit error". Forekomsten af โโen single-bit error er ikke sรฅ almindelig. Det forekommer oftest i et parallelt kommunikationssystem, fordi data overfรธres bitvis pรฅ separate linjer, sรฅ der er stรธrre chance for, at รฉn linje bliver stรธjende, mens de andre forbliver rene.
Flere bitfejl
Nรฅr to eller flere bits i en datasekvens รฆndrer sig mellem transmitter og modtageren, er det kendt som en "multiple-bit-fejl".
Denne type fejl forekommer i bรฅde serielle og parallelle datakommunikationsnetvรฆrk.
Burst fejl
En รฆndring i et sรฆt af fortlรธbende bits i en datasekvens er kendt som en "burst-fejl". Lรฆngden af โโen burst-fejl mรฅles fra den fรธrste รฆndrede bit til den sidst รฆndrede bit.
Hvad er fejldetektion og fejlkorrektion?
I et digitalt kommunikationssystem kan der opstรฅ fejl, nรฅr data flyttes fra รฉn enhed til en anden. Hvis disse fejl ikke opdages og rettes, gรฅr dataene tabt. For effektiv kommunikation skal data overfรธres med hรธj nรธjagtighed, hvilket opnรฅs ved fรธrst at identificere fejlene og derefter rette dem.
Fejlregistrering er en metode til at finde fejl i data transmitted fra en transmitter til en modtager i en datakommunikation system.
Redundanskoder bruges til at finde disse fejl ved at tilfรธje ekstra bits til dataene, nรฅr de er transmitfra kilden. Disse ekstra bits kaldes "fejldetekteringskoder". De tre mest almindelige typer fejldetekteringskode er:
- Paritetskontrol
- Cyclic Redundancy Check (CRC)
- Longitudinalt redundanstjek (LRC)
Paritetskontrol
- Det er ogsรฅ kendt som et paritetstjek.
- Det giver en omkostningseffektiv mekanisme til fejldetektion.
- I denne teknik kaldes den redundante bit, der tilfรธjes til hver dataenhed, en paritetsbit. Den indstilles sรฅledes, at det samlede antal 1'ere i enheden bliver lige (lige paritet) eller ulige (ulige paritet).
Longitudinel redundanskontrol
I denne fejldetekteringsteknik organiseres en blok af bits i en tabel. LRC-metoden beregner en paritetsbit for hver kolonne, og dette sรฆt af paritetsbits sendes sammen med de originale data. Blokken af โโparitetsbits hjรฆlper modtageren med at kontrollere for redundans og detektere fejl.
Cyclisk Redundans Check
Cyklisk redundanskontrol tilfรธjer en sekvens af redundante bits til slutningen af โโdataenheden, sรฅ den resulterende dataenhed bliver nรธjagtig delelig med et andet, forudbestemt binรฆrt tal.
Ved destinationen divideres de indgรฅende data med det samme tal. Hvis der ikke er nogen rest, antages dataenheden at vรฆre korrekt og accepteres. Ellers indikerer det, at dataenheden blev beskadiget under transmissionen, og den skal afvises.
Hvad er en Hamming Code?
Hamming-kode er en lineรฆr kode, der er nyttig til at detektere op til to umiddelbare bitfejl og korrigere enkeltbitfejl. Fejlkorrektion af denne art opererer typisk pรฅ datalinklaget, hvor data indrammer og kontrollerer deres integritet mellem tilstรธdende noder.
I Hamming-kode koder kilden beskeden ved at tilfรธje redundante bits. Disse redundante bits indsรฆttes og genereres pรฅ bestemte positioner i beskeden for at udfรธre fejldetektion og -korrektion.
Hammings historie Code
- Hamming-kode er en teknik udviklet af RW Hamming til at detektere og rette fejl.
- Den kan anvendes pรฅ dataenheder af enhver lรฆngde og bruger forholdet mellem databits og redundansbits.
- Hamming arbejdede med problemet med fejlkorrektion og udviklede en stadig mere kraftfuld rรฆkke af algoritmer.
- I 1950 udgav han Hamming-koden, som stadig er meget anvendt i dag i applikationer som ECC-hukommelse.
Anvendelser af Hamming Code
Her er nogle almindelige anvendelser af Hamming-kode:
- Satellitter
- Computerhukommelse (ECC RAM)
- Modemer
- PlasmaCAM
- ร bn stik
- Skรฆrmet ledning
- Indlejrede processorer
Fordele ved Hamming Code
- Hamming-kode er effektiv pรฅ netvรฆrk, hvor datastrรธmme er udsat for enkeltbitfejl.
- Den registrerer ikke kun en bitfejl, men hjรฆlper dig ogsรฅ med at identificere den bit, der indeholder fejlen, sรฅ den kan rettes.
- Hamming-kodernes brugervenlighed gรธr dem velegnede til computerhukommelse og korrektion af enkeltfejl.
Ulemper ved Hamming Code
- Det er en enkeltbit-fejldetektions- og korrektionskode. Hvis flere bits viser sig at vรฆre fejlagtige, kan resultatet vende en anden bit, der faktisk var korrekt, hvilket yderligere รธdelรฆgger dataene.
- Hamming-kodealgoritmen kan kun lรธse problemer med รฉn bit.
Sรฅdan koder du en besked i Hamming Code
Den proces, som afsenderen bruger til at kode beskeden, involverer fรธlgende tre trin:
- Beregn det samlede antal redundante bits.
- Bestem placeringen af โโde redundante bits.
- Beregn vรฆrdien af โโhver redundant bit.
Nรฅr de redundante bits er integreret i beskeden, sendes det komplette kodeord til modtageren.
Trin 1) Beregn det samlede antal redundante bits.
Antag at beskeden indeholder n databits og p redundante bits, tilfรธjet sรฅledes at 2p kan angive mindst (n + p + 1) forskellige tilstande.
Her tager (n + p) hรธjde for placeringen af โโen fejl i hver af (n + p) bitpositionerne, og รฉn ekstra tilstand indikerer ingen fejl. Fordi p paritetsbits kan indikere 2p stater, 2p skal vรฆre mindst lig med (n + p + 1).
Trin 2) Placer de redundante bits i deres korrekte positioner.
De p redundante bits er placeret pรฅ bitpositioner, der er potenser af 2 - for eksempel 1, 2, 4, 8 og 16. De kaldes p1 (i position 1), s2 (i position 2), s3 (pรฅ position 4) og sรฅ videre.
Trin 3) Beregn vรฆrdien af โโhver redundant bit.
Hver redundant bit er en paritetsbit, der gรธr antallet af 1'ere i sin gruppe enten lige eller ulige. De to typer paritet er:
- Lige paritet: Det samlede antal 1'ere i de dรฆkkede positioner gรธres lige.
- Ulige paritet: Det samlede antal 1-ere i de dรฆkkede positioner gรธres ulige.
Hver paritetsbit dรฆkker et specifikt sรฆt positioner, bestemt af den binรฆre reprรฆsentation af positionsnumrene:
- p1 kontrollerer alle positioner, hvis binรฆre vรฆrdi har et 1 i den mindst betydende bit โ positionerne 1, 3, 5, 7, 9, 11 osv.
- p2 kontrollerer alle positioner, hvis binรฆre vรฆrdi har et 1 i den anden bit fra hรธjre โ positionerne 2, 3, 6, 7, 10, 11 osv.
- p3 kontrollerer alle positioner, hvis binรฆre vรฆrdi har et 1 i den tredje bit fra hรธjre โ positionerne 4 til 7, 12 til 15 osv.
Udarbejdet eksempel (7,4): Overvej de fire databits 1011Tre paritetsbits er nรธdvendige (23 = 8 โฅ 4 + 3 + 1), hvilket giver et syv-bit kodeord opstillet som p1 p2 d1 p3 d2 d3 d4Placering af dataene giver positionerne 3, 5, 6, 7 = 1, 0, 1, 1. Ved brug af lige paritet: p1 dรฆkker positionerne 1, 3, 5, 7 (bit 1, 0, 1 โ p1 = 0); p2 dรฆkker 2, 3, 6, 7 (bit 1, 1, 1 โ p2 = 1); p3 dรฆkker 4, 5, 6, 7 (bit 0, 1, 1 โ p3 = 0). Den transmitted-kodeordet er derfor 0110011.
Sรฅdan afkoder du en besked i Hamming Code
Modtageren tager den indgรฅende besked og udfรธrer genberegninger for at finde og rette fejl. Genberegningsprocessen bruger fรธlgende trin:
- Tรฆl antallet af redundante bits.
- Placer alle de redundante bits korrekt.
- Udfรธr paritetskontrollen.
Trin 1) Tรฆl antallet af redundante bits. Brug den samme formel som til kodning: 2p โฅ n + p + 1, hvor n er antallet af databits og p er antallet af redundante bits.
Trin 2) Placer alle de redundante bits korrekt. Hver redundante bit sidder pรฅ en bitposition, der er en potens af 2 - for eksempel 1, 2, 4 og 8.
Trin 3) Udfรธr paritetskontrollen. Paritetsbittene genberegnes ud fra databittene og de modtagne redundante bits:
- p1 = paritet(1, 3, 5, 7, 9, 11, โฆ)
- p2 = paritet(2, 3, 6, 7, 10, 11, โฆ)
- p3 = paritet(4โ7, 12โ15, 20โ23, โฆ)
De genberegnede paritetsbits danner tilsammen et binรฆrt tal. Hvis dette tal er nul, er der ingen fejl; ellers angiver dets vรฆrdi den nรธjagtige position af den enkelte beskadigede bit, som derefter vendes for at rette meddelelsen.

