www.wikidata.de-de.nina.az
Der Hamming Code ist ein von Richard Wesley Hamming entwickelter linearer fehlerkorrigierender Blockcode der in der digitalen Signalverarbeitung und der Nachrichtentechnik zur gesicherten Datenubertragung oder Datenspeicherung verwendet wird Beim Hamming Code handelt es sich um eine Klasse von Blockcodes unterschiedlicher Lange welche durch eine allgemeine Bildungsvorschrift gebildet werden Die Besonderheit dieses Codes besteht in der Verwendung mehrerer Paritatsbits Diese Bits erganzen jeweils unterschiedlich gewahlte Gruppen von den die Information tragenden Nutzdatenbits Durch eine geschickte Wahl der Gruppierung deren mathematische Grundlagen im Folgenden beschrieben sind ist nicht nur eine Fehlererkennung sondern auch eine Fehlerkorrektur der ubertragenen Datenbits moglich Die einzelnen Codeworter des Hamming Codes weisen einen Hamming Abstand von 3 auf Durch diesen Unterschied von jeweils drei Bitstellen kann der Decoder einen oder zwei Bitfehler in einem Datenblock erkennen aber nur einen Bitfehler korrigieren Bei zwei Bitfehlern liefert der Decoder ein gultiges aber falsches Codewort Der erweiterte Hamming Code mit einem Hamming Abstand von 4 kann durch ein zusatzliches Paritatsbit bis zu drei Bitfehler in einem Datenblock erkennen aber auch nur einen Bitfehler korrigieren Zwei Bitfehler werden bei dem erweiterten Hamming Code als fehlerhaftes ungultiges Codewort erkannt welches nicht korrigierbar ist Eigenschaften binarer Hamming CodeStellenzahl 2k 1 k 2 und ganzzahligGewicht 3Maximaldistanz 3Hamming Abstand 3Redundanz kk ist die Anzahl der Paritatsbits pro CodewortInhaltsverzeichnis 1 Geschichte 2 Aufbau des Codes 2 1 Berechnung der Paritatsstellen 2 2 Kurzester Hamming Code 3 Eigenschaften 3 1 Korrekturleistungen 3 2 Linearitat 3 3 Systematischer Hamming Code 3 4 Zyklischer Hamming Code 4 Praktische Realisierung eines Hamming Encoders 5 Decodierung 5 1 Decodierung mittels Hard Decision 6 Pseudocode 7 Erweiterter Hamming Code 8 Codeverkurzung 9 Weitere Zahlensysteme 10 Vereinfachte Variation mit Beispiel 11 Literatur 12 Weblinks 13 EinzelnachweiseGeschichte BearbeitenIn den 1940er Jahren arbeitete Richard Hamming in der Firma Bell Labs an einem Computer namens Bell Model V welcher mit fehleranfalligen elektromechanischen Relais mit zwei Maschinenzyklen pro Sekunde ausgestattet war Die zu Dateneingaben verwendeten Lochkarten konnten durch Abnutzung bei der Leseoperation Fehler aufweisen die zu den normalen Burozeiten durch Angestellte der Bell Labs von Hand korrigiert werden mussten Zu den ublichen Arbeitszeiten von Richard Hamming ausserhalb der Burozeiten und am Wochenende fuhrten diese Lesefehler dazu dass der Computer die fehlerhaften Lochkarten ubersprang und an anderen Lochkarten weiterarbeitete Hamming war durch diese Fehler und den mehrfachen Aufwand frustriert und entwickelte in Folge einen speziellen Code durch den die Maschine Lesefehler von Lochkarten in bestimmtem Umfang selbstandig erkennen und korrigieren konnte Im Jahr 1950 publizierte er diesen Hamming Code 1 der noch heute und in teilweise erweiterten Formen im Bereich der Kanalkodierung verbreitete Anwendung findet Aufbau des Codes BearbeitenIm Folgenden werden nur binare Hamming Codes dargestellt Binare Hamming Codes basieren auf Paritycodes uber einem Datenblock fixer Lange Der Datenblock auch als Datenwort oder Nachrichtenwort bezeichnet umfasst n displaystyle n nbsp Bits und enthalt die eigentliche Nutzinformation n displaystyle n nbsp kann bei dem Hamming Code nur spezifische ganzzahlige Werte annehmen die sich aus der Bildungsvorgabe dieses Codes ergeben Die Bitkombinationen in dem n displaystyle n nbsp Bit umfassenden Datenblock konnen grundsatzlich beliebig gewahlt werden das heisst es sind alle beliebigen Bitkombinationen zulassig Das Codewort des Hamming Codes wird aus dem Datenwort durch Integration zusatzlicher Kontrollstellen der sogenannten Paritatsbits gewonnen Dabei wird in jedes Datenwort von n displaystyle n nbsp Bit Lange eine feste Anzahl von k displaystyle k nbsp Kontrollstellen eingefugt Daraus ergibt sich das Codewort mit einer Lange von N n k displaystyle N n k nbsp Fur ein Codewort sind da die Kontrollstellen redundante aus dem Datenblock abgeleitete Information tragen nur noch bestimmte Bitkombinationen moglich Das ermoglicht sowohl Fehlererkennung als auch Fehlerkorrektur Die Vorgabe zur Codebildung durch eine weitere Gleichung von N displaystyle N nbsp zu k displaystyle k nbsp ist in folgender Form beschrieben N 2 k 1 displaystyle N 2 k 1 nbsp Dies bedeutet dass wenn beispielsweise drei binare Stellen fur Kontrollbits Paritatsbits zur Verfugung stehen das Codewort zwangslaufig eine Lange von N 7 displaystyle N 7 nbsp aufweisen muss Fur das Datenwort ergibt sich dann eine Lange von n 7 3 4 displaystyle n 7 3 4 nbsp Bits pro Codewort oder allgemein n 2 k k 1 displaystyle n 2 k k 1 nbsp In der folgenden Tabelle sind alle moglichen Hamming Codes unterschiedlicher Codewortlangen bis zur Blockgrosse von 255 Bits dargestellt Parameterkombinationen bei Hamming Codesn k N n k n n k 2k k 1 2k 1 2k k 1 2k 1 Datenbits Datenwort Paritatsbits Kontrollstellen Nachrichtenbits Gesamtlange des Codewortes Datenrate1 2 3 1 3 0 3334 3 7 4 7 0 57111 4 15 11 15 0 73326 5 31 26 31 0 83957 6 63 57 63 0 905120 7 127 120 127 0 945247 8 255 247 255 0 969Zur Klassifikation der unterschiedlich langen Hamming Codes wird in der Literatur meist folgende Schreibweise verwendet N n displaystyle N n nbsp Code Die erste Zahl gibt die Anzahl der Nachrichtenbits N displaystyle N nbsp des Codewortes an die zweite Zahl die Anzahl der Datenbits n displaystyle n nbsp pro Codewort Vor allem in Demonstrationsbeispielen ist der Einfachheit wegen oft der 7 4 displaystyle 7 4 nbsp Hamming Code anzutreffen Fur reale Anwendungen ist hier der Overhead d h das Verhaltnis von Kontrollbits zu Datenbits zu ungunstig weshalb langere Hamming Codes wie der 63 57 displaystyle 63 57 nbsp Hamming Code verwendet werden Manchmal wird bei der Klassifizierungsangabe noch die Distanz des Codes als dritte Stelle angegeben Wegen der festen Hamming Distanz wird jedoch zumeist statt 63 57 3 displaystyle 63 57 3 nbsp Hamming Code nur 63 57 displaystyle 63 57 nbsp Hamming Code geschrieben Berechnung der Paritatsstellen Bearbeiten Die k displaystyle k nbsp Paritatsstellen Kontrollbits in einem Codewort werden nach einem Verfahren berechnet wie es auch bei dem einfachen Paritats Prufbit zur Anwendung kommt Im Regelfall wird vereinbarungsgemass eine gerade Paritat fur alle Kontrollstellen gewahlt Ist die Anzahl der logischen 1 displaystyle 1 nbsp der in die jeweilige Kontrollstelle eingerechneten Datenbitstellen eine gerade Anzahl ist das jeweilige Paritatsbit logisch 0 displaystyle 0 nbsp Ist die Anzahl der logisch 1 displaystyle 1 nbsp in den Datenbitstellen eine ungerade Anzahl wird das jeweilige Paritatsbit auf logisch 1 displaystyle 1 nbsp gesetzt so dass sich in Summe in den Datenbitstellen und den Paritatsbit immer eine gerade Anzahl von logisch 1 displaystyle 1 nbsp Bits ergibt Die einzelnen Paritatsbits eines Codewortes werden nicht uber alle Stellen Bits des Datenwortes gebildet sondern nur uber einzelne ausgewahlte Datenbits Zur Konstruktion welche Datenbitstellen in welche Kontrollbits eingerechnet werden kann nach einer anschaulichen Methode vorgegangen werden Zunachst wird dazu der Rahmen des Codewortes aus den Datenbits und den Kontrollstellen gebildet Im Codewort befinden sich an denjenigen Positionen die Zweierpotenzen sind 1 2 4 8 16 die einzelnen Paritats Kontrollbits p Die Datenbits d des zu ubertragenden Datenwortes werden dazwischen auf den freien Stellen im Codewort von links aufsteigend eingetragen Sind p 1 p 2 p k displaystyle p 1 p 2 ldots p k nbsp Paritatsbits d 1 d 2 d N k displaystyle d 1 d 2 ldots d N k nbsp Bits des Datenwortes und c 1 c 2 c N displaystyle c 1 c 2 ldots c N nbsp die Bits des zu bildenden Codewortes hat ein Codewort des so konstruierten Hamming Code die folgende Form diese Darstellung kann fur grossere Codewortlangen entsprechend erweitert werden nbsp Anordnung der Paritats Kontrollstellen p1 pk und der Datenbits d1 dN k in einem Codewort mit den Stellen c1 cN fur die im Folgenden dargestellte Bitanordnung In das erste Paritatsbit p 1 displaystyle p 1 nbsp wird jedes zweite Datenbit bei c 3 displaystyle c 3 nbsp angefangen mit einbezogen Fur das erste Paritatsbit ergeben sich als Folge von Codewortstellen somit alle Datenbits die an ungerade Position im Codewort stehen c 1 p 1 c 3 c 5 c 7 c 9 c 11 c 13 c 15 c 17 c 19 displaystyle c 1 p 1 c 3 oplus c 5 oplus c 7 oplus c 9 oplus c 11 oplus c 13 oplus c 15 oplus c 17 oplus c 19 oplus cdots nbsp Das Symbol displaystyle oplus nbsp ist die logische XOR Funktion und stellt zugleich die Bildungsvorschrift fur die Kontrollbits dar Wie weiter mit Hilfe obiger Tabelle zu erkennen ist kommen an den angefuhrten Bitpositionen im Codewort auf der rechten Seite der Gleichung nur Datenbits vor Dies gilt fur alle Paritatsbits In das zweite Paritatsbit p 2 displaystyle p 2 nbsp wird das rechts von p2 im Codewort stehende Bit c 3 displaystyle c 3 nbsp einberechnet dann zwei Stellen im Codewort ubersprungen die nachsten zwei Bit c 6 displaystyle c 6 nbsp und c 7 displaystyle c 7 nbsp einberechnet wieder zwei Stellen ubersprungen und so weiter Statt eines Datenbits werden also zwei benachbarte Datenbits genommen und im Codewort zwei Stellen ubersprungen Damit ergibt sich fur p 2 displaystyle p 2 nbsp die Bildungsvorschrift c 2 p 2 c 3 c 6 c 7 c 10 c 11 c 14 c 15 c 18 c 19 displaystyle c 2 p 2 c 3 oplus c 6 oplus c 7 oplus c 10 oplus c 11 oplus c 14 oplus c 15 oplus c 18 oplus c 19 oplus cdots nbsp In das dritte Paritatsbit p3 werden die rechts im Codewort folgenden drei Stellen einberechnet es werden vier Stellen des Codewortes ubersprungen dann vier Bit einberechnet dann vier Stellen ubersprungen und so weiter Es werden also Gruppen zu je vier Bits fur die Bildung des Paritatsbits herangezogen Damit ergibt sich fur p 3 displaystyle p 3 nbsp c 4 p 3 c 5 c 6 c 7 c 12 c 13 c 14 c 15 c 20 displaystyle c 4 p 3 c 5 oplus c 6 oplus c 7 oplus c 12 oplus c 13 oplus c 14 oplus c 15 oplus c 20 oplus cdots nbsp Das Paritatsbit p i displaystyle p i nbsp wird also uber alle Stellen cj des Codeworts berechnet in denen an der i displaystyle i nbsp ten Stelle der Binarkodierung des Index j eine logische Eins steht Nach diesem Verfahren wird fur die restlichen Paritatsbits analog fortgefahren bis alle Paritatsbits des gewahlten Hamming Code bestimmt sind Das Bestimmen des Codeworts wird in praktischen Applikationen durch den sogenannten Encoder vorgenommen Im konkreten Fall des 7 4 displaystyle 7 4 nbsp Hamming Code ergibt sich so die nachfolgende Codeworttabelle Darunter sind in den jeweiligen Spalten die Verknupfungen der einzelnen Paritatsbits eingetragen aus denen sich unmittelbar die spater dargestellte Kontrollmatrix H displaystyle H nbsp auch Prufmatrix genannt fur dieses Beispiel ergibt In den Spalten der letzten drei Zeilen sind Pfeile an jenen Stellen eingetragen wo sich in der Kontrollmatrix H displaystyle H nbsp dann logisch 1 displaystyle 1 nbsp finden Nach diesem Muster kann mit etwas Aufwand die Kontrollmatrix bei jedem Hamming Code bestimmt werden Es ist pro Zeile immer ein Paritatsbit mit einem aufwarts gerichteten Pfeil eingezeichnet und die Datenbits zur Bestimmung des betreffenden Paritatsbit sind mit einem abwartsgerichteten Pfeil markiert Bestimmung der Paritatsbits am Beispiel des 7 4 Hamming Codec1 c2 c3 c4 c5 c6 c7p1 p2 d1 p3 d2 d3 d4 Die Anordnung von Paritats und Datenbits ist hierbei willkurlich gewahlt Es kann ohne Einschrankung eine andere Abfolge der einzelnen Bits im Codewort gewahlt werden ohne die Eigenschaft des Hamming Codes zu andern Dieser Umstand wird im nachfolgenden systematischen oder auch separierbaren Hamming Code genutzt bei dem zur Bildung des Codeworts die Paritatsbits immer ans Ende des Datenwortes angehangt werden Der separierbare Hamming Code wird nach der gleichen Bildungsvorschrift gewonnen ist aber durch eine andere Anordnung der Zeilen in der Generatormatrix G displaystyle G nbsp und damit verbunden andere Kontrollmatrix H displaystyle H nbsp gekennzeichnet Kurzester Hamming Code Bearbeiten Der kurzeste Hamming Code ist der 3 1 displaystyle 3 1 nbsp Hamming Code Dabei wird ein Nutzdatenbit einem drei Bit langen Codewort zugeordnet Mit obiger allgemeiner Berechnung ergibt sich dass die beiden Paritatsbits p 1 displaystyle p 1 nbsp und p 2 displaystyle p 2 nbsp nur in diesem Fall direkt dem einen Nutzdatenbit entsprechen Es kann nur die beiden gultigen Codeworter 000 displaystyle 000 nbsp und 111 displaystyle 111 nbsp geben Die ungultigen Codeworter 001 displaystyle 001 nbsp 010 displaystyle 010 nbsp und 100 displaystyle 100 nbsp werden bei der Decodierung mittels des Verfahrens der Mehrheitsentscheidung dem Codewort 000 displaystyle 000 nbsp zugewiesen 110 displaystyle 110 nbsp 101 displaystyle 101 nbsp und 011 displaystyle 011 nbsp dem Codewort 111 displaystyle 111 nbsp Damit ist der 3 1 displaystyle 3 1 nbsp Hamming Code als ein Spezialfall gleich einem Wiederholungscode mit einer Lange von 3 Der 3 1 displaystyle 3 1 nbsp Hamming Code ist auch der einzige Hamming Code der nur durch die Angabe 3 1 displaystyle 3 1 nbsp eindeutig im Aufbau des Codewortes spezifiziert ist Eigenschaften BearbeitenKorrekturleistungen Bearbeiten Der Hamming Code weist unabhangig von der gewahlten Blockgrosse immer eine Distanz von drei auf Dies bedeutet dass sich benachbarte Codeworter immer um drei Bits unterscheiden Tritt ein Fehler an einer Stelle eines Codeworts auf wird dieses als ungultig erkannt und kann eindeutig dem richtigen Codewort zugeordnet der Ubertragungsfehler also korrigiert werden Treten hingegen zwei Fehler in einem Codewort auf funktioniert diese Zuordnung nicht mehr die Korrektur des Decoders ordnet das empfangene Codewort falschlich einem anderen zu Dies wird als Falschkorrektur bezeichnet Eine andere Form des Versagens tritt bei drei Ubertragungsfehlern auf Hier erkennt der Decoder das fehlerhafte Codewort als gultig an Hamming Codes konnen also nur einen Bitfehler pro Datenwort korrekt korrigieren Wegen seiner Fahigkeit alle empfangenen Codeworter einem validen Codewort zuordnen zu konnen ist der Hamming Code ein perfekter Code Die meisten anderen Binarcodes etwa der erweiterte Hamming Code sind nicht perfekt Bei diesen Codes konnen durch Ubertragungsfehler Codeworter auftreten die der Decoder zwar als falsch erkennen kann jedoch keinem gultigen Wort zuordnen kann Dekodierversagen Linearitat Bearbeiten Hamming Codes sind grundsatzlich lineare Codes Bei diesen auch als binare Gruppencodes bezeichneten Codierungen fuhrt jede Modulo 2 Addition XOR Verknupfung zweier Codeworter wieder zu einem gultigen Codewort Zu den Voraussetzungen eines linearen Code zahlt die Existenz eines neutralen Elements Im Falle eines Hamming Codes bedeutet dies dass das Nullwort dessen Stellen samtlich logisch 0 sind gultig sein muss Das sogenannte Codegewicht entspricht somit bei Hamming Codes dem Hamming Abstand von drei Eine weitere allgemeine Eigenschaft von Gruppencodes besteht darin dass sich die einzelnen gultigen Codeworter c aus einer Generatormatrix G und den Datenwortern d nach folgender Form erzeugen lassen c G d displaystyle mathbf c mathbf G cdot mathbf d nbsp Aus dieser Gleichung ergibt sich mit der im vorherigen Abschnitt dargestellten Bildungsvorschrift und den Rechenregeln fur Matrizen fur einen nicht separierbaren 7 4 displaystyle 7 4 nbsp Hamming Code die folgende Generatormatrix G displaystyle G nbsp G 1 1 0 1 1 0 1 1 1 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 1 displaystyle mathbf G begin pmatrix 1 amp 1 amp 0 amp 1 1 amp 0 amp 1 amp 1 color Brown 1 amp color Brown 0 amp color Brown 0 amp color Brown 0 0 amp 1 amp 1 amp 1 color Brown 0 amp color Brown 1 amp color Brown 0 amp color Brown 0 color Brown 0 amp color Brown 0 amp color Brown 1 amp color Brown 0 color Brown 0 amp color Brown 0 amp color Brown 0 amp color Brown 1 end pmatrix nbsp Die ersten beiden Zeilen der Matrix bilden die ersten beiden Paritatsbits p 1 displaystyle p 1 nbsp und p 2 displaystyle p 2 nbsp des Codewortes Die Einsen der Zeilen geben hierbei an welche Datenbitstellen in das jeweilige Paritatsbit eingerechnet werden Die dritte Zeile ebenso wie alle nachfolgenden Zeilen mit nur einer Eins pro Zeile bilden die Datenbits d n displaystyle d n nbsp im Codewort ab Die vierte Zeile bildet das dritte Paritatsbit p 3 displaystyle p 3 nbsp Aus der Generatormatrix lasst sich direkt die Kontrollmatrix H displaystyle H nbsp ableiten die vom Decoder verwendet wird um fehlerhafte Bitstellen mittels Matrixmultiplikation zu erkennen Die Prufmatrix muss so gewahlt sein dass sie orthogonal zu allen gultigen Codewortern c displaystyle c nbsp ist H c 0 displaystyle mathbf H cdot mathbf c mathbf 0 nbsp Fur obige Generatormatrix G displaystyle G nbsp lasst sich die folgende Kontrollmatrix H displaystyle H nbsp ermitteln H 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 0 1 1 1 1 displaystyle mathbf H begin pmatrix color Brown 1 amp color Brown 0 amp 1 amp color Brown 0 amp 1 amp 0 amp 1 color Brown 0 amp color Brown 1 amp 1 amp color Brown 0 amp 0 amp 1 amp 1 color Brown 0 amp color Brown 0 amp 0 amp color Brown 1 amp 1 amp 1 amp 1 end pmatrix nbsp Der Inhalt der Matrix kann hierbei beispielsweise uber das im vorigen Abschnitt vorgestellte tabellarische Verfahren zur Bestimmung der Paritatsbits aus der Generatormatrix gewonnen werden Tritt ein einzelner Bitfehler auf so gilt fur das entstehende ungultige Codewort H c 0 displaystyle mathbf H cdot mathbf c neq mathbf 0 nbsp Durch den Wert dieser Gleichung kann uber eine Syndromtabelle die fehlerhafte Bitstelle eindeutig bestimmt und durch Invertieren korrigiert werden Eine spielerische Anwendung speziell des 7 4 displaystyle 7 4 nbsp Hamming Codes findet man bei der Losung von Eberts Hutproblem Systematischer Hamming Code Bearbeiten Aufgrund der Linearitat konnen beliebige Zeilen der Generatormatrix G displaystyle G nbsp vertauscht werden ohne die Codeeigenschaften zu verandern Die jeweilige Form der Generatormatrix muss nur zwischen Encoder und Decoder abgestimmt sein Ein systematischer Code liegt vor wenn im Codewort zuerst alle Datenbits dn und nachfolgend alle Paritatsbits pn angeordnet sind Durch die Separierbarkeit konnen Encoder und Decoder schaltungstechnisch in elektronischen digitalen Schaltungen wie ASICs oder FPGAs mit weniger Speicheraufwand und mit geringerer Latenzzeit realisiert werden Separierbare Codes werden auch als systematische Codes bezeichnet Obige Generatormatrix G displaystyle G nbsp kann durch Umstellen der Zeilen auf folgende Generatormatrix G displaystyle G nbsp so umgeformt werden dass der 7 4 displaystyle 7 4 nbsp Hamming Code ein systematischer Code wird Eine mogliche Generatormatrix des systematischen 7 4 displaystyle 7 4 nbsp Hamming Codes lautet G 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 1 0 1 1 0 1 1 0 1 1 1 displaystyle mathbf G begin pmatrix 1 amp 0 amp 0 amp 0 0 amp 1 amp 0 amp 0 0 amp 0 amp 1 amp 0 0 amp 0 amp 0 amp 1 1 amp 1 amp 0 amp 1 1 amp 0 amp 1 amp 1 0 amp 1 amp 1 amp 1 end pmatrix nbsp Die assoziierte Kontrollmatrix H displaystyle H nbsp kann leichter bestimmt werden denn bei systematischer Blockcodes gilt mit Modulo 2 Operationen H G 0 displaystyle mathbf H cdot mathbf G mathbf 0 nbsp Damit bestimmt sich H displaystyle H nbsp zu H 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 1 0 0 1 displaystyle mathbf H begin pmatrix 1 amp 1 amp 0 amp 1 amp 1 amp 0 amp 0 1 amp 0 amp 1 amp 1 amp 0 amp 1 amp 0 0 amp 1 amp 1 amp 1 amp 0 amp 0 amp 1 end pmatrix nbsp Die ersten 4 Spalten der Kontrollmatrix H displaystyle H nbsp bestehen dabei aus den letzten drei Zeilen der Generatormatrix G displaystyle G nbsp Der rechte Teil der Kontrollmatrix ist mit der Einheitsmatrix aufgefullt Damit ist dargestellt dass nur die Angabe 7 4 displaystyle 7 4 nbsp Hamming Code fur eine konkrete Implementierung nicht eindeutig den genauen Codierungsvorgang und Decodierungsvorgang beschreibt Dies ist erst durch Angabe der jeweiligen Generatormatrix oder bei zyklischen Hamming Codes durch das Generatorpolynom gewahrleistet Zyklischer Hamming Code Bearbeiten Bei der praktischen Anwendung spielen zyklische Codes insbesondere zyklische separierbare Hamming Codes eine bedeutende Rolle Mit diesen kann die Berechnung der einzelnen Prufbits im Encoder und die Decodierung im Decoder mit minimalen Speicheraufwand in Form von linear ruckgekoppelten Schieberegistern LFSR realisiert werden Zyklische Codes sind lineare Codes bei denen zusatzlich noch die Forderung gilt dass eine Rotation oder zyklische Verschiebung eines Codewortes wiederum auf ein gultiges Codewort fuhren muss Der zyklische Hamming Code kann allgemein in der Beschreibung aquivalent auch als eine Untergruppe der BCH Codes Bose Chaudhuri Hocquenghem Codes aufgefasst werden BCH Codes sind eine sehr grosse Gruppe von zyklischen Blockcodes die in ihren Parametern und Aufbau starker als die Hamming Codes variiert werden konnen Die Erzeugung zyklischer Hamming Codes wird je nach Blocklange durch primitive Generatorpolynome von entsprechendem Grad vorgenommen Das Generatorpolynom kann direkt im LFSR zum Berechnen der Paritatsbits abgebildet werden In folgender Tabelle sind beispielhaft ubliche Generatorpolynome angefuhrt Es konnen in konkreten Implementierungen aber auch andere Generatorpolynome gewahlt werden ohne die Eigenschaften des Hamming Codes zu andern so das gewahlte Polynom nur primitiv ist und zwischen Encoder und Decoder vereinbart ist Zyklische Hamming Codesk N n Generatorpolynom G z 2 3 1 z2 z 13 7 4 z3 z 14 15 11 z4 z 15 31 26 z5 z2 16 63 57 z6 z 17 127 120 z7 z3 18 255 247 z8 z7 z2 z 19 511 502 z9 z4 1Bemerkungen z ist eine alternative Schreibweise fur z1 z6 z 1 z6 z1 1 1 ist eine alternative Schreibweise fur z0 z6 z 1 z6 z1 z0 Die Anzahl der Terme ist immer ungerade und enthalt immer die Potenzen zk und 1 z6 z 1 Man kann immer die Exponenten spiegeln d h alle xl durch xk l ersetzen es entsteht ein anderer aber genau funktionierender zyklischer Blockcode z6 z 1 z6 z1 z0 z0 z5 z6 z6 z5 1Praktische Realisierung eines Hamming Encoders Bearbeiten nbsp 15 11 Hamming Code Encoder Zyklische separierbare Hamming Codes lassen sich schaltungstechnisch in digitalen elektrischen Schaltungen einfach realisieren In nebenstehender Abbildung ist zur Veranschaulichung ein 15 11 displaystyle 15 11 nbsp Hamming Encoder mit Generatorpolynom z 4 z 1 displaystyle z 4 z 1 nbsp dargestellt In der Darstellung werden die Datenbits d displaystyle d nbsp als serieller Datenstrom in der Mitte oben eingelesen und rechts das Codewort c displaystyle c nbsp seriell ausgegeben Die Schalter befinden sich zunachst in Stellung A displaystyle A nbsp Damit werden im Codewort zunachst die Datenbits direkt ausgegeben und gleichzeitig in das LFSR geschoben Sind alle Datenbits eines Datenwortes eingelesen wechseln die beiden Schalter in Stellung B displaystyle B nbsp Es wird nun bitweise der Inhalt des LFSR ausgegeben der den Paritatsbits p displaystyle p nbsp entspricht Sind alle Prufstellen ausgegeben wiederholt sich der Vorgang Zur Vereinfachung sind die notigen Taktleitungen und Synchronisationsschaltungen nicht dargestellt Der Hamming Decoder gestaltet sich ahnlich Der empfangene serielle Bitdatenstrom von den Codewortern wird in ein entsprechendes LFSR geschoben und gleichzeitig in einer separaten Schieberegisterkette zwecks Latenzanpassung geschoben Der Inhalt des LFSR beim Decoder dient nach dem kompletten Empfang eines Codewortes als Adresszeiger in einem Syndromspeicher welcher meist als eine fixe ROM Tabelle in der Schaltung realisiert ist Der Datenausgang des Syndromspeichers wirkt dabei direkt auf den seriellen Datenstrom der Datenbits ein und korrigiert bei Bedarf fehlerhaft erkannte Datenbitstellen durch Invertieren Decodierung BearbeitenBei der Decodierung konnen verschiedene Verfahren angewendet werden die sich in der Komplexitat des Decoders und Decoderleistung unterscheiden Ein wesentliches Verfahren basiert auf der oben ermittelten Syndromtabelle die Aufschluss daruber gibt welche Stelle im Codewort falsch ist Dies ist bei empfangenen oder gelesenen binaren Symbolen ein relativ einfaches Verfahren Allerdings ist kein allgemeines Verfahren bekannt mit dem ein linearer Blockcode beliebiger Codewortlange deterministisch in Polynomialzeit decodierbar ware Bei einem N n Hamming Code ist der Decodierungsaufwand von der Codewortlange N displaystyle N nbsp abhangig und steigt exponentiell Durch Verwendung des Syndroms bei der Decodierung lasst sich die Anzahl der moglichen Fehlerkombinationen von 2N auf 2n reduzieren In der Komplexitatstheorie wird die Zeitklasse jener Entscheidungsprobleme als NP schwer bezeichnet Eine weitere Moglichkeit die Decodierungsleistung zu verbessern besteht in dem Umstand dass in realen Nachrichtensystemen der Decoder die einzelnen Codeworter im Regelfall nicht als binare sondern als mehrstufige Signale erhalt Die empfangenen analogen Signale werden von einem vorgeschalteten Analog Digital Umsetzer zunachst quantisiert Die entstehenden Abstufungen des Signals zwischen logisch 0 displaystyle 0 nbsp und logisch 1 displaystyle 1 nbsp werden vom Decoder als Wahrscheinlichkeiten aufgefasst und das Codewort anhand dieser iterativ konstruiert Diese Verfahrensweise wird in der meist englischsprachigen Fachliteratur als Soft Decision bezeichnet und bewirkt einen hoheren Codegewinn Das Gegenstuck dazu ist die sogenannte Hard Decision die als ein Extremfall der Soft Decision aufgefasst werden kann Dabei wird das analoge Empfangssignal vor der Decodierung mittels 1 Bit breiten Analog Digital Umsetzer einem Komparator als ein digitales Eingangssignal fur die Codeworter abgebildet Damit ist bereits vor der Decodierung festgelegt ob ein bestimmtes Bit des empfangenen Codewortes logisch 1 oder logisch 0 ist Decodierung mittels Hard Decision Bearbeiten In diesem Fall liegen die empfangenen Codeworter bereits als digitale Folgen vor weshalb sich der Decodierprozess in einem einstufigen Prozess auf die Auswertung der Syndromtabelle reduziert Dieses Verfahren wird grossteils dann verwendet wenn der Decoder moglichst einfach gestaltet sein soll und keine verketteten Codes d h aus Kombinationen unterschiedlicher Hamming Codes bestehende zum Einsatz kommen Bei der oben eingefuhrten Darstellung mittels Kontrollmatrix wurde bereits erlautert dass das Produkt aus empfangenen Codewort c displaystyle c nbsp und der Kontrollmatrix bei einem Fehler einen Wert ungleich 0 annimmt H c 0 displaystyle mathbf H cdot mathbf c neq mathbf 0 nbsp Durch entsprechende Anordnung der Parity Stellen und damit infolge der Form der Kontrollmatrix lasst sich im einfachsten Fall der Wert dieser Gleichung als Syndrom direkt zur Korrektur der betreffenden Bitstelle verwenden Wenn diese Gleichung bei 7 4 displaystyle 7 4 nbsp Hamming Code den Wert 1 liefert ist genau das erste Bit des empfangenen Codewortes falsch Bei dem Wert 2 der Gleichung das zweite Bit und so weiter Durch Negation der betreffenden Bitstelle im Codewort kann der Fehler korrigiert werden Im fehlerfreien Fall liefert obige Gleichung den Wert 0 und keine Bitstelle wird korrigiert Diese einfache Ubereinstimmung von Syndromwert zu fehlerhafter Bitstelle ist bei einem Hamming Code nur dann der Fall wenn sich die einzelnen Paritatsbits genau an den Positionen im Codewort befinden welche Zweierpotenzen darstellen Dies ist bei der eingangs dargestellten Generatormatrix G displaystyle G nbsp der Fall Damit entfallt eine Syndromtabelle ROM Tabelle die erst den jeweiligen Wert der Gleichung von Kontrollmatrix und Codewort auf eine bestimmte Bitposition umsetzt Diese Vereinfachung fur die Decodierung ist auch der Grund warum Hamming Codes in Beispielen meistens in der oben dargestellten Form der Generatormatrix G displaystyle G nbsp vorgenommen werden Zur Decodierung des oben dargestellten separierbaren 7 4 displaystyle 7 4 nbsp Hamming Code mit seiner Kontrollmatrix H displaystyle H nbsp ist hingegen zur Ermittlung der fehlerhaften Stelle im Codewort eine Umsetzung des Wertes aus der Prufgleichung notwendig Im fehlerfreien Fall liefert die Prufgleichung so wie bei allen Hamming Codes den Wert 0 Im Fehlerfall liefert sie einen Wert ungleich 0 welcher nicht der fehlerhaften Bitstelle im Codewort entsprechen zu entsprechen braucht Die Umsetzung auf die fehlerhafte Bitstelle kann mittels eines ROM Speichers erfolgen dessen Adressen den Wert der Prufmatrix erhalt und die Datenausgange angeben welche Bitstelle durch Invertierung zu korrigieren ist Im Fall des oben angegebenen separierbaren 7 4 displaystyle 7 4 nbsp Hamming Code muss der ROM Speicher folgenden Dateninhalt haben Eingabewert ROM Speicheradresse Ausgabewert Fehlerhafte Bitposition im Codewort 0 01 52 63 14 75 26 37 4Pseudocode BearbeitenDas folgende Beispiel in Pseudocode zeigt eine Funktion die den Hamming Code fur das gegebene Datenwort der Lange n erzeugt und gibt ihn als Array zuruck Der Hamming Code hat n Datenbits und k Paritatsbits hammingCode Array fur den Hamming Code index Position des Paritatsbits numberOfSetBits Anzahl der gesetzten Bits function createHammingCode dataWord n k for i 0 to k 1 do for Schleife die die Position der Paritatsbits ermittelt index 2 i 1 hammingCode index 1 Setzt die Paritatsbits auf 1 um sie identifizieren zu konnen j 0 for i 0 to k n 1 do for Schleife die die Bits des Hamming Code durchlauft if hammingCode i lt gt 1 Wenn Datenbit also kein Paritatsbit hammingCode i dataWord j Setzt die Datenbits des Hamming Code j j 1 for i 0 to k n 1 do for Schleife die die Bits des Hamming Code durchlauft if hammingCode i lt gt 1 Wenn Paritatsbit index log2 i 1 Logarithmus zur Basis 2 numberOfSetBits 0 for j i 2 to k n do if das Bit von j an der Position index ist gesetzt if das Bit des Hamming Code ist ebenfalls gesetzt numberOfSetBits numberOfSetBits 1 Variable fur die Anzahl der gesetzten Bits um 1 erhohen hammingCode i numberOfSetBits mod 2 Setzt die Paritatsbits des Hamming Code fur gerade Paritat return hammingCode Gibt den Array mit dem Hamming Code zuruck Erweiterter Hamming Code BearbeitenDa der Hamming Code nur einen Bitfehler pro Datenwort erkennen und korrigieren kann und zwei Bitfehler pro Datenwort bei dem Decoder zu einem falschen Codewort fuhren besteht der Wunsch diese Eigenschaften zu verbessern Dieser Code wird als erweiterter Hamming Code englisch extended Hamming Code bezeichnet Dazu wird bei dem Hamming Code ein weiteres Paritatsbit angefugt in das alle binaren Stellen des nicht erweiterten Hamming Code einfliessen Damit wird beispielsweise aus dem 7 4 displaystyle 7 4 nbsp Hamming Code ein erweiterter 8 4 displaystyle 8 4 nbsp Hamming Code Die Erweiterung eines allgemeinen Blockcodes um eine zusatzliche Kontrollstelle ist nur sinnvoll wenn das Codegewicht ungerade ist da nur dann zusatzliche Information in diesem zusatzlichen Kontrollbit vorhanden ist Dies ist bei Hamming Codes mit einem Codegewicht von 3 immer erfullt Damit wird der Hamming Abstand bei dem erweiterten Hamming Code von 3 auf 4 erhoht und der erweiterte Hamming Code kann folgende Fehler pro Codewort erkennen bzw korrigieren Er kann beliebig positionierte einzelne Bitfehler erkennen und korrigieren In diesem Fall ist der Syndromwert ungleich 0 displaystyle 0 nbsp und das zusatzliche Paritatsbit 1 displaystyle 1 nbsp Er kann beliebig positionierte zweifache Bitfehler erkennen aber nicht mehr korrigieren In diesem Fall ist der Syndromwert ungleich 0 displaystyle 0 nbsp und das zusatzliche Paritatsbit 0 displaystyle 0 nbsp Er kann alle dreifachen Bitfehler entweder als ungultiges Codewort erkennen und weist bei der Decodierung ein gultiges Codewort zu das nicht gesendet wurde oder erkennt dreifache Bitfehler die nicht korrigiert werden konnen Welcher Fall eintritt hangt von den Positionen der drei Bitfehler im Codewort ab Im ersten Fall ist der Syndromwert ungleich 0 displaystyle 0 nbsp und das zusatzliche Paritatsbit 1 displaystyle 1 nbsp im zweiten Fall ist der Syndromwert 0 displaystyle 0 nbsp und das zusatzliche Paritatsbit 1 displaystyle 1 nbsp Vierfache Bitfehler eines Codewortes werden entweder als ungultiges und korrigierbares Codewort wie im ersten Punkt erkannt und einem gultigen Codewort zugewiesen das nicht gesendet wurde Oder es wird unmittelbar ein gultiges Codewort welches gar nicht gesendet wurde empfangen Welcher Fall eintritt hangt auch in diesem Fall davon ab an welchen Bitpositionen im Codewort die Bitfehler auftreten Im ersten Fall ist der Syndromwert ungleich 0 displaystyle 0 nbsp und das zusatzliche Paritatsbit 0 displaystyle 0 nbsp Im zweiten Fall ist der Syndromwert 0 displaystyle 0 nbsp und das zusatzliche Paritatsbit 0 displaystyle 0 nbsp was einem gultigen Codewort entspricht In allen Fallen werden bei vierfachen Bitfehlern andere als die gesendeten Codeworter ausgegeben was als Decodierversagen bezeichnet wird Fur den Decoder von erweiterten Hamming Codes welcher nur mittels Hard Decision arbeitet lasst sich damit folgende Wahrheitstabelle aufstellen nach deren Eingangsgrossen in Form des Syndromvektors und der zusatzlichen Parity Prufung der Decoder entscheiden kann ob kein Fehler ein korrigierbarer Fehler oder ein nicht korrigierbarer Fehler vorliegt Syndromvektor zusatzliche Parity Prufung Aktion des Decoders Empfangenes Codewort 0 0 kein Fehler gultig 0 1 korrigierbarer Fehler ungultig 0 1 korrigierbarer Fehler im Paritatsbit ungultig 0 0 erkannter nicht korrigierbarer Fehler ungultigDer erweiterte Hamming Code ist kein perfekter Code da nicht mehr alle ungultigen Codeworter eindeutig gultigen Codewortern zugeordnet werden konnen Was in den Fallen mit erkannten aber nicht korrigierbaren Datenfehlern passiert mussen weitere Verarbeitungsebenen nach dem Hamming Decoder entscheiden Weiterhin kann bei drei oder mehr Bitfehlern pro Codewort ein Decodierversagen auftreten Das heisst diese Mehrfachfehler werden entweder nicht erkannt oder nicht gesendeten gultigen Codewortern zugewiesen Dies ist vor allem bei Hamming Codes mit langen Codewortern zu beachten da sich dieses Verhalten durch Wahl der Codewortlange nicht verandert Anwendung findet der erweiterte Hamming Code beispielsweise als sogenannter innerer Blockcode in Turbo Product Codes wie sie in drahtlosen Funknetzen zur Datenubertragung nach dem Standard IEEE 802 16 im Rahmen von WiMAX auf der Funkschnittstelle verwendet werden Codeverkurzung BearbeitenSowohl der Hamming Code als auch der erweiterte Hamming Code konnen in der Lange ihrer Codeworter verkurzt werden um in Anwendungen Codeworter mit bestimmter fester Lange zu erhalten Dies wird als Codeverkurzung bezeichnet Alle Hamming Codes weisen wie dargestellt nur vergleichsweise wenige wahlbare Codewortlangen in groben Schrittweiten zu 2 k 1 displaystyle 2 k 1 nbsp auf wobei k displaystyle k nbsp ganzzahlig und grosser 1 gewahlt werden muss Dazwischenliegende Codewortlangen sind bei dem Hamming Code nicht moglich Durch das Verfahren der Codeverkurzung werden Codewortlangen zwischen diesen einzelnen groben Stufen wahlbar allerdings wird dieser Vorteil je nach Verfahren entweder durch ein schlechteres Verhaltnis von Datenbitstellen Nutzdaten zur Anzahl der Kontrollstellen im Codewort erkauft oder es wird durch das Verfahren die Mindestdistanz des Codes und damit seine Korrekturleistung reduziert Zur Codeverkurzung konnen grundsatzlich bei allen Codes folgende Verfahren zur Anwendung kommen Es werden auf Seite des Encoders nur jene moglichen Codeworter ausgewahlt und anschliessend als gultige Codeworter verwendet die an den ersten oder letzten Stellen des Codewortes immer logisch 0 displaystyle 0 nbsp sind Je nach gewunschter resultierender Codewortlange wird eine entsprechende Anzahl an Stellen ausgewahlt zwischen Encoder und Decoder vereinbart und im Verfahren nicht mehr geandert Durch den Umstand dass die weggelassenen Stellen immer bekannte Werte aufweisen brauchen sie nicht mehr ubertragen bzw gespeichert zu werden Das resultierende Codewort ist in seiner Lange verkurzt Bei diesem Verfahren bleibt die Mindestdistanz des Hamming Code von drei und somit seine Korrekturleistung erhalten Es stellt sich allerdings ein ungunstigeres Verhaltnis von Datenbitanteil zum Kontrollbitanteil im Codewort ein Dies bedeutet dass jene verkurzten Hamming Codes einen grosseren Anteil von Kontrollstellen Paritatsbits im Codewort aufweisen als im Optimum bei Hamming Codes mit unverkurzten Codewortlange notig ware Es werden ausgewahlte Stellen des Codewortes auf Seite des Encoder punktiert das heisst geloscht und auf einen festen Wert von entweder logisch 1 displaystyle 1 nbsp oder logisch 0 displaystyle 0 nbsp gesetzt Durch den Umstand des festen Wertes brauchen die entsprechenden Binarstellen nicht mehr ubertragen bzw gespeichert zu werden es ergibt sich eine entsprechende Langenreduktion des resultierenden Codewortes Je nach Wahl der Stellen im Codewort ergeben sich unterschiedlich starke Reduktionen der Mindestdistanz des Codes Da bei Hamming Codes der Mindestabstand immer drei ist wurde eine Punktierung zu einem vollstandigen Verlust der Korrekturleistung fuhren Punktierungen haben daher bei Blockcodes wie dem Hamming Code keine praktische Bedeutung und finden sich typischerweise bei Faltungscodes mit entsprechend hohen Mindestabstand Praktische Anwendungen von verkurzten und erweiterten Hamming Codes finden sich beispielsweise bei der Korrektur von einfachen Speicherfehlern und der sicheren Detektion von zweifachen Speicherfehlern pro Adresse bei DRAM Speichern Diese kostengunstigen Speicher benotigen pro Bit nur einen kleinen Kondensator zur Datenspeicherung und es kann durch Storeffekte relativ leicht zur Bitfehlern kommen Handelsubliche Speichermodule weisen pro Speicheradresse eine Datenbusbreite von typischerweise 36 Bit oder 72 Bit auf beides sind Werte die nicht direkt durch entsprechende Codewortlangen des Hamming Codes erreicht werden konnen Durch die Codeverkurzung nach dem ersten Verfahren kann relativ einfach ein verkurzter Hamming Code mit genau passender Codewortlange konstruiert werden In Applikationsschriften der Firma Xilinx zur Fehlerkorrektur mittels Hamming Codes 2 wird von einem erweiterten Hamming Code mit den Parametern 128 120 displaystyle 128 120 nbsp als Basis ausgegangen Daraus wird ein verkurzter Hamming Code 72 64 displaystyle 72 64 nbsp gebildet dessen Codewortlange exakt der Datenbusbreite des DRAM Speichermoduls entspricht und 64 Nutzdatenbits pro Adresse speichern kann Dabei werden alle Paritatsbits des 128 120 displaystyle 128 120 nbsp Hamming Codes in das auf 72 Stellen verkurzte Codewort ubernommen Die Datenbitstellen 65 bis 120 sind immer auf logisch 0 displaystyle 0 nbsp gesetzt und werden nicht gespeichert Weitere Zahlensysteme BearbeitenBei dem im Artikel vorgestellten binaren Hamming Code gibt es nur zwei mogliche Zustande pro Stelle des Datenwortes oder Codewortes genau das bedeutet binar In der Zahlentheorie wird dieser Umstand mittels Galois Korpern der Charakteristik zwei abgekurzt GF 2 ausgedruckt Besondere Eigenschaft aller binarer fehlerkorrigierender Codes ist dass bereits die Ermittlung der Fehlerposition zur Fehlerkorrektur ausreicht Da nur zwei mogliche Zustande pro Stelle existieren kann ein Fehler mit ermittelter Position immer durch Inversion 0 1 der betreffenden Stelle korrigiert werden Neben den binaren Hamming Code gibt es auch Verallgemeinerungen auf weitere hohere Zahlensysteme wie beispielsweise den ternaren Hamming Code in GF 3 Der ternare Hamming Code weist pro Stelle drei Zustande auf 0 1 2 displaystyle left 0 1 2 right nbsp Zur Fehlerkorrektur ist bei allen nicht binaren Codes neben der Lokalisierung der Fehlerposition auch eine zusatzliche Information notig auf welche der anderen Moglichkeiten eine bestimmte Stelle geandert werden muss Allgemein lassen sich auch Hamming Codes auf Galois Korpern G F q displaystyle GF q nbsp bilden wobei q displaystyle q nbsp eine Primzahlpotenz sein muss d h q p s displaystyle q p s nbsp mit p 2 3 5 7 displaystyle p in 2 3 5 7 ldots nbsp eine Primzahl und s N displaystyle s in mathbb N nbsp Vereinfachte Variation mit Beispiel BearbeitenEine starke Vereinfachung bietet die folgende Hamming Code Variante hier werden die benotigten Hamming Bits einfach angehangt auch entfallt das Umdrehen der Binarzahl Beispiel Ubertragung Dezimalzahl 86 gespeichert in 8 Bits soll ubertragen werden 86 01010110 Hamming Bits werden benotigt 01010110 hat 1er Bits an den Stellen von rechts gezahlt 2 3 5 und 7Aufschreiben der Stellen der 1er Bits binar untereinander und mit Paritat erganzen D h jede Spalte muss eine gerade Anzahl an 1er Bits haben 0010 2 Stelle 0011 3 Stelle 0101 5 Stelle 0111 7 Stelle 0011 erganzt so dass in jeder Spalte eine gerade Anzahl 1er ist Ubertragene Daten mit Hamming Code 01010110 0011 Binarzahl Hamming BitsBeispiel Fehlersuche Empfangen wurde 01000110 0011Hamming Code neu berechnen 01000110 hat 1er an Stellen 2 3 70010 2 Stelle 0011 3 Stelle 0111 7 Stelle 0011 ubertragener Hamming Code 0101 da nicht 0000 sondern 0101 5 5 Bit falsch01010110 0011 86 von oben der Hamming Code konnte den 1 Bit Fehler korrigieren Vergleich mit dem originalen Hamming Code Beim ursprunglichen Hamming Code funktioniert das Aufschreiben der Stellen zur Feststellung der Paritat genauso allerdings mussen die Bits vorher an die richtige Stelle gesetzt werden Zum Beispiel von oben 86 01010110 gt 0101 011 0 die stehen jeweils fur das Hamming Bit 1er Bits haben wir an den Stellen 5 6 9 110101 5 Stelle 0110 6 Stelle 1001 9 Stelle 1011 11 Stelle 0001 erganzt so dass in jeder Spalte eine gerade Anzahl 1er ist Hamming Code original ohne umdrehen der Bitfolge 010100110001Die vereinfachte Variation hat allerdings eine Schwache die der originale Hamming Code nicht hat Sie kann einen Fehler in den Datenbits nicht von einem Fehler in den Hamming Code Bits unterscheiden vgl die folgenden 2 Beispiele Beispiel Fehlersuche mit Fehler im 4 Datenbit Empfangen wurde 01011110 0011Hamming Code neu berechnen 01011110 hat 1er an Stellen 2 3 4 5 70010 2 Stelle 0011 3 Stelle 0100 4 Stelle 0101 5 Stelle 0111 7 Stelle 0011 ubertragener Hamming Code 0100 da nicht 0000 sondern 0100 4 Hier wird das 4 Bit als falsch erkannt 01010110 0011 86 von oben der Hamming Code konnte den 1 Bit Fehler korrigieren Beispiel Fehlersuche mit Fehler im 3 Hamming Code Bit Empfangen wurde 01010110 0111Hamming Code neu berechnen 01010110 hat 1er an Stellen 2 3 5 70010 2 Stelle 0011 3 Stelle 0101 5 Stelle 0111 7 Stelle 0111 ubertragener Hamming Code 0100 da nicht 0000 sondern 0101 4 4 Hier erkennt der Algorithmus ebenfalls einen Fehler im 4 Datenbit 01011110 0111 94 Die Anwendung des Korrekturalgorithmus fuhrt hier zu einem Fehler im Datenbit an Stelle zu einer Korrektur des Hamming Code Bits Literatur BearbeitenMartin Bossert Kanalcodierung 2 vollstandig neubearbeitete und erweiterte Auflage Teubner Stuttgart 1998 ISBN 3 519 16143 5 Informationstechnik Todd K Moon Error Correction Coding Mathematical Methods and Algorithms John Wiley amp Sons Hoboken NJ 2005 ISBN 0 471 64800 0 Andre Neubauer Kanalcodierung Eine Einfuhrung fur Ingenieure Informatiker und Naturwissenschaftler J Schlembach Fachverlag Wilburgstetten 2006 ISBN 3 935340 51 6 Hermann Rohling Einfuhrung in die Informations und Codierungstheorie Teubner Stuttgart 1995 ISBN 3 519 06174 0 Teubner Studienbucher Elektrotechnik Weblinks Bearbeiten nbsp Commons Hamming codes Album mit Bildern Videos und Audiodateien Hamming Code Tool Java Applet zur VisualisierungEinzelnachweise Bearbeiten Richard W Hamming Error Detection and Error Correction Codes In The Bell System Technical Journal Vol XXIX 2 1950 Seite 147 160 Fehlererkennung mittels verkurztem Hamming Code PDF 184 kB Firmenschrift englisch nbsp Dieser Artikel wurde am 5 September 2007 in dieser Version in die Liste der lesenswerten Artikel aufgenommen Abgerufen von https de wikipedia org w index php title Hamming Code amp oldid 239180346