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.

  • ๐Ÿงญ Formรฅl: Hamming-kode registrerer og korrigerer transmissionsfejl ved at indlejre paritetsbits, der prรฆcist bestemmer positionen af โ€‹โ€‹en beskadiget bit.
  • ๐Ÿ”ข Redundante bits: Antallet af paritetsbits (p) opfylder reglen 2^p โ‰ฅ n + p + 1, hvor n er antallet af databits.
  • ๐Ÿ“ Placering: Paritetsbits optager potensen af โ€‹โ€‹to positioner - 1, 2, 4 og 8 - mens databits udfylder de resterende positioner.
  • ๐Ÿงฎ Hamming(7,4): En almindelig form koder fire databits til syv i alt bits ved hjรฆlp af tre paritetsbits.
  • ๐Ÿงฏ Begrรฆnsning: Standard Hamming-kode korrigerer kun enkeltbitfejl; en ekstra samlet paritetsbit tilfรธjer dobbeltfejldetektion (SECDED).
  • ๐Ÿค– AI assistance: Maskinlรฆringsdekodere hjรฆlper med at markere stรธjende kanaler og fejlmรธnstre, som faste koder alene kan overse.

Fejldetektion og -korrektion i Hamming-kode med paritetsbits

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:

Diagram, der sammenligner enkeltbit-, flerbit- og burstfejl i en binรฆr 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.

Ofte Stillede Spรธrgsmรฅl

Hamming-afstand er antallet af bitpositioner, hvor to binรฆre strenge af samme lรฆngde adskiller sig. I fejlkorrigerende koder bestemmer den minimale Hamming-afstand mellem gyldige kodeord, hvor mange fejl der kan detekteres eller korrigeres. Standard Hamming-kode har en minimumsafstand pรฅ tre.

Hamming(7,4) koder fire databits ind i et syv-bit kodeord ved at tilfรธje tre paritetsbits. Den korrigerer enhver enkelt-bit fejl og detekterer to-bit fejl. Notationen (n, k) angiver den samlede kodeordlรฆngde n og antallet af databits k.

En enkelt paritetsbit registrerer kun et ulige antal bitfejl og kan ikke lokalisere eller rette dem. Hamming-kode bruger flere paritetsbits i potens af to positioner, sรฅ den prรฆcist identificerer den fejlbehรฆftede bit og retter den automatisk.

Grundlรฆggende Hamming-kode korrigerer en-bit fejl, men kan fejlkorrigere to-bit fejl. Tilfรธjelse af รฉn samlet paritetsbit, der dรฆkker hele kodeordet, skaber SECDED (single error correction, double error detection), hvilket hรฆver minimumsafstanden til fire og pรฅlideligt detekterer dobbelt-bit fejl.

Fejldetektion og -korrektion forekommer hovedsageligt pรฅ datalinklaget i OSI model, som indrammer data og kontrollerer deres integritet mellem tilstรธdende noder. Transportlagsprotokoller tilfรธjer end-to-end-kontroller, mens det fysiske medie introducerer den stรธj, som disse koder beskytter imod.

Hamming-kode er en lineรฆr blokkode. Den behandler en blok af databits med fast stรธrrelse pรฅ รฉn gang og tilfรธjer paritetsbits, i modsรฆtning til konvolutionskoder, der koder en kontinuerlig bitstrรธm ved hjรฆlp af hukommelsen fra tidligere bits. Dette gรธr Hamming-kode enkel og hurtig.

Maskinlรฆringsmodeller lรฆrer stรธjmรธnstrene i en kanal og forudsiger sandsynlige bitfejl, hvilket forbedrer afkodningsnรธjagtigheden ud over faste ordninger. AI-drevne dekodere til LDPC og polarkoder understรธtter nu moderne 5G- og lagringssystemer, hvor klassisk Hamming-kode alene er utilstrรฆkkelig.

GitHub Copilot kan scaffolde encoder- og dekoderfunktioner, generere paritetsbitmasker og udarbejde enhedstests fra en kort kommentar. Bekrรฆft bitpositionsmatematikken og paritetsgruppenpings omhyggeligt, fordi off-by-one-indeksering er en hyppig kilde til fejl i genereret kode.

Opsummer dette indlรฆg med: