Grundlegendes zu den Turbocodes

Aus LNTwww
< Kanalcodierung
Version vom 9. Juli 2019, 18:25 Uhr von Guenter (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu:Navigation, Suche

Grundstruktur eines Turbocodes


Alle heute (2017) aktuellen Kommunikationssysteme wie  UMTS  (Universal Mobile Telecommunications System   ⇒   3. Mobilfunkgeneration) und  LTE  (Long Term Evolution  ⇒   4. Mobilfunkgeneration) verwenden das Konzept der  symbolweisen iterativen Decodierung. Dass dies so ist, steht unmittelbar mit der Erfindung der  Turbocodes  im Jahre 1993 durch  Claude BerrouAlain Glavieux  und  Punya 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, jeweils 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  1i2, 1j2),
  • 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  k=1  und  n=3. Das Codewort lautet mit den Paritybits  p1  (Coder 1) und  p2  (Coder 2):
X_=(u, p1, p2).


Weitere Modifizierung der Turbocode–Grundstruktur


Im Folgenden gehen wir stets von einem noch etwas 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_=(X_1,X_2, ..., X_i, ...)  bezeichnet. Um Verwechslungen zu vermeiden, wurden vorne die Codeworte  X_i=(u, p1, p2)  mit Großbuchstaben eingeführt.
Rate–1/3–Turbocodierer mit Interleaver
  • Die Coder  C1  und  C2  werden (zumindest 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, beide Coder gleich zu wählen:   G1(D)=G2(D)=G(D). Ohne Interleaver würde die Korrekturfähigkeit extrem eingeschränkt sein.

Beispiel 1:  Die Grafik zeigt die verschiedenen Sequenzen in angepassten Farben. Anzumerken ist:

  1.    Für  u_π  ist eine  3×4–Interleaver–Matrix entsprechend  Aufgabe 4.8Z  berücksichtigt.
  2.    Die Paritysequenzen ergeben sich gemäß  G1(D)=G2(D)=1+D2   ⇒   siehe  Aufgabe 4.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|uipi” 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 systematischer Turbocode und Zustandsübergangsdiagramm

Die untere Grafik gilt für einen so genannten  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.


Nichtrekursiver systematischer Turbocode und Zustandsübergangsdiagramm

Mehr Details zu den Beispielen auf dieser Seite finden Sie in der  Aufgabe 4.8  und der  Aufgabe 4.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_=u_g_  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)G(D)=(1+D+D2)1+D21+D+D2=1+D2p_=(1,0,1,0,0,...).

Sinn und Zweck:  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 Verdeutlichung von Block–Interleaving

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

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=SZ  Bit deterministisch verwürfelt.

Die rechte Grafik verdeutlicht das Prinzip für  Imax=64   ⇒   1IIn64  und  1IOut64. 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 der  Aufgabe 4.8Z.

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.


Symbolweise iterative Decodierung eines Turbocodes


Die Decodierung eines Turbocodes geschieht grundsätzlich wie im Abschnitt  Symbolweise Soft–in Soft–out_Decodierung  beschrieben. Aus der folgenden Grafik erkennt man aber auch einige nur für den Turbodecoder zutreffende Besonderheiten.

Iterativer Turbodecoder für die Rate  R=1/3

Vorausgesetzt ist ein Rate–1/3–Turbocode entsprechend der Beschreibung auf der  ersten Seite dieses Abschnitts. Auch die Farbgebung für die Informationssequenz  u_  und die beiden Paritysequenzen  p_1  und  p_2  sind an die früheren Grafiken angepasst. Weiter ist zu bemerken:

  • Die Empfangsvektoren  y_0,y_1  und  y_2  sind reellwertig und liefern die jeweilige Soft–Information bezüglich der Informationssequenz  u_  sowie der Sequenzen  p_1  (Parity für Coder 1) und  p_2  (Parity für Coder 2).
  • Der Decoder 1 erhält die erforderliche intrinsische Information in Form der  L–Werte LK,0  (aus  y_0)  und  LK,1 (aus  y_1)  über jedes einzelne Bit der Sequenzen  u_  und  p_1. Beim zweiten Decoder ist die Verwürfelung der Informationssequenz  u_  zu berücksichtigen. Die zu verarbeitenden  L–Werte sind somit  π(LK,0)  und  LK,2.
  • Beim allgemeinen  SISO–Decoder  wurde der Informationsaustausch zwischen den beiden Komponentendecodern mit  L_A,2=L_E,1  sowie  L_A,1=L_E,2  angegeben. Ausgeschrieben auf Bitebene bedeuten diese Gleichungen mit  1in:
