Hamming CodeHibaészlelés és -javítás példákkal

⚡ Okos összefoglaló

A Hamming-kód egy lineáris hibajavító kód, amely redundáns paritásbiteket ad hozzá a kettő hatványának pozícióiban, lehetővé téve a vevő számára, hogy akár kétbites hibákat is észleljen, és automatikusan kijavítsa az egybites hibákat az adatátvitel során.

  • 🧭 Cél: A Hamming-kód paritásbitek beágyazásával észleli és korrigálja az átviteli hibákat, amelyek pontosan meghatározzák a sérült bit helyét.
  • 🔢 Redundáns bitek: A paritásbitek száma (p) kielégíti a 2^p ≥ n + p + 1 szabályt, ahol n az adatbitek száma.
  • 📍 Elhelyezés: A paritásbitek a kettejük hatványán lévő pozíciókat foglalják el – 1, 2, 4 és 8 –, míg az adatbitek a fennmaradó pozíciókat töltik ki.
  • 🧮 Hamming(7,4): Egy elterjedt forma négy adatbitet kódol hét összesen bitté három paritásbit segítségével.
  • 🧯 Korlátozás: A standard Hamming-kód csak az egybites hibákat korrigálja; egy extra teljes paritásbit kettős hibaészlelést (SECDED) biztosít.
  • 🤖 AI segítség: A gépi tanuláson alapuló dekóderek segítenek a zajos csatornák és a hibaminták megjelölésében, amelyeket a fix kódok önmagukban esetleg nem észlelnek.

Hamming-kód hibadetektálása és javítása paritásbitekkel

Mi az a hiba?

TransmitA bevitt adatok kommunikáció közben megsérülhetnek. Valószínűleg külső zaj vagy más fizikai hibák befolyásolhatják őket. Ilyen helyzetben a bemeneti adatok nem lehetnek azonosak a kimeneti adatokkal. Ezt az eltérést „hibának” nevezzük.

Az adathibák fontos vagy biztonságos adatok elvesztését okozhatják. A digitális rendszerekben az adatátvitel nagy része „bitátvitel” formájában történik, és egyetlen bit apró változása is befolyásolhatja a teljes rendszer teljesítményét. Egy adatsorozatban, ha egy 1-es 0-ra, vagy egy 0-s 1-re változik, azt „bithibának” nevezzük.

A hibák típusai

Főként háromféle bithiba fordul elő, amikor az adatok transmita küldőtől a fogadóig. Az alábbi ábra szemlélteti, hogy az egyes típusok hogyan befolyásolják az adatsorozatot:

Bináris adatsorozat egybites, többbites és burst hibáit összehasonlító ábra

  • Egybites hibák
  • Több bites hiba
  • Burst hibák

Egybites hibák

Az egész adatsorozat egyetlen bitjének megváltoztatását „egybites hibának” nevezzük. Az egybites hibák előfordulása nem túl gyakori. Leginkább párhuzamos kommunikációs rendszerekben fordul elő, mivel az adatok bitenként, külön vonalakon kerülnek átvitelre, így nagyobb az esélye annak, hogy az egyik vonal zajossá válik, míg a többi tiszta marad.

Több bites hiba

Amikor egy adatsorozat két vagy több bitje megváltozik a kettő között transmita ter és a vevő között „többbites hibának” nevezzük.

Ez a fajta hiba mind soros, mind párhuzamos adatátviteli hálózatokban előfordul.

Burst hibák

Az adatsorozat egymást követő bitjeinek egy halmazában bekövetkező változást „burst hibának” nevezzük. A burst hiba hosszát az első megváltozott bittől az utolsó megváltozott bitig mérjük.

Mi a hibakeresés és hibajavítás?

Egy digitális kommunikációs rendszerben hibák keletkezhetnek, amikor az adatok egyik eszközről a másikra mozognak. Ha ezeket a hibákat nem észlelik és nem javítják ki, az adatok elvesznek. A hatékony kommunikációhoz nagy pontossággal kell az adatokat továbbítani, amit a hibák azonosításával, majd kijavításával érnek el.

