# Vorwärtsfehlerkorrektur

Vorwärtsfehlerkorrektur (von englisch forward error correction, kurz FEC; manchmal auch engl. error detection and correction, kurz EDAC) ist eine Technik, die dazu dient, die Fehlerrate bei der Speicherung oder der Übertragung digitaler Daten zu senken, und stellt ein Fehlerkorrekturverfahren dar.
Wenn in einem Übertragungssystem Vorwärtsfehlerkorrektur eingesetzt wird, kodiert der Sender die zu übertragenden Daten in redundanter Weise, so dass der Empfänger Übertragungsfehler ohne Rückfrage beim Sender erkennen und korrigieren kann.
Vorwärtsfehlerkorrektur wird z. B. auf Compact Discs (CD), beim digitalen Fernsehen (DVB) und im Mobilfunk eingesetzt.

## Grundlegende Techniken

Vorwärtsfehlerkorrektur erfolgt im Rahmen der Kanalcodierung und ist ein Teil der Kodierungstheorie. Dem digitalen und zunächst quellenkodierten Signal wird auf der Senderseite in einem Kanalencoder gezielt Redundanz hinzugefügt, die es dem Kanaldecoder im Empfänger ermöglichen soll, Fehler, die auf dem Übertragungskanal aufgetreten sind, zu korrigieren.
Die Ergänzung der zu übertragenden Daten um eine Prüfsumme ist nicht hinreichend, um Vorwärtsfehlerkorrektur zu ermöglichen. Sie erlaubt es dem Empfänger lediglich, zu erkennen, dass ein Fehler aufgetreten ist; der Empfänger muss dann den Sender zu erneuter Übertragung des fehlerhaften Datenblocks auffordern. Ein solches Verfahren wird als „Rückwärtsfehlerkorrektur“, „nachgefragte Korrekturübertragung“ oder „automatische Wiederholungsanfrage“ bezeichnet; es ist in ARQ-Protokollen (Automatic Repeat-reQuest) standardisiert und wird z. B. im TCP-Protokoll eingesetzt.
FEC-Algorithmen lassen sich danach unterteilen, worauf sie wirken:
* auf Datenblöcke fester Länge (Block-Code); Beispiele von Block-Codes sind der einfache Hamming-Code oder die wesentlich weiter parametrisierbaren BCH-Codes und die verwandten Reed-Solomon-Codes.
* auf einen fortlaufenden Datenstrom wie die Faltungs-Codes, die oft mit dem Viterbi-Algorithmus dekodiert werden.

## Verkettete FEC

Die FEC tritt häufig verkettet auf, die Daten durchlaufen dabei seriell mehrere Kodierschichten, und schon kodierte Abschnitte können mit zusätzlichen Algorithmen robuster gegen Störungen gemacht werden.
So werden beim Digital Video Broadcasting (DVB) Blockcode (Reed-Solomon-Code), Faltungscode und Byte-Interleaving auf Ebene des Transportstroms mit Blöcken von 188 Byte eingesetzt. Ähnliches gilt für die Kodierungen im Global System for Mobile Communications (GSM), welche die 260-Bit-Blöcke des Sprachcodecs mit Blockcode und Faltungscode auf 456 Bit erweitern, und mit zweifachem Interleaving gegen Burstfehler sichern.
Neben den FEC zur Kanalkodierung treten FEC zur Blocksicherung auf weiteren Ebenen auf. Der übertragene MPEG-Datenstrom eines DVB-Kanals enthält selbst längere Pakete, die mit FEC-Bytes eigenständig gesichert sein können, unabhängig vom Übertragungsmedium. Ähnliches tritt für komprimierende Sprachcodecs auf, die neben Fehlererkennung auch Fehlerkorrektur enthalten können. Auf dieser Ebene treten fast nur noch FEC-Blockcodes auf, die zusätzlich berechneten FEC-Bytes werden hier in die Paketstruktur eingefügt.

## Anwendungen

Die Fehlerkorrektur kann in der Kanalkodierung auf störungsreichen Übertragungsstrecken wie Funk eingesetzt werden, um entstandene Fehler direkt nach der Übertragung auszugleichen. Je häufiger Fehler bei der Übertragung auftreten können, umso höhere Redundanz wird bei der Auswahl des FEC-Verfahrens gewählt. Entsprechend werden die angefügten FEC-Daten größer, was die Bandbreite einer Übertragungsstrecke für die eigentlichen Nutzdaten entsprechend senkt.
Ein weiterer Anwendungsfall ist die optische Datenübertragung in SDH-Netzen oder in Optischen Transportnetzen. Dort wird durch die Verwendung der fehlerkorrigierenden FEC der abnehmende Signal-Rausch-Abstand bei zunehmender Faserlänge kompensiert. Als besondere Funktion von optischen Transpondern mit FEC kann sich der Empfänger im Betrieb dynamisch an das Eingangssignal anpassen: Durch die Auswertung der Anzahl der korrigierbaren Fehler bei Alternierung verschiedener Betriebsparameter kann eine optimale FEC-Länge ermittelt werden.
Bei Digital Video Broadcasting (DVB) ist die Viterbi-FEC für jeden übertragenen Sender wählbar, die möglichen Werte sind FEC 1/2, 2/3, 3/4, 5/6, 7/8 und 9/10. Dieses n/m Schema bedeutet, dass für n Netto-Bits jeweils m Brutto-Bits aufgewendet werden müssen. Die Viterbi-FEC 9/10 wird bei der terrestrischen Ausstrahlung (DVB-T) nicht verwendet, da Funk sehr störanfällig ist.
In der Datenkommunikation ist die Vorwärtsfehlerkorrektur einer Rückwärtsfehlerkorrektur bei sehr schnellen Netzen und langen Signallaufzeiten – etwa beim Zugang über weit entfernte, geostationären Erdsatelliten – vorzuziehen.