LA,2(i)=LE,1(i)bzw.LA,1(i)=LE,2(i).
  • Beim Turbodecoder muss bei diesem Informationsaustausch auch der Interleaver berücksichtigt werden. Dann gilt für  i=1, ..., n:
LA,2(π(i))=LE,1(i)bzw.LA,1(i)=LE,2(π(i)).
  • Der Aposteriori–L–Wert wird in obigem Modell (willkürlich) vom Decoder 1 abgegeben. Dies lässt sich damit begründen, dass eine Iteration für einen zweifachen Informationsaustausch steht.

Leistungsfähigkeit der Turbocodes


Bit– und Blockfehlerwahrscheinlichkeit von Turbocodes beim AWGN–Kanal

Wir betrachten wie auf den letzten Seiten den Rate–1/3–Turbocode

  • mit gleichen Filterfunktionen  G1(D)=G2(D)=(1+D2)/(1+D+D2)   ⇒   Gedächtnis  m=2,
  • mit der Interleavergröße  K; zunächst gelte  K=10000,
  • eine ausreichende Anzahl an Iterationen  (I=20), vom Ergebnis her nahezu gleichzusetzen mit „I”.

Die beiden RSC–Komponentencodes sind jeweils auf  K  Bit terminiert. Deshalb gruppieren wir

  • die Informationssequenz  u_  zu Blöcken mit je  K  Informationsbits, und
  • die Codesequenz x_ zu Blöcken mit je  N=3K  Codebits.

Alle Ergebnisse gelten für den  AWGN–Kanal. Die Daten entstammen dem Vorlesungsskript  [Liv15][1].

Die Grafik zeigt als grüne Kurve die  Blockfehlerwahrscheinlichkeit   ⇒   Pr(Blockfehler)  in doppelt–logarithmischer Darstellung in Abhängigkeit der AWGN–Kenngröße  10lg(EB/N0). Man erkennt:

  • Die mit Kreuzen markierten Punkte ergaben sich aus den Gewichtsfunktionen des Turbocodes mit Hilfe der  „Union Bound”. Die Simulationsergebnisse – in der Grafik durch Kreise markiert – sind nahezu deckungsgleich mit den analytisch berechneten Werten.
  • Die „Union Bound” ist nur eine obere Schranke, basierend auf Maximum–Likelihood–Decodierung („ML”). Der iterative Decoder ist suboptimal (also schlecher als „ML”). Diese beiden Effekte heben sich scheinbar nahezu auf.
  • Etwa bei  10lg(EB/N0)=1 dB  ist ein Knick im (grünen) Kurvenverlauf festzustellen, der mit der Steigungsänderung von  Pr(Bitfehler)   ⇒   blaue Kurve korrespondiert.

Die blauen Kreuze (Berechnung) und die blauen Kreise (Simulation) bezeichnen die  Bitfehlerwahrscheinlichkeit  für die Interleavergröße  K=10000 . Als Vergleichskurve eingezeichnet ist die (strichpunktierte) Kurve für uncodierte Übertragung. Zu diesen blauen Kurven ist anzumerken:

  • Bei kleinen Abszissenwerten ist der Kurvenabfall in der gewählten Darstellung nahezu linear und ausreichend steil. Zum Beispiel benötigt man für  Pr(Bitfehler)=105  mindestens  10lg(EB/N0)0.8 dB.
  • Im Vergleich zur  Shannon–Grenze, die sich für die Coderate  R=1/3  zu  10lg(EB/N0)0.55 dB  ergibt, liegt unser Standard–Turbocode  (mit Gedächtnis  m=2)  nur etwa  1.35 dB  entfernt.
  • Ab  10lg(EB/N0)0.5 dB  verläuft die Kurve flacher. Ab ca.  1.5 dB  ist der Verlauf wieder (nahezu) linear mit geringerer Steigung. Für  Pr(Bitfehler)=107  benötigt man etwa  10lg(EB/N0)=3 dB.

