Faltungscode - Convolutional code
In der Telekommunikation ist ein Faltungscode eine Art von Fehlerkorrekturcode , der Paritätssymbole über die gleitende Anwendung einer Booleschen Polynomfunktion auf einen Datenstrom erzeugt. Die Gleitanwendung stellt die „Faltung“ des Codierers über die Daten dar, was zu dem Begriff „Faltungscodierung“ führt. Die Gleitnatur der Faltungscodes erleichtert die Trellis- Decodierung unter Verwendung eines zeitinvarianten Trellis. Die zeitinvariante Trellis-Decodierung ermöglicht es, dass Faltungscodes mit maximaler Wahrscheinlichkeit weiche Entscheidungen mit angemessener Komplexität decodiert werden.
Die Fähigkeit, eine wirtschaftliche Soft-Decision-Decodierung mit maximaler Wahrscheinlichkeit durchzuführen, ist einer der Hauptvorteile von Faltungscodes. Dies steht im Gegensatz zu klassischen Blockcodes, die im Allgemeinen durch ein zeitvariantes Trellis repräsentiert werden und daher typischerweise hart entscheidungsdecodiert werden. Faltungscodes werden oft durch die Basiscoderate und die Tiefe (oder Speicher) des Codierers gekennzeichnet . Die Basiscoderate wird typischerweise als angegeben , wobei n die rohe Eingangsdatenrate und k die Datenrate des ausgangskanalcodierten Stroms ist. n ist kleiner als k, weil die Kanalcodierung Redundanz in die Eingangsbits einfügt. Der Speicher wird oft als "Beschränkungslänge" K . bezeichnet, wobei die Ausgabe eine Funktion der aktuellen Eingabe sowie der vorherigen Eingaben ist. Die Tiefe kann auch als Anzahl der Speicherelemente v im Polynom oder als maximal mögliche Anzahl von Zuständen des Codierers (typischerweise: ) angegeben werden.
Faltungscodes werden oft als kontinuierlich beschrieben. Es kann jedoch auch gesagt werden, dass Faltungscodes eine beliebige Blocklänge haben, anstatt kontinuierlich zu sein, da die meisten Faltungscodierungen in der realen Welt an Datenblöcken durchgeführt werden. Faltungscodierte Blockcodes verwenden typischerweise eine Terminierung. Die beliebige Blocklänge von Faltungscodes kann auch klassischen Blockcodes gegenübergestellt werden , die im Allgemeinen feste Blocklängen aufweisen, die durch algebraische Eigenschaften bestimmt werden.
Die Coderate eines Faltungscodes wird üblicherweise durch Symbolpunktierung modifiziert . Beispielsweise kann ein Faltungscode mit einer "Mutter" -Coderate auf eine höhere Rate von beispielsweise einfach dadurch punktiert werden, dass ein Teil von Codesymbolen nicht übertragen wird. Die Leistung eines punktierten Faltungscodes skaliert im Allgemeinen gut mit der übertragenen Paritätsmenge. Die Fähigkeit, eine wirtschaftliche Soft-Decision-Decodierung von Faltungscodes durchzuführen, sowie die Blocklängen- und Coderatenflexibilität von Faltungscodes machen sie für die digitale Kommunikation sehr beliebt.
Geschichte
Faltungscodes wurden 1955 von Peter Elias eingeführt . Es wurde angenommen, dass Faltungscodes mit beliebiger Qualität auf Kosten von Berechnung und Verzögerung decodiert werden könnten. 1967 stellte Andrew Viterbi fest, dass Faltungscodes mit angemessener Komplexität mit zeitinvarianten Trellis-basierten Decodern – dem Viterbi-Algorithmus – mit maximaler Wahrscheinlichkeit decodiert werden können . Später wurden andere trellisbasierte Decoderalgorithmen entwickelt, einschließlich des BCJR- Decodierungsalgorithmus.
Rekursive systematische Faltungscodes wurden um 1991 von Claude Berrou erfunden . Diese Codes erwiesen sich als besonders nützlich für die iterative Verarbeitung einschließlich der Verarbeitung von verketteten Codes wie Turbo-Codes .
Unter Verwendung der "Faltungs"-Terminologie könnte ein klassischer Faltungscode als Filter mit endlicher Impulsantwort (FIR) betrachtet werden, während ein rekursiver Faltungscode als Filter mit unendlicher Impulsantwort (IIR) betrachtet werden könnte.
Wo Faltungscodes verwendet werden
Faltungscodes werden in großem Umfang verwendet, um eine zuverlässige Datenübertragung in zahlreichen Anwendungen zu erreichen, wie z. B. digitales Video , Funk, mobile Kommunikation (z. B. in GSM-, GPRS-, EDGE- und 3G-Netzen (bis 3GPP Release 7)) und Satellitenkommunikation . Diese Codes werden oft in Verkettung mit einem Code für harte Entscheidungen implementiert , insbesondere Reed-Solomon . Vor Turbo-Codes waren solche Konstruktionen die effizientesten und kamen der Shannon-Grenze am nächsten .
Faltungskodierung
Um Daten faltungskodierend zu kodieren, beginnen Sie mit k Speicherregistern , die jeweils ein Eingangsbit enthalten. Sofern nicht anders angegeben, beginnen alle Speicherregister mit einem Wert von 0. Der Encoder hat n Modulo-2- Addierer (ein Modulo-2-Addierer kann mit einem einzelnen booleschen XOR-Gatter implementiert werden , wobei die Logik lautet: 0+0 = 0 , 0+ 1 = 1 , 1+0 = 1 , 1+1 = 0 ) und n Generatorpolynome — eines für jeden Addierer (siehe Abbildung unten). Ein Eingabebit m 1 wird in das ganz linke Register eingespeist. Unter Verwendung der Generatorpolynome und der vorhandenen Werte in den verbleibenden Registern gibt der Encoder n Symbole aus. Diese Symbole können je nach gewünschter Coderate übertragen oder punktiert werden. Jetzt Bit verschieben alle Registerwerte auf der rechten Seite ( m 1 bewegt sich zu m 0 , m 0 bewegt sich in m -1 ) und warten auf die nächste Eingabe - Bit. Wenn keine verbleibenden Eingangsbits vorhanden sind, fährt der Encoder mit dem Verschieben fort, bis alle Register in den Nullzustand zurückgekehrt sind (Flush-Bit-Beendigung).
Die Abbildung unten ist ein Encoder mit einer Rate 1 ⁄ 3 ( m ⁄ n ) mit einer Beschränkungslänge ( k ) von 3. Generatorpolynome sind G 1 = (1,1,1), G 2 = (0,1,1) und G 3 = (1,0,1) . Daher werden Ausgangsbits (Modulo 2) wie folgt berechnet:
- n 1 = m 1 + m 0 + m −1
- n 2 = m 0 + m −1
- n 3 = m 1 + m –1 .
Faltungscodes können systematisch und nicht-systematisch sein:
- systematisch wiederholt die Struktur der Nachricht vor der Codierung
- unsystematische Änderungen der Ausgangsstruktur
Nicht-systematische Faltungscodes sind aufgrund der besseren Rauschimmunität beliebter. Sie bezieht sich auf den freien Abstand des Faltungscodes.
Rekursive und nicht-rekursive Codes
Der Encoder im obigen Bild ist ein nicht-rekursiver Encoder. Hier ist ein Beispiel für eine rekursive Struktur, die als solche eine Rückkopplungsstruktur zulässt:
Der Beispiel-Encoder ist systematisch, da die Eingangsdaten auch in den Ausgangssymbolen (Ausgang 2) verwendet werden. Codes mit Ausgabesymbolen, die die Eingabedaten nicht enthalten, werden als nicht systematisch bezeichnet.
Rekursive Codes sind typischerweise systematisch und umgekehrt sind nicht-rekursive Codes typischerweise nicht-systematisch. Es ist keine strenge Anforderung, sondern eine gängige Praxis.
Der Beispiel-Encoder in Abb. 2. ist ein 8-State-Encoder, da die 3 Register 8 mögliche Encoder-Zustände (2 3 ) erzeugen . Ein entsprechendes Decoder-Trellis verwendet typischerweise auch 8 Zustände.
Rekursive systematische Faltungscodes (RSC) sind aufgrund ihrer Verwendung in Turbocodes populärer geworden. Rekursive systematische Codes werden auch als pseudo-systematische Codes bezeichnet.
Andere RSC-Codes und Beispielanwendungen umfassen:
Nützlich für die Implementierung von LDPC- Code und als innerer konstituierender Code für serielle verkettete Faltungscodes (SCCCs).
Nützlich für SCCCs und mehrdimensionale Turbocodes.
Nützlich als Bestandteilscode in Turbocodes mit niedriger Fehlerrate für Anwendungen wie Satellitenverbindungen. Auch als SCCC-Außencode geeignet.
Impulsantwort, Übertragungsfunktion und Beschränkungslänge
Ein Faltungscodierer wird so genannt, weil er eine Faltung des Eingangsstroms mit den Impulsantworten des Encoders durchführt :
wobei x eine Eingangssequenz ist, y j eine Sequenz von der Ausgabe j ist , h j eine Impulsantwort für die Ausgabe j ist und eine Faltung bezeichnet.
Ein Faltungscodierer ist ein diskretes lineares zeitinvariantes System . Jeder Ausgang eines Encoders kann durch eine eigene Übertragungsfunktion beschrieben werden , die eng mit dem Generatorpolynom verwandt ist. Eine Impulsantwort wird durch Z-Transform mit einer Übertragungsfunktion verbunden .
Übertragungsfunktionen für den ersten (nicht-rekursiven) Geber sind:
Übertragungsfunktionen für den zweiten (rekursiven) Geber sind:
Definiere m durch
wobei für jede rationale Funktion ,
- .
Dann ist m das Maximum der Polynomgrade von , und die Randbedingungslänge ist definiert als . Im ersten Beispiel beträgt die Beschränkungslänge beispielsweise 3 und im zweiten die Beschränkungslänge 4.
Gitterdiagramm
Ein Faltungscodierer ist eine endliche Zustandsmaschine . Ein Codierer mit n binären Zellen hat 2 n Zustände.
Stellen Sie sich vor, dass der Codierer (in Bild 1 oben gezeigt) '1' in der linken Speicherzelle ( m 0 ) und '0' in der rechten ( m –1 ) hat. ( m 1 ist nicht wirklich eine Speicherzelle, da sie einen Stromwert darstellt). Wir werden einen solchen Zustand als "10" bezeichnen. Entsprechend einem Eingangsbit kann der Encoder bei der nächsten Umdrehung entweder in den Zustand "01" oder in den Zustand "11" übergehen. Man sieht, dass nicht alle Übergänge möglich sind (zB kann ein Decoder nicht vom Zustand "10" in den Zustand "00" konvertieren oder sogar im Zustand "10" bleiben).
Alle möglichen Übergänge können wie folgt dargestellt werden:
Eine tatsächliche codierte Sequenz kann als Pfad in diesem Graphen dargestellt werden. Als Beispiel ist ein gültiger Pfad rot dargestellt.
Dieses Diagramm gibt uns eine Idee über die Dekodierung : Wenn eine empfangene Sequenz nicht in diesen Graphen passt, wurde sie mit Fehlern empfangen, und wir müssen die nächste korrekte (in den Graphen passende) Sequenz wählen . Die echten Decodierungsalgorithmen nutzen diese Idee.
Freier Abstand und Fehlerverteilung
Die freie Distanz ( d ) ist die minimale Hamming-Distanz zwischen verschiedenen kodierten Sequenzen. Die Korrekturfähigkeit ( t ) eines Faltungscodes ist die Anzahl von Fehlern, die durch den Code korrigiert werden können. Es kann berechnet werden als
Da ein Faltungscode keine Blöcke verwendet, sondern einen kontinuierlichen Bitstrom verarbeitet, gilt der Wert von t für eine Menge von Fehlern, die relativ nahe beieinander liegen. Das heißt, mehrere Gruppen von t- Fehlern können normalerweise behoben werden, wenn sie relativ weit voneinander entfernt sind.
Der freie Abstand kann als minimale Länge eines fehlerhaften "Bursts" am Ausgang eines Faltungsdecoders interpretiert werden. Die Tatsache, dass Fehler als "Bursts" auftreten, sollte berücksichtigt werden, wenn ein verketteter Code mit einem inneren Faltungscode entworfen wird. Die beliebte Lösung für dieses Problem besteht darin, Daten vor der Faltungscodierung zu verschachteln , damit der Code des äußeren Blocks (normalerweise Reed-Solomon ) die meisten Fehler korrigieren kann.
Dekodierung von Faltungscodes
Es gibt mehrere Algorithmen zum Decodieren von Faltungscodes. Für relativ kleine Werte von k wird der Viterbi-Algorithmus universell verwendet, da er eine maximale Wahrscheinlichkeitsleistung bereitstellt und hochgradig parallelisierbar ist. Viterbi-Decoder sind somit leicht in VLSI- Hardware und in Software auf CPUs mit SIMD- Befehlssätzen zu implementieren .
Codes mit längerer Einschränkungslänge werden praktischer mit einem von mehreren sequentiellen Decodieralgorithmen decodiert , von denen der Fano- Algorithmus der bekannteste ist. Im Gegensatz zur Viterbi-Decodierung ist die sequentielle Decodierung keine maximale Wahrscheinlichkeit, aber ihre Komplexität nimmt mit der Beschränkungslänge nur geringfügig zu, was die Verwendung starker Codes mit langer Beschränkungslänge ermöglicht. Solche Codes wurden im Pioneer-Programm der frühen 1970er Jahre für Jupiter und Saturn verwendet, wichen aber kürzeren, Viterbi-dekodierten Codes, die normalerweise mit großen Reed-Solomon-Fehlerkorrekturcodes verkettet sind , die die gesamte Bitfehlerratenkurve steiler machen und produzieren extrem niedrige unentdeckte Fehlerquoten.
Sowohl Viterbi- als auch sequentielle Decodierungsalgorithmen geben harte Entscheidungen zurück: die Bits, die das wahrscheinlichste Codewort bilden. Ein ungefähres Vertrauensmaß kann jedem Bit unter Verwendung des Viterbi-Algorithmus für weiche Ausgabe hinzugefügt werden . Maximale a posteriori (MAP) weiche Entscheidungen für jedes Bit können durch Verwendung des BCJR-Algorithmus erhalten werden .
Beliebte Faltungscodes
Tatsächlich werden in der Industrie vordefinierte Faltungscodestrukturen verwendet, die während wissenschaftlicher Forschungen erhalten wurden. Dies bezieht sich auf die Möglichkeit, katastrophale Faltungscodes auszuwählen (verursacht eine größere Anzahl von Fehlern).
Ein besonders beliebter Viterbi-dekodierter Faltungscode, der mindestens seit dem Voyager-Programm verwendet wird, hat eine Beschränkungslänge K von 7 und eine Rate r von 1/2.
Mars Pathfinder , Mars Exploration Rover und die Cassini-Sonde zum Saturn verwenden einen K von 15 und eine Rate von 1/6; dieser Code ist etwa 2 dB besser als der einfachere Code bei Kosten von 256-facher Decodierungskomplexität (im Vergleich zu Voyager-Missionscodes).
Der Faltungscode mit einer Beschränkungslänge von 2 und einer Rate von 1/2 wird in GSM als Fehlerkorrekturtechnik verwendet.
Punktierte Faltungscodes
Faltungscode mit beliebiger Coderate kann basierend auf Polynomauswahl entworfen werden; in der Praxis wird jedoch häufig ein Punktierungsvorgang verwendet, um die erforderliche Coderate zu erreichen. Punktieren ist eine Technik, die verwendet wird, um einen m / n- Ratencode aus einem "grundlegenden" Code mit niedriger Rate (zB 1/ n ) zu machen. Dies wird durch das Löschen einiger Bits in der Encoderausgabe erreicht. Bits werden gemäß einer Punktierungsmatrix gelöscht . Die folgenden Punktiermatrizen werden am häufigsten verwendet:
| Coderate | Stechmatrix | Freie Distanz (für NASA-Standard K=7 Faltungscode) | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1/2 (Keine Perf.) |
|
10 | ||||||||||||||
| 2/3 |
|
6 | ||||||||||||||
| 3/4 |
|
5 | ||||||||||||||
| 5/6 |
|
4 | ||||||||||||||
| 7/8 |
|
3 |
Wenn wir zum Beispiel einen Code mit einer Rate von 2/3 unter Verwendung der entsprechenden Matrix aus der obigen Tabelle erstellen möchten, sollten wir einen Basis-Encoder-Ausgang nehmen und jedes erste Bit aus dem ersten Zweig und jedes Bit aus dem zweiten übertragen. Die konkrete Übertragungsreihenfolge wird durch den jeweiligen Kommunikationsstandard festgelegt.
Punktierte Faltungscodes werden in der Satellitenkommunikation weit verbreitet verwendet , beispielsweise in INTELSAT- Systemen und beim digitalen Videorundfunk .
Gelochte Faltungscodes werden auch als "perforiert" bezeichnet.
Turbo-Codes: Ersetzen von Faltungscodes
Einfache Viterbi-dekodierte Faltungscodes weichen jetzt Turbo-Codes , einer neuen Klasse von iterierten kurzen Faltungscodes, die sich den theoretischen Grenzen des Shannon-Theorems mit viel weniger Dekodierkomplexität als der Viterbi-Algorithmus bei den erforderlichen langen Faltungscodes sehr nahe kommen für die gleiche Leistung. Verkettungs mit einem äußeren algebraischen Code ( zum Beispiel Reed-Solomon ) -Adressen der Ausgabe des Fehlerbodens inhärent Turbocode - Designs.
Siehe auch
Verweise
-
Dieser Artikel enthält gemeinfreies Material aus dem Dokument General Services Administration :
"Federal Standard 1037C" .
Externe Links
- Das Online-Lehrbuch: Information Theory, Inference, and Learning Algorithms von David JC MacKay diskutiert Faltungscodes in Kapitel 48.
- Die Seite mit den Fehlerkorrekturcodes (ECC)
- Matlab-Erklärungen
- Grundlagen von Faltungsdecodern für eine bessere digitale Kommunikation
- Faltungscodes (MIT)
- Informationstheorie und Codierung (TU Ilmenau) behandelt Faltungscodes auf Seite 48.
Weiterlesen
Veröffentlichungen
- Franz, Michael. "Viterbi Decoder Block Decoding-Trellis Termination and Tail Biting." Xilinx XAPP551 v2. 0, DD (2005): 1-21.
- Chen, Qingchun, Wai Ho Mow und Pingzhi Fan. "Einige neue Ergebnisse zu rekursiven Faltungscodes und ihren Anwendungen." Informationstheorie-Workshop, 2006. ITW'06 Chengdu. IEEE. IEEE, 2006.
- Fiebig, UC., und Patrick Robertson. "Soft-Decision- und Erasure-Decodierung in schnellen Frequenzsprungsystemen mit Faltungs-, Turbo- und Reed-Solomon-Codes." IEEE Transactions on Communications 47.11 (1999): 1646-1654.
- Bhaskar, Vidhyacharan und Laurie L. Joiner. "Leistung punktierter Faltungscodes in asynchroner CDMA-Kommunikation unter perfekten Phasenverfolgungsbedingungen." Computer und Elektrotechnik 30.8 (2004): 573-592.
- Modestino, J. und Shou Mui. "Faltungscodeleistung im Rician-Fading-Kanal." IEEE Transactions on Communications 24.6 (1976): 592-606.
- Chen, Yuh-Long und Che-Ho Wei. "Leistungsbewertung von Faltungscodes mit MPSK auf Rician-Fading-Kanälen." IEE Proceedings F-Kommunikation, Radar und Signalverarbeitung. vol. 134. Nr. 2. IET, 1987.
