Fehlerkorrekturverfahren dienen dazu, Fehler bei der Speicherung und Übertragung von Daten zu erkennen und, wenn möglich, zu korrigieren. Fehlererkennungsverfahren beschränken sich auf eine reine Fehlererkennung.
Dazu wird vor der Speicherung oder Übertragungen den Nutzdaten zusätzliche Redundanz in Form zusätzlicher Bits hinzugefügt, die auf der Zielseite zur Bestimmung von Fehlern und Fehlerpositionen genutzt wird.
Nehmen wir an es sollen 8 Bit Nutzdaten mit dem Hamming ECC Verfahren übertragen werden, so sind hierfür zusätzlich 4 Fehlerkorrektur-Bits nötig. Insgesamt müssen also 12 Bit übertragen werden. Nutzdaten: 1 2 3 4 5 6 7 8 0 1 0 0 1 1 0 0 zu übertragene Daten: 1 2 3 4 5 6 7 8 9 10 11 12 ? ? 0 ? 1 0 0 ? 1 1 0 0 Die Bits 1,2,4,8 dienen in diesem Fall als Korrektur-Bits und sind immer an den Positionen der jeweiligen Potenz aus 2 (Pos=2^x, x=0,1,2,3...), also Position 1,2,4,8,16,32 usw.
Nun müssen noch die Werte der Korrektur-Bits ermittelt werden. Hierfür wird jeder Bit-Position in unserer Übertragung ein Wert zugeordnet der dem Binärwert der Dezimalposition entspricht. Der Wert ist hier 4 stellig da wir nur 4 Bits für die Korrektur benötigen. Pos: 1 Wert: 0001 Pos: 2 Wert: 0010 Pos: 3 Wert: 0011 Pos: 4 Wert: 0100 Pos: 5 Wert: 0101 Pos: 6 Wert: 0110 Pos: 7 Wert: 0111 Pos: 8 Wert: 1000 Pos: 9 Wert: 1001 Pos: 10 Wert: 1010 Pos: 11 Wert: 1011 Pos: 12 Wert: 1100 .......
Nun werden die Werte der Positionen, welche 1 in unserer Übertragung wären mit XOR zusammen gerechnet, also Wert/Position 5, Wert/Position 9 und Wert/Position 10. 0101 Position 5 1001 Position 9 XOR 1010 Position 10
Jetzt werden unsere Daten übertragen und der Empfänger kann prüfen ob es sich um korrekte Informationen handelt. Dazu wird der berechnete und der empfangene Korrekturwert XORed: empfangene Daten: !1 !2 3 !4 5 6 7 !8 9 10 11 12 0 1 0 1 1 0 0 0 1 1 0 0 0101 Position 5 1001 Position 9 XOR 1010 Position 10
Jetzt wird während der Übertragung beispielsweise Bit 5 verändert. empfangene Daten: !1 !2 3 !4 5 6 7 !8 9 10 11 12 0 1 0 1 0 0 0 0 1 1 0 0 1001 Position 9 XOR 1010 Position 10
Ergebnis der Berechnung ist immer der Positionswert des veränderten Bits oder 0 wenn kein Fehler auftrat. Dies funktioniert auch wenn bei der Übertragung ein Korrekturbit verändert wurde. Bei Veränderung von 2 Bits kann nur noch eine Aussage darüber getroffen werden, dass Bits verändert wurden, an welchen Positionen sie sitzen allerdings nicht.
Siehe auch ARQ-Protokoll.
Umwandlung von Bündelfehlern in Einzelbitfehler.
Ein Error-correcting code (ECC) ist ein Fehlerkorrektur-Algorithmus der im Gegensatz zur Paritätsprüfung in der Lage ist einen 1-Bit-Fehler zu korrigieren und einen 2-Bit-Fehler zu erkennen. Das ECC-Verfahren benötigt auf 32 Bit 7 Check-Bits und auf 64 Bit 8 Check-Bits.
Das ECC-Verfahren wird häufig in Speicherbausteinen für Serversysteme eingesetzt, die eine besonders hohe Datenintegrität benötigen.
Nach jeden Rahmen wird dann noch ein sogenanntes Subcodewort eingefügt (98 Subcodewörter ergeben immer eine Steuer und Anzeigeinformation (u.a. die Adresse) für einen sogenannten Subcoderahmen). Die Daten werden dann wieder seriell weitergeführt, EFM-moduliert Eight-to-Fourteen-Modulation vor jedem jetzt schon modulierten Rahmen mit einer Synchronisationsinformation ausgestattet (1000000000010000000000101), damit der Player den Anfang des Rahmens wiederfindet und in NRZ-I-Notation in Form von Pits und Lands in einer Spur auf der Disc aufgezeichnet (so bei der CD-R) bzw. auf einem Master aufgezeichnet, von dem ein Spritzgußwerkzeug hergestellt wird, mit dem die einzelnen Discs als Kopien gefertigt werden. Ein Bit hat hier die Länge von ca. 1/3 Micrometer. Auf einem Millimeter der Spur sind die Bits von ca. 150 Bytes aufgezeichnet. Ein Kratzer auf der Disc beschädigt leicht die Bits von 20, 50 oder 100 Bytes, sprich die Bytes von halben oder ganzen Rahmen.
Die verkratzte Disc kann man dennoch mit einem CD-Player auslesen und fehlerfrei wiedergeben. Das Auslesesignal wird in Bits umgewandelt, diese werden EFM-demoduliert, die Synchronisationsinformation und das Subcodewort werden aus dem Datenstrom entfernt und die Bytes wieder parallel geführt. wo der Player nichts lesen konnte, werden Dummy-Bits in den Datenstrom getaktet.
Es werden nun wieder die Fehlerkorrekturrahmen aus insgesamt 32 Bytes (24 Informations-Bytes und 2 x 4 Paritätsbytes) gebildet und anhand der 4 zuletzt zugeführten Paritätsbytes wird nachgerechnet, ob alle Daten korrekt ausgelesen wurden oder ob irgendwo ein Bit bzw. ein ganzes Byte oder sogar mehrere Bytes im Fehlerkorrekturblock als nicht korrekt identifiziert werden. Wenn es sich um kleine Fehler handelt, kann der Decoder den Fehler sofort korrigieren, handelt es sich um größere Mengen von Fehlern (z.B. Kratzer, sogenannte Burst Fehler) ist dies nicht möglich, die fehlerhaften Bytes können aber identifiziert und mit einer Fehlermeldung versehen werden. Anschließend werden die Daten wieder in ihre ursprüngliche Position zurücksortiert (Deinterleaving) und die ursprünglichen Fehlerkorrekturrahmen aus 24 Bytes plus 4 Paritätsbytes gebildet. An dieser zeigt sich der Effekt des Interleavings. Die durch den Kratzer beschädigten 20 oder 50 auf der Spur nebeneinaderliegenden Bytes stammten jedes aus einem anderen ursprünglichen Fehlerkorrekturrahmen und sind jetzt wieder auf diese Rahmen verteilt.In diesen Rahmen sind in den allerseltesten Fällen mehr als zwei Bytes fehlerhaft. Zwar tauchen jetzt in vielen Fehlerkorrekturrahmen fehlerhafte Bytes auf. Diese können jedoch alle mit Hilfe der vier Paritätsbytes korrigiert werden. Am Ende liegt wieder der fehlerfreie serielle Datenstrom vor.
Die Berechnung der Fehlerkorrekturbytes kann man an einem Beispiel stark vereinfacht demonstrieren: Die beiden Bytes 01001010 und 10010010 sollen mit Paritätsbytes ausgestattet werden. Als Regel für die Berechnung wird angenommen: "Wenn 2 gleiche Ziffern untereinander stehen, wird eine 1 als Paritätsbit genommen, wenn 2 ungleiche Ziffern untereinander stehen, eine 0". Wenn man das praktiziert, ergibt sich folgendes Bild 01001010 10010010 00100111. Man kann nun z.B. das erste Byte löschen und mit Hilfe des Paritätsbytes und des nicht gelöschten zweiten Bytes das gelöschte Byte durch Anwendung derselben Regel rekonstruieren. Wo 2 gleiche Ziffern untereinander stehen, wird eine 1 als Korrekturbit eingesetzt, wo 2 ungleiche Ziffern untereinander stehen, eine 0. Nachfolgend ist dies schon für die ersten beiden Bits getan, der Leser kann die Korrektur selbst vollenden: 01 10010010 00100111. Genauso kann man vorgehen, wenn das zweite Byte gelöscht ist und das erste noch vorhanden.
Bei diesem Beispiel wurde mit 50% Fehlerkorrekturdaten gearbeitet. Bei der CD werden pro 24 Bytes 8 Fehlerkorrekturbytes eingefügt, somit müssen hier 33% zusätzliche (redundante) Information gespeichert werden.
Jedoch benötigt man dies im Normalfall nicht. Interleaving treibt eigentlich nur die Latenz (Ping) in die Höhe, eine so gut wie einwandfreie Datenübertragung ist jedoch auch ohne Interleaving möglich.
Eine abgeschaltete Korrektur wird bei T-DSL Fastpath genannt. Sie eignet sich besonders für Online-Spieler, bei denen die Latenz eine Rolle spielt, das Abschalten von Interleaving kostet bei der Telekom zur Zeit (16. Mai 05) auch noch eine Einrichtungsgebühr + Monatspreis. Bei Arcor z.B. ist das Interleaving standardmäßig ausgeschaltet.
Detecció d'errors | Error correction and detection | Detección de errores | Code correcteur | 誤り検出 | 오류정정부호 | Kanaalcodering | Коррекция ошибок
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Fehlerkorrekturverfahren".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world