Code von Convolutional

Im Fernmeldewesen ist ein Convolutional-Code ein Typ des Fehlerkorrekturcodes in der

  • jede M hat Informationssymbol gebissen (jede M hat Schnur gebissen), verschlüsselt zu werden wird in ein N-Bit-Symbol umgestaltet, wo m/n die Coderate (n  m) und ist
  • die Transformation ist eine Funktion der letzten k Informationssymbole, wo k die Einschränkungslänge des Codes ist.

Wo Convolutional-Codes verwendet werden

Codes von Convolutional werden umfassend in zahlreichen Anwendungen verwendet, um zuverlässige Datenübertragung, einschließlich Digitalvideos, Radios, beweglicher Kommunikation und Satellitenverkehrs zu erreichen. Diese Codes werden häufig in der Verkettung mit einem Code der harten Entscheidung, besonders Reed Solomon durchgeführt. Vor Turbocodes waren solche Aufbauten am effizientesten, am nächsten an der Grenze von Shannon kommend.

Verschlüsselung von Convolutional

Zu convolutionally verschlüsseln Daten, fangen mit k Speicherregistern, jeder an meinend, dass 1 Eingang gebissen hat. Wenn sonst nicht angegeben, fangen alle Speicherregister mit einem Wert von 0 an. Der encoder hat n modulo-2 Vipern (ein modulo 2 Viper kann mit einem einzelnen Boolean XOR Tor durchgeführt werden, wo die Logik ist: 0+0 = 0, 0+1 = 1, 1+0 = 1, 1+1 = 0), und n Generator-Polynome - ein für jede Viper (sieh Zahl unten). Eine Eingangsbit-M wird ins Leftmost-Register gefüttert. Mit den Generator-Polynomen und den vorhandenen Werten in den restlichen Registern, die encoder Produktionen n Bit. Jetzt hat Bit-Verschiebung, auf die alle Register-Werte nach rechts (M Bewegungen zur M, M Bewegungen zu m) und für den folgenden Eingang warten, gebissen. Wenn es keine restlichen Eingangsbit gibt, setzt der encoder Produktion fort, bis alle Register zum Nullstaat zurückgekehrt sind.

Die Zahl ist unten eine Rate 1/3 (m/n) encoder mit der Einschränkungslänge (k) von 3. Generator-Polynome sind G = (1,1,1), G = (0,1,1) und G = (1,0,1). Deshalb werden Produktionsbit (modulo 2) wie folgt berechnet:

:n = M + M + M

:n = M + M

:n = M + M.

Rekursive und nichtrekursive Codes

Der encoder auf dem Bild ist oben ein nichtrekursiver encoder. Hier ist ein Beispiel eines rekursiven:

Man kann sehen, dass der Eingang, der wird verschlüsselt, in die Produktionsfolge auch (Blick auf die Produktion 2) eingeschlossen wird. Solche Codes werden systematisch genannt; sonst wird der Code unsystematisch genannt.

Rekursive Codes sind fast immer systematisch und umgekehrt nichtrekursive Codes sind unsystematisch. Es ist nicht eine strenge Voraussetzung, aber eine übliche Praxis.

Impuls-Antwort, Übertragungsfunktion und Einschränkungslänge

Ein convolutional encoder wird so genannt, weil er eine Gehirnwindung des Eingangsstroms mit den Impuls-Antworten des encoder durchführt:

:

wo eine Eingangsfolge ist, eine Folge von der Produktion ist und eine Impuls-Antwort für die Produktion ist.

Ein convolutional encoder ist ein getrenntes geradliniges Zeit-Invariant System. Jede Produktion eines encoder kann durch seine eigene Übertragungsfunktion beschrieben werden, die nah mit dem Generator-Polynom verbunden ist. Eine Impuls-Antwort wird mit einer Übertragungsfunktion durch Z-transform verbunden.

Übertragungsfunktionen für den ersten (nichtrekursiven) encoder sind:

Übertragungsfunktionen für den zweiten (rekursiven) encoder sind:

