Fehlerkorrektur

Erkennt der Empfänger einen Fehler, zum Beispiel durch Prüfbits, kann er den Sender um eine erneute Übertragung der Daten bitten, um den Fehler zu korrigieren. Bei der Vorwärtsfehlerkorrektur hingegen ist oft keine Neuübertragung nötig. Dazu wird weitere Redundanz zu den Daten hinzugefügt, z. B. mehrere Prüfbits. So wird nicht nur erkannt, dass ein Fehler vorliegt, sondern auch wo. Das Verfahren kann den Fehler somit korrigieren, indem es das als fehlerhaft erkannte Bit berichtigt. Wie das im Detail funktioniert, kannst du im Bonus-Kasten nachlesen. Es ist aber nicht prüfungsrelevant. Im Englischen wird von Forward Error Correction (FEC) gesprochen.

AE413: Sie verwenden ein Datenübertragungsverfahren ohne Vorwärtsfehlerkorrektur. Wodurch können Datenpakete trotz Prüfsummenfehlern korrigiert werden?
AE414: Was ist die Voraussetzung für Vorwärtsfehlerkorrektur (FEC)?

Der Hamming-Code ist ein Fehlerkorrekturverfahren, das mehrere Parity Bits verwendet. Nehmen wir an, wir wollen die folgenden 11 Bits übertragen:

Dieser Alt-Text wurde noch nicht überprüft.

1) Kurze Zusammenfassung: Eine waagerechte Reihe von elf nebeneinanderliegenden, schwarz umrahmten Kästchen, in denen abwechselnd die Ziffern 0 und 1 stehen.

2) Detaillierte Beschreibung: Die Kästchen sind rechteckig, gleich groß und auf weißem Grund dargestellt, jeweils mit einer einzelnen Ziffer zentriert. Von links nach rechts lauten die Ziffern: 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1. Es sind keine Achsen, Pfeile oder zusätzlichen Beschriftungen vorhanden.
Abbildung NEA-16.22.1:

Das Ziel soll es sein, dass ein Bitfehler nicht nur erkannt, sondern auch korrigiert werden kann. Dazu ist es hilfreich, wenn wir uns die Positionen der einzelnen Bits mal genauer anschauen. Dazu benennen wir die Positionen alphabetisch:

Dieser Alt-Text wurde noch nicht überprüft.

1) Kurzbeschreibung: Eine waagerechte Reihe aus elf gleich großen, umrahmten Kästchen, jeweils mit den Kleinbuchstaben „a“ bis „k“ beschriftet.

2) Detaillierte Beschreibung: Von links nach rechts sind elf rechteckige Felder mit dünnem schwarzen Rahmen zu sehen, durch senkrechte Linien voneinander getrennt. In jedem Feld steht zentriert ein einzelner Kleinbuchstabe, in Reihenfolge: „a“, „b“, „c“, „d“, „e“, „f“, „g“, „h“, „i“, „j“, „k“. Weitere Beschriftungen, Achsen oder Symbole sind nicht vorhanden; Hintergrund und Felder sind hell.
Abbildung NEA-16.22.2:

Nun ordnen wir die Bits etwas anders an und fügen noch einige zusätzliche Bits hinzu:

Dieser Alt-Text wurde noch nicht überprüft.

1. Kurzzusammenfassung: Ein 4×4-Raster mit schwarzen Gitterlinien; einige Felder enthalten schwarze Kleinbuchstaben von a bis k.

2. Detaillierte Beschreibung: Weißer Hintergrund, dicke schwarze Linien bilden ein 4 Spalten × 4 Zeilen großes Quadratgitter. Die Buchstaben stehen mittig in bestimmten Zellen. Bezeichnung der Positionen (Zeilen von oben nach unten 1–4, Spalten von links nach rechts 1–4): Zeile 1: Spalte 1–3 leer, Spalte 4 „a“. Zeile 2: Spalte 1 leer, Spalte 2 „b“, Spalte 3 „c“, Spalte 4 „d“. Zeile 3: Spalte 1 leer, Spalte 2 „e“, Spalte 3 „f“, Spalte 4 „g“. Zeile 4: Spalte 1 „h“, Spalte 2 „i“, Spalte 3 „j“, Spalte 4 „k“. Alle Buchstaben sind schwarz und in Kleinbuchstaben dargestellt.
Abbildung NEA-16.22.3:

Anstatt eines einzelnen Prüfbits verwenden wir jetzt vier ($p_1$-$p_4$), die verschiedene Bereiche unserer Datenbits, ähnlich einem Kreuzworträtsel, abdecken:

Dieser Alt-Text wurde noch nicht überprüft.

Kurzbeschreibung: Ein 4×4-Raster mit dicken schwarzen Linien; die Zellen enthalten teils die Zeichen p1–p4 und die Buchstaben a–k, eine Zelle ist leer.

