Difference between revisions of "Channel Coding/Soft-in Soft-Out Decoder"

From LNTwww
Line 6: Line 6:
 
}}
 
}}
  
 +
== # ÜBERBLICK ZUM VIERTEN HAUPTKAPITEL # ==
 +
 +
Das letzte Kapitel 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 [https://de.wikipedia.org/wiki/Claude_Berrou Claude Berrou] und kurz darauf mit der Wiederentdeckung der ''Low–density Parity–check Codes'' durch [https://en.wikipedia.org/wiki/David_J._C._MacKay David J. C. MacKay] und [https://en.wikipedia.org/wiki/Radford_M._Neal Radford M. Neal9, nachdem die schon 1961 von [https://de.wikipedia.org/wiki/Robert_Gray_Gallager Robert G. Gallager] entwickelten LDPC–Codes zwischenzeitlich in Vergessenheit geraten waren.
 +
 +
Im Einzelnen werden in diesem Kapitel behandelt:
 +
 +
    Eine Gegenüberstellung von Hard Decision und Soft Decision,
 +
    die Quantifizierung von Zuverlässigkeitsinformation durch Log Likelihood Ratios,
 +
    das Prinzip der symbolweisen Soft–in Soft–out (SISO) Decodierung,
 +
    die Definition von Apriori–, Aposteriori– und extrinsischem L–Wert,
 +
    die Grundstruktur von seriell 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.
 +
 +
 +
Dieses dritte Hauptkapitel behandelt '''Faltungscodes''' (englisch: ''Convolutional Codes''), die erstmals 1955 von [https://de.wikipedia.org/wiki/Peter_Elias Peter Elias] beschrieben wurden [Eli55]<ref name='Eli55'>Elias, P.: ''Coding for Noisy Channels''. In: IRE Conv. Rec. Part 4,S. 37-47, 1955.</ref>. Während bei den linearen Blockcodes (siehe [[Kanalcodierung/Zielsetzung_der_Kanalcodierung#.23_.C3.9CBERBLICK_ZUM_ERSTEN_HAUPTKAPITEL_.23|Erstes Hauptkapitel]]) und den Reed–Solomon–Codes (siehe [[Kanalcodierung/Einige_Grundlagen_der_Algebra#.23_.C3.9CBERBLICK_ZUM_ZWEITEN_HAUPTKAPITEL_.23|Zweites Hauptkapitel]]) die Codewortlänge jeweils $n$ ist, basiert die Theorie der Faltungscdes auf „semi–infiniten” Informations– und Codesequenzen. Ebenso liefert die Maximum–Likelihood–Decodierung mittels des Viterbi–Algorithmuses per se die gesamte Sequenz.
 +
 +
Im Einzelnen werden in diesem Kapitel behandelt:
 +
 +
*Wichtige ''Definitionen'' für Faltungscodes: Coderate, Gedächtnis, Einflusslänge, freie Distanz
 +
*''Gemeinsamkeiten'' und ''Unterschiede'' zu den linearen Blockcodes,
 +
*''Generatormatrix'' und ''Übertragungsfunktionsmatrix'' eines Faltungscodes,
 +
*''gebrochen–rationale Übertragungsfunktionen'' für systematische Faltungscodes,
 +
*Beschreibung mit ''Zustandsübergangsdiagramm'' und ''Trellisdiagramm'',
 +
*''Terminierung'' und ''Punktierung'' von Faltungscodes,
 +
*''Decodierung'' von Faltungscodes  ⇒  ''Viterbi–Algorithmus'',
 +
*''Gewichtsfunktionen'' und Näherungen für die ''Bitfehlerwahrscheinlichkeit''.
 
== Hard Decision vs. Soft Decision==
 
== Hard Decision vs. Soft Decision==
 
<br>
 
<br>

Revision as of 09:47, 5 December 2017

# ÜBERBLICK ZUM VIERTEN HAUPTKAPITEL #

Das letzte Kapitel 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. Neal9, nachdem die schon 1961 von [https://de.wikipedia.org/wiki/Robert_Gray_Gallager Robert G. Gallager entwickelten LDPC–Codes zwischenzeitlich in Vergessenheit geraten waren.

Im Einzelnen werden in diesem Kapitel behandelt:

   Eine Gegenüberstellung von Hard Decision und Soft Decision,
   die Quantifizierung von Zuverlässigkeitsinformation durch Log Likelihood Ratios,
   das Prinzip der symbolweisen Soft–in Soft–out (SISO) Decodierung,
   die Definition von Apriori–, Aposteriori– und extrinsischem L–Wert,
   die Grundstruktur von seriell 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.


Dieses dritte Hauptkapitel behandelt Faltungscodes (englisch: Convolutional Codes), die erstmals 1955 von Peter Elias beschrieben wurden [Eli55][1]. Während bei den linearen Blockcodes (siehe Erstes Hauptkapitel) und den Reed–Solomon–Codes (siehe Zweites Hauptkapitel) die Codewortlänge jeweils $n$ ist, basiert die Theorie der Faltungscdes auf „semi–infiniten” Informations– und Codesequenzen. Ebenso liefert die Maximum–Likelihood–Decodierung mittels des Viterbi–Algorithmuses per se die gesamte Sequenz.

Im Einzelnen werden in diesem Kapitel behandelt:

  • Wichtige Definitionen für Faltungscodes: Coderate, Gedächtnis, Einflusslänge, freie Distanz
  • Gemeinsamkeiten und Unterschiede zu den linearen Blockcodes,
  • Generatormatrix und Übertragungsfunktionsmatrix eines Faltungscodes,
  • gebrochen–rationale Übertragungsfunktionen für systematische Faltungscodes,
  • Beschreibung mit Zustandsübergangsdiagramm und Trellisdiagramm,
  • Terminierung und Punktierung von Faltungscodes,
  • Decodierung von Faltungscodes ⇒ Viterbi–Algorithmus,
  • Gewichtsfunktionen und Näherungen für die Bitfehlerwahrscheinlichkeit.

Hard Decision vs. Soft Decision


Zur Hinleitung auf die Thematik dieses vierten und letzten Kapitels und zur Motivation betrachten wir das folgende Nachrichtenübertragungssystem mit Codierung.

Betrachtetes Nachrichtenübertragungssystem mit Codierung


Nachfolgend werden alle Symbole in bipolarer Darstellung angegeben: „$0$”  →  „$+1$” und „$1$”  →  „$–1$”.

  • Die Symbolfolge $\underline{u} = (u_1, \ u_2)$ wird der Coderfolge $\underline{x} = (x_1, \ x_2, \ x_3) = (u_1, \ u_2, \ p)$ zugeordnet, wobei für das Paritybit $p = u_1 ⊕ u_2$ gilt  ⇒  Single Parity–check Code  ⇒  ${\rm SPC} (3, 2, 2)$.
  • Der AWGN–Kanal verändert die Binärsymbole $x_i ∈ \{+1, \ –1\}$ zu reellwertigen Ausgangswerten $y_i$, z.B. im Block 4 der unteren Tabelle:   $x_1 = +1$  ⇒  $y_1 = +0.9$ und $x_3 = \, –1$  ⇒  $y_3 = +0.1$.
  • Das obige Blockschaltbild in seiner Gesamtheit entspricht ML–HD. Hier werden zur Detektion nur die Vorzeichen der AWGN–Ausgangswerte entsprechend $y_{\rm HD, \ \it i} = {\rm sign}[y_{\rm SD, \ \it i}]$ ausgewertet.
  • Bei Soft Decision (ML–SD) verzichtet man auf den schraffierten Block in obigem Blockschaltbild und wertet direkt die wertkontinuierlichen Eingangsgrößen $y_{\rm SD, \ \it i}$ aus.
Gegenüberstellung von Hard Decision und Soft Decision


Aus der Beispieltabelle erkennt man:

  • Hard Decision  ⇒ die Symbolfolge $\underline{\upsilon}_{\rm HD}$ ergibt sich aus den hart entschiedenen Kanalwerten $\underline{y}_{\rm HD}$ (blaue Hinterlegung): Es werden nur die beiden ersten Blöcke fehlerfrei decodiert.
  • Soft Decision  ⇒ die Symbolfolge $\underline{\upsilon}_{\rm SD}$ ergibt sich aus den „weichen” Kanalausgangswerten $\underline{y}_{\rm SD}$ (grüne Hinterlegung): Nun wird in diesem Beispiel auch der dritte Block richtig entschieden.

Die Bildbeschreibung wird auf der nächsten Seite fortgesetzt.

Hard Decision vs. Soft Decision (2)


Für alle Spalten der folgenden Tabelle wird vorausgesetzt:

  • der Nachrichtenblock $\underline{u} = (0, 1)$, bipolar darstellbar als $(+1, \, –1)$,
  • der ${\rm SPC} \ (3, 2)$–codierte Block $\underline{x} = (0, 1, 1)$ bzw. in Bipolardarstellung $(+1, \, –1, \, –1)$.

Die vier Blöcke unterscheiden sich also nur durch unterschiedliche AWGN–Realisierungen.

Gegenüberstellung von Hard Decision und Soft Decision


Die Tabelle ist wie folgt zu interpretieren:

  • Bei idealem Kanal entsprechend Block 1  ⇒  $\underline{x} = \underline{y}_{\rm SD} = \underline{y}_{\rm HD}$ gibt es keinen Unterschied zwischen der (blauen) herkömmlichen ML–HD –Variante und der (grünen) ML–SD –Variante.
  • Der Block 2 demonstriert geringe Signalverfälschungen. Wegen $\underline{y}_{\rm HD} = \underline{x}$ (das heißt, dass der Kanal die Vorzeichen nicht verfälscht) liefert auch ML–HD das richtige Ergebnis $\underline{\upsilon}_{\rm HD} = \underline{u}$.
  • Dagegen gilt im dritten Block $\underline{y}_{\rm HD} ≠ \underline{x}$ und es gibt auch keine ${\rm SPC} \ (3, 2)$–Zuordnung $\underline{u}$  ⇒  $\underline{y}_{\rm HD}$. Der ML–Decoder kann hier nur durch die Ausgabe $\underline{\upsilon}_{\rm HD} = \rm (E, \ E)$ vermelden, dass er bei der Decodierung dieses Blocks gescheitert ist. „$\rm E$” steht hierbei für Erasure (deutsch: Auslöschung).
  • Auch der Soft Decision Decoder erkennt, dass eine Decodierung anhand der Vorzeichen nicht funktioniert. Anhand der $\underline{y}_{\rm SD}$–Werte erkennt er aber, dass mit großer Wahrscheinlichkeit das zweite Bit verfälscht wurde und entscheidet sich für die richtige Symbolfolge $\underline{\upsilon}_{\rm SD} = (+1, \, –1) = \underline{u}$.
  • Im vierten Block werden durch den AWGN–Kanal sowohl die Vorzeichen von Bit 2 als auch von Bit 3 verändert, was zum Ergebnis $\underline{\upsilon}_{\rm HD} = (+1, +1) ≠ \underline{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 Block 1 seinen Maximalwert,
  • wäre bei Block 2 deutlich kleiner,
  • läge bei Block 3 und 4 nahe bei $0$.

Zuverlässigkeitsinformation – Log Likelihood Ratio (1)


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

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

\[L(x)={\rm ln} \hspace{0.15cm} \frac{{\rm Pr}(x = +1)}{{\rm Pr}(x = -1)}\hspace{0.05cm}.\]

Bei unipolarer/symbolhafter Darstellung ($+1 → 0$  und  $–1 → 1$) gilt entsprechend mit $\xi ∈ \{0, 1\}$:

\[L(\xi)={\rm ln} \hspace{0.15cm} \frac{{\rm Pr}(\xi = 0)}{{\rm Pr}(\xi = 1)}\hspace{0.05cm}.\]


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

Wahrscheinlichkeit und L–Wert

Man erkennt:

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

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

\[L(y\hspace{0.05cm}|\hspace{0.05cm}x) \hspace{-0.15cm} = \hspace{-0.15cm} {\rm ln} \hspace{0.15cm} \frac{{\rm Pr}(y\hspace{0.05cm}|\hspace{0.05cm}x = +1)}{{\rm Pr}(y\hspace{0.05cm}|\hspace{0.05cm}x = -1)} = \] \[\hspace{-0.15cm} = \hspace{-0.15cm} \left\{ \begin{array}{c} {\rm ln} \hspace{0.15cm} [(1 - \varepsilon)/\varepsilon]\\ {\rm ln} \hspace{0.15cm} [\varepsilon/(1 - \varepsilon)] \end{array} \right.\quad \begin{array}{*{1}c} {\rm f\ddot{u}r} \hspace{0.15cm} y = +1, \\ {\rm f\ddot{u}r} \hspace{0.15cm} y = -1. \\ \end{array}\]

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

\[L(y = +1\hspace{0.05cm}|\hspace{0.05cm}x) = {\rm ln} \hspace{0.15cm} \frac{0.9}{0.1} = +2.197\hspace{0.05cm}, \hspace{0.2cm} L(y = -1\hspace{0.05cm}|\hspace{0.05cm}x) = -2.197\hspace{0.05cm}.\]

Dieses Beispiel zeigt, dass man die sog. $L$–Wert–Algebra auch auf bedingte Wahrscheinlichkeiten anwenden kann. In Aufgabe Z4.1 wird das BEC–Modell in ähnlicher Weise beschrieben.


Zuverlässigkeitsinformation – Log Likelihood Ratio (2)


Wir betrachten nun den AWGN–Kanal mit den beiden bedingten Wahrscheinlichkeitsdichtefunktionen

\[f_{y \hspace{0.03cm}| \hspace{0.03cm}x=+1 } \hspace{0.05cm} (y \hspace{0.05cm}| \hspace{0.05cm}x=+1 )\hspace{-0.1cm} = \hspace{-0.1cm} \frac {1}{\sqrt{2\pi} \cdot \sigma } \cdot {\rm e} ^{ - {(y-1)^2}/(2\sigma^2) } \hspace{0.05cm},\] \[f_{y \hspace{0.03cm}| \hspace{0.03cm}x=-1 } \hspace{0.05cm} (y \hspace{0.05cm}| \hspace{0.05cm}x=-1 )\hspace{-0.1cm} = \hspace{-0.1cm} \frac {1}{\sqrt{2\pi} \cdot \sigma } \cdot {\rm e} ^{ - {(y+1)^2}/(2\sigma^2) } \hspace{0.05cm}.\]

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

Bedingte AWGN–Dichtefunktionen


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

\[f_{y } \hspace{0.05cm} (y ) = 1/2 \cdot \big [ f_{y \hspace{0.03cm}| \hspace{0.03cm}x=+1 } \hspace{0.05cm} (y \hspace{0.05cm}| \hspace{0.05cm}x=+1 ) \hspace{0.1cm} + \hspace{0.1cm} f_{y \hspace{0.03cm}| \hspace{0.03cm}x=-1 } \hspace{0.05cm} (y \hspace{0.05cm}| \hspace{0.05cm}x=-1 ) \big ] \hspace{0.05cm}.\]

Berechnen wir nun die Wahrscheinlichkeit, dass der Empfangswert $y$ in einem (sehr) schmalen Intervall der Breite $\Delta$ um $y_0 = 0.25$ liegt, so erhält man näherungsweise

\[{\rm Pr} (|y - y_0| \le{\it \Delta}/2 \hspace{0.05cm} \Big | \hspace{0.05cm}x=+1 )\hspace{-0.1cm} \approx \hspace{-0.1cm} \frac {\it \Delta}{\sqrt{2\pi} \cdot \sigma } \cdot {\rm e} ^{ - {(y_0-1)^2}/(2\sigma^2) } \hspace{0.05cm},\] \[{\rm Pr} (|y - y_0| \le {\it \Delta}/2 \hspace{0.05cm} \Big | \hspace{0.05cm}x=-1 )\hspace{-0.1cm} \approx \hspace{-0.1cm} \frac {\it \Delta}{\sqrt{2\pi} \cdot \sigma } \cdot {\rm e} ^{ - {(y_0+1)^2}/(2\sigma^2) } \hspace{0.05cm}.\]

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 = y_0\hspace{0.05cm}|\hspace{0.05cm}x) \hspace{-0.1cm} = \hspace{-0.1cm} {\rm ln} \hspace{0.15cm} \left [ \frac{{\rm e} ^{ - {(y_0-1)^2}/(2\sigma^2)}}{{\rm e} ^{ - {(y_0+1)^2}/(2\sigma^2)}} \right ] = {\rm ln} \left [ {\rm e} ^{ - [ {(y_0-1)^2}+{(y_0+1)^2}]/(2\sigma^2)} \right ]\hspace{0.15cm} = \] \[\hspace{2.4cm} = \hspace{-0.1cm} \frac{(y_0+1)^2-(y_0-1)^2}{2\cdot \sigma^2} = \frac{2 \cdot y_0}{\sigma^2}\hspace{0.05cm}. \]

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

\[L(y \hspace{0.05cm}|\hspace{0.05cm}x) = {2 \cdot y}/{\sigma^2} =K_{\rm L} \cdot y\hspace{0.05cm}. \]

Hierbei ist $K_{\rm L} = 2/\sigma^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 $\underline{x} = (x_1, \ ... \ , \ x_n)$ durch den Kanal in das Empfangswort $\underline{y} = (y_1, \ ... \ , \ y_n)$ 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 $2^k$ zulässigen Codeworten $\underline{x}_j ∈ C$ dasjenige mit der größten Rückschlusswahrscheinlichkeit (englisch: A Posteriori Probability, APP) finden. Das auszugebende Codewort $\underline{z}$ wäre in diesem Fall

\[\underline{z} = {\rm arg} \max_{\underline{x}_{\hspace{0.03cm}j} \hspace{0.03cm} \in \hspace{0.05cm} \mathcal{C}} \hspace{0.1cm} {\rm Pr}( \underline{x}_{\hspace{0.03cm}j} |\hspace{0.05cm} \underline{y} ) \hspace{0.05cm}.\]

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 $x_i ∈ \{0, 1\}$ entsprechend maximaler Rückschlusswahrscheinlichkeit ${\rm Pr}(x_i | \underline{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:
\[L_{\rm APP} (i) = L(x_i\hspace{0.05cm}|\hspace{0.05cm}\underline{y}) = {\rm ln} \hspace{0.15cm} \frac{{\rm Pr}(x_i = 0\hspace{0.05cm}|\hspace{0.05cm}\underline{y})}{{\rm Pr}(x_i = 1\hspace{0.05cm}|\hspace{0.05cm}\underline{y})}\hspace{0.05cm} . \]
  • Der Decoder arbeitet iterativ. Bei der Initialisierung (gekennzeichnet durch den Parameter $I = 0$) ist $L_{\rm APP}(i) = L_{\rm K}(i)$, wobei das Kanal–LLR $L_{\rm K}(i)$ durch den Empfangswert $y_i$ gegeben ist.
  • Berechnet wird zudem der extrinsische $L$–Wert $L_{\rm E}(i)$, der die gesamte Information quantifiziert, die alle anderen Bits $(j ≠ i)$ aufgrund der Code–Eigenschaften über das betrachtete $i$–te Bit liefern.
  • Bei der nächsten Iteration (ab $I = 1$) wird $L_{\rm E}(i)$ bei der Berechnung von $L_{\rm APP}(i)$ als Apriori–Information $L_{\rm A}(i)$ berücksichtigt. Für das neue Aposteriori–LLR in der Iteration $I + 1$ gilt somit:
\[L_{\hspace{0.1cm}\rm APP}^{(I+1)} (i) = L_{\hspace{0.1cm}\rm APP}^{(I)} (i) + L_{\hspace{0.1cm}\rm A}^{(I+1)} (i) = L_{\hspace{0.1cm}\rm APP}^{(I)} (i) + L_{\hspace{0.1cm}\rm E}^{(I)} (i)\hspace{0.05cm} . \]
  • Die Iterationen werden fortgesetzt, bis alle $|L_{\rm APP}(i)|$ größer sind als ein vorzugebender Wert. Das wahrscheinlichste Codewort $\underline{z}$ ergibt sich dann aus den Vorzeichen aller $L_{\rm APP}(i)$, mit $i = 1, \ ... , \ n$.
  • Bei einem systematischen Code geben die ersten $k \ {\rm Bit}$ von $\underline{z}$ das gesuchte Informationswort an, das mit großer Wahrscheinlichkeit mit der gesendeten Nachricht $\underline{u}$ übereinstimmen wird.

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

Zur Berechnung der extrinsischen L–Werte (1)


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

: Der extrinsische $L$–Wert (englisch: extrinsic LLR) ist ein Maß für die Informationen, den die anderen Symbole $(j ≠ i)$ des Codewortes über das $i$–te Codesymbol liefern, ausgedrückt als Log–Likelihood–Verhältnis. Wir benennen diesen Kennwert mit $L_{\rm E}(i)$.


Wir berechnen nun die extrinsischen $L$–Werte $L_{\rm E}(i)$ für zwei beispielhafte Codes.

Repetition Code ⇒ ${\rm RC} \ (n, 1, n)$

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

\[L_{\rm E}(i) = \hspace{0.05cm}\sum_{j \ne i} \hspace{0.1cm} L_j \hspace{0.3cm}{\rm mit}\hspace{0.3cm}L_j = L_{\rm APP}(j) \hspace{0.05cm}.\]

Ist die Summe über alle $L_{j ≠ i}$ positiv, so bedeutet dies aus Sicht der anderen $L$–Werte eine Präferenz für „$x_i = 0$”. Bei negativer Summe ist „$x_i = 1$” wahrscheinlicher. $L_{\rm E}(i) = 0$ erlaubt keine Vorhersage.

: Wir betrachten die Decodierung eines Wiederholungscodes $(n = 4)$, wobei gelten soll:
  • $\underline{L} = (+1, \, –1, +3, \, –1)$  ⇒  $\underline{L}_{\rm E} = (+1, +3, \, –1, +3) \text{:} \, L_{\rm E}(1)$ ist positiv, obwohl zwei der anderen $L$–Werte (Mehrheit) negativ sind  ⇒  Präferenz für „$x_1 = 0$”. Alle Aposteriori–$L$–Werte sind nach einer Iteration positiv  ⇒  Informationsbit ist $u = 0$. Weitere Iterationen bringen nichts.
Decodierbeispiel 1 für den ${\rm RC} \ (3, 1)$

  • $\underline{L} = (+1, +1, \, –4, +1)  ⇒  \underline{L}_{\rm E} = (–2, \, –2, +3, \, –2) \text{:} \, $ Alle Aposteriori–L–Werte sind nach zwei Iterationen negativ  ⇒  Informationsbit ist $u = 1$  ⇒  zu Beginn waren drei Vorzeichen falsch.
Decodierbeispiel 2 für den ${\rm RC} \ (3, 1)$

  • $\underline{L} = (+1, +1, \, –3, +1)  ⇒  \underline{L}_{\rm E} = (–1, \, –1, +3, \, –1) \text{:} \, $ Alle Aposteriori–$L$–Werte sind nach einer Iteration $0$  ⇒  Informationsbit kann nicht decodiert werden. Weitere Iterationen bringen nichts.
Decodierbeispiel 3 für den ${\rm RC} \ (3, 1)$


Zur Berechnung der extrinsischen L–Werte (2)


Single Parity–check Code ⇒ ${\rm SPC} \ (n, \ n \, –1, \ 2)$

Bei jedem Single Parity–check Code ist die Anzahl der Einsen in jedem Codewort geradzahlig. Oder anders ausgedrückt: Für jedes Codewort $\underline{x}$ ist das Kanalcodierung/Zielsetzung der Kanalcodierung $w_{\rm H}(\underline{x})$ geradzahlig.

Das Codewort $\underline{x}^{(–i)}$ beinhalte alle Symbole mit Ausnahme von $x_i$  ⇒  Vektor der Länge $n \, –1$. Damit lautet der extrinsische $L$–Wert bezüglich dieses $i$–ten Symbols, wenn $\underline{x}$ empfangen wurde:

\[L_{\rm E}(i) = {\rm ln} \hspace{0.15cm}\frac{{\rm Pr} \left [w_{\rm H}(\underline{x}^{(-i)})\hspace{0.15cm}{\rm ist \hspace{0.15cm} gerade} \hspace{0.05cm} | \hspace{0.05cm}\underline{y} \hspace{0.05cm}\right ]}{{\rm Pr} \left [w_{\rm H}(\underline{x}^{(-i)})\hspace{0.15cm}{\rm ist \hspace{0.15cm} ungerade} \hspace{0.05cm} | \hspace{0.05cm}\underline{y} \hspace{0.05cm}\right ]} \hspace{0.05cm}.\]

Wie in der Aufgabe A4.4 gezeigt werden soll, kann hierfür auch geschrieben werden:

\[L_{\rm E}(i) = 2 \cdot {\rm tanh}^{-1} \hspace{0.1cm} \left [ \prod\limits_{j \ne i}^{n} \hspace{0.15cm}{\rm tanh}(L_j/2) \right ] \hspace{0.3cm}{\rm mit}\hspace{0.3cm}L_j = L_{\rm APP}(j) \hspace{0.05cm}.\]

: Wir gehen vom Single Parity–check Code mit $n = 3, \ k = 2$  ⇒  kurz ${\rm SPC} \ (3, \ 2, \ 2)$ aus. Die $2^k = 4$ gültigen Codeworte $\underline{x} = \{x_1, x_2, x_3\}$ lauten bei bipolarer Beschreibung  ⇒  $x_i ∈ \{±1\}$:

\[ \underline{x}_0 \hspace{-0.05cm}=\hspace{-0.05cm} (+1\hspace{-0.03cm},\hspace{-0.05cm}+1\hspace{-0.03cm},\hspace{-0.05cm}+1)\hspace{-0.05cm}, \hspace{0.3cm} \underline{x}_1 \hspace{-0.05cm}=\hspace{-0.05cm} (+1\hspace{-0.03cm},\hspace{-0.05cm} -1\hspace{-0.03cm},\hspace{-0.05cm} -1)\hspace{-0.05cm}, \hspace{0.3cm} \underline{x}_2 \hspace{-0.05cm}=\hspace{-0.05cm} (-1\hspace{-0.03cm},\hspace{-0.05cm} +1\hspace{-0.03cm},\hspace{-0.05cm} -1)\hspace{-0.05cm}, \hspace{0.3cm} \underline{x}_3 \hspace{-0.05cm}=\hspace{-0.05cm} (-1\hspace{-0.03cm},\hspace{-0.05cm} -1\hspace{-0.03cm},\hspace{-0.05cm} +1)\hspace{-0.05cm}. \]

Bei diesem Code ist also das Produkt $x_1 \cdot x_2 \cdot x_3$ stets positiv.

Decodierbeispiel für den ${\rm SPC} \ (3, 2)$

Die Tabelle zeigt den Decodiervorgang für $\underline{L}_{\rm APP} = (+2.0, +0.4, \, –1.6)$. Die harte Entscheidung nach den Vorzeichen von $L_{\rm APP}(i)$ ergäbe hier $(+1, +1, \, –1)$, also kein gültiges Codewort des ${\rm SP}(3, \ 2, \ 2)$.

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

\[L_{\rm E}(1) \hspace{-0.15cm} = \hspace{-0.15cm} 2 \cdot {\rm tanh}^{-1} \hspace{0.05cm} \left [ {\rm tanh} (0.2) \cdot {\rm tanh} (-0.8)\hspace{0.05cm}\right ] = -0.131\hspace{0.05cm}, \] \[L_{\rm E}(2) \hspace{-0.15cm} = \hspace{-0.15cm}2 \cdot {\rm tanh}^{-1} \hspace{0.05cm} \left [ {\rm tanh} (1.0) \cdot {\rm tanh} (-0.8)\hspace{0.05cm}\right ] = -0.518\hspace{0.05cm}, \] \[L_{\rm E}(3) \hspace{-0.15cm} = \hspace{-0.15cm}2 \cdot {\rm tanh}^{-1} \hspace{0.05cm} \left [ {\rm tanh} (1.0) \cdot {\rm tanh} (0.2)\hspace{0.05cm}\right ] = +0.151\hspace{0.05cm}.\]

Die zweite Gleichung lässt sich wie folgt interpretieren:

  • $L_{\rm APP}(1) = +2.0$ und $L_{\rm APP}(3) = \, –1.6$ sagen aus, dass Bit 1 eher „$+1$” als „$–1$” ist und Bit 3 eher „$–1$” als „$+1$”. Die Zuverlässigkeit (Betrag) ist beim ersten Bit etwas größer als beim dritten.
  • Die extrinsische Information $L_{\rm E}(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 $y_2$ abgeleitete $L$–Wert  ⇒  $L_{\rm APP}(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 $\underline{x}_1$. Bei $0.518 < L_{\rm APP}(2) < 1.6$ würde das Ergebnis $\underline{x}_1$ erst nach mehreren Iterationen vorliegen. Für $L_{\rm APP}(2) > 1.6$ liefert der Decoder dagegen $\underline{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][3]. Der Algorithmus weist viele Parallelen zur sieben Jahren älteren Viterbi–Decodierung auf, doch auch 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 $L' = 5$ (mit Terminierung).

  • Der Viterbi–Algorithmus sucht und findet den wahrscheinlichsten Pfad von ${\it \Gamma}_0(S_0)$ nach ${\it \Gamma}_5(S_0)$, nämlich $S_0 → S_1 → S_0 → S_0 → S_1$. Wir verweisen auf die Musterlösung zur Aufgabe Z3.9.

Die Skizze für den BCJR–Algorithmus verdeutlicht die Gewinnung des extrinsischen $L$–Wertes für das dritte Symbol  ⇒  $L_{\rm E}(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 $\alpha_1, \ \alpha_2, \ ... , \ \alpha_5$. Zur Berechnung von $L_{\rm E}(3)$ benötigt man hiervon $\alpha_2$.
  • Anschließend durchläuft man das Trellisdiagramm rückwärts (also von rechts nach links) und erhält damit die Metriken $\beta_4, \ \beta_3, \ ... , \ \beta_0$ entsprechend der unteren Skizze.
  • Der gesuchte extrinsische $L$–Wert $L_{\rm E}(3)$ ergibt sich aus den Metriken $\alpha_2$ (in Vorwärtsrichtung) und $\beta_3$ (in Rückwärtsrichtung) sowie der Apriori–Information $\gamma_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 $C_1$ und $C_2$ 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 \ \rm kbit/s$ auf $12 \ \rm 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 \ \rm 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: $\underline{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 $\underline{x}_1$ und $\underline{x}_2$ werden zur gemeinsamen Übertragung über den Kanal durch einen Multiplexer zum Vektor $\underline{x}$ zusammengefügt. Am Empfänger wird die Sequenz $\underline{y}$ wieder in die Einzelteile $\underline{y}_1$ und $\underline{y}_2$ zerlegt. Daraus werden die Kanal–$L$–Werte $\underline{L}_{\rm K,1}$ und $\underline{L}_{K,2}$ gebildet.
  • Der symbolweise Decoder ermittelt entsprechend der vorne beschriebenen Vorgehensweise die extrinsischen $L$–Werte $\underline{L}_{\rm E, 1}$ und $\underline{L}_{E, 2}$, die gleichzeitig die Apriori–Informationen $\underline{L}_{\rm A, 2}$ und $\underline{L}_{\rm 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  ⇒  $\underline{L}_{\rm 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äß Kapitel 4.3.

Aufgaben


A4.1 Zum „Log Likelihood Ratio”

Zusatzaufgaben:4.1 L–Werte des BEC–Modells

A4.2 Kanal–LLR bei AWGN

A4.3 Iterative Decodierung beim BSC

Zusatzaufgaben:4.3 Umrechnung von L–Wert und S–Wert

A4.4 Extrinsische L–Werte beim SPC

Zusatzaufgaben:4.4 Ergänzung zur Aufgabe A4.4

Quellenverzeichnis

  1. Elias, P.: Coding for Noisy Channels. In: IRE Conv. Rec. Part 4,S. 37-47, 1955.
  2. Bossert, M.: Kanalcodierung. Stuttgart: B. G. Teubner, 1998.
  3. 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.