Wir versuchen nun, den flacheren Abfall der Bitfehlerwahrscheinlichkeit bei größerem  EB/N0  zu erklären. Man spricht von einem  Error Floor:

  • Der Grund für dieses asymptotisch schlechtere Verhalten bei besserem Kanal  (im Beispiel:   ab  10lgEB/N02 dB)  ist die Periode  P  der Coderimpulsantwort  g_, wie auf der Seite  Interleaving  nachgewiesen und in der  Aufgabe 4.10  an Beispielen erläutert.
  • Für  m=2  ist die Periode P=2m1=3. Dadurch ist für u_=(1,1,1)wH(u_)=3  trotz unbegrenzter Impulsantwort  g_  die Paritysequenz begrenzt:   p_=(1,0,1)   ⇒   wH(p_)=2.
  • Die Sequenz  u_=(0, ..., 0, 1, 0, 0, 1, 0, ...)   ⇒   U(D)=Dx(1+DP)  führt ebenfalls zu einem kleinen Hamming–Gewicht  wH(p_)  am Ausgang, was den iterativen Decodierprozess erschwert.
  • Eine gewisse Abhilfe schafft der Interleaver, der dafür sorgt, dass nicht die beiden Sequenzen  p_1  und  p_2  gleichzeitig durch sehr kleine Hamming–Gewichte  wH(p_1)  und  wH(p_2)  belastet sind.
  • Aus der Grafik erkennt man auch, dass die Bitfehlerwahrscheinlichkeit umgekehrt proportional zur Interleavergröße  K  ist. Das heißt:   Bei großem  K  funktioniert die Entspreizung ungünstiger Eingangssequenzen besser.
  • Allerdings gilt die Näherung  KPr(Bitfehler)=const.  nur für größere  EB/N0–Werte   ⇒   kleine Bitfehlerwahrscheinlichkeiten. Der beschriebene Effekt tritt zwar auch bei kleinerem  EB/N0  auf, doch sind dann die Auswirkungen auf die Bitfehlerwahrscheinlichkeit geringer.

Dagegen gilt der flachere Verlauf der Blockfehlerwahrscheinlichkeit (grüne Kurve) weitgehend unabhängig von der Interleavergröße  K, also sowohl für  K=1000  als auch für  K=10000. Im Bereich ab  10lgEB/N0>2 dB  dominieren nämlich Einzelfehler, so dass hier die Näherung  Pr(Blockfehler)Pr(Bitfehler)K  gültig ist.

Fazit:  Die beispielhaft gezeigten Kurven für Bitfehlerwahrscheinlichkeit und Blockfehlerwahrscheinlichkeit gelten qualitativ auch für  m>2, zum Beispiel für den Turbocode von UMTS und LTE  (jeweils mit  m=3), der in der  Aufgabe 4.10  analysiert wird. Es ergeben sich aber einige quantitative Unterschiede:

  • Die Kurve verläuft bei kleinem  EB/N0  steiler und der Abstand von der Shannongrenze ist etwas geringer als im hier gezeigten Beispiel für  m=2.
  • Auch für größeres  m  gibt es einen Error Floor. Der Knick in den dargestellten Kurven erfolgt dann aber später, also bei kleineren Fehlerwahrscheinlichkeiten.


Seriell verkettete Turbocodes – SCCC


Die bisher betrachteten Turbocodes werden manchmal auch als  Parallel Concatenated Convolutional Codes  (PCCC) bezeichnet.

Einige Jahre nach Berrou's Erfindung wurden von anderen Autoren auch  Serial Concatenated Convolutional Codes  (SCCC) entsprechend der folgenden Grafik vorgeschlagen.

  • Die Informationssequenz  u_  liegt am äußeren Faltungscoder  C1  an. Dessen Ausgangssequenz sei  c_.
  • Nach dem Interleaver  (Π)  folgt der innere Faltungscoder  C2. Die Codesequenz wird hier  x_  genannt.
  • Die resultierende Coderate ist  R=R1R2. Bei Rate–1/2–Komponentencodes ist  R=1/4.

Serial Concatenated Convolutional Codes (SCCC): Coder und Decoder

Die untere Grafik zeigt den SCCC–Decoder und verdeutlicht die Verarbeitung der  L–Werte und den Austausch der extrinsischen Information zwischen den beiden Komponentencoder:

  • Der innere Decoder  (für den Code  C2)  erhält vom Kanal die intrinsische Information  L_K(x_)  und vom äußeren Decoder (nach Interleaving) die Apriori–Information  L_A(w_)  mit  w_=π(c_). An den äußeren Decoder wird die extrinsische Information  L_E(w_)  abgegeben.
  • Der äußere Decoder (für  C1)  verarbeitet die Apriori–Information  L_A(c_), also die extrinsische Information  L_E(w_)  nach dem De–Interleaving. Er liefert die extrinsische Information  L_E(c_).
  • Nach hinreichend vielen Iterationen ergibt sich das das gewünschte Decodierergebnis in Form der Aposteriori–L–Werte  L_APP(u_)  der Informationssequenz  u_.

