Hamming CodeFehlererkennung und -korrektur mit Beispielen

โšก Intelligente Zusammenfassung

Der Hamming-Code ist ein linearer Fehlerkorrekturcode, der redundante Paritรคtsbits an Zweierpotenzpositionen hinzufรผgt, wodurch ein Empfรคnger bis zu Zwei-Bit-Fehler erkennen und jeden Einzelbitfehler wรคhrend der Datenรผbertragung automatisch korrigieren kann.

  • ๐Ÿงญ Zweck: Der Hamming-Code erkennt und korrigiert รœbertragungsfehler durch Einbettung von Paritรคtsbits, die die genaue Position eines fehlerhaften Bits angeben.
  • ๐Ÿ”ข Redundante Teile: Die Anzahl der Paritรคtsbits (p) erfรผllt die Regel 2^p โ‰ฅ n + p + 1, wobei n die Anzahl der Datenbits ist.
  • ๐Ÿ“ Platzierung: Die Paritรคtsbits belegen Zweierpotenzpositionen โ€“ 1, 2, 4 und 8 โ€“ wรคhrend die Datenbits die restlichen Positionen ausfรผllen.
  • ๐Ÿงฎ Hamming(7,4): Eine gรคngige Form kodiert vier Datenbits in insgesamt sieben Bits unter Verwendung von drei Paritรคtsbits.
  • ๐Ÿงฏ Einschrรคnkung: Der Standard-Hamming-Code korrigiert nur Einzelbitfehler; ein zusรคtzliches Gesamtparitรคtsbit ermรถglicht die Erkennung von Doppelfehlern (SECDED).
  • ๐Ÿค– KI-Unterstรผtzung: Maschinelles Lernen bei der Decoderung hilft dabei, verrauschte Kanรคle und Fehlermuster zu erkennen, die mit festen Codes allein mรถglicherweise nicht erkannt werden.

Hamming-Code-Fehlererkennung und -korrektur mit Paritรคtsbits

Was ist ein Fehler?

TransmitDaten kรถnnen wรคhrend der รœbertragung beschรคdigt werden. Sie kรถnnen durch externe Stรถrungen oder andere physikalische Defekte beeintrรคchtigt werden. In einem solchen Fall stimmen die Eingangsdaten nicht mit den Ausgangsdaten รผberein. Diese Diskrepanz wird als โ€žFehlerโ€œ bezeichnet.

Datenfehler kรถnnen zum Verlust wichtiger oder vertraulicher Daten fรผhren. Der GroรŸteil der Datenรผbertragung in digitalen Systemen erfolgt als โ€žBitรผbertragungโ€œ, und selbst die geringfรผgige ร„nderung eines einzelnen Bits kann die Leistung des gesamten Systems beeintrรคchtigen. Wird in einer Datensequenz eine 1 in eine 0 oder eine 0 in eine 1 geรคndert, spricht man von einem โ€žBitfehlerโ€œ.

Arten von Fehlern

Es gibt hauptsรคchlich drei Arten von Bitfehlern, die bei der Datenverarbeitung auftreten. transmitvom Sender zum Empfรคnger รผbertragen. Das folgende Diagramm veranschaulicht, wie sich die einzelnen Typen auf eine Datensequenz auswirken:

Diagramm zum Vergleich von Einzelbit-, Mehrbit- und Burstfehlern in einer Binรคrdatensequenz

  • Einzelbitfehler
  • Mehrere Bitfehler
  • Burst-Fehler

Einzelbitfehler

Eine ร„nderung an einem einzelnen Bit in der gesamten Datensequenz wird als โ€žEinzelbitfehlerโ€œ bezeichnet. Einzelbitfehler treten nicht hรคufig auf. Sie kommen hauptsรคchlich in parallelen Kommunikationssystemen vor, da die Daten bitweise รผber separate Leitungen รผbertragen werden. Dadurch ist die Wahrscheinlichkeit hรถher, dass eine Leitung verrauscht wird, wรคhrend die anderen fehlerfrei bleiben.

Mehrere Bitfehler

Wenn sich zwei oder mehr Bits einer Datensequenz zwischen den transmitWenn zwischen dem Empfรคnger und dem Empfรคnger ein Fehler auftritt, spricht man von einem โ€žMehrbitfehlerโ€œ.

Dieser Fehlertyp tritt sowohl in seriellen als auch in parallelen Datenkommunikationsnetzen auf.

Burst-Fehler

Eine ร„nderung an einer Gruppe aufeinanderfolgender Bits in einer Datensequenz wird als โ€žBurst-Fehlerโ€œ bezeichnet. Die Lรคnge eines Burst-Fehlers wird vom ersten geรคnderten Bit bis zum letzten geรคnderten Bit gemessen.

Was versteht man unter Fehlererkennung und Fehlerkorrektur?

In digitalen Kommunikationssystemen kรถnnen Fehler bei der Datenรผbertragung zwischen Gerรคten auftreten. Werden diese Fehler nicht erkannt und korrigiert, gehen die Daten verloren. Fรผr eine effektive Kommunikation ist eine hohe Genauigkeit der Datenรผbertragung unerlรคsslich. Dies wird erreicht, indem Fehler zunรคchst identifiziert und anschlieรŸend korrigiert werden.

Fehlererkennung ist eine Methode, um die in den Daten vorhandenen Fehler zu finden. transmitted von einem transmitan einen Empfรคnger in einem Datenkommunikation System.

Redundanzcodes werden verwendet, um diese Fehler zu finden, indem den Daten zusรคtzliche Bits hinzugefรผgt werden, wenn sie transmitDiese zusรคtzlichen Bits werden von der Quelle รผbernommen und als โ€žFehlererkennungscodesโ€œ bezeichnet. Die drei gebrรคuchlichsten Arten von Fehlererkennungscodes sind:

  • Paritรคtsprรผfung
  • Zyklische Redundanzprรผfung (CRC)
  • Lรคngsredundanzprรผfung (LRC)

Paritรคtsprรผfung

  • Es wird auch als Paritรคtsprรผfung bezeichnet.
  • Es bietet einen kostengรผnstigen Mechanismus zur Fehlererkennung.
  • Bei dieser Technik wird das jeder Dateneinheit hinzugefรผgte redundante Bit als Paritรคtsbit bezeichnet. Es wird so gesetzt, dass die Gesamtzahl der Einsen in der Einheit gerade (gerade Paritรคt) oder ungerade (ungerade Paritรคt) ist.

Lรคngsredundanzprรผfung

Bei diesem Fehlererkennungsverfahren wird ein Bitblock in einer Tabelle organisiert. Das LRC-Verfahren berechnet fรผr jede Spalte ein Paritรคtsbit, und dieser Satz von Paritรคtsbits wird zusammen mit den Originaldaten gesendet. Der Paritรคtsbitblock hilft dem Empfรคnger, Redundanz zu prรผfen und Fehler zu erkennen.

Zyklische Redundanzprรผfung

Bei der zyklischen Redundanzprรผfung wird eine Folge redundanter Bits an das Ende der Dateneinheit angehรคngt, sodass die resultierende Dateneinheit genau durch eine zweite, vorbestimmte Binรคrzahl teilbar ist.

Am Zielort werden die eingehenden Daten durch dieselbe Zahl geteilt. Ergibt sich kein Rest, gilt die Dateneinheit als korrekt und wird akzeptiert. Andernfalls deutet dies darauf hin, dass die Dateneinheit bei der รœbertragung beschรคdigt wurde und verworfen werden muss.

Was ist ein Hamming? Code?

Der Hamming-Code ist ein linearer Code, der sich zur Erkennung von bis zu zwei aufeinanderfolgenden Bitfehlern und zur Korrektur von Einzelbitfehlern eignet. Die Fehlerkorrektur dieser Art erfolgt typischerweise auf der Sicherungsschicht (Data Link Layer), indem sie Daten rahmt und deren Integritรคt zwischen benachbarten Knoten รผberprรผft.

Beim Hamming-Code wird die Nachricht durch Hinzufรผgen redundanter Bits codiert. Diese redundanten Bits werden an bestimmten Positionen in der Nachricht eingefรผgt und generiert, um Fehler zu erkennen und zu korrigieren.

Geschichte von Hamming Code

  • Der Hamming-Code ist eine von R. W. Hamming entwickelte Technik zur Erkennung und Korrektur von Fehlern.
  • Es kann auf Dateneinheiten beliebiger Lรคnge angewendet werden und nutzt die Beziehung zwischen Datenbits und Redundanzbits.
  • Hamming beschรคftigte sich mit dem Problem der Fehlerkorrektur und entwickelte eine immer leistungsfรคhigere Reihe von Algorithmen.
  • Im Jahr 1950 verรถffentlichte er den Hamming-Code, der auch heute noch in Anwendungen wie ECC-Speicher weit verbreitet ist.

Anwendungen der Hamming-Methode Code

Hier einige gรคngige Anwendungsgebiete des Hamming-Codes:

  • Satelliten
  • Computerspeicher (ECC RAM)
  • Modem
  • PlasmaCAM
  • Offene Anschlรผsse
  • Abgeschirmtes Kabel
  • Eingebettete Prozessoren

Vorteile der Hamming-Methode Code

  • Hamming-Code ist effektiv in Netzwerken, in denen Datenstrรถme Einzelbitfehlern ausgesetzt sind.
  • Es erkennt nicht nur Bitfehler, sondern hilft Ihnen auch dabei, das fehlerhafte Bit zu identifizieren, damit es korrigiert werden kann.
  • Aufgrund ihrer einfachen Anwendbarkeit eignen sich Hamming-Codes hervorragend fรผr Computerspeicher und die Korrektur einzelner Fehler.