Definieren Sie durch

:

wo, für jede vernünftige Funktion,

:.

Dann ist das Maximum der polynomischen Grade des

, und die Einschränkungslänge wird als definiert. Zum Beispiel im ersten Beispiel ist die Einschränkungslänge 3, und im zweiten ist die Einschränkungslänge 4.

Gitterwerk-Diagramm

Ein convolutional encoder ist eine Zustandsmaschine. Ein encoder mit n binären Zellen wird 2 Staaten haben.

Stellen Sie sich vor, dass der encoder (gezeigt auf Img.1, oben) '1' in der linken Speicherzelle (m), und '0' in der richtigen (m) hat. (M ist nicht wirklich eine Speicherzelle, weil sie einen aktuellen Wert vertritt). Wir werden solch einen Staat wie "10" benennen. Gemäß einem Eingangsbit kann sich der encoder an der folgenden Umdrehung entweder zu "01" Staat oder "11" Staat umwandeln. Man kann sehen, dass nicht alle Übergänge möglich sind (z.B, kann sich ein Decoder nicht von "10" Staat zu "00" umwandeln oder sogar in "10" Staat bleiben).

Alle möglichen Übergänge können als unten gezeigt werden:

Eine wirkliche verschlüsselte Folge kann als ein Pfad auf diesem Graphen vertreten werden. Ein gültiger Pfad wird im Rot als ein Beispiel gezeigt.

Dieses Diagramm gibt uns eine Idee über die Entzifferung: Wenn eine erhaltene Folge diesen Graphen nicht passt, dann wurde es mit Fehlern erhalten, und wir müssen das nächste richtige (Anprobe des Graphen) Folge wählen. Die echten Entzifferungsalgorithmen nutzen diese Idee aus.

Freie Entfernung und Fehlervertrieb

Die freie Entfernung (d) ist die minimale Entfernung von Hamming zwischen verschiedenen verschlüsselten Folgen. Die Korrigieren-Fähigkeit (t) eines Convolutional-Codes ist die Zahl von Fehlern, die durch den Code korrigiert werden können. Es kann als berechnet werden

:

Da ein Convolutional-Code Blöcke nicht verwendet, stattdessen einen dauernden bitstream bearbeitend, gilt der Wert von t für eine Menge von Fehlern gelegen relativ in der Nähe von einander. D. h. vielfache Gruppen von t Fehlern können gewöhnlich bestochen werden, wenn sie einzeln relativ weit sind.

Freie Entfernung kann als die minimale Länge eines falschen "Platzens" an der Produktion eines convolutional Decoders interpretiert werden. Die Tatsache, dass Fehler als "Brüche" erscheinen, sollte verantwortlich gewesen werden, wenn man einen verketteten Code mit einem inneren Convolutional-Code entwirft. Die populäre Lösung für dieses Problem ist, Daten vorher convolutional Verschlüsselung durchzuschießen, so dass der Außenblock (gewöhnlich Rohr-Solomon) Code die meisten Fehler korrigieren kann.

Entzifferung convolutional Codes

Mehrere Algorithmen bestehen, um Convolutional-Codes zu decodieren. Für relativ kleine Werte von k wird der Algorithmus von Viterbi allgemein verwendet, weil es maximale Wahrscheinlichkeitsleistung zur Verfügung stellt und hoch parallelizable ist. Decoder von Viterbi sind so leicht, in der VLSI Hardware und in der Software auf Zentraleinheiten mit SIMD Befehlssätzen durchzuführen.

Längere Einschränkungslänge-Codes werden mit einigen von mehreren folgenden Entzifferungsalgorithmen mehr praktisch decodiert, von denen der Algorithmus von Fano am besten bekannt ist. Verschieden von der Viterbi-Entzifferung ist folgende Entzifferung nicht maximale Wahrscheinlichkeit, aber seine Kompliziertheit nimmt nur ein bisschen mit der Einschränkungslänge zu, den Gebrauch von starken, Codes der langen Einschränkungslänge erlaubend. Solche Codes wurden im Pionierprogramm des Anfangs der 1970er Jahre in Jupiter und Saturn verwendet, aber haben zu kürzer, Viterbi-decodierte Codes nachgegeben, die gewöhnlich mit großen Fehlerkorrektur-Codes des Rohres-Solomon verkettet sind, die die gesamte Kurve der Bit-Fehlerrate steil machen und äußerst niedrige restliche unentdeckte Fehlerraten erzeugen.