Detailbeschreibung: Das Raster hat vier Zeilen und vier Spalten. Von oben nach unten, jeweils von links nach rechts gelesen:
- Zeile 1: Zelle 1 leer; Zelle 2 „p1“ (kursiv); Zelle 3 „p2“ (kursiv); Zelle 4 „a“.
- Zeile 2: Zelle 1 „p3“ (kursiv); Zelle 2 „b“; Zelle 3 „c“; Zelle 4 „d“.
- Zeile 3: Zelle 1 „p4“ (kursiv); Zelle 2 „e“; Zelle 3 „f“; Zelle 4 „g“.
- Zeile 4: Zelle 1 „h“; Zelle 2 „i“; Zelle 3 „j“; Zelle 4 „k“.
Die Buchstaben a–k sind in normaler, aufrechter Schrift gesetzt.
Abbildung NEA-16.22.4:

Jedes Prüfbit sichert einen gewissen Bereich ab:

Dieser Alt-Text wurde noch nicht überprüft.

1) Kurze Zusammenfassung: Eine 4-zeilige, 16-spaltige Gittergrafik mit abwechselnd grau und weiß hinterlegten Zellen, die in vier identische 4-Spalten-Blöcke mit den Beschriftungen p1, p2, a, p3, b, c, d, p4, e, f, g, h, i, j, k unterteilt sind.

2) Detaillierte Beschreibung: Das Gitter besteht aus vier Zeilen und sechzehn Spalten, visuell in vier gleich breite Blöcke zu je vier Spalten gegliedert. In jedem Block wiederholt sich dieselbe Anordnung der Zelltexte. Zeile 1 eines Blocks zeigt (von links nach rechts): „p1“, „p2“, „a“ und eine leere Zelle. Zeile 2 zeigt: „p3“, „b“, „c“, „d“. Zeile 3 zeigt: „p4“, „e“, „f“, „g“. Zeile 4 zeigt: „h“, „i“, „j“, „k“. Viele Zellen sind grau hinterlegt, andere weiß; die Grau-/Weißflächen wechseln feldweise und das Wechselmuster wiederholt sich blockweise über die gesamte Breite. Es sind nur die genannten Buchstaben und Zeichenfolgen „p1“, „p2“, „p3“, „p4“ sichtbar; weitere Achsen, Pfeile oder Legenden sind nicht vorhanden.
Abbildung NEA-16.22.5:

Schauen wir uns wieder das Ganze mit unseren Daten an. Für jeden Bereich berechnen wir das Prüfbit mit Even Parity:

Dieser Alt-Text wurde noch nicht überprüft.

Kurzfassung: Ein 4×4-Raster mit dicken schwarzen Linien zeigt Ziffern 0 und 1, einige Felder sind grau hinterlegt, mehrere Einträge haben kleine tiefgestellte Buchstaben; das Feld oben links ist leer.

Detaillierte Beschreibung:
- Rahmen: Schwarzer Rand, Raster mit dicken schwarzen Linien.
- Zeile 1 (von links nach rechts): 
  1) weiß, leer; 2) grau, „1“; 3) grau, „0“; 4) weiß, „1_a“ (a klein, tiefgestellt rechts unten).
- Zeile 2:
  1) grau, „0“; 2) weiß, „1_b“; 3) weiß, „0_c“; 4) weiß, „0_d“.
- Zeile 3:
  1) grau, „1“; 2) weiß, „1_e“; 3) weiß, „0_f“; 4) weiß, „1_g“.
- Zeile 4:
  1) weiß, „1_h“; 2) weiß, „0_i“; 3) weiß, „1_j“; 4) weiß, „1_k“.
Abbildung NEA-16.22.6:

Tritt bei der Übertragung ein Fehler auf, kann dieser durch die Kombination der verschiedenen Bereiche der Fehler lokalisiert und korrigiert werden.

Wird zum Beispiel das Bit $k$ durch die Übertragung zu einer $\num{0}$, so werden alle Paritätsprüfungen ($p_1$-$p_4$) fehlschlagen. Der Fehler muss also bei Bit $k$ liegen.

Tritt z.,B. der Fehler im Bit $a$ auf, so schlägt die Paritätsprüfung von $p_1$ und $p_2$ fehl, während die von $p_3$ und $p_4$ erfolgreich ist. Der Fehler muss also bei Bit $a$ liegen.

Selbst fehler in den Parity Bits können erkannt und korrigiert werden. Tritt z.,B. der Fehler im Bit $p_1$ auf, so schlägt die Paritätsprüfung von $p_1$ fehlschlägt, während die von $p_2$, $p_3$ und $p_4$ erfolgreich ist. Der Fehler muss also bei Bit $p_1$ liegen.

Treten mehr als 1 Fehler auf, so kann der Hamming-Code diese nicht mehr korrekt erkennen und korrigieren. Es gibt aber Erweiterungen des Hamming-Codes, die auch Mehrbitfehler erkennen können.


Weiter zum nächsten Abschnitt: Mapping