Nachteile der Hamming-Methode Code

  • Es handelt sich um einen Einzelbit-Fehlererkennungs- und -korrekturcode. Werden mehrere fehlerhafte Bits gefunden, kann das Ergebnis ein weiteres, eigentlich korrektes Bit umkehren und die Daten dadurch weiter verfรคlschen.
  • Der Hamming-Code-Algorithmus kann nur Einzelbit-Probleme lรถsen.

Wie man eine Nachricht in Hamming kodiert Code

Der vom Absender verwendete Prozess zur Kodierung der Nachricht umfasst die folgenden drei Schritte:

  • Berechnen Sie die Gesamtzahl der redundanten Bits.
  • Ermitteln Sie die Position der redundanten Bits.
  • Berechne den Wert jedes redundanten Bits.

Wenn die redundanten Bits in die Nachricht eingebettet sind, wird das vollstรคndige Codewort an den Empfรคnger gesendet.

Schritt 1) โ€‹โ€‹Berechnen Sie die Gesamtzahl der redundanten Bits.

Angenommen, die Nachricht enthรคlt n Datenbits und p redundante Bits, hinzugefรผgt, so dass 2p kann mindestens (n โ€‹โ€‹+ p + 1) verschiedene Zustรคnde anzeigen.

Hierbei berรผcksichtigt (n + p) die Position eines Fehlers an jeder der (n + p) Bitpositionen, und ein zusรคtzlicher Zustand bedeutet, dass kein Fehler vorliegt. Da p Paritรคtsbits 2<sup>n</sup> anzeigen kรถnnen, โ€ฆp Staaten, 2p muss mindestens gleich (n + p + 1) sein.

Schritt 2) Platzieren Sie die redundanten Bits an ihren richtigen Positionen.

Die p redundanten Bits werden an Bitpositionen platziert, die Zweierpotenzen sind โ€“ beispielsweise 1, 2, 4, 8 und 16. Sie werden als p bezeichnet.1 (an Position 1), S2 (an Position 2), S3 (an Position 4) und so weiter.

Schritt 3) Berechne den Wert jedes redundanten Bits.

Jedes redundante Bit ist ein Paritรคtsbit, das die Anzahl der Einsen in seiner Gruppe entweder gerade oder ungerade macht. Es gibt zwei Arten von Paritรคtsbits:

  • Gleichstellung: Die Gesamtzahl der Einsen in den abgedeckten Positionen wird ausgeglichen.
  • Ungerade Paritรคt: Die Gesamtzahl der Einsen in den abgedeckten Positionen ist ungerade.

Jedes Paritรคtsbit deckt einen bestimmten Satz von Positionen ab, der durch die Binรคrdarstellung der Positionsnummern bestimmt wird:

  • p1 รœberprรผft jede Position, deren Binรคrwert im niedrigstwertigen Bit eine 1 hat โ€“ Positionen 1, 3, 5, 7, 9, 11 usw.
  • p2 รœberprรผft jede Position, deren Binรคrwert im zweiten Bit von rechts eine 1 hat โ€“ Positionen 2, 3, 6, 7, 10, 11 usw.
  • p3 รœberprรผft jede Position, deren Binรคrwert im dritten Bit von rechts eine 1 hat โ€“ Positionen 4 bis 7, 12 bis 15 usw.

Durchgerechnetes Beispiel (7,4): Betrachten wir die vier Datenbits 1011Es werden drei Paritรคtsbits benรถtigt (23 = 8 โ‰ฅ 4 + 3 + 1), was ein sieben Bit langes Codewort ergibt, das wie folgt aufgebaut ist: p1 p2 d1 p3 d2 d3 d4Durch die Anordnung der Daten ergeben sich die Positionen 3, 5, 6, 7 = 1, 0, 1, 1. Bei Verwendung gerader Paritรคt: p1 deckt die Positionen 1, 3, 5, 7 ab (Bits 1, 0, 1 โ†’ p).1 = 0); p2 deckt 2, 3, 6, 7 ab (Bits 1, 1, 1 โ†’ p2 = 1); p3 deckt 4, 5, 6, 7 ab (Bits 0, 1, 1 โ†’ p3 = 0). transmitDas Codewort lautet daher 0110011.

Wie man eine Nachricht in Hamming entschlรผsselt Code

Der Empfรคnger nimmt die eingehende Nachricht entgegen und fรผhrt Neuberechnungen durch, um Fehler zu finden und zu korrigieren. Der Neuberechnungsprozess umfasst die folgenden Schritte:

  • Zรคhle die Anzahl der redundanten Bits.
  • Positionieren Sie alle redundanten Bits korrekt.
  • Fรผhren Sie die Paritรคtsprรผfung durch.