Hibaészlelés egy módszer az adatokban található hibák megtalálására transmitted egy transmitegy vevőhöz egy adatkommunikáció rendszer.

A redundanciakódokat úgy használják ezen hibák megtalálására, hogy extra biteket adnak az adatokhoz, amikor azok... transmita forrásból. Ezeket az extra biteket „hibadetektáló kódoknak” nevezzük. A három leggyakoribb hibadetektáló kódtípus a következő:

  • Paritásellenőrzés
  • Ciklikus redundanciaellenőrzés (CRC)
  • Longitudinális redundancia ellenőrzés (LRC)

Paritásellenőrzés

  • Paritásellenőrzésnek is nevezik.
  • Költséghatékony mechanizmust biztosít a hibák észlelésére.
  • Ebben a technikában az egyes adategységekhez hozzáadott redundáns bitet paritásbitnek nevezik. Úgy van beállítva, hogy az egységben lévő egyesek teljes száma páros (páros paritás) vagy páratlan (páratlan paritás) legyen.

Longitudinális redundancia ellenőrzése

Ebben a hibaészlelési technikában egy bitblokkot táblázatba rendeznek. Az LRC módszer minden oszlophoz kiszámít egy paritásbitet, és ezt a paritásbit-készletet az eredeti adatokkal együtt elküldik. A paritásbit-blokk segít a vevőnek a redundancia ellenőrzésében és a hibák észlelésében.

Ciklikus redundancia ellenőrzés

A ciklikus redundancia-ellenőrzés redundáns bitek sorozatát fűzi az adategység végéhez úgy, hogy az eredményül kapott adategység pontosan osztható legyen egy második, előre meghatározott bináris számmal.

A célállomáson a bejövő adatokat ugyanazzal a számmal osztják el. Ha nincs maradék, az adategységet helyesnek tekintik, és elfogadják. Ellenkező esetben ez azt jelzi, hogy az adategység megsérült az átvitel során, és el kell utasítani.

Mi az a Hamming Code?

A Hamming-kód egy lineáris kód, amely akár két azonnali bithiba észlelésére és egybites hibák javítására is alkalmas. Az ilyen típusú hibajavítás jellemzően az adatkapcsolati rétegen működik, keretezi az adatokat és ellenőrzi azok integritását a szomszédos csomópontok között.

A Hamming-kódban a forráskód redundáns bitek hozzáadásával kódolja az üzenetet. Ezeket a redundáns biteket a rendszer az üzenet meghatározott pozícióiba illeszti be és generálja a hibaészlelés és -javítás végrehajtása érdekében.

Hamming története Code

  • A Hamming-kód egy RW Hamming által fejlesztett technika a hibák észlelésére és javítására.
  • Bármilyen hosszúságú adategységre alkalmazható, és az adatbitek és a redundanciabitek közötti kapcsolatot használja ki.
  • Hamming a hibajavítás problémáján dolgozott, és egyre hatékonyabb algoritmusokat fejlesztett ki.
  • 1950-ben publikálta a Hamming-kódot, amelyet ma is széles körben használnak olyan alkalmazásokban, mint az ECC memória.

Hamming alkalmazásai Code

Íme néhány gyakori Hamming-kód alkalmazás:

  • Műholdak
  • Számítógépes memória (ECC RAM)
  • modemek
  • PlasmaCAM
  • Nyissa ki a csatlakozókat
  • Árnyékolt vezeték
  • Beágyazott processzorok

Hamming előnyei Code

  • A Hamming-kód olyan hálózatokon hatékony, ahol az adatfolyamok egybites hibáknak vannak kitéve.
  • Nemcsak a bithibákat észleli, hanem segít azonosítani a hibát tartalmazó bitet is, hogy az kijavítható legyen.
  • A Hamming-kódok könnyű használhatósága alkalmassá teszi őket számítógépes memóriában és egyszeres hibajavításban való alkalmazásra.

