Processing math: 100%

Soft–in Soft–out Decoder

Aus LNTwww
< Kanalcodierung
Version vom 26. November 2022, 17:36 Uhr von Guenter (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu:Navigation, Suche

# ÜBERBLICK ZUM VIERTEN HAUPTKAPITEL #


Das letzte Hauptkapitel des Kanalcodierungsbuches beschreibt  iterative Decodierverfahren, wie sie in den meisten heutigen (2017) Kommunikationssystemen eingesetzt werden. Dies hat folgende Gründe:

  • Um sich der Kanalkapazität anzunähern, benötigt man sehr lange Codes.
  • Für lange Codes ist aber eine blockweise  Maximum–Likelihood–Decodierung  nahezu unmöglich.


Die Decoder–Komplexität lässt sich bei nahezu gleicher Qualität deutlich herabsetzen, wenn man zwei (oder mehrere) kurze Kanalcodes miteinander verknüpft und beim Empfänger die jeweils neu gewonnene (Soft–)Information in mehreren Schritten – also iterativ – zwischen den Decodern austauscht.

Der Durchbruch auf dem Gebiet gelang Anfang der 1990er Jahre mit der Erfindung der  Turbo–Codes  durch  Claude Berrou  und kurz darauf mit der Wiederentdeckung der  Low–density Parity–check Codes  durch  David J. C. MacKay  und  Radford M. Neal, nachdem die schon 1961 von  Robert G. Gallager  entwickelten LDPC–Codes zwischenzeitlich in Vergessenheit geraten waren.

Im Einzelnen werden im vierten Hauptkapitel behandelt:

  • Eine Gegenüberstellung von  Hard Decision  und  Soft Decision,
  • die Quantifizierung von  Zuverlässigkeitsinformation  durch  Log Likelihood Ratios (LLR),
  • das Prinzip der symbolweisen  Soft–in Soft–out  (SISO) Decodierung,
  • die Definition von  Apriori–L–WertAposteriori–L–Wert  und  extrinsischem L–Wert,
  • die Grundstruktur von  seriell verketteten  bzw.  parallel verketteten  Codiersystemen,
  • die Eigenschaften von  Produkt–Codes  und deren  Hard Decision Decodierung,
  • die Grundstruktur, der Decodieralgorithmus und die Leistungsfähigkeit der  Turbo–Codes,
  • Grundlegendes zu den  Low–density Parity–check Codes  und deren Anwendungen.


Hard Decision vs. Soft Decision


Zur Hinleitung auf die hier behandelte Thematik betrachten wir das folgende Nachrichtenübertragungssystem mit Codierung.

Betrachtetes Nachrichtenübertragungssystem mit Codierung

Im Weiteren werden alle Symbole in bipolarer Darstellung angegeben:   „0”  →  „+1”  und  „1”  →  „1”.

  • Die Symbolfolge  u_=(u1, u2)  wird der Coderfolge  x_=(x1, x2, x3)=(u1, u2, p)  zugeordnet, wobei für das Paritybit  p=u1u2  gilt   ⇒   Single Parity–check Code   ⇒   SPC(3,2,2).
  • Der  AWGN–Kanal  verändert die Binärsymbole  xi{+1, 1}  zu reellwertigen Ausgangswerten  yi, zum Beispiel gemäß  Kanal 4  der unteren Tabelle:   x1=+1   ⇒   y1=+0.9,   x2=1   ⇒   y2=+0.1  und  x3=1   ⇒   y3=+0.1.
  • Die Decodierung geschieht gemäß dem Kriterium  Maximum-Likelihood  (blockwise ML), wobei zwischen  Hard Decision  (MLHD)  und  Soft Decision  (MLSD)  zu unterscheiden ist.
  • Das gesamte Blockschaltbild entspricht  MLHD. Hier werden zur Decodierung nur die Vorzeichen der AWGN–Ausgangswerte   ⇒   yHD, i=sign[ySD, i]  ausgewertet. Bei  Soft Decision  (MLSD)  verzichtet man auf den schraffierten Block und wertet direkt die wertkontinuierlichen Eingangsgrößen  ySD, i  aus.


Gegenüberstellung von Hard Decision und Soft Decision

Für alle Spalten dieser Tabelle wird vorausgesetzt:

  • der Nachrichtenblock  u_=(0,1), bipolar darstellbar als  (+1,1),
  • der  SPC (3,2)–codierte Block  x_=(0,1,1)  bzw.  in Bipolardarstellung  (+1,1,1).


Die vier Spalten unterscheiden sich also nur durch unterschiedliche AWGN–Realisierungen.

Definition:  Aus der Beispieltabelle erkennt man:

  • Hard Decision:   Die Symbolfolge  v_HD  ergibt sich aus den hart entschiedenen Kanalwerten  y_HD (blaue Hinterlegung).
    Bei unserem Beispiel werden nur die Konstellationen gemäß  Kanal 1  und  Kanal 2  fehlerfrei decodiert.
  • Soft Decision:   Die Symbolfolge  v_SD  ergibt sich aus den „weichen” Kanalausgangswerten  y_SD (grüne Hinterlegung).
    Nun wird in diesem Beispiel auch bei  Kanal 3  richtig entschieden.


Die Einträge in der obigen Beispieltabelle sind wie folgt zu interpretieren:

  • Bei idealem Kanal   ⇒   Kanal 1   ⇒   x_=y_SD=y_HD  gibt es keinen Unterschied zwischen der (blauen) herkömmlichen Hard Decision–Variante (MLHD)  und der (grünen) Soft Decision–Variante (MLSD).
  • Die Einstellung entsprechend  Kanal 2  demonstriert geringe Signalverfälschungen. Wegen  y_HD=x_  (das heißt, dass der Kanal die Vorzeichen nicht verfälscht) liefert auch  MLHD  das richtige Ergebnis  v_HD=u_.
  • Beim  Kanal 3  gilt  y_HDx_  und es gibt auch keine  SPC (3,2)–Zuordnung  u_   ⇒   y_HD. Der ML–Decoder vermeldet hier durch die Ausgabe  v_HD=(E, E), dass er bei der Decodierung dieses Blocks gescheitert ist. „E” steht für  Erasure  (deutsch:   Auslöschung).
  • Auch der  Soft Decision  Decoder erkennt, dass eine Decodierung anhand der Vorzeichen nicht funktioniert. Anhand der  y_SD–Werte erkennt er aber, dass mit großer Wahrscheinlichkeit das zweite Bit verfälscht wurde und entscheidet sich für die richtige Symbolfolge  v_SD=(+1,1)=u_.
  • Bei  Kanal 4  werden durch den AWGN–Kanal sowohl die Vorzeichen von Bit 2 als auch von Bit 3 verändert, was zum Ergebnis  v_HD=(+1,+1)u_(+1,1)  führt   ⇒   ein Blockfehler und gleichzeitig ein Bitfehler. Auch der Soft Decision Decoder liefert hier das gleiche falsche Ergebnis.

Die Decodiervariante „ML–SD” bietet gegenüber „ML–HD” zudem den Vorteil, dass man relativ einfach jedes Decodierergebnis mit einem Zuverlässigkeitswert versehen kann (in obiger Tabelle ist dieser allerdings nicht angegeben). Dieser Zuverlässigkeitswert

  • hätte bei  Kanal 1  seinen Maximalwert,
  • wäre bei  Kanal 2  deutlich kleiner,
  • läge bei  Kanal 3  und  Kanal 4  nahe bei Null.

Zuverlässigkeitsinformation – Log Likelihood Ratio


Es sei  x{+1,1}  eine binäre Zufallsvariable mit den Wahrscheinlichkeiten  Pr(x=+1)  und  Pr(x=1). Für die Codierungstheorie erweist es sich als zweckmäßig hinsichtlich der Rechenzeiten, wenn man anstelle der Wahrscheinlichkeiten  Pr(x=±1)  den natürlichen Logarithmus des Quotienten heranzieht.

Definition:  Das  Log–Likelihood–Verhältnis  (kurz:   der L–Wert, englisch: Log–Likelihood Ratio, LLR)  der Zufallsgröße  x{+1,1}  lautet:

L(x)=lnPr(x=+1)Pr(x=1).

Bei unipolarer/symbolhafter Darstellung  (+10   und   11)  gilt entsprechend mit  ξ{0,1}:

L(ξ)=lnPr(ξ=0)Pr(ξ=1).


Nachfolgend ist der nichtlineare Zusammenhang zwischen  Pr(x=±1)  und  L(x)  angegeben. Ersetzt man  Pr(x=+1)  durch  Pr(ξ=0), so gibt die mittlere Zeile den  L–Wert der unipolaren Zufallsgröße  ξ an.

Wahrscheinlichkeit und  L–Wert

Man erkennt:

  • Der wahrscheinlichere Zufallswert von  x{+1,1}  ist durch das  Vorzeichen   ⇒   sign L(x)  gegeben.
  • Dagegen gibt der  Betrag    ⇒   |L(x)|  die Zuverlässigkeit für das Ergebnis  sign(L(x))  an.

BSC–Modell

Beispiel 1:  Wir betrachten das skizzierte  BSC–Modell  mit bipolarer Darstellung. Hier gilt mit der Verfälschungswahrscheinlichkeit  ε=0.1  sowie den beiden Zufallsgrößen  x{+1,1}  und  y{+1,1}  am Eingang und Ausgang des Kanals:

L(y|x)=lnPr(y|x=+1)Pr(y|x=1)={ln[(1ε)/ε]ln[ε/(1ε)]f¨ury=+1,f¨ury=1.

Beispielsweise ergeben sich für  ε=0.1  folgende Zahlenwerte (vergleiche obere Tabelle):

L(y=+1|x)=ln0.90.1=+2.197,L(y=1|x)=2.197.

Dieses Beispiel zeigt, dass man die so genannte  L–Wert–Algebra auch auf bedingte Wahrscheinlichkeiten anwenden kann.
In der  Aufgabe 4.1Z  wird das BEC–Modell in ähnlicher Weise beschrieben.


Beispiel 2:  In einem weiteren Beispiel betrachten nun den  AWGN–Kanal  mit den bedingten Wahrscheinlichkeitsdichtefunktionen

Bedingte AWGN–Dichtefunktionen
fy|x=+1(y|x=+1)=12πσe(y1)2/(2σ2),
fy|x=1(y|x=1)=12πσe(y+1)2/(2σ2).

In der Grafik sind zwei beispielhafte Gaußfunktionen als blaue bzw. rote Kurve dargestellt.

Die gesamte WDF des Ausgangssignals y  ergibt sich aus der (gleich) gewichteten Summe:

fy(y)=1/2[fy|x=+1(y|x=+1)+fy|x=1(y|x=1)].

Wir berechnen nun die Wahrscheinlichkeit, dass der Empfangswert  y  in einem (sehr) schmalen Intervall der Breite  Δ  um  y0=0.25  liegt. Man erhält näherungsweise

Pr(|yy0|Δ/2|x=+1)Δ2πσe(y01)2/(2σ2),
Pr(|yy0|Δ/2|x=1)Δ2πσe(y0+1)2/(2σ2).

Die etwas größeren senkrechten Striche bezeichnen die Bedingungen, die kleineren die Betragsbildung.

Der  L–Wert der bedingten Wahrscheinlichkeit in Vorwärtsrichtung  (das bedeutet:   Ausgang  y  für einen gegebenen Eingang  x)  ergibt sich somit als der Logarithmus des Quotienten beider Ausdrücke:

L(y=y0|x)=ln[e(y01)2/(2σ2)e(y0+1)2/(2σ2)]=ln[e[(y01)2+(y0+1)2]/(2σ2)]=(y0+1)2(y01)22σ2=2y0σ2.

Ersetzen wir nun die Hilfsgröße  y0  durch die (allgemeine) Zufallsgröße  y  am AWGN–Ausgang, so lautet das Endergebnis:

L(y|x)=2y/σ2=KLy.

Hierbei ist  KL=2/σ2  eine Konstante, die allein von der Streuung der Gaußschen Störung abhängt.


Symbolweise Soft–in Soft–out Decodierung


Wir gehen nun von einem  (n, k)–Blockcode aus, wobei das Codewort  x_=(x1, ... , xn)  durch den Kanal in das Empfangswort  y_=(y1, ... , yn)  verfälscht wird.

  • Bei langen Codes ist eine  Maximum–a–posteriori–Entscheidung auf Blockebene  – kurz:   block–wise MAP  – sehr aufwändig.
  • Man müsste unter den  2k zulässigen Codeworten  x_jC  dasjenige mit der größten Rückschlusswahrscheinlichkeit (englisch:  A Posteriori Probability, APP) finden.
  • Das auszugebende Codewort  z_  wäre in diesem Fall  z_=argmaxx_jCPr(x_j|y_).


Modell der symbolweisen Soft–in Soft–out Decodierung

Eine zweite Möglichkeit ist die Decodierung auf Bitebene. Der dargestellte symbolweise (oder bitweise)  Soft–in Soft–out Decoder  hat die Aufgabe, alle Codewortbits  xi{0,1}  entsprechend maximaler Rückschlusswahrscheinlichkeit  Pr(xi|y_)  zu decodieren. Mit der Laufvariablen  i=1,..., n  gilt dabei:

  • Der entsprechende  L–Wert  (englisch:  Log Likelihood Ratio, LLR) für das  i–te Codebit lautet:
LAPP(i)=L(xi|y_)=lnPr(xi=0|y_)Pr(xi=1|y_).
  • Der Decoder arbeitet iterativ. Bei der Initialisierung (in der Grafik gekennzeichnet durch den Parameter  I=0)  ist  LAPP(i)=LK(i), wobei das Kanal–LLR  LK(i)  durch den Empfangswert  yi  gegeben ist.
  • Berechnet wird zudem der extrinsische  L–Wert  LE(i), der die gesamte Information quantifiziert, die alle anderen Bits  (ji)  aufgrund der Code–Eigenschaften über das betrachtete  i–te Bit liefern.
  • Bei der nächsten Iteration  (ab  I=1)  wird  LE(i)  bei der Berechnung von  LAPP(i)  als Apriori–Information  LA(i)  berücksichtigt. Für das neue Aposteriori–LLR in der Iteration  I+1  gilt somit:
L(I+1)APP(i)=L(I)APP(i)+L(I+1)A(i)=L(I)APP(i)+L(I)E(i).
  • Die Iterationen werden fortgesetzt, bis alle Beträge  |LAPP(i)|  größer sind als ein vorzugebender Wert. Das wahrscheinlichste Codewort  z_  ergibt sich dann aus den Vorzeichen aller  LAPP(i), mit  i=1, ..., n.
  • Bei einem  systematischen Code  geben die ersten  k  Bit von  z_  das gesuchte Informationswort an, das mit großer Wahrscheinlichkeit mit der gesendeten Nachricht  u_ übereinstimmen wird.

Diese Beschreibung des SISO–Decodierers nach  [Bos98][1]  soll an dieser Stelle in erster Linie die unterschiedlichen  L–Werte verdeutlichen. Das große Potential der symbolweisen Decodierung erkennt man erst im Zusammenhang mit  verketteten Codiersystemen.

Zur Berechnung der extrinsischen L–Werte


Die Schwierigkeit bei der symbolweisen iterativen Decodierung ist im allgemeinen die Bereitstellung der extrinsischen  L–Werte  LE(i).  Bei einem Code der Länge  n  gilt hierbei für die Laufvariable:  i=1, ..., n.

Definition:  Der  extrinsische L–Wert  (englisch:  "extrinsic log likelihood ratio")  ist ein Maß für die Informationen,  den die anderen Symbole  (ji)  des Codewortes über das  i–te Codesymbol liefern.  Wir benennen diesen Kennwert mit  LE(i).


Wir berechnen nun die extrinsischen  L–Werte für zwei beispielhafte Codes.


(A)   Repetition Code   ⇒   RC (n,1,n)

Ein Wiederholungscode zeichnet sich dadurch aus,  dass alle  n  Codesymbole  xi{0,1}  identisch sind.  Der extrinsische  L–Wert für das  i–ten Symbol ist hier sehr einfach anzugeben und lautet:

LE(i)=jiLjmitLj=LAPP(j).
  • Ist die Summe über alle  Lji  positiv,  so bedeutet dies aus Sicht der anderen  L–Werte eine Präferenz für die Entscheidung   xi=0.
  • Bei negativer Summe ist dagegen  xi=1  wahrscheinlicher.
  • LE(i)=0  erlaubt keine Vorhersage.


Beispiel 5:  Wir betrachten die Decodierung des Wiederholungscodes  RC (4, 1,4).  Wir gehen dabei von drei verschiedene Annnahmen für  L_(I=0)APP=L_K  aus.

Decodierbeispiel  (5a)  für den  RC (4,1,4)

Decodierbeispiel (5a):

L_(I=0)APP=(+1,1,+3,1):
LE(1)=1+31=+1,
LE(2)=+1+31=+3,
LE(3)=+111=1,
LE(4)=+11+3=+3
L_(I=0)E=(+1,+3,1,+3)L_(I=1)A=L_(I=0)A+L_(I=0)E=(+2,+2,+2,+2)
  • Zu Beginn  (I=0)  weisen die positiven  LE–Werte auf  x1==x2=x4=0  hin,  während  x3=1  wahrscheinlicher ist.
  • Bereits nach einer Iteration  (I=1)  sind alle  LAPP–Werte positiv   ⇒   Informationsbit wird als  u=0  decodiert.
  • Weitere Iterationen bringen nichts.


Decodierbeispiel  (5b)  für den  RC (4,1,4)

Decodierbeispiel (5b):

L_(I=0)APP=(+1,+1,4,+1):
L_(I=0)E= (2,2,+3,2)
  • Obwohl zu Beginn drei Vorzeichen falsch waren, sind nach zwei Iterationen alle LAPP–Werte negativ.
  • Das Informationsbit wird als  u=1  decodiert.
Decodierbeispiel  (5c)  für den  RC (4,1,4)

Decodierbeispiel (C):

L_APP=(+1,+1,3,+1):
L_(I=0)E=(1,1,+3,1)
  • Alle  LAPP–Werte sind schon nach einer Iteration Null.
  • Das Informationsbit kann nicht decodiert werden,  obwohl die Ausgangslage nicht viel schlechter war als bei  (5b).
  • Weitere Iterationen bringen auch hier nichts.


Single Parity–check Code   ⇒   SPC (n, n1, 2)

Bei jedem  Single Parity–check Code  ist die Anzahl der Einsen in jedem Codewort geradzahlig. Oder anders ausgedrückt:   Für jedes Codewort  x_  ist das  Hamming–Gewicht  wH(x_)  geradzahlig.

Definition:  Das Codewort  x_(i)  beinhalte alle Symbole mit Ausnahme von  xi   ⇒   Vektor der Länge  n1. Damit lautet der  extrinsische L–Wert  bezüglich des  i–ten Symbols, wenn  x_  empfangen wurde:

LE(i)=lnPr[wH(x_(i))istgerade|y_]Pr[wH(x_(i))istungerade|y_].

Wie in der  Aufgabe 4.4  gezeigt werden soll, kann hierfür auch geschrieben werden:

LE(i)=2tanh1[njitanh(Lj/2)]mitLj=LAPP(j).


Beispiel 6:  Wir gehen vom  Single Parity–check Code  mit  n=3, k=2   ⇒   kurz  SPC (3, 2, 2)  aus.

Die  2k=4  gültigen Codeworte  x_={x1,x2,x3}  lauten bei bipolarer Beschreibung   ⇒   xi{±1}:

Decodierbeispiel für den  SPC (3,2,2)
x_0=(+1,+1,+1),
x_1=(+1,1,1),
x_2=(1,+1,1),
x_3=(1,1,+1).

Bei diesem Code ist also das Produkt  x1x2x3  stets positiv.

Die obige Tabelle zeigt den Decodiervorgang für  L_APP=(+2.0,+0.4,1.6). Die harte Entscheidung nach den Vorzeichen von  LAPP(i)  ergäbe hier  (+1,+1,1), also kein gültiges Codewort des  SP(3, 2, 2).

Rechts in der Tabelle sind die dazugehörigen extrinsischen  L–Werte eingetragen:

LE(1)=2tanh1[tanh(0.2)tanh(0.8)]=0.131,
LE(2)=2tanh1[tanh(1.0)tanh(0.8)]=0.518,
LE(3)=2tanh1[tanh(1.0)tanh(0.2)]=+0.151.

Die zweite Gleichung lässt sich wie folgt interpretieren:

  • LAPP(1)=+2.0  und  LAPP(3)=1.6  sagen aus, dass das erste Bit eher  +1  als  1  ist und das dritte Bit eher  1  als  +1. Die Zuverlässigkeit (der Betrag) ist beim ersten Bit etwas größer als beim dritten.
  • Die extrinsische Information  LE(2)=0.518 berücksichtigt nur die Informationen von Bit 1 und Bit 3 über Bit 2. Aus deren Sicht ist das zweite Bit eine  1  mit der Zuverlässigkeit  0.518.
  • Der vom Empfangswert  y2  abgeleitete  L–Wert   ⇒   LAPP(2)=+0.4  hat für das zweite Bit eine  +1  vermuten lassen. Die Diskrepanz wird hier bereits in der Iteration  I=1  aufgelöst.
  • Entschieden wird hier für das Codewort  x_1. Bei  0.518<LAPP(2)<1.6  würde das Ergebnis  x_1  erst nach mehreren Iterationen vorliegen. Für  LAPP(2)>1.6  liefert der Decoder dagegen  x_0.


BCJR–Decodierung: Vorwärts–Rückwärts–Algorithmus


Ein Beispiel für die iterative Decodierung von Faltungscodes ist der  BCJR–Algorithmus, benannt nach dessen Erfindern L. R. Bahl, J. Cocke, F. Jelinek und J. Raviv  ⇒  [BCJR74][2]. Der Algorithmus weist viele Parallelen zur sieben Jahren älteren Viterbi–Decodierung auf, doch auch einige signifikante Unterschiede:

  • Der Viterbi–Algorithmus kann (in seiner ursprünglichen Form) keine Softinformation verarbeiten. Dagegen gibt der BCJR–Algorithmus bei jeder Iteration für jedes einzelne Symbol (Bit) einen Zuverlässigkeitswert an, der bei späteren Iterationen berücksichtigt wird.


Gegenüberstellung von Viterbi– und BCJR–Algorithmus

Die Abbildung soll – fast unzulässig vereinfacht – die unterschiedliche Vorgehensweise von Viterbi–Algorithmus (links) und BCJR–Algorithmus (rechts) verdeutlichen. Zugrunde liegt ein Faltungscode mit dem Gedächtnis  m=1  und der Länge  L=4   ⇒   Gesamtlänge (mit Terminierung)  L=5.

  • Der Viterbi–Algorithmus sucht und findet den wahrscheinlichsten Pfad von  Γ0(S0)  nach  Γ5(S0), nämlich  S0S1S0S0S1S0. Wir verweisen auf die Musterlösung zur  Aufgabe 3.9Z.

Die Skizze für den BCJR–Algorithmus verdeutlicht die Gewinnung des extrinsischen  L–Wertes für das dritte Symbol   ⇒   LE(3). Der relevante Bereich im Trellis ist schraffiert:

  • Bei der Abarbeitung des Trellisdiagramms in Vorwärtsrichtung gewinnt man – in gleicher Weise wie bei Viterbi – die Metriken  α1, α2, ..., α5. Zur Berechnung von  LE(3)  benötigt man hiervon  α2.
  • Anschließend durchläuft man das Trellisdiagramm rückwärts (also von rechts nach links) und erhält damit die Metriken  β4, β3, ..., β0  entsprechend der unteren Skizze.
  • Der gesuchte extrinsische  L–Wert  LE(3)  ergibt sich aus den Metriken  α2  (in Vorwärtsrichtung) und  β3  (in Rückwärtsrichtung) sowie der Apriori–Information  γ3  über das Symbol  i=3.

Grundstruktur von verketteten Codiersystemen


Die wichtigsten Kommunikationssysteme der letzten Jahre verwenden zwei unterschiedliche Kanalcodes. Man spricht dann von  verketteten Codiersystemen  (englisch:  Concatenated Codes). Auch bei relativ kurzen Komponentencodes  C1  und  C2  ergibt sich für den verketteten Code  C  eine hinreichend große Codewortlänge  n, die ja bekanntlich erforderlich ist, um sich der Kanalkapazität anzunähern.

Zunächst seien einige Beispiele aus dem Mobilfunk genannt:

  • Bei  GSM  (Global System for Mobile Communications, zweite Mobilfunkgeneration) wird zunächst die Datenbitrate von  9.6 kbit/s  auf  12 kbit/s  erhöht, um auch in leitungsvermittelten Netzen eine Fehlererkennung zu ermöglichen. Anschließend folgt ein punktierter Faltungscode mit der Ausgangsbitrate  22.8 kbit/s. Die Gesamtcoderate beträgt somit etwa  42.1%.
  • Beim 3G–Mobilfunksystem  UMTS  (Universal Mobile Telecommunications System) verwendet man je nach den Randbedingungen (guter/schlechter Kanal, wenige/viele Teilnehmer in der Zelle) einen  Faltungscode  oder einen  Turbocode  (darunter versteht man per se die Verkettung zweier Faltungscodierer). Beim 4G–Mobilfunksystem  LTE  (Long Term Evolution) verwendet man für kurze Kontrollsignale einen Faltungscode und für die längeren Payload-Daten einen Turbocode.


Parallel verkettetes Codiersystem

Die Grafik zeigt die Grundstruktur eines parallel verketteten Codiersystems. Alle Vektoren bestehen aus  n  Elementen:  L_=(L(1), ..., L(n)). Die Berechnung aller  L–Werte geschieht also auf Symbolebene. Nicht dargestellt ist hier der  Interleaver, der zum Beispiel bei den Turbocodes obligatorisch ist.

  • Die Codesequenzen  x_1  und  x_2  werden zur gemeinsamen Übertragung über den Kanal durch einen Multiplexer zum Vektor  x_  zusammengefügt. Am Empfänger wird die Sequenz  y_  wieder in die Einzelteile  y_1  und  y_2  zerlegt. Daraus werden die Kanal–L–Werte  L_K,1 und  L_K,2  gebildet.
  • Der symbolweise Decoder ermittelt entsprechend der vorne beschriebenen  Vorgehensweise  die extrinsischen L–Werte  L_E,1  und  L_E,2, die gleichzeitig die Apriori–Informationen  L_A,2  und  L_A,1  für den jeweils anderen Decoder darstellen.
  • Nach ausreichend vielen Iterationen (also dann, wenn ein Abbruchkriterium erfüllt ist) liegt am Decoderausgang der Vektor der Aposteriori–Werte   ⇒   L_APP  an. Im Beispiel wird willkürlich der Wert im oberen Zweig genommen. Möglich wäre aber auch der untere  L–Wert.

Das obige Modell gilt insbesondere auch für die Decodierung der Turbo–Codes gemäß dem Kapitel  Grundlegendes zu den Turbocodes.

Aufgaben zum Kapitel


Aufgabe 4.1: Zum „Log Likelihood Ratio”

Aufgabe 4.1Z: L–Werte des BEC–Modells

Aufgabe 4.2: Kanal–LLR bei AWGN

Aufgabe 4.3: Iterative Decodierung beim BSC

Aufgabe 4.3Z: Umrechnungen von L–Wert und S–Wert

Aufgabe 4.4: Extrinsische L–Werte beim SPC

Aufgabe 4.4Z: Ergänzung zur Aufgabe 4.4

Aufgabe 4.5: Nochmals zu den extrinsischen L–Werten

Aufgabe 4.5Z: Tangens Hyperbolikus und Inverse

Quellenverzeichnis

  1. Bossert, M.: Kanalcodierung. Stuttgart: B. G. Teubner, 1998.
  2. Bahl, L.R.; Cocke, J.; Jelinek, F.; Raviv, J.: Optimal Decoding of Linear Codes for Minimizing Symbol Error Rate. In: IEEE Transactions on Information Theory, Vol. IT-20, S. 284-287, 1974.