Faltungscode
Faltungscodes sind Codes zur Kanalkodierung auf stark störanfälligen Übertragungssystemen (z. B. im Mobilfunk und in der Raumfahrt) und ermöglichen es dem Empfänger, Übertragungsfehler zu korrigieren. Durch die Faltung wird die Bitrate vervielfacht.
Faltungscodes haben nichts mit der ähnlich klingenden Code-Faltung zu tun.
Beschreibung
Für b eingangsseitige Informationsbits erzeugt ein Faltungs-Codierer c Codebits an seinem Ausgang. Das Verhältnis von Informationsbits zu Codebits wird als Coderate R bezeichnet.
Der zweite wichtige Parameter zur Charakterisierung eines Faltungscodes ist die Gedächtnisordnung k. Bei einer technischen Realisierung mittels Schieberegister entspricht k der Anzahl der Speicherzellen. Der Wert k + 1 wird als Einflusslänge bezeichnet.
Prinzipiell bildet der Faltungskodierer halb-unendliche Informationssequenzen auf halbunendliche Codesequenzen ab. Sollen endliche Informationsworte codiert werden, so wendet man die Techniken Terminierung, Truncation oder Tail-Biting an.
Es existieren mehrere Algorithmen zur Dekodierung von Faltungscodes. Für relative kleine Werte von k wird meist der Viterbi-Algorithmus verwendet. Falls eine Soft-Dekodierung erwünscht ist, verwendet man meist den BCJR-Algorithmus. Für große Gedächtnisordnungen verwendet man sequentielle Dekodierer.
Technische Realisierung
Ein Schieberegister hält die jeweils k letzten Datenbits gespeichert. Es gibt 1/r Modulo-2 Addierer von denen jeder zwei oder auch mehrere Bits im Schieberegister miteinander verknüpft. Pro Datenbit am Eingang werden die Ausgänge aller Addierer einmal abgefragt und als Ausgangsdatenstrom zusammengesetzt. Hierdurch entsteht die Vervielfachung der Datenrate.
Anwendungsbeispiele
- Im GSM- und UMTS-Mobilfunk werden unterschiedliche Faltungscodes eingesetzt.
- Das Raumflugprogramm Voyager verwendete eine Schieberegisterlänge k von 7 und eine Rate r = 1/2.
- Die Raumflugprogramme Mars Pathfinder, Mars Exploration Rover und Cassini probe verwendeten eine Schieberegisterlänge k von 15 und eine Rate r = 1/6.
Siehe auch
Werden mehrere Faltungskodierer parallel oder seriell verkettet, spricht man von Turbo-Codes.
Weitere fehlerkorrigierende Codes finden sich auf der Liste fehlerkorrigierender Codes.