Hamming hátrányai Code

  • Ez egy egybites hibaészlelő és -javító kód. Ha több bit hibásnak bizonyul, az eredmény egy másik, valójában helyes bitet is megfordíthat, ami tovább torzítja az adatokat.
  • A Hamming-kód algoritmusa csak egybites problémákat képes megoldani.

Hogyan kódoljunk üzenetet Hammingban Code

A küldő által az üzenet kódolására használt folyamat a következő három lépésből áll:

  • Számítsd ki a redundáns bitek teljes számát.
  • Határozza meg a redundáns bitek pozícióját.
  • Számítsd ki az egyes redundáns bitek értékét.

Amikor a redundáns bitek beágyazódnak az üzenetbe, a teljes kódszó elküldésre kerül a vevőnek.

1. lépés) Számítsa ki a redundáns bitek teljes számát.

Tegyük fel, hogy az üzenet tartalmazza n adatbitek és p redundáns bitek, hozzáadva úgy, hogy 2p legalább (n + p + 1) különböző állapotot jelezhet.

Itt az (n + p) az (n + p) bitpozíciók mindegyikében a hiba helyét veszi figyelembe, és egy plusz állapot a hiba hiányát jelzi. Mivel p paritásbit 2-t jelezhetp kimondja, 2p legalább (n + p + 1)-gyel kell egyenlőnek lennie.

2. lépés) Helyezze a redundáns biteket a megfelelő helyükre.

A p redundáns bitek a 2 hatványai – például 1, 2, 4, 8 és 16 – bitpozíciókban helyezkednek el. Ezeket p-nek nevezzük.1 (az 1. pozícióban), p2 (az 2. pozícióban), p3 (a 4. pozícióban), és így tovább.

3. lépés) Számítsa ki az egyes redundáns bitek értékét.

Minden redundáns bit egy paritásbit, amely a csoportjában lévő 1-esek számát párossá vagy páratlanná teszi. A paritás két típusa a következő:

  • Páros paritás: A fedett pozíciókban lévő 1-esek teljes száma páros lesz.
  • Páratlan paritás: A fedett pozíciókban lévő 1-esek teljes számát páratlanná tesszük.

Minden paritásbit egy meghatározott pozíciókészletet fed le, amelyet a pozíciószámok bináris ábrázolása határoz meg:

  • p1 minden olyan pozíciót ellenőrz, amelynek bináris értékének legkisebb helyiértékű bitjében 1 szerepel – 1., 3., 5., 7., 9., 11. és így tovább.
  • p2 minden olyan pozíciót ellenőrz, amelynek bináris értékének jobbról a második bitjében 1 szerepel – 2., 3., 6., 7., 10., 11. és így tovább.
  • p3 minden olyan pozíciót ellenőrz, amelynek bináris értékének harmadik bitjében jobbról 1 szerepel – ez a 4–7., a 12–15. és így tovább pozíciók.

Kidolgozott példa (7,4): Tekintsük a négy adatbitet 1011Három paritásbit szükséges (23 = 8 ≥ 4 + 3 + 1), ami egy hétbites kódszót eredményez, amely p-ként van leírva.1 p2 d1 p3 d2 d3 d4Az adatok elhelyezése a 3., 5., 6., 7. pozíciókat a következőképpen állítja be: 1, 0, 1, 1. Páros paritás használatával: p1 lefedi az 1., 3., 5., 7. pozíciókat (1., 0., 1. bit → p1 = 0); p2 lefedi a 2., 3., 6., 7. biteket (1., 1., 1. → p2 = 1); p3 lefedi a 4., 5., 6., 7. biteket (0., 1., 1. → p3 = 0). A transmitA ted kódszó tehát 0110011.

Hogyan dekódoljunk egy üzenetet Hammingban Code

A fogadó fél fogadja a bejövő üzenetet, és újraszámításokat végez a hibák megtalálása és kijavítása érdekében. Az újraszámítási folyamat a következő lépésekből áll:

  • Számold meg a redundáns bitek számát.
  • Helyezze el helyesen az összes redundáns bitet.
  • Végezze el a paritásvizsgálatot.

