Als Kanalkodierung (auch Kanalcodierung) bezeichnet man in der Nachrichtentechnik das Verfahren, digitale Daten bei der Übertragung über gestörte Kanäle durch Hinzufügen von Redundanz gegen Übertragungsfehler zu schützen.
Die mathematischen Grundlagen für die Kanalkodierung stellt die Kodierungstheorie bereit.
Zu unterscheiden ist die Kanalkodierung von der Quellenkodierung, welche Redundanz vermindert, und von der Leitungskodierung, welche eine spektrale Anpassung an die Anforderungen des Übertragungskanals vornimmt.
Verfahren
Die Kanalkodierung fügt den Daten am Eingang eines Übertragungskanals Redundanz hinzu und dekodiert die Daten an seinem Ausgang. Wenn die Zusatzinformationen lediglich auf einen Fehler hindeuten und eine Neuübertragung der Daten erfordern, spricht man von Rückwärtsfehlerkorrektur. Genügt die Redundanzinformation, den Fehler zu korrigieren, handelt es sich um eine Vorwärtsfehlerkorrektur. Eine effiziente Kanalkodierung erhöht das Signal-Rausch-Verhältnis bei unveränderter Bitfehlerhäufigkeit. Je nach Kanalkodierungsverfahren beträgt der Codegewinn mehrere dB.
Eine wesentliche Eigenschaft eines Kanalkodes ist seine (Kode-) Coderate , wobei die Anzahl der Symbole am Eingang des Kodierers (Informationssymbole) ist und die Anzahl am Ausgang (Codesymbole). Es werden also Informationssymbole auf Codesymbole abgebildet. Eine kleine Rate (großes ) bedeutet einen höheren Anteil der Codesymbole an den übertragenden Symbolen, also eine kleinere Datenübertragungsrate. Üblicherweise kann ein Kanalcode mit einer niedrigeren Koderate mehr Fehler korrigieren als ein vergleichbarer Kanalkode mit einer hohen Koderate – es ist also ein Abtausch zwischen Datenübertragungsrate und Fehlerkorrekturfähigkeit möglich.
Codeverkettung
Durch geschicktes Verketten von Codes (z. B. bei Turbo-Codes) kann die Korrekturfähigkeit des so entstandenen verketteten Codes sehr viel höher sein als die der einzelnen Codes (Komponentencodes).
Punktierung
Unter Punktierung versteht man das gezielte Streichen einzelner Codesymbole, so dass die Anzahl der übertragenden Codesymbole von auf reduziert wird. Damit ergibt sich für den punktierten Code eine höhere Rate . Punktierung ermöglicht die Nutzung desselben Codierer/Decodierer-Paares für Codes unterschiedlicher Raten.
Kodierungen
Quellencodes
Beispiel für einen Quellencode: Huffman-Code
Kanalcodes
Kennt man die Fehlerarten, die in einem Übertragungskanal auftreten, kann man verschiedene Codes konstruieren, die die häufigen Fehlerarten gut, weniger häufigere Fehlerarten weniger gut korrigieren können. Die folgende Abbildung zeigt eine Übersicht häufig verwendeter Codeklassen.
- Blockcodes
- Ungerboeck-Code (auch als Trellis-Coded-Modulation bezeichnet)
- Reed-Muller-Code
- Hamming-Code (Perfekter Code)
- Reed-Solomon-Code (z. B. verwendet in bestimmten RAID-Systemen)
- Fire-Code
- BCH-Code
- Golay-Code (Perfekter Code)
- Low-Density-Parity-Check-Code
- Faltungscodes
- Turbo-Code wird eine zwei-, drei- oder allgemein mehrdimensionale Verkettung von unterschiedlichen Kanalcodes mit mehrfachen Wiederholungen (Rückkopplungen) genannt. Durch die mehrdimensionale Verschränkung von einfachen Basiskanalcodes, wie beispielsweise einem Hamming-Code, können meist bessere Gesamtergebnisse als bei klassischen Faltungscodes erzielt werden. Turbo-Codes zählen zu jenen Kanalcodes welche dem theoretischen Limit der Shannon-Grenze am nächsten kommen.
- Viterbi-Code
Leitungscodes
Beispiel für einen Leitungscode: Manchesterkodierung
Beispiele
- Kanalfehler abhängig von Quellkodierung
- Die Festlegung eines Kodierungsverfahren berücksichtigt sowohl die Qualitätsansprüche an das zu übertragende Signal als auch die Eigenschaften des Kanals. Wird beispielsweise bei einem unkomprimiert übertragenen Fernsehsignal ein Bit auf dem Übertragungsweg verfälscht, so ändert sich nur ein Pixel eines (Halb-)Bildes. Tritt der gleiche Fehler bei einem komprimierten MPEG-codierten Fernsehsignal auf, verfälscht er einen ganzen Makroblock von einer bestimmten Anzahl von Bildpunkten (je nachdem, wie groß der Makroblock ist: 16×16 bis hin zu 4×4 Pixel) und die darauffolgenden Bilder; erst wenn wieder ein unabhängig codiertes Frame (I-Frame) kommt, ist der Fehler nicht mehr vorhanden.
- Beispiel Rückwärtsfehlerkorrektur
- Hinzufügen von Paritätsbits zu einem Datenwort.
- Beispiel Rückwärts-/Vorwärtsfehlerkorrektur
- ISBN-Code: Bei fehlender Übereinstimmung mit der Prüfziffer kommen nur wenige ISBN-Codes als korrekte Werte in Frage.
- Beispiel Vorwärtsfehlerkorrektur
- Angabe von Postleitzahl und Ort: eine falsch geschriebene Ortsangabe kann anhand der Postleitzahl korrigiert werden. Ebenso werden Zahlendreher in der Postleitzahl durch den Abgleich mit dem Ortsnamen erkannt.
- Beispiel GSM
- Das Telefon begrenzt den Frequenzbereich der Sprache auf ca. 4 kHz. Bei einer Abtastung mit 8 kHz bei einer Quantisierung von 8 Bit pro Abtastwert fällt ein Datenstrom von 64 kbit/s an. Die GSM-Quellcodierung reduziert ihn auf ca. 13 kbit/s. Um die Bitfehlerhäufigkeit bei der störanfälligen Funkübertragung zu begrenzen, werden dem Datenstrom Redundanzen hinzugefügt. Die Kanalkodierung erhöht die Bitrate auf 22,8 kbit/s.
Siehe auch
Literatur
- John G. Proakis, Masoud Salehi: Communication Systems Engineering. 2. Auflage. Prentice Hall, 2002, ISBN 0-13-095007-6.