Schritt 1) โ€‹โ€‹Zรคhlen Sie die Anzahl der redundanten Bits. Verwenden Sie dieselbe Formel wie fรผr die Kodierung: 2p โ‰ฅ n + p + 1, wobei n die Anzahl der Datenbits und p die Anzahl der redundanten Bits ist.

Schritt 2) Positionieren Sie alle redundanten Bits korrekt. Jedes redundante Bit befindet sich an einer Bitposition, die eine Zweierpotenz ist โ€“ zum Beispiel 1, 2, 4 und 8.

Schritt 3) Fรผhren Sie die Paritรคtsprรผfung durch. Die Paritรคtsbits werden aus den Datenbits und den empfangenen redundanten Bits neu berechnet:

  • p1 = Paritรคt(1, 3, 5, 7, 9, 11, โ€ฆ)
  • p2 = Paritรคt(2, 3, 6, 7, 10, 11, โ€ฆ)
  • p3 = Paritรคt(4โ€“7, 12โ€“15, 20โ€“23, โ€ฆ)

Die neu berechneten Paritรคtsbits bilden zusammen eine Binรคrzahl. Ist diese Zahl null, liegt kein Fehler vor; andernfalls gibt ihr Wert die genaue Position des einzelnen fehlerhaften Bits an, welches dann invertiert wird, um die Nachricht zu korrigieren.

Hรคufig gestellte Fragen

Die Hamming-Distanz gibt die Anzahl der Bitpositionen an, in denen sich zwei Binรคrfolgen gleicher Lรคnge unterscheiden. Bei Fehlerkorrekturcodes bestimmt die minimale Hamming-Distanz zwischen gรผltigen Codewรถrtern, wie viele Fehler erkannt oder korrigiert werden kรถnnen. Der Standard-Hamming-Code hat eine minimale Distanz von drei.

Hamming(7,4) kodiert vier Datenbits durch Hinzufรผgen von drei Paritรคtsbits in ein sieben Bit langes Codewort. Es korrigiert Einzelbitfehler und erkennt Zweibitfehler. Die Notation (n, k) gibt die Gesamtlรคnge n des Codeworts und die Anzahl der Datenbits k an.

Ein einzelnes Paritรคtsbit erkennt nur eine ungerade Anzahl von Bitfehlern und kann diese weder lokalisieren noch korrigieren. Der Hamming-Code verwendet mehrere Paritรคtsbits an Zweierpotenzpositionen, wodurch das fehlerhafte Bit exakt lokalisiert und automatisch korrigiert wird.

Der einfache Hamming-Code korrigiert Ein-Bit-Fehler, kann aber Zwei-Bit-Fehler falsch korrigieren. Durch Hinzufรผgen eines Paritรคtsbits, das das gesamte Codewort abdeckt, entsteht SECDED (Single Error Correction, Double Error Detection), wodurch der minimale Abstand auf vier erhรถht und Zwei-Bit-Fehler zuverlรคssig erkannt werden.

Fehlererkennung und -korrektur erfolgen hauptsรคchlich auf der Sicherungsschicht. OSI-ModellDie Protokollschicht rahmt Daten ein und รผberprรผft deren Integritรคt zwischen benachbarten Knoten. Transportprotokolle ergรคnzen diese รœberprรผfungen um Ende-zu-Ende-Prรผfungen, wรคhrend das physikalische Medium das Rauschen verursacht, vor dem diese Codes schรผtzen sollen.

Der Hamming-Code ist ein linearer Blockcode. Er verarbeitet jeweils einen Datenblock fester GrรถรŸe und fรผgt Paritรคtsbits hinzu, im Gegensatz zu Faltungscodes, die einen kontinuierlichen Bitstrom unter Speicherung vorheriger Bits kodieren. Dadurch ist der Hamming-Code einfach und schnell.

Maschinelle Lernmodelle analysieren die Rauschmuster eines Kanals und sagen wahrscheinliche Bitfehler voraus, wodurch die Dekodierungsgenauigkeit im Vergleich zu herkรถmmlichen Verfahren verbessert wird. KI-gestรผtzte Decoder fรผr LDPC- und Polarcodes unterstรผtzen moderne 5G- und Speichersysteme, bei denen der klassische Hamming-Code allein nicht ausreicht.

GitHub-Copilot Kann Encoder- und Decoderfunktionen erstellen, Paritรคtsbitmasken generieren und Unit-Tests anhand eines kurzen Kommentars entwerfen. รœberprรผft die Bitpositionsberechnung und die Paritรคtsgruppe.pingVorsicht ist geboten, da eine Off-by-One-Indizierung eine hรคufige Fehlerquelle im generierten Code darstellt.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: