Kanalcodierung/Soft–in Soft–out Decoder: Unterschied zwischen den Versionen

Aus LNTwww
Wechseln zu:Navigation, Suche
Zeile 173: Zeile 173:
  
 
Diese Beschreibung des SISO&ndash;Decodierers nach [Bos98]<ref>Bossert, M.: ''Kanalcodierung.'' Stuttgart: B. G. Teubner, 1998.</ref> soll in erster Linie die unterschiedlichen <i>L</i>&ndash;Werte verdeutlichen. Das große Potential der symbolweisen Decodierung erkennt man allerdings erst im Zusammenhang mit verketteten Codiersystemen.<br>
 
Diese Beschreibung des SISO&ndash;Decodierers nach [Bos98]<ref>Bossert, M.: ''Kanalcodierung.'' Stuttgart: B. G. Teubner, 1998.</ref> soll in erster Linie die unterschiedlichen <i>L</i>&ndash;Werte verdeutlichen. Das große Potential der symbolweisen Decodierung erkennt man allerdings erst im Zusammenhang mit verketteten Codiersystemen.<br>
 +
 +
== Zur Berechnung der extrinsischen L–Werte (1) ==
 +
<br>
 +
Die Schwierigkeit bei der symbolweisen iterativen Decodierung ist im allgemeinen die Bereitstellung der extrinsischen <i>L</i>&ndash;Werte <i>L</i><sub>E</sub>(<i>i</i>). Bei einem Code der Länge <i>n</i> gilt hierbei für die Laufvariable: <i>i</i> = 1, ... , <i>n</i>.<br>
 +
 +
{{Definition}}''':''' Der <b> extrinsische <i>L</i>&ndash;Wert</b> (englisch: <i>extrinsic LLR</i>) ist ein Maß für die Informationen, den die anderen Symbole (<i>j</i> &ne; <i>i</i>) des Codewortes über das <i>i</i>&ndash;te Codesymbol liefern, ausgedrückt als Log&ndash;Likelihood&ndash;Verhältnis. Wir benennen diesen Kennwert mit <i>L</i><sub>E</sub>(<i>i</i>).{{end}}<br>
 +
 +
Wir berechnen nun die extrinsischen <i>L</i>&ndash;Werte <i>L</i><sub>E</sub>(<i>i</i>) für zwei beispielhafte Codes.<br><br>
 +
 +
<b>Repetition Code &#8658; RC (<i>n</i>, 1, <i>n</i>)</b><br>
 +
 +
Ein Wiederholungscode zeichnet sich dadurch aus, dass alle <i>n</i> Codesymbole <i>x<sub>i</sub></i> &#8712; {0, 1} identisch sind. Der extrinsische <i>L</i>&ndash;Wert für das <i>i</i>&ndash;ten Symbol ist hier sehr einfach anzugeben und lautet:
 +
 +
:<math>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}.</math>
 +
 +
Ist die Summe über alle <i>L</i><sub><i>j</i>&ne;<i>i</i></sub> positiv, so bedeutet dies aus Sicht der anderen <i>L</i>&ndash;Werte eine Präferenz für &bdquo;<i>x<sub>i</sub></i> = 0&rdquo;. Bei negativer Summe ist &bdquo;<i>x<sub>i</sub></i> = 1&rdquo; wahrscheinlicher. <i>L</i><sub>E</sub>(<i>i</i>) = 0 erlaubt keine Vorhersage.<br>
 +
 +
{{Beispiel}}''':''' Wir betrachten die Decodierung eines Wiederholungscodes (<i>n</i> = 4), wobei gelten soll:
 +
*<u><i>L</i></u> = (+1, &ndash;1, +3, &ndash;1) &nbsp;&#8658;&nbsp;  <u><i>L</i></u><sub>E</sub> = (+1, +3, &ndash;1, +3): <i>L</i><sub>E</sub>(1) ist positiv, obwohl zwei der anderen
 +
<i>L</i>&ndash;Werte (Mehrheit) negativ sind &nbsp;&#8658;&nbsp;  Präferenz für &bdquo;<i>x</i><sub>1</sub> = 0&rdquo;. Alle Aposteriori&ndash;<i>L</i>&ndash;Werte sind
 +
nach einer Iteration positiv &nbsp;&#8658;&nbsp; Informationsbit ist <i>u</i> = 0. Weitere Iterationen bringen nichts.<br>
 +
 +
[[Datei:P ID3094 KC T 4 4 S3a neu v2.png|Decodierbeispiel 1 für den RC (3, 1)|class=fit]]<br>
 +
 +
*<u><i>L</i></u> = (+1, +1, &ndash;4, +1) &nbsp;&#8658;&nbsp;  <u><i>L</i></u><sub>E</sub> = (&ndash;2, &ndash;2, +3, &ndash;2): Alle Aposteriori&ndash;<i>L</i>&ndash;Werte sind
 +
nach zwei Iterationen negativ &nbsp;&#8658;&nbsp; Informationsbit ist <i>u</i> = 1 &nbsp;&#8658;&nbsp; zu Beginn waren drei Vorzeichen falsch.<br>
 +
 +
[[Datei:P ID3096 KC T 4 4 S3c neu v1.png|Decodierbeispiel 2 für den RC (3, 1)|class=fit]]<br>
 +
 +
*<u><i>L</i></u> = (+1, +1, &ndash;3, +1) &nbsp;&#8658;&nbsp;  <u><i>L</i></u><sub>E</sub> = (&ndash;1, &ndash;1, +3, &ndash;1): Alle Aposteriori&ndash;<i>L</i>&ndash;Werte sind
 +
nach einer Iteration 0 &nbsp;&#8658;&nbsp; Informationsbit kann nicht decodiert werden. Weitere Iterationen bringen nichts.<br>
 +
 +
[[Datei:P ID3095 KC T 4 4 S3b neu v1.png|Decodierbeispiel 3 für den RC (3, 1)|class=fit]]{{end}}<br>
 +
 +
== Zur Berechnung der extrinsischen L–Werte (2) ==
 +
<br>
 +
<b>Single Parity&ndash;check Code &#8658; SPC (<i>n</i>, <i>n</i> &ndash;1, 2)
 +
</b><br>
 +
 +
Bei jedem <i>Single Parity&ndash;check Code</i> ist die Anzahl der Einsen in jedem Codewort geradzahlig. Oder anders ausgedrückt: Für jedes Codewort <u><i>x</i></u> ist das Hamming&ndash;Gewicht <i>w</i><sub>H</sub>(<u><i>x</i></u>) geradzahlig.<br>
 +
 +
Das Codewort <u><i>x</i></u><sup>(&ndash;<i>i</i>)</sup> beinhalte alle Symbole mit Ausnahme von <i>x<sub>i</sub></i> &nbsp;&#8658;&nbsp; Vektor der Länge <i>n</i> &ndash; 1. Damit lautet der extrinsische <i>L</i>&ndash;Wert bezüglich dieses <i>i</i>&ndash;ten Symbols, wenn <u><i>x</i></u> empfangen wurde:
 +
 +
:<math>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}.</math>
 +
 +
Wie in der Aufgabe A4.4 gezeigt werden soll, kann hierfür auch geschrieben werden:
 +
 +
:<math>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}.</math>
 +
 +
{{Beispiel}}''':''' Wir gehen vom <i>Single Parity&ndash;check Code</i> mit <i>n</i> = 3, <i>k</i> = 2  &nbsp;&#8658;&nbsp; kurz  <b>SPC (3, 2, 2)</b> aus. Die <nobr>2<sup><i>k</i></sup> = 4</nobr> gültigen Codeworte <u><i>x</i></u> = {<i>x</i><sub>1</sub>, <i>x</i><sub>2</sub>, <i>x</i><sub>3</sub>} lauten bei bipolarer Beschreibung &nbsp;&#8658;&nbsp; <i>x<sub>i</sub></i> &#8712; {&plusmn;1}:
 +
 +
:<math> \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}. </math>
 +
 +
Bei diesem Code ist also das Produkt <i>x</i><sub>1</sub>&nbsp;&middot;&nbsp;<i>x</i><sub>2</sub>&nbsp;&middot;&nbsp;<i>x</i><sub>3</sub> stets positiv.<br>
 +
 +
[[Datei:P ID3098 KC T 4 1 S3e v1.png|Decodierbeispiel für den SPC (3, 2)|class=fit]]<br>
 +
 +
Die Tabelle zeigt den Decodiervorgang für <u><i>L</i></u><sub>APP</sub> = (+2.0, +0.4, &ndash;1.6). Die harte Entscheidung nach den Vorzeichen von <i>L</i><sub>APP</sub>(<i>i</i>) ergäbe hier (+1, +1, &ndash;1), also kein gültiges Codewort des SP(3, 2, 2).<br>
 +
 +
Rechts sind in der Tabelle die dazugehörigen extrinsischen <i>L</i>&ndash;Werte eingetragen:<br>
 +
 +
:<math>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}, </math>
 +
:<math>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}, </math>
 +
:<math>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}.</math>
 +
 +
Die zweite Gleichung lässt sich wie folgt interpretieren:
 +
*<i>L</i><sub>APP</sub>(1) = +2.0 und <i>L</i><sub>APP</sub>(3) = &ndash;1.6 sagen aus, dass Bit 1 eher &bdquo;+1&rdquo;  als &bdquo;&ndash;1&rdquo; ist  und Bit 3 eher &bdquo;&ndash;1&rdquo; als &bdquo;+1&rdquo;. Die Zuverlässigkeit (Betrag) ist beim ersten Bit etwas größer als beim dritten.<br>
 +
 +
*Die extrinsische Information <i>L</i><sub>E</sub>(2) = &ndash;0.518 berücksichtigt nur die Informationen von Bit 1 und Bit 3 über Bit 2. Aus deren Sicht ist das zweite Bit eine &bdquo;&ndash;1&rdquo; mit der Zuverlässigkeit 0.518.<br>
 +
 +
*Der vom Empfangswert <i>y</i><sub>2</sub> abgeleitete <i>L</i>&ndash;Wert &nbsp;&#8658;&nbsp; <i>L</i><sub>APP</sub>(2) = +0.4 hat für das zweite Bit eine &bdquo;+1&rdquo; vermuten lassen. Die Diskrepanz wird hier bereits in der Iteration <i>I</i> = 1 aufgelöst.<br>
 +
 +
*Entschieden wird hier für das Codewort <u><i>x</i></u><sub>1</sub>. Bei 0.518 < <i>L</i><sub>APP</sub>(2) < 1.6 würde das Ergebnis <u><i>x</i></u><sub>1</sub> erst nach mehreren Iterationen vorliegen. Für <i>L</i><sub>APP</sub>(2) > 1.6 liefert der Decoder dagegen <u><i>x</i></u><sub>0</sub>.{{end}}<br>
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
  
  

Version vom 17. Januar 2017, 16:14 Uhr

Hard Decision vs. Soft Decision (1)


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 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, z.B. im Block 4 der unteren Tabelle:   x1 = +1  ⇒  y1 = +0.9  und   x3 = –1  ⇒  y3 = +0.1.
  • Die Decodierung geschieht gemäß dem Kriterium Maximum Likelihood (block–wise ML), wobei zwischen Hard Decision (ML–HD) und Soft Decision (ML–SD) zu unterscheiden ist.
  • Das obige Blockschaltbild in seiner Gesamtheit entspricht ML–HD. Hier werden zur Detektion nur die Vorzeichen der AWGN–Ausgangswerte entsprechend  yHD, i = sign[ySD, i]  ausgewertet.
  • Bei Soft Decision (ML–SD) verzichtet man auf den schraffierten Block in obigem Blockschaltbild und wertet direkt die wertkontinuierlichen Eingangsgrößen ySD, i aus.

Gegenüberstellung von Hard Decision und Soft Decision

