Grundlegendes zu den Turbocodes

Aus LNTwww
< Kanalcodierung
Version vom 17. Januar 2017, 19:51 Uhr von Ayush (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „ {{Header |Untermenü=Iterative Decodierverfahren |Vorherige Seite=Grundlegendes zu den Produktcodes |Nächste Seite=Grundlegendes zu den Low–density Parity…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu:Navigation, Suche

Grundstruktur eines Turbocodes (1)


Alle heute (2016) aktuellen Kommunikationssysteme wie UMTS (3. Mobilfunkgeneration) und LTE <nobr>(4. Mobilfunkgeneration)</nobr> verwenden das in Kapitel 4.1 dargelegte Konzept der symbolweisen iterativen Decodierung. Dass dies so ist, steht unmittelbar mit der Erfindung der Turbocodes im Jahre 1993 durch C. Berrou, A. Glavieux und P. Thitimajshima in Zusammenhang, denn erst mit diesen Codes konnte man sich der Shannon–Grenze mit vertretbarem Decodieraufwand annähern.

Turbocodes ergeben sich durch die parallele oder serielle Verkettung von Faltungscodes. Die Grafik zeigt die parallele Verkettung zweier Codes mit den Parametern k = 1, n = 2  ⇒  Rate R = 1/2.

Parallele Verkettung zweier Rate–1/2–Codes

In dieser Darstellung bezeichnet:

  • u das aktuell betrachtete Bit der Informationssequenz u,
  • xi,j das aktuell betrachtete Bit am Ausgang j von Coder i   (mit 1 ≤ i ≤ 2, 1 ≤ j ≤ 2),
  • X = (x1,1, x1,2, x2,1, x2,2) das Codewort für das aktuelle Informationsbit u.

Die resultierende Rate des verketteten Codiersystems ist somit R = 1/4.

Verwendet man systematische Komponentencodes, so ergibt sich das folgende Modell:

Rate–1/3–Turbocodierer (parallele Verkettung zweier Rate–1/2–Faltungscodes)

Die Modifikationen gegenüber der oberen Grafik lassen sich wie folgt begründen:

  • Bei systematischen Codes C1 und C2 ist sowohl x1,1 = u als auch x2,1 = u. Deshalb kann man auf die Übertragung eines redundanten Bits (zum Beispiel x2,2) verzichten.
  • Mit dieser Reduktion ergibt sich ein Rate–1/3–Turbocode mit den Parametern k = 1 und n = 3. Das Codewort lautet mit den Paritybits p1 und p2 von Coder 1 bzw. Coder 2:
\[\underline{X} = \left (u, p_1, p_2 \right )\hspace{0.05cm}.\]

Auf der nächsten Seite wird unser Turbocode–Modell nochmals geringfügig modifiziert.

Grundstruktur eines Turbocodes (2)


Im Folgenden gehen wir stets von einem noch weiter modifizierten Turbocoder–Modell aus:

  • Wie es für die Beschreibung von Faltungscodes erforderlich ist, liegt nun am Eingang anstelle des isolierten Informationsbits u die Informationssequenz u = (u1, u2, ... , ui, ... ) an.
  • Die Codewortsequenz wird mit x = (X1, X2, ... , Xi, ... ) bezeichnet. Um Verwechslungen zu vermeiden, wurden vorne die Codeworte Xi = (u, p1, p2)i mit Großbuchstaben eingeführt.

Rate–1/3–Turbocodierer mit Interleaver

  • Die Coder C1 und C1 werden (gedanklich) als Digitale Filter konzipiert und sind somit durch die Übertragungsfunktionen G1(D) und G2(D) darstellbar.
  • Aus verschiedenen Gründen  ⇒  siehe übernächste Seite sollte die Eingangssequenz des zweiten Coders  ⇒  uπ gegenüber der Sequenz u durch einen Interleaver (Π) verwürfelt sein.
  • Somit spricht nichts dagegen, die beiden Coder gleich zu wählen: G1(D) = G2(D) = G(D). Ohne Interleaver würde dies die Korrekturfähigkeit extrem einschränken.

: Die Grafik zeigt die verschiedenen Sequenzen in angepassten Farben. Anzumerken ist:
  1.    Für uπ ist eine 3×4–Interleaver–Matrix entsprechend Aufgabe Z4.8 berücksichtigt.
  2.    Die Paritysequenzen ergeben sich gemäß G1(D) = G2(D) = 1 + D2  ⇒  siehe Aufgabe A4.8.
Beispielhafte Sequenzen beim Rate–1/3–Turbocodierer


Erste Voraussetzung für Turbocodes: Rekursive Komponentencodes


Nichtrekursive Übertragungsfunktionen zur Erzeugung der Paritysequenzen bewirken einen Turbocode mit unzureichend kleiner Minimaldistanz. Grund für diese Unzulänglichkeit ist die endliche Impulsantwort g = (1, g2, ... , gm, 0, 0, ... ) mit g2, ... , gm ∈ {0, 1}. Hierbei bezeichnet m das Codegedächtnis.

Die Grafik zeigt das Zustandsübergangsdiagramm für das Beispiel G(D) = [1, 1 + D2]. Die Übergänge sind mit „ui | ui pi” beschriftet. Die Abfolge S0S1S2S0S0S0 → ... führt bezüglich des Eingangs zur Informationssequenz u = (1, 0, 0, 0, 0, ... ) und bezüglich des jeweils zweiten Codesymbols zur Paritysequenz   p = (1, 0, 1, 0, 0, ... )  ⇒  identisch mit der Impulsantwort g  ⇒  Gedächtnis m = 2.

Nichtrekursiver Turbocode und Zustandsübergangsdiagramm

Die untere Grafik gilt für einen sog. RSC–Code (Recursive Systematic Convolutional) entsprechend G(D) = [1, (1 + D2)/(1 + D + D2)]. Hier führt die Folge S0S1S3S2S1S3S2 → ... zur Impulsantwort g = (1, 1, 1, 0, 1, 1, 0, 1, 1, ... ). Diese Impulsantwort setzt sich aufgrund der Schleife S1S3S2S1 bis ins Unendliche fort. Dies ermöglicht bzw. erleichtert die iterative Decodierung.

RSC-Turbocode und Zustandsübergangsdiagramm

Mehr Details zu den Beispielen auf dieser Seite finden Sie in Aufgabe A4.8 und Aufgabe A4.9.

Zweite Voraussetzung für Turbocodes: Interleaving


Es ist offensichtlich, dass bei G1(D) = G2(D) ein Interleaver (Π) unerlässlich ist. Ein weiterer Grund ist, dass die Apriori–Information als unabhängig vorausgesetzt wird. Somit sollten benachbarte (und somit möglicherweise stark abhängige) Bits für den jeweils anderen Teilcode weit auseinander liegen.

Für jeden RSC–Code  ⇒  unendliche Impulsantwort g  ⇒  gebrochen–rationale Übertragungsfunktion G(D) gibt es nämlich gewisse Eingangssequenzen u, die zu sehr kurzen Paritysequenzen p = ug mit geringem Hamming–Gewicht wH(p) führen. Eine solche Sequenz ist beispielsweise in der unteren Grafik auf der letzten Seite angegeben:   u = (1, 1, 1, 0, 0, ...). Dann gilt für die Ausgangssequenz:

\[P(D) = U(D) \cdot G(D) = (1+D+D^2) \cdot \frac{1+D^2}{1+D+D^2}= 1+D^2\]

\[\Rightarrow\hspace{0.3cm} \underline{p}= (\hspace{0.05cm}1\hspace{0.05cm},\hspace{0.05cm} 0\hspace{0.05cm},\hspace{0.05cm} 1\hspace{0.05cm},\hspace{0.05cm} 0\hspace{0.05cm},\hspace{0.05cm} 0\hspace{0.05cm},\hspace{0.05cm} ...\hspace{0.05cm})\hspace{0.05cm}. \]

Durch Interleaving (deutsch: Verwürfelung) wird nun mit großer Wahrscheinlichkeit sichergestellt, dass diese Sequenz u = (1, 1, 1, 0, 0, ...) in eine Sequenz uπ gewandelt wird,

  • die zwar ebenfalls nur drei Einsen beinhaltet,
  • deren Ausgangssequenz aber durch ein großes Hamming–Gewicht wH(p) gekennzeichnet ist.

Somit gelingt es dem Decoder, solche „Problemsequenzen” iterativ aufzulösen.

Zur Beschreibung der Interleaver verwendet man die Zuordnung IInIOut. Diese Bezeichnungen stehen für die Indizes von Ausgangs– bzw. Eingangsfolge. Die Interleavergröße wird mit Imax benannt.

Zur Verdeutlichung von Block–Interleaving


Es gibt mehrere, grundsätzlich verschiedene Interleaver–Konzepte:

Bei einem Block–Interleaver füllt man eine Matrix mit S Spalten und Z Zeilen spaltenweise und liest die Matrix zeilenweise aus. Damit wird ein Informationsblock mit Imax = S · Z Bit deterministisch verwürfelt.

Die Grafik verdeutlicht das Prinzip für Imax = 64  ⇒  1 ≤ IIn < 65 und <nobr>1 ≤ IOut < 65.</nobr> Die Reihenfolge der Ausgangsbits lautet dann:

          1, 9, 17, 25, 33, 41, 49, 57, 2, 10, 18, ... , 48, 56 , 64.

Mehr Informationen zum Block–Interleaving gibt es in Aufgabe Z4.8.

Zur Verdeutlichung von S–Random–Interleaving

Turbocodes verwenden oft den S–Random–Interleaver. Dieser pseudozufällige Algorithmus mit dem Parameter „S” garantiert, dass zwei am Eingang weniger als S auseinander liegende Indizes am Ausgang mindestens im Abstand S + 1 auftreten. Die linke Grafik zeigt die S–Random–Kennlinie IOut(IIn) für Imax = 640.

Auch dieser Algorithmus ist deterministisch, und man kann die Verwürfelung im Decoder rückgängig machen ⇒ De–Interleaving. Die Verteilung wirkt trotzdem „zufälliger” als bei Block–Interleaving.