Sowohl Viterbi als auch folgende Entzifferungsalgorithmen geben harte Entscheidungen zurück: Die Bit, die das wahrscheinlichste Kennwort bilden. Ein ungefähres Vertrauensmaß kann zu jedem Bit durch den Gebrauch der Weichen Produktion Algorithmus von Viterbi hinzugefügt werden. Weiche Entscheidungen des Maximums a posteriori (MAP) für jedes Bit können durch den Gebrauch des BCJR Algorithmus erhalten werden.

Populäre Convolutional-Codes

Ein besonders populärer Viterbi-decodierter Convolutional-Code, verwendet mindestens seit dem Reisender-Programm hat eine Einschränkungslänge k von 7 und eine Rate r von 1/2.

  • Längere Einschränkungslängen erzeugen stärkere Codes, aber die Kompliziertheit des Algorithmus von Viterbi nimmt exponential mit Einschränkungslängen zu, diese stärkeren Codes auf tiefe Raummissionen beschränkend, wo die Extraleistung der vergrößerten Decoder-Kompliziertheit leicht wert ist.
  • Bahnbrecher von Mars, Erforschungsrover von Mars und die Untersuchung von Cassini zum Saturn verwenden einen k 15 und eine Rate von 1/6; dieser Code leistet um ungefähr 2 DB besser als der einfachere K=7-Code zu einem Selbstkostenpreis von 256× in der Entzifferung der Kompliziertheit (im Vergleich zu Reisender-Missionscodes).

Durchstochene Convolutional-Codes

Das Durchstechen ist eine Technik, die verwendet ist, um einen m/n Rate-Code von einer "grundlegenden" Rate 1/2 Code zu machen. Es wird durch das Auswischen von einigen Bit in der encoder Produktion erreicht. Bit werden gemäß dem Durchstechen der Matrix gelöscht. Das folgende Durchstechen matrices ist am häufigsten verwendet:

Zum Beispiel, wenn wir einen Code mit der Rate 2/3 das Verwenden der passenden Matrix vom obengenannten Tisch machen wollen, sollten wir eine grundlegende encoder Produktion nehmen und jedes zweite Bit vom ersten Zweig und jedes Bit vom zweiten übersenden. Die spezifische Ordnung der Übertragung wird durch den jeweiligen Nachrichtenstandard definiert.

Durchstochene Convolutional-Codes werden im Satellitenverkehr, zum Beispiel, in INTELSAT Systemen und Digitalvideorundfunkübertragung weit verwendet.

Durchstochene Convolutional-Codes werden auch "perforiert" genannt.

Turbocodes: das Ersetzen convolutional Codes

Einfache Viterbi-decodierte Convolutional-Codes geben jetzt zu Turbocodes, einer neuen Klasse von wiederholten kurzen Convolutional-Codes nach, die sich nah den theoretischen Grenzen nähern, die durch den Lehrsatz von Shannon mit viel weniger Entzifferungskompliziertheit festgesetzt sind als der Algorithmus von Viterbi auf den langen Convolutional-Codes, die für dieselbe Leistung erforderlich wären. Die Verkettung mit einem algebraischen Außencode (z.B, Rohr-Solomon) richtet das Problem von zu Turbocodedesigns innewohnenden Fehlerstöcken.

Siehe auch

  • Quant convolutional codiert

Links


Source is a modification of the Wikipedia article Convolutional code, licensed under CC-BY-SA. Full list of contributors here.
Kontrolloperation / Zusammenarbeit-Faktor
Impressum & Datenschutz