Aus der Beispieltabelle erkennt man:

  • Hard Decision  ⇒ die Symbolfolge υHD ergibt sich aus den hart entschiedenen Kanalwerten yHD (blaue Hinterlegung): Es werden nur die beiden ersten Blöcke fehlerfrei decodiert.
  • Soft Decision  ⇒ die Symbolfolge υSD ergibt sich aus den „weichen” Kanalausgangswerten ySD (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 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 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  ⇒  x = ySD = yHD 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 yHD = x (das heißt, dass der Kanal die Vorzeichen nicht verfälscht) liefert auch ML–HD das richtige Ergebnis υHD = u.
  • Dagegen gilt im dritten Block yHDx und es gibt auch keine SPC (3, 2)–Zuordnung u  ⇒  yHD. Der ML–Decoder kann hier nur durch die Ausgabe υHD = (E, E) vermelden, dass er bei der Decodierung dieses Blocks gescheitert ist. „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 ySD–Werte erkennt er aber, dass mit großer Wahrscheinlichkeit das zweite Bit verfälscht wurde und entscheidet sich für die richtige Symbolfolge υSD = (+1, –1) = 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 υ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 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 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.

: 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 ξ ∈ {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 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 sign L(x)  ⇒  Vorzeichen gegeben.
  • Dagegen gibt der Betrag |L(x)| die Zuverlässigkeit für das Ergebnis sign(L(x)) an.

:
BSC–Modell
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\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 ε = 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 Δ um y0 = 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 y0 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 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 xjC dasjenige mit der größten Rückschlusswahrscheinlichkeit (englisch: A Posteriori Probability, APP) finden. Das auszugebende Codewort 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 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:
\[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 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_{\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 |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 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 LE(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 (ji) des Codewortes über das i–te Codesymbol liefern, ausgedrückt als Log–Likelihood–Verhältnis. Wir benennen diesen Kennwert mit LE(i).


Wir berechnen nun die extrinsischen L–Werte LE(i) für zwei beispielhafte Codes.

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:

\[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 Lji positiv, so bedeutet dies aus Sicht der anderen L–Werte eine Präferenz für „xi = 0”. Bei negativer Summe ist „xi = 1” wahrscheinlicher. LE(i) = 0 erlaubt keine Vorhersage.

: Wir betrachten die Decodierung eines Wiederholungscodes (n = 4), wobei gelten soll:
  • L = (+1, –1, +3, –1)  ⇒  LE = (+1, +3, –1, +3): LE(1) ist positiv, obwohl zwei der anderen

L–Werte (Mehrheit) negativ sind  ⇒  Präferenz für „x1 = 0”. Alle Aposteriori–L–Werte sind nach einer Iteration positiv  ⇒  Informationsbit ist u = 0. Weitere Iterationen bringen nichts.

Decodierbeispiel 1 für den RC (3, 1)

  • L = (+1, +1, –4, +1)  ⇒  LE = (–2, –2, +3, –2): Alle Aposteriori–L–Werte sind

nach zwei Iterationen negativ  ⇒  Informationsbit ist u = 1  ⇒  zu Beginn waren drei Vorzeichen falsch.

Decodierbeispiel 2 für den RC (3, 1)

  • L = (+1, +1, –3, +1)  ⇒  LE = (–1, –1, +3, –1): Alle Aposteriori–L–Werte sind

nach einer Iteration 0  ⇒  Informationsbit kann nicht decodiert werden. Weitere Iterationen bringen nichts.

Decodierbeispiel 3 für den RC (3, 1)


Zur Berechnung der extrinsischen L–Werte (2)


Single Parity–check Code ⇒ 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 x ist das Hamming–Gewicht wH(x) geradzahlig.

Das Codewort x(–i) beinhalte alle Symbole mit Ausnahme von xi  ⇒  Vektor der Länge n – 1. Damit lautet der extrinsische L–Wert bezüglich dieses i–ten Symbols, wenn 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 SPC (3, 2, 2) aus. Die <nobr>2k = 4</nobr> gültigen Codeworte x = {x1, x2, x3} lauten bei bipolarer Beschreibung  ⇒  xi ∈ {±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 x1 · x2 · x3 stets positiv.

Decodierbeispiel für den SPC (3, 2)

Die Tabelle zeigt den Decodiervorgang für LAPP = (+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 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:

  • LAPP(1) = +2.0 und LAPP(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 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 x1. Bei 0.518 < LAPP(2) < 1.6 würde das Ergebnis x1 erst nach mehreren Iterationen vorliegen. Für LAPP(2) > 1.6 liefert der Decoder dagegen x0.









Quellenverzeichnis

  1. Bossert, M.: Kanalcodierung. Stuttgart: B. G. Teubner, 1998.