Fazit:  Wichtig für Serial Concatenated Convolutional Codes (SCCC) ist, dass der innere Code  C2  rekursiv ist (also ein RSC–Code). Der äußere Code  C1  kann auch nichtrekursiv sein.

Zur Leistungsfähigkeit solcher Codes ist anzumerken:

  • Ein SCCC ist bei großem  EB/N0  oft besser als ein PCCC  ⇒  niedrigerer Error Floor. Die Aussage gilt schon für SCCC–Komponentencodes mit Gedächtnis  m=2  (nur vier Trelliszustände), während bei PCCC das Gedächtnis  m=3  bzw.  m=4  (acht bzw. sechzehn Trelliszustände) sein sollte.
  • Im unteren Bereich (kleines  EB/N0)  ist dagegen der beste seriell verkettete Faltungscode (SCCC) um einige Zehntel Dezibel schlechter als der vergleichbare Turbocode gemäß Berrou (PCCC). Entsprechend größer ist auch der Abstand von der Shannongrenze.



Einige Anwendungsgebiete für Turbocodes


Einige standardisierte Turbocodes im Vergleich zur Shannon–Grenze

In fast allen neueren Kommunikationssystemen werden Turbocodes eingesetzt. Die Grafik zeigt deren Leistungsfähigkeit beim AWGN–Kanal im Vergleich zur  Shannonschen Kanalkapazität  (blaue Kurve).

Der grün hinterlegte Bereich „BPSK” gibt die Shannongrenze für Nachrichtensysteme mit binärem Eingang an, mit der nach dem  Kanalcodierungstheorem  eine fehlerfreie Übertragung gerade noch möglich ist.

Anzumerken ist, dass hier für die eingezeichneten Kanalcodes von standardisierten Systemen die Fehlerrate  105  zugrunde liegt, während die informationstheoretischen Kapazitätskurven (Shannon, BPSK) für die Fehlerwahrscheinlichkeit  0  gelten.

  • Die blauen Rechtecke markieren die Turbocodes für UMTS. Diese sind Rate–1/3–Codes mit Gedächtnis  m=3. Die Leistungsfähigkeit hängt stark von der Interleavergröße ab. Mit  K=6144  liegt dieser Code nur etwa  1 dB  rechts von der Shannon–Grenze. LTE verwendet die gleichen Turbocodes. Geringfügige Unterschiede ergeben sich aufgrund des unterschiedlichen Interleavers.
  • Die roten Kreuze markieren die Turbocodes nach CCSDS (Consultative Comittee for Space Data Systems), entwickelt für den Einsatz bei Weltraummissionen. Diese Klasse geht von der festen Interleavergröße  K=6920  aus und stellt Codes der Rate  1/61/41/3  und  1/2  bereit. Die niedrigsten Coderaten erlauben einen Betrieb mit  10lg(EB/N0)0 dB.
  • Der grüne Kreis steht für einen sehr einfachen  Repeat–Accumulate  (RA) Code, einem seriell–verketteten Turbocode. Nachfolgend ist dessen Struktur skizziert:   Der äußere Decoder verwendet einen  Wiederholungscode  (englisch:  Repetition Code), im gezeichneten Beispiel mit der Rate  R=1/3. Nach dem Interleaver folgt ein RSC–Code mit  G(D)=1/(1+D)   ⇒   Gedächtnis  m=1. Bei systematischer Ausführung ist die Gesamtcoderate  R=1/4  (zu jedem Informationsbit werden noch drei Paritybit hinzugefügt).
Repeat Accumulate (RA) Code der Rate 1/4

Aus der Grafik rechts oben erkennt man, dass dieser einfache RA–Code überraschend gut ist. Mit der Interleavergröße  K=300000  beträgt der Abstand von der Shannon–Grenze lediglich etwa  1.5 dB  (grüner Punkt).

Ähnliche Repeat Accumulate Codes sind für den Standard DVB Return Channel Terrestrial (RCS) sowie für den WiMax–Standard (IEEE 802.16) vorgesehen.



Aufgaben zum Kapitel


Aufgabe 4.8: Wiederholung zu den Faltungscodes

Aufgabe 4.8Z: Grundlegendes zum Interleaving

Aufgabe 4.9: Recursive Systematic Convolutional Codes

Aufgabe 4.10: Turbocoder für UMTS und LTE

Quellenverzeichnis

  1. Liva, G.: Channels Codes for Iterative Decoding. Vorlesungsmanuskript, Lehrstuhl für Nachrichtentechnik, TU München und DLR Oberpfaffenhofen, 2015.