1. lépés) Számolja meg a redundáns bitek számát. Ugyanazt a képletet használd, mint a kódoláshoz: 2p ≥ n + p + 1, ahol n az adatbitek száma, p pedig a redundáns bitek száma.

2. lépés) Helyezze el helyesen az összes redundáns bitet. Minden redundáns bit a 2 hatványának megfelelő bitpozícióban található – például 1, 2, 4 és 8.

3. lépés) Végezze el a paritásellenőrzést. A paritásbiteket az adatbitekből és a vett redundáns bitekből újraszámolja a rendszer:

  • p1 = paritás(1, 3, 5, 7, 9, 11, …)
  • p2 = paritás(2, 3, 6, 7, 10, 11, …)
  • p3 = paritás(4–7, 12–15, 20–23, …)

Az újraszámított paritásbitek együttesen egy bináris számot alkotnak. Ha ez a szám nulla, akkor nincs hiba; egyébként az értéke az egyetlen hibás bit pontos pozícióját adja meg, amelyet aztán megfordít a rendszer az üzenet javítása érdekében.

GYIK

A Hamming-távolság az a bitpozíciók száma, amelyben két azonos hosszúságú bináris karakterlánc eltér egymástól. Hibajavító kódokban az érvényes kódszavak közötti minimális Hamming-távolság határozza meg, hogy hány hibát lehet észlelni vagy kijavítani. A standard Hamming-kód minimális távolsága három.

A Hamming(7,4) négy adatbitet kódol egy hétbites kódszóvá három paritásbit hozzáadásával. Kijavítja az egybites hibákat és észleli a kétbites hibákat. Az (n, k) jelölés a kódszó teljes hosszát n és az adatbitek számát k adja meg.

Egyetlen paritásbit csak páratlan számú bithibát észlel, és nem tudja megtalálni vagy kijavítani azokat. A Hamming-kód több paritásbitet használ a kettő hatványán elhelyezkedő pozíciókban, így pontosan megkeresi a hibás bitet, és automatikusan kijavítja azt.

Az alapvető Hamming-kód korrigálja az egybites hibákat, de előfordulhat, hogy a kétbites hibákat is rosszul korrigálja. Egyetlen, a teljes kódszót lefedő paritásbit hozzáadása SECDED-et (egyszeres hibajavítás, kettős hibaészlelés) hoz létre, ami négyre növeli a minimális távolságot, és megbízhatóan észleli a kétbites hibákat.

A hibák észlelése és javítása főként az adatkapcsolati rétegen történik. OSI modell, amely keretezi az adatokat és ellenőrzi azok integritását a szomszédos csomópontok között. A szállítási réteg protokolljai végponttól végpontig tartó ellenőrzéseket adnak hozzá, míg a fizikai közeg bevezeti a zajt, amely ellen ezek a kódok védenek.

A Hamming-kód egy lineáris blokkkód. Egyszerre egy fix méretű adatbit-blokkot dolgoz fel, és hozzáfűzi a paritásbiteket, ellentétben a konvolúciós kódokkal, amelyek folyamatos bitfolyamot kódolnak az előző bitek memóriáját felhasználva. Ez egyszerűvé és gyorssá teszi a Hamming-kódot.

A gépi tanulási modellek megtanulják egy csatorna zajmintázatait és előrejelzik a valószínűsíthető bithibákat, javítva a dekódolás pontosságát a fix sémákon túl. Az LDPC és poláris kódok mesterséges intelligencia által vezérelt dekóderei ma már segítik a modern 5G és tárolórendszereket, ahol a klasszikus Hamming-kód önmagában nem elegendő.

GitHub másodpilóta képes kódoló és dekódoló függvények scaffoldozására, paritásbites maszkok generálására és egységtesztek vázlatának készítésére egy rövid megjegyzésből. Ellenőrizze a bitpozíció matematikai műveleteit és a paritáscsoportokat.pingóvatosan, mert az egymás utáni indexelés gyakori hibaforrás a generált kódban.

Foglald össze ezt a bejegyzést a következőképpen: