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

From LNTwww
Line 166: Line 166:
 
== Symbol-wise soft in soft out decoding ==
 
== Symbol-wise soft in soft out decoding ==
 
<br>
 
<br>
Wir gehen  nun von einem&nbsp; $(n, \ k)$&ndash;Blockcode aus, wobei das Codewort&nbsp; $\underline{x} = (x_1, \ \text{...} \ , \ x_n)$&nbsp; durch den Kanal in das Empfangswort&nbsp; $\underline{y} = (y_1, \ \text{...} \ , \ y_n)$&nbsp; verfälscht wird.  
+
We now assume a&nbsp; $(n, \ k)$&ndash;block code where the codeword&nbsp; $\underline{x} = (x_1, \ \text{...} \ , \ x_n)$&nbsp; is corrupted by the channel into the received word&nbsp; $\underline{y} = (y_1, \ \text{...} \ , \ y_n)$&nbsp;.  
*Bei langen Codes ist eine&nbsp; <i>Maximum&ndash;a&ndash;posteriori&ndash;Entscheidung auf Blockebene</i>&nbsp; &ndash; kurz: &nbsp;<b>[[Channel_Coding/Kanalmodelle_und_Entscheiderstrukturen#Maximum-a-posteriori.E2.80.93_und_Maximum-Likelihood.E2.80.93Kriterium|$\text{ block&ndash;wise MAP}$]]</b>&nbsp; &ndash; sehr aufwändig.  
+
*For long codes, a&nbsp; <i>maximum a posteriori block-level decision</i>&nbsp; &ndash; is short: &nbsp;<b>[[Channel_Coding/Channel_Models_and_Decision_Structures#Criteria_.C2.BBMaximum-a-posteriori.C2.AB_and_.C2.BBMaximum-Likelihood.C2.AB|$\text{ "block wise MAP"}$]]</b>&nbsp; &ndash; very elaborate.  
*Man müsste unter den&nbsp; $2^k&nbsp;$ zulässigen Codeworten&nbsp; $\underline{x}_j &#8712; \mathcal{C}$&nbsp; dasjenige mit der größten Rückschlusswahrscheinlichkeit (englisch:&nbsp; <i>A Posteriori Probability</i>, APP) finden.  
+
*One would have to find among the&nbsp; $2^k&nbsp;$ allowable codewords&nbsp; $\underline{x}_j &#8712; \mathcal{C}$&nbsp; the one with the greatest probability of inference (&nbsp; <i>A Posteriori Probability</i>, APP).  
*Das auszugebende Codewort&nbsp; $\underline{z}$&nbsp; wäre in diesem Fall&nbsp; $\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}.$
+
*The codeword to output&nbsp; $\underline{z}$&nbsp; in this case would be&nbsp; $\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}.$
  
  
[[File:P ID2981 KC T 4 1 S3a v6.png|center|frame|Modell der symbolweisen Soft–in Soft–out Decodierung|class=fit]]
+
[[File:P ID2981 KC T 4 1 S3a v6.png|center|frame|Model of symbol-wise soft in soft out decoding|class=fit]]
  
Eine zweite Möglichkeit ist die Decodierung auf Bitebene. Der dargestellte symbolweise (oder bitweise)&nbsp; $\text{Soft&ndash;in Soft&ndash;out Decoder}$&nbsp; hat die Aufgabe, alle Codewortbits&nbsp; $x_i &#8712; \{0, \, 1\}$&nbsp; entsprechend maximaler Rückschlusswahrscheinlichkeit&nbsp; ${\rm Pr}(x_i | \underline{y})$&nbsp; zu decodieren. Mit der Laufvariablen&nbsp; $i = 1, \text{...} , \ n$&nbsp; gilt dabei:
+
A second possibility is decoding on bit level. The represented symbol-wise (or bit-wise)&nbsp; $\text{soft in soft out decoder}$&nbsp; has the exercise to decode all codeword bits&nbsp; $x_i &#8712; \{0, \, 1\}$&nbsp; according to maximum inference probability (APP)&nbsp; ${\rm Pr}(x_i | \underline{y})$&nbsp;. With the running variable&nbsp; $i = 1, \text{...} , \ n$&nbsp; holds in this case:
  
*Der entsprechende&nbsp; $L$&ndash;Wert&nbsp; (englisch: &nbsp;<i>Log Likelihood Ratio</i>, LLR) für das&nbsp; $i$&ndash;te Codebit lautet:
+
*The corresponding&nbsp; LLR for the&nbsp; $i$th code bit is:
  
 
::<math>L_{\rm APP} (i) = L(x_i\hspace{0.05cm}|\hspace{0.05cm}\underline{y}) =
 
::<math>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} . </math>
 
{\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} . </math>
  
*Der Decoder arbeitet iterativ. Bei der Initialisierung $($in der Grafik gekennzeichnet durch den Parameter&nbsp; $I = 0)$&nbsp; ist&nbsp; $L_{\rm APP}(i) = L_{\rm K}(i)$, wobei das Kanal&ndash;LLR&nbsp; $L_{\rm K}(i)$&nbsp; durch den Empfangswert&nbsp; $y_i$&nbsp; gegeben ist.<br>
+
*The decoder works iteratively. At initialization $($indicated in the diagram by the parameter&nbsp; $I = 0)$&nbsp; is&nbsp; $L_{\rm APP}(i) = L_{\rm K}(i)$, where the channel LLR&nbsp; $L_{\rm K}(i)$&nbsp; is given by the received value&nbsp; $y_i$&nbsp;.<br>
  
*Berechnet wird zudem  der extrinsische&nbsp; $L$&ndash;Wert&nbsp; $L_{\rm E}(i)$, der die gesamte Information quantifiziert, die alle anderen Bits&nbsp; $(j &ne; i)$&nbsp; aufgrund der Code&ndash;Eigenschaften über das betrachtete&nbsp; $i$&ndash;te Bit liefern.<br>
+
*In addition, the extrinsic&nbsp; LLR&nbsp; $L_{\rm E}(i)$ is calculated, which quantifies the total information provided by all other bits&nbsp; $(j &ne; i)$&nbsp; due to the code&ndash;properties about the considered&nbsp; $i$th bit.<br>
  
*Bei der  nächsten Iteration&nbsp; $($ab&nbsp; $I = 1)$&nbsp; wird&nbsp; $L_{\rm E}(i)$&nbsp; bei der Berechnung von&nbsp; $L_{\rm APP}(i)$&nbsp; als Apriori&ndash;Information&nbsp; $L_{\rm A}(i)$&nbsp; berücksichtigt. Für das neue Aposteriori&ndash;LLR in der Iteration&nbsp; $I + 1$&nbsp; gilt somit:
+
*At the next iteration&nbsp; $($ab&nbsp; $I = 1)$&nbsp; $L_{\rm E}(i)$&nbsp; is taken into account in the computation of&nbsp; $L_{\rm APP}(i)$&nbsp; as apriori information&nbsp; $L_{\rm A}(i)$&nbsp;. Thus, for the new a posteriori LLR in iteration&nbsp; $I + 1$&nbsp; holds:
  
 
::<math>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} .  </math>
 
::<math>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} .  </math>
  
*Die Iterationen werden fortgesetzt, bis alle Beträge&nbsp; $|L_{\rm APP}(i)|$&nbsp; größer sind als ein vorzugebender Wert. Das wahrscheinlichste Codewort&nbsp; $\underline{z}$&nbsp; ergibt sich dann aus den Vorzeichen aller&nbsp; $L_{\rm APP}(i)$, mit&nbsp; $i = 1, \ \text{...} , \ n$.<br>
+
*The iterations continue until all absolute values&nbsp; $|L_{\rm APP}(i)|$&nbsp; are greater than a given value. The most likely codeword&nbsp; $\underline{z}$&nbsp; is then obtained from the signs of all&nbsp; $L_{\rm APP}(i)$, with&nbsp; $i = 1, \ \text{...} , \ n$.<br>
  
*Bei einem&nbsp; [[Channel_Coding/Allgemeine_Beschreibung_linearer_Blockcodes#Systematische_Codes| systematischen Code]]&nbsp; geben die ersten&nbsp; $k$&nbsp; Bit von&nbsp; $\underline{z}$&nbsp; das gesuchte Informationswort an, das mit großer Wahrscheinlichkeit mit der gesendeten  Nachricht&nbsp; $\underline{u}$ übereinstimmen wird.<br><br>
+
*For a&nbsp; [[Channel_Coding/General_Description_of_Linear_Block_Codes#Systematic_Codes| "systematic code"]]&nbsp; the first&nbsp; $k$&nbsp; bits of&nbsp; $\underline{z}$&nbsp; indicate the information word being searched for, which will most likely match the message&nbsp; $\underline{u}$ being sent.<br><br>
  
Diese Beschreibung des SISO&ndash;Decodierers nach&nbsp; [Bos98]<ref name='Bos98'>Bossert, M.: ''Kanalcodierung.'' Stuttgart: B. G. Teubner, 1998.</ref>&nbsp; soll an dieser Stelle in erster Linie die unterschiedlichen&nbsp; $L$&ndash;Werte verdeutlichen. Das große Potential der symbolweisen Decodierung erkennt man erst im Zusammenhang mit&nbsp; [[Channel_Coding/Soft%E2%80%93in_Soft%E2%80%93out_Decoder#Grundstruktur_von_verketteten_Codiersystemen| verketteten Codiersystemen.]]<br>
+
This description of the SISO decoder after&nbsp; [Bos98]<ref name='Bos98'>Bossert, M.: ''Kanalcodierung.'' Stuttgart: B. G. Teubner, 1998.</ref>&nbsp; is intended at this point primarily to clarify the different&nbsp; $L$&ndash;values. One recognizes the large potential of the symbol-wise decoding only in connection with&nbsp; [[Channel_Coding/Soft-in_Soft-Out_Decoder#Basic_structure_of_concatenated_coding_systems| "concatenated coding systems"]].<br>
  
== Zur Berechnung der extrinsischen L–Werte ==
+
== Calculation of extrinsic LLRs ==
 
<br>
 
<br>
Die Schwierigkeit bei der symbolweisen iterativen Decodierung ist im allgemeinen die Bereitstellung der extrinsischen&nbsp; $L$&ndash;Werte&nbsp; $L_{\rm E}(i)$. Bei einem Code der Länge&nbsp; $n$&nbsp; gilt hierbei für die Laufvariable:&nbsp; $i = 1, \ \text{...} , \ n$.<br>
+
The difficulty in symbol-wise iterative decoding is generally the provision of the extrinsic&nbsp; LLRs &nbsp; $L_{\rm E}(i)$. For a code of length&nbsp; $n$&nbsp; here, for the run variable:&nbsp; $i = 1, \ \text{...} , \ n$.<br>
  
 
{{BlaueBox|TEXT=   
 
{{BlaueBox|TEXT=   
$\text{Definition:}$&nbsp;  Der&nbsp; <b> extrinsische $L$&ndash;Wert</b>&nbsp; (englisch: &nbsp;<i>extrinsic LLR</i> )&nbsp; ist ein Maß für die Informationen, den die anderen Symbole&nbsp; $(j &ne; i)$&nbsp; des Codewortes über das&nbsp; $i$&ndash;te Codesymbol liefern, ausgedrückt als Log&ndash;Likelihood&ndash;Verhältnis. Wir benennen diesen Kennwert mit&nbsp; $L_{\rm E}(i)$.}}
+
$\text{Definition:}$&nbsp;  The&nbsp; <b> extrinsic LLR</b> is a measure of the information that the other symbols&nbsp; $(j &ne; i)$&nbsp; of the codeword provide about the&nbsp; $i$&ndash;th code symbol, expressed as a log likelihood ratio. We denote this characteristic value by&nbsp; $L_{\rm E}(i)$.}}
  
  
Wir berechnen nun die extrinsischen&nbsp; $L$&ndash;Werte&nbsp; $L_{\rm E}(i)$&nbsp; für zwei beispielhafte Codes.<br>
+
We now calculate the extrinsic&nbsp; LLRs&nbsp; $L_{\rm E}(i)$&nbsp; for two example codes.<br>
  
  
 
$\text{Repetition Code}$ &nbsp; &#8658; &nbsp; ${\rm RC} \ (n, 1, n)$</b><br>
 
$\text{Repetition Code}$ &nbsp; &#8658; &nbsp; ${\rm RC} \ (n, 1, n)$</b><br>
  
Ein Wiederholungscode zeichnet sich dadurch aus, dass alle&nbsp; $n$&nbsp; Codesymbole&nbsp; $x_i &#8712; \{0, \, 1\}$&nbsp; identisch sind. Der extrinsische&nbsp; $L$&ndash;Wert für das&nbsp; $i$&ndash;ten Symbol ist hier sehr einfach anzugeben und lautet:
+
A repetition code is characterized by the fact that all&nbsp; $n$&nbsp; code symbols&nbsp; $x_i &#8712; \{0, \, 1\}$&nbsp; are identical. The extrinsic LLR for the&nbsp; $i$&th symbol is very easy to specify here and is:
  
 
::<math>L_{\rm E}(i) = \hspace{0.05cm}\sum_{j \ne i} \hspace{0.1cm} L_j  
 
::<math>L_{\rm E}(i) = \hspace{0.05cm}\sum_{j \ne i} \hspace{0.1cm} L_j  
Line 214: Line 214:
 
\hspace{0.05cm}.</math>
 
\hspace{0.05cm}.</math>
  
*Ist die Summe über alle&nbsp; $L_{j &ne; i}$&nbsp; positiv, so bedeutet dies aus Sicht der anderen&nbsp; $L$&ndash;Werte eine Präferenz für die Entscheidung &nbsp; $x_i = 0$.  
+
*If the sum over all&nbsp; $L_{j &ne; i}$&nbsp; is positive, this implies a preference for the decision &nbsp; $x_i = 0$ from the point of view of the other LLR.  
*Bei negativer Summe ist dagegen&nbsp; $x_i = 1$&nbsp; wahrscheinlicher.  
+
*On the other hand, if the sum is negative&nbsp; $x_i = 1$&nbsp; is more likely.  
*$L_{\rm E}(i) = 0$&nbsp; erlaubt keine Vorhersage.<br>
+
*$L_{\rm E}(i) = 0$&nbsp; does not allow prediction.<br>
  
  
 
{{GraueBox|TEXT=   
 
{{GraueBox|TEXT=   
$\text{Beispiel 5:}$&nbsp; Wir betrachten die Decodierung des Wiederholungscodes&nbsp; $\text{RC (4, 1,4)}$. Wir gehen dabei von drei verschiedene Annnahmen für das&nbsp; <i>Log Likelihood Ratio</i>&nbsp; $\underline{L}_{\rm A}^{(I=0)} = \underline{L}_{\rm APP}$&nbsp; aus.
+
$\text{Example 5:}$&nbsp; We consider the decoding of the repetition code&nbsp; $\text{RC (4, 1,4)}$. We make three different assumptions for the&nbsp; <i>Log Likelihood Ratio</i>&nbsp; $\underline{L}_{\rm A}^{(I=0)} = \underline{L}_{\rm APP}$&nbsp;.
  
[[File:P ID3094 KC T 4 4 S3a neu v2.png|right|frame|Decodierbeispiel &nbsp;$\rm (A)$&nbsp; für den&nbsp; ${\rm RC} \ (4, 1, 4)$|class=fit]]
+
[[File:P ID3094 KC T 4 4 S3a neu v2.png|right|frame|Decoding example &nbsp;$\rm (A)$&nbsp; for the&nbsp; ${\rm RC} \ (4, 1, 4)$|class=fit]]
$\text{Decodierbeispiel (A):}$
+
$\text{Decoding example (A):}$
 
:$$\underline{L}_{\rm APP} = (+1,  -1, +3, -1)\text{:}$$   
 
:$$\underline{L}_{\rm APP} = (+1,  -1, +3, -1)\text{:}$$   
 
::$$L_{\rm E}(1) = -1+3-1 = +1\hspace{0.05cm},$$
 
::$$L_{\rm E}(1) = -1+3-1 = +1\hspace{0.05cm},$$
Line 231: Line 231:
 
:$$\hspace{0.3cm}\Rightarrow\hspace{0.3cm}\underline{L}_{\rm E}^{(I=0)}= (+1, +3, -1, +3)
 
:$$\hspace{0.3cm}\Rightarrow\hspace{0.3cm}\underline{L}_{\rm E}^{(I=0)}= (+1, +3, -1, +3)
 
\hspace{0.3cm}\Rightarrow\hspace{0.3cm}\underline{L}_{\rm A}^{(I=1)}=\underline{L}_{\rm A}^{(I=0)}+ \underline{L}_{\rm E}^{(I=0)}= (+2, +2, +2, +2)$$
 
\hspace{0.3cm}\Rightarrow\hspace{0.3cm}\underline{L}_{\rm A}^{(I=1)}=\underline{L}_{\rm A}^{(I=0)}+ \underline{L}_{\rm E}^{(I=0)}= (+2, +2, +2, +2)$$
*Zu Beginn&nbsp; $(I=0)$&nbsp; weisen die positiven&nbsp; $L_{\rm E}$&ndash;Werte auf &nbsp;$x_1 = 0$,&nbsp;$x_2 = 0$&nbsp; und &nbsp;$x_4 = 0$&nbsp; hin, während &nbsp;$x_3 =1$&nbsp; wahrscheinlicher ist.
+
*At the beginning&nbsp; $(I=0)$&nbsp; the positive&nbsp; $L_{\rm E}$&ndash;values indicate &nbsp;$x_1 = 0$,&nbsp;$x_2 = 0$&nbsp; and &nbsp;$x_4 = 0$&nbsp; while &nbsp;$x_3 =1$&nbsp; is more likely.
*Bereits nach einer Iteration&nbsp; $(I=1)$&nbsp; sind alle&nbsp; $L_{\rm A}$&ndash;Werte positiv  &nbsp; &#8658; &nbsp; Informationsbit wird als&nbsp; $u = 0$&nbsp; decodiert.  
+
*Already after one iteration&nbsp; $(I=1)$&nbsp; all&nbsp; $L_{\rm A}$&ndash;values are positive &nbsp; &#8658; &nbsp; information bit is decoded as&nbsp; $u = 0$&nbsp;.  
*Weitere Iterationen bringen nichts.<br>
+
*Further iterations yield nothing.<br>
  
  
[[File:P ID3096 KC T 4 4 S3c neu v1.png|right|frame|Decodierbeispiel &nbsp;$\rm (B)$&nbsp; für den&nbsp; ${\rm RC} \ (4, 1, 4)$]]
+
[[File:P ID3096 KC T 4 4 S3c neu v1.png|right|frame|Decoding example &nbsp;$\rm (B)$&nbsp; for the&nbsp; ${\rm RC} \ (4, 1, 4)$]]
$\text{Decodierbeispiel (B):}$
+
$\text{Decoding example (B):}$
 
$$\underline{L}_{\rm APP} = (+1,  +1, -4, +1)\text{:}$$
 
$$\underline{L}_{\rm APP} = (+1,  +1, -4, +1)\text{:}$$
 
$$\underline{L}_{\rm E}^{(I=0)} = \ (-2,  -2, +3, -2)$$
 
$$\underline{L}_{\rm E}^{(I=0)} = \ (-2,  -2, +3, -2)$$
  
*Obwohl zu Beginn drei Vorzeichen falsch waren, sind nach zwei Iterationen alle  $L_{\rm A}$&ndash;Werte negativ.
+
*Although three signs were wrong at the beginning, after two iterations all $L_{\rm A}$&ndash;values (LLR) are negative.
* Das Informationsbit wird als&nbsp; $u = 1$&nbsp; decodiert.  
+
*The information bit is decoded as&nbsp; $u = 1$&nbsp;.  
  
[[File:P ID3095 KC T 4 4 S3b neu v1.png|right|frame|Decodierbeispiel &nbsp;$\rm (C)$&nbsp; für den&nbsp; ${\rm RC} \ (4, 1, 4)$]]<br>
+
[[File:P ID3095 KC T 4 4 S3b neu v1.png|right|frame|Decoding example &nbsp;$\rm (C)$&nbsp; for the&nbsp; ${\rm RC} \ (4, 1, 4)$]]<br>
$\text{Decodierbeispiel (C):}$
+
$\text{Decoding example (C):}$
 
$$\underline{L}_{\rm APP} = (+1,  +1, -3, +1)\text{:}$$
 
$$\underline{L}_{\rm APP} = (+1,  +1, -3, +1)\text{:}$$
 
$$\underline{L}_{\rm E}^{(I=0)} =  (-1,  -1, +3, -1)$$
 
$$\underline{L}_{\rm E}^{(I=0)} =  (-1,  -1, +3, -1)$$
  
*Alle&nbsp; $L_{\rm A}$&ndash;Werte sind schon nach einer Iteration Null.
+
*All&nbsp; $L_{\rm A}$&ndash;values (LLR) are zero already after one iteration.
*Das Informationsbit kann nicht decodiert werden, obwohl die Ausgangslage nicht viel schlechter war als bei&nbsp; $\rm (B)$.  
+
*The information bit cannot be decoded, although the initial situation was not much worse than with&nbsp; $\rm (B)$.  
*Weitere Iterationen bringen auch hier nichts.<br>}}
+
*Further iterations bring nothing here either.<br>}}
  
  
 
+
$\text{Single Parity&ndash;check code}$ &nbsp; &#8658; &nbsp; ${\rm SPC} \ (n, \ n \, -1, \ 2)$
$\text{Single Parity&ndash;check Code}$ &nbsp; &#8658; &nbsp; ${\rm SPC} \ (n, \ n \, -1, \ 2)$
 
 
<br>
 
<br>
  
Bei jedem&nbsp; <i>Single Parity&ndash;check Code</i>&nbsp; ist die Anzahl der Einsen in jedem Codewort geradzahlig. Oder anders ausgedrückt: &nbsp; Für jedes Codewort&nbsp; $\underline{x}$&nbsp; ist das&nbsp; [[Channel_Coding/Zielsetzung_der_Kanalcodierung#Einige_wichtige_Definitionen_zur_Blockcodierung|Hamming&ndash;Gewicht]]&nbsp; $w_{\rm H}(\underline{x})$&nbsp; geradzahlig.<br>
+
For each&nbsp; <i>Single Parity&ndash;check Code</i>&nbsp; the number of ones in each codeword is even. Or, put another way, &nbsp; For each codeword&nbsp; $\underline{x}$&nbsp; the&nbsp; [[Channel_Coding/Objective_of_Channel_Coding#Important_definitions_for_block_coding|"Hamming weight"]]&nbsp; $w_{\rm H}(\underline{x})$&nbsp; is even.<br>
  
 
{{BlaueBox|TEXT=   
 
{{BlaueBox|TEXT=   
$\text{Definition:}$&nbsp; Das Codewort&nbsp; $\underline{x}^{(&ndash;i)}$&nbsp; beinhalte alle Symbole mit Ausnahme von&nbsp; $x_i$ &nbsp; &#8658; &nbsp; Vektor der Länge&nbsp; $n -1$. Damit lautet der &nbsp;$\text{extrinsische }L\text{&ndash;Wert}$&nbsp; bezüglich des&nbsp; $i$&ndash;ten Symbols, wenn&nbsp; $\underline{x}$&nbsp; empfangen wurde:
+
$\text{Definition:}$&nbsp; Let the codeword&nbsp; $\underline{x}^{(&ndash;i)}$&nbsp; contain all symbols except&nbsp; $x_i$ &nbsp; &#8658; &nbsp; vector of length&nbsp; $n -1$. Thus, the &nbsp;$\text{extrinsic }LLR$&nbsp; is with respect to the&nbsp; $i$&ndash;th symbol when&nbsp; $\underline{x}$&nbsp; was received:
  
 
::<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} \vert\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} \vert \hspace{0.05cm}\underline{y} \hspace{0.05cm}\right ]}
 
::<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} \vert\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} \vert \hspace{0.05cm}\underline{y} \hspace{0.05cm}\right ]}
 
  \hspace{0.05cm}.</math>
 
  \hspace{0.05cm}.</math>
  
Wie in der&nbsp; [[Aufgaben:Aufgabe_4.4:_Extrinsische_L–Werte_beim_SPC|Aufgabe 4.4]]&nbsp; gezeigt werden soll, kann hierfür auch geschrieben werden:
+
As will be shown in the&nbsp; [[Aufgaben:Exercise_4.4:_Extrinsic_L-Values_at_SPC|"Task 4.4"]]&nbsp;, it is also possible to write for this:
  
 
::<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 ]
 
::<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 ]
Line 274: Line 273:
  
 
{{GraueBox|TEXT=   
 
{{GraueBox|TEXT=   
$\text{Beispiel 6:}$&nbsp; Wir gehen vom&nbsp; <i>Single Parity&ndash;check Code</i>&nbsp; mit&nbsp; $n = 3, \ k = 2$ &nbsp; &#8658; &nbsp; kurz&nbsp; ${\rm SPC} \ (3, \ 2, \ 2)$&nbsp; aus.
+
$\text{Example 6:}$&nbsp; We assume&nbsp; <i>Single Parity&ndash;check code</i>&nbsp; with&nbsp; $n = 3, \ k = 2$ &nbsp; &#8658; &nbsp; briefly&nbsp; ${\rm SPC} \ (3, \ 2, \ 2)$&nbsp; from.
 
   
 
   
Die&nbsp; $2^k = 4$&nbsp; gültigen Codeworte&nbsp; $\underline{x} = \{x_1, x_2, x_3\}$&nbsp; lauten bei bipolarer Beschreibung &nbsp; &#8658; &nbsp; $x_i &#8712; \{&plusmn;1\}$:
+
The&nbsp; $2^k = 4$&nbsp; valid codewords&nbsp; $\underline{x} = \{x_1, x_2, x_3\}$&nbsp; are for bipolar description &nbsp; &#8658; &nbsp; $x_i &#8712; \{&plusmn;1\}$:
[[File:P ID3098 KC T 4 1 S3e v1.png|right|frame|Decodierbeispiel für den&nbsp; ${\rm SPC} \ (3, 2, 2)$|class=fit]]
+
[[File:P ID3098 KC T 4 1 S3e v1.png|right|frame|Decoding example for the&nbsp; ${\rm SPC} \ (3, 2, 2)$|class=fit]]
  
 
:$$ \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}, $$
 
:$$ \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}, $$
Line 284: Line 283:
 
:$$\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}. $$
 
:$$\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&nbsp; $x_1 \cdot x_2 \cdot x_3$&nbsp; stets positiv.<br>
+
So, with this code, the product&nbsp; $x_1 \cdot x_2 \cdot x_3$&nbsp; is always positive.<br>
  
Die obige Tabelle zeigt den Decodiervorgang für&nbsp; $\underline{L}_{\rm APP} = (+2.0, +0.4, \, &ndash;1.6)$. Die harte Entscheidung nach den Vorzeichen von&nbsp; $L_{\rm APP}(i)$&nbsp; ergäbe hier&nbsp; $(+1, +1, \, -1)$, also kein gültiges Codewort des&nbsp; ${\rm SP}(3, \ 2, \ 2)$.<br>
+
The above table shows the decoding process for&nbsp; $\underline{L}_{\rm APP} = (+2.0, +0.4, \, &ndash;1.6)$. The hard decision according to the signs of&nbsp; $L_{\rm APP}(i)$&nbsp; would yield here&nbsp; $(+1, +1, \, -1)$, thus no valid codeword of&nbsp; ${\rm SP}(3, \ 2, \ 2)$.<br>
  
Rechts in der Tabelle sind die dazugehörigen extrinsischen&nbsp; $L$&ndash;Werte eingetragen:<br>
+
On the right side of the table, the corresponding extrinsic LLRs are entered:<br>
  
 
::<math>L_{\rm E}(1) = 2 \cdot {\rm tanh}^{-1} \hspace{0.05cm}
 
::<math>L_{\rm E}(1) = 2 \cdot {\rm tanh}^{-1} \hspace{0.05cm}
Line 297: Line 296:
 
  \left [  {\rm tanh} (1.0) \cdot {\rm tanh} (0.2)\hspace{0.05cm}\right ] = +0.151\hspace{0.05cm}.</math>
 
  \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:
+
The second equation can be interpreted as follows:
* $L_{\rm APP}(1) = +2.0$&nbsp; und&nbsp; $L_{\rm APP}(3) = \, -1.6$&nbsp; sagen aus, dass das erste Bit eher &nbsp;$+1$&nbsp; als &nbsp;$-1$&nbsp; ist und das dritte Bit eher &nbsp;$-1$&nbsp; als &nbsp;$+1$. Die Zuverlässigkeit (der Betrag) ist beim ersten Bit etwas größer als beim dritten.<br>
+
* $L_{\rm APP}(1) = +2.0$&nbsp; and&nbsp; $L_{\rm APP}(3) = \, -1.6$&nbsp; state that the first bit is more likely to be &nbsp;$+1$&nbsp; than &nbsp;$-1$&nbsp; and the third bit is more likely to be &nbsp;$-1$&nbsp; than &nbsp;$+1$. The reliability (the amount) is slightly greater for the first bit than for the third.<br>
  
*Die extrinsische Information&nbsp; $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 &nbsp;$-1$&nbsp; mit der Zuverlässigkeit&nbsp; $0.518$.<br>
+
*The extrinsic information&nbsp; $L_{\rm E}(2) = \, -0.518$ considers only the information of bit 1 and bit 3 about bit 2. From their point of view, the second bit is a &nbsp;$-1$&nbsp; with reliability&nbsp; $0.518$.<br>
  
*Der vom Empfangswert&nbsp; $y_2$&nbsp; abgeleitete&nbsp; $L$&ndash;Wert &nbsp; &#8658; &nbsp; $L_{\rm APP}(2) = +0.4$&nbsp; hat für das zweite Bit eine &nbsp;$+1$&nbsp; vermuten lassen. Die Diskrepanz wird hier bereits in der Iteration&nbsp; $I = 1$&nbsp; aufgelöst.<br>
+
*The&nbsp; $y_2$&nbsp; value derived from the received LLR &#8658; &nbsp; $L_{\rm APP}(2) = +0.4$&nbsp; has suggested a &nbsp;$+1$&nbsp; for the second bit. The discrepancy is resolved here already in the iteration&nbsp; $I = 1$&nbsp;.<br>
  
*Entschieden wird hier für das Codewort&nbsp; $\underline{x}_1$. Bei&nbsp; $0.518 < L_{\rm APP}(2) < 1.6$&nbsp; würde das Ergebnis&nbsp; $\underline{x}_1$&nbsp; erst nach mehreren Iterationen vorliegen. Für&nbsp; $L_{\rm APP}(2) > 1.6$&nbsp; liefert der Decoder dagegen&nbsp; $\underline{x}_0$.}}<br>
+
*Decided here for the codeword&nbsp; $\underline{x}_1$. For&nbsp; $0.518 < L_{\rm APP}(2) < 1.6$&nbsp; the result&nbsp; $\underline{x}_1$&nbsp; would only be available after several iterations. For&nbsp; $L_{\rm APP}(2) > 1.6$&nbsp; on the other hand, the decoder returns&nbsp; $\underline{x}_0$.}}<br>
  
== BCJR–Decodierung: Vorwärts–Rückwärts–Algorithmus ==
+
== BCJR decoding: Forward-backward algorithm ==
 
<br>
 
<br>
 
Ein Beispiel für die iterative Decodierung von Faltungscodes ist der&nbsp; <i>BCJR&ndash;Algorithmus</i>, benannt nach dessen Erfindern L. R. Bahl, J. Cocke, F. Jelinek und J. Raviv &nbsp;&#8658;&nbsp; [BCJR74]<ref name='BCJR74'>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.</ref>. Der Algorithmus weist viele Parallelen zur sieben Jahren älteren Viterbi&ndash;Decodierung auf, doch auch einige signifikante Unterschiede:
 
Ein Beispiel für die iterative Decodierung von Faltungscodes ist der&nbsp; <i>BCJR&ndash;Algorithmus</i>, benannt nach dessen Erfindern L. R. Bahl, J. Cocke, F. Jelinek und J. Raviv &nbsp;&#8658;&nbsp; [BCJR74]<ref name='BCJR74'>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.</ref>. Der Algorithmus weist viele Parallelen zur sieben Jahren älteren Viterbi&ndash;Decodierung auf, doch auch einige signifikante Unterschiede:
*Während Viterbi die Gesamtsequenz schätzt &nbsp; &#8658; &nbsp; [[Channel_Coding/Kanalmodelle_und_Entscheiderstrukturen#Definitionen_der_verschiedenen_Optimalempf.C3.A4nger| $\text{block&ndash;wise Maximum Likelihood}$]], minimiert der BCJR&ndash;Algorithmus die Bitfehlerwahrscheinlichkeit &nbsp; &#8658; &nbsp; [[Channel_Coding/Kanalmodelle_und_Entscheiderstrukturen#Definitionen_der_verschiedenen_Optimalempf.C3.A4nger|$\text{ bit&ndash;wise MAP}$]].<br>
+
*Während Viterbi die Gesamtsequenz schätzt &nbsp; &#8658; &nbsp; [[Channel_Coding/Channel_Models_and_Decision_Structures#Definitions_of_the_different_optimal_receivers| $\text{"block&ndash;wise Maximum Likelihood"}$]], minimiert der BCJR&ndash;Algorithmus die Bitfehlerwahrscheinlichkeit &nbsp; &#8658; &nbsp; [[Channel_Coding/Channel_Models_and_Decision_Structures#Definitions_of_the_different_optimal_receivers|$\text{"bit&ndash;wise MAP"}$]].<br>
  
 
*Der Viterbi&ndash;Algorithmus kann (in seiner ursprünglichen Form) keine Softinformation verarbeiten. Dagegen gibt der BCJR&ndash;Algorithmus bei jeder Iteration für jedes einzelne Symbol (Bit) einen Zuverlässigkeitswert an, der bei späteren Iterationen berücksichtigt wird.<br>
 
*Der Viterbi&ndash;Algorithmus kann (in seiner ursprünglichen Form) keine Softinformation verarbeiten. Dagegen gibt der BCJR&ndash;Algorithmus bei jeder Iteration für jedes einzelne Symbol (Bit) einen Zuverlässigkeitswert an, der bei späteren Iterationen berücksichtigt wird.<br>
Line 317: Line 316:
  
 
Die Abbildung soll &ndash; fast unzulässig vereinfacht &ndash; die unterschiedliche Vorgehensweise von Viterbi&ndash;Algorithmus (links) und BCJR&ndash;Algorithmus (rechts) verdeutlichen. Zugrunde liegt ein Faltungscode mit dem Gedächtnis&nbsp; $m = 1$&nbsp; und der Länge&nbsp; $L = 4$ &nbsp; &#8658; &nbsp; Gesamtlänge  (mit Terminierung)&nbsp; $L' = 5$.
 
Die Abbildung soll &ndash; fast unzulässig vereinfacht &ndash; die unterschiedliche Vorgehensweise von Viterbi&ndash;Algorithmus (links) und BCJR&ndash;Algorithmus (rechts) verdeutlichen. Zugrunde liegt ein Faltungscode mit dem Gedächtnis&nbsp; $m = 1$&nbsp; und der Länge&nbsp; $L = 4$ &nbsp; &#8658; &nbsp; Gesamtlänge  (mit Terminierung)&nbsp; $L' = 5$.
*Der Viterbi&ndash;Algorithmus sucht und findet den wahrscheinlichsten Pfad von&nbsp; ${\it \Gamma}_0(S_0)$&nbsp; nach&nbsp; ${\it \Gamma}_5(S_0)$, nämlich&nbsp; $S_0 &#8594; S_1 &#8594; S_0 &#8594; S_0 &#8594; S_1&#8594; S_0 $. Wir verweisen auf die Musterlösung zur&nbsp; [[Aufgaben:Aufgabe_3.09Z:_Nochmals_Viterbi–Algorithmus|Aufgabe 3.9Z]].<br><br>
+
*Der Viterbi&ndash;Algorithmus sucht und findet den wahrscheinlichsten Pfad von&nbsp; ${\it \Gamma}_0(S_0)$&nbsp; nach&nbsp; ${\it \Gamma}_5(S_0)$, nämlich&nbsp; $S_0 &#8594; S_1 &#8594; S_0 &#8594; S_0 &#8594; S_1&#8594; S_0 $. Wir verweisen auf die Musterlösung zur&nbsp; [[Aufgaben:Exercise_3.09Z:_Viterbi_Algorithm_again|"Aufgabe 3.9Z"]].<br><br>
  
 
Die Skizze für den BCJR&ndash;Algorithmus verdeutlicht die Gewinnung des extrinsischen&nbsp; $L$&ndash;Wertes für das dritte Symbol &nbsp; &#8658; &nbsp; $L_{\rm E}(3)$. Der relevante Bereich im Trellis ist schraffiert:
 
Die Skizze für den BCJR&ndash;Algorithmus verdeutlicht die Gewinnung des extrinsischen&nbsp; $L$&ndash;Wertes für das dritte Symbol &nbsp; &#8658; &nbsp; $L_{\rm E}(3)$. Der relevante Bereich im Trellis ist schraffiert:

Revision as of 22:15, 22 October 2022

# OVERVIEW OF THE FOURTH MAIN CHAPTER #


The last main chapter of the channel coding book describes  iterative decoding techniques as used in most of today's (2017) communication systems. This is due to the following reasons:

  • To approach the channel capacity, one needs very long codes.
  • But for long codes, blockwise  maximum likelihood decoding  is almost impossible.


The decoder complexity can be significantly reduced with almost the same quality if two (or more) short channel codes are linked together and the newly acquired (soft) information is exchanged between the decoders at the receiver in several steps - i.e. iteratively.

The breakthrough in the field came in the early 1990s with the invention of  turbo codes  by  "Claude Berrou"  and shortly thereafter with the rediscovery of  low-density parity-check codes  by  wikipedia.org/wiki/David_J._C._MacKay "David J. C. MacKay"  and  "Radford M. Neal", after the LDPC codes developed as early as 1961 by  "Robert G. Gallager"  had been forgotten in the meantime.

Specifically, the fourth main chapter discusses:

  • a comparison of  Hard Decision  and  Soft Decision,
  • the quantification of  reliability information  by  log likelihood ratios (LLR),
  • the principle of symbol-wise  soft in soft out  (SISO) decoding,
  • the definition of  apriori L valuea posteriori L-value  and  extrinsic L value,
  • the basic structure of  serially concatenated  and  parallel concatenated  coding systems, respectively,
  • the characteristics of  product codes  and their  hard decision decoding,
  • the basic structure, decoding algorithm and performance of  turbo codes,
  • basic information on the  low-density parity-check codes  and their applications.



Hard Decision vs. Soft Decision


To introduce the topic discussed here, let us consider the following message transmission system with coding.

Considered message transmission system with coding

In the following, all symbols are given in bipolar representation:   "$0$"  →  "$+1$"  and  "$1$"  →  "$-1$".

  • The symbol sequence  $\underline{u} = (u_1, \ u_2)$  is assigned to the code sequence  $\underline{x} = (x_1, \ x_2, \ x_3) = (u_1, \ u_2, \ p)$  where for the parity bit  $p = u_1 ⊕ u_2$  holds   ⇒   "Single Parity–check Code"   ⇒   ${\rm SPC} (3, 2, 2)$.
  • The  "AWGN–channel"  changes the binary symbols  $x_i ∈ \{+1, \ –1\}$  to real-valued output values  $y_i$, for example according to  $\text{channel 4}$  the table below:   $x_1 = +1$   ⇒   $y_1 = +0. 9$,   $x_2 = \, -1$   ⇒   $y_2 = +0.1$  and  $x_3 = \, -1$   ⇒   $y_3 = +0.1$.
  • Decoding is done according to the criterion  "Maximum-Likelihood"  $\text{(blockwise ML)}$, distinguishing between  hard decision  $\rm {(ML–HD)}$  and  soft decision  $\rm {(ML–SD)}$ .
  • The whole block diagram corresponds to  $\rm ML–HD$. Here, only the signs of the AWGN output values   ⇒   $y_{\rm HD, \ \it i} = {\rm sign}\big [y_{\rm SD, \ \it i}\big ]$  are evaluated for decoding. In  soft decision  $\rm {(ML–SD)}$  one omits the shaded block and directly evaluates the continuous value input variables  $y_{\rm SD, \ \it i}$ .


Comparison of hard decision and soft decision

For all columns of this table it is assumed:

  • the message block  $\underline{u} = (0, 1)$, bipolar representable as  $(+1, \, –1)$,
  • the  ${\rm SPC} \ (3, 2)$–coded block  $\underline{x} = (0, 1, 1)$  respectively  in bipolar representation  $(+1, \, -1, \, -1)$.


Thus, the four columns differ only by different AWGN realizations.

$\text{Definition:}$  From the example table you can see:

  • $\text{Hard Decision:}$   The symbol sequence  $\underline{v}_{\rm HD}$  results from the hard decided channel values  $\underline{y}_{\rm HD}$ (blue background).
    In our example, only the constellations according to  $\text{channel 1}$  and  $\text{channel 2}$  are decoded without errors.
  • $\text{Soft Decision:}$   The symbol sequence  $\underline{v}_{\rm SD}$  results from the "soft" channel output values  $\underline{y}_{\rm SD}$ (green background).
    Now, in this example, it is also correctly decided at  $\text{channel 3}$ 


The entries in the example table above are to be interpreted as follows:

  • For ideal channel   ⇒   $\text{channel 1}$   ⇒   $\underline{x} = \underline{y}_{\rm SD} = \underline{y}_{\rm HD}$  there is no difference between the (blue) conventional hard decision variant $\rm {(ML–HD)}$  and the (green) soft decision variant $\rm {(ML–SD)}$.
  • Setting according  $\text{channel 2}$  demonstrates low signal distortions. Because of  $\underline{y}_{\rm HD} = \underline{x}$  (which means that the channel does not distort the signs) also  $\rm ML–HD$  gives the correct result  $\underline{v}_{\rm HD} = \underline{u}$.
  • For  $\text{channel 3}$  there is  $\underline{y}_{\rm HD} ≠ \underline{x}$  and there is also no  ${\rm SPC} \ (3, 2)$–assignment  $\underline{u}$   ⇒   $\underline{y}_{\rm HD}$. The ML–decoder reports here by outputting  $\underline{v}_{\rm HD} = \rm (E, \ E)$ that it failed in decoding this block. "$\rm E$" stands for  "Erasure" .
  • Also the  soft decision  decoder recognizes that decoding based on the signs does not work. Based on the  $\underline{y}_{\rm SD}$–values, however, it recognizes that with high probability the second bit has been corrupted and decides to use the correct symbol sequence  $\underline{v}_{\rm SD} = (+1, \, -1) = \underline{u}$.
  • In  $\text{channel 4}$  both the signs of bit 2 and bit 3 are changed by the AWGN–channel, leading to the result  $\underline{v}_{\rm HD} = (+1, +1) ≠ \underline{u}(+1, \, -1)$  ⇒   a block error and a bit error at the same time. Also the soft decision decoder gives the same wrong result here.

The decoding variant "ML–SD" also offers the advantage over "ML–HD" that it is relatively easy to assign a reliability value to each decoding result (in the above table, however, this is not specified). This reliability value

  • would have its maximum value at  $\text{channel 1}$ ,
  • would be significantly smaller for  $\text{channel 2}$ ,
  • would be close to zero for  $\text{channel 3}$  and  $\text{channel 4}$ .

Reliability information - Log Likelihood Ratio


Let  $x ∈ \{+1, \, -1\}$  be a binary random variable with probabilities  ${\rm Pr}(x = +1)$  and  ${\rm Pr}(x = \, -1)$. For coding theory, it proves convenient in terms of computation times to use the natural logarithm of the quotient instead of the probabilities  ${\rm Pr}(x = ±1)$  .

$\text{Definition:}$  The  log likelihood ratio (LLR)  of the random variable  $x ∈ \{+1, \, -1\}$  is:

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

For unipolar/symbolic representation  $(+1  →  0$   and   $-1  →  1)$  applies accordingly with  $\xi ∈ \{0, \, 1\}$:

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


Below is given the nonlinear relationship between  ${\rm Pr}(x = ±1)$  and  $L(x)$ . Replacing  ${\rm Pr}(x = +1)$  with  ${\rm Pr}(\xi = 0)$, the middle row gives the  $L$–value of the unipolar random variable  $\xi$.

Probability and LLR

You can see:

  • The more likely random value of  $x ∈ \{+1, \, -1\}$  is given by the  sign   ⇒   ${\rm sign} \ L(x)$  given.
  • In contrast, the  absolute value    ⇒   $|L(x)|$  indicates the reliability for the result  ${\rm sign}(L(x))$ .

BSC model

$\text{Example 1:}$  We consider the outlined  "BSC model"  with bipolar representation. Here, with the corruption probability  $\varepsilon = 0.1$  and the two random variables  $x ∈ \{+1, \, -1\}$  and  $y ∈ \{+1, \, -1\}$  at the input and output of the channel:

\[L(y\hspace{0.05cm}\vert\hspace{0.05cm}x) = {\rm ln} \hspace{0.15cm} \frac{ {\rm Pr}(y\hspace{0.05cm}\vert\hspace{0.05cm}x = +1) }{ {\rm Pr}(y\hspace{0.05cm}\vert\hspace{0.05cm}x = -1)} = \left\{ \begin{array}{c} {\rm ln} \hspace{0.15cm} \big[(1 - \varepsilon)/\varepsilon \big]\\ {\rm ln} \hspace{0.15cm}\big [\varepsilon/(1 - \varepsilon)\big] \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}\]

For example, $\varepsilon = 0.1$  results in the following numerical values (compare upper table):

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

This example shows that the so-called  LLR algebra can also be applied to conditional probabilities.
In the  "Exercise 4.1Z"  the BEC–model is described in a similar way.


$\text{Example 2:}$  In another example, now consider the  "AWGN channel"  with the conditional probability density functions

Conditional AWGN density functions
\[f_{y \hspace{0.03cm}\vert \hspace{0.03cm}x=+1 } \hspace{0.05cm} (y \hspace{0.05cm}\vert\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}\vert \hspace{0.03cm}x=-1 } \hspace{0.05cm} (y \hspace{0.05cm}\vert\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 the graphic, two exemplary Gaussian functions are shown as blue and red curves, respectively.

The total PDF of the output signal $y$  is obtained from the (equally) weighted sum:

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

We now calculate the probability that the received value  $y$  lies in a (very) narrow interval of width  $\Delta$  around  $y_0 = 0.25$ . One obtains approximately

\[{\rm Pr} (\vert y - y_0\vert \le{\it \Delta}/2 \hspace{0.05cm} \Big \vert \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} (\vert y - y_0\vert \le {\it \Delta}/2 \hspace{0.05cm} \Big \vert \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}.\]

The slightly larger vertical lines denote the conditions, the smaller ones the absolute value.

The LLR of the conditional probability in the forward direction  $($meaning:   output  $y$  for a given input  $x)$  is thus obtained as the logarithm of the quotient of both expressions:

\[L(y = y_0\hspace{0.05cm}\vert\hspace{0.05cm}x) = {\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 ] = \frac{(y_0+1)^2-(y_0-1)^2}{2\cdot \sigma^2} = \frac{2 \cdot y_0}{\sigma^2}\hspace{0.05cm}. \]

If we now replace the auxiliary  $y_0$  with the (general) random  $y$  at the AWGN output, the final result is:

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

Here  $K_{\rm L} = 2/\sigma^2$  is a constant that depends solely on the standard deviation of the Gaussian

.

Symbol-wise soft in soft out decoding


We now assume a  $(n, \ k)$–block code where the codeword  $\underline{x} = (x_1, \ \text{...} \ , \ x_n)$  is corrupted by the channel into the received word  $\underline{y} = (y_1, \ \text{...} \ , \ y_n)$ .

  • For long codes, a  maximum a posteriori block-level decision  – is short:  $\text{ "block wise MAP"}$  – very elaborate.
  • One would have to find among the  $2^k $ allowable codewords  $\underline{x}_j ∈ \mathcal{C}$  the one with the greatest probability of inference (  A Posteriori Probability, APP).
  • The codeword to output  $\underline{z}$  in this case would be  $\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}.$


Model of symbol-wise soft in soft out decoding

A second possibility is decoding on bit level. The represented symbol-wise (or bit-wise)  $\text{soft in soft out decoder}$  has the exercise to decode all codeword bits  $x_i ∈ \{0, \, 1\}$  according to maximum inference probability (APP)  ${\rm Pr}(x_i | \underline{y})$ . With the running variable  $i = 1, \text{...} , \ n$  holds in this case:

  • The corresponding  LLR for the  $i$th code bit is:
\[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} . \]
  • The decoder works iteratively. At initialization $($indicated in the diagram by the parameter  $I = 0)$  is  $L_{\rm APP}(i) = L_{\rm K}(i)$, where the channel LLR  $L_{\rm K}(i)$  is given by the received value  $y_i$ .
  • In addition, the extrinsic  LLR  $L_{\rm E}(i)$ is calculated, which quantifies the total information provided by all other bits  $(j ≠ i)$  due to the code–properties about the considered  $i$th bit.
  • At the next iteration  $($ab  $I = 1)$  $L_{\rm E}(i)$  is taken into account in the computation of  $L_{\rm APP}(i)$  as apriori information  $L_{\rm A}(i)$ . Thus, for the new a posteriori LLR in iteration  $I + 1$  holds:
\[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} . \]
  • The iterations continue until all absolute values  $|L_{\rm APP}(i)|$  are greater than a given value. The most likely codeword  $\underline{z}$  is then obtained from the signs of all  $L_{\rm APP}(i)$, with  $i = 1, \ \text{...} , \ n$.
  • For a  "systematic code"  the first  $k$  bits of  $\underline{z}$  indicate the information word being searched for, which will most likely match the message  $\underline{u}$ being sent.

This description of the SISO decoder after  [Bos98][1]  is intended at this point primarily to clarify the different  $L$–values. One recognizes the large potential of the symbol-wise decoding only in connection with  "concatenated coding systems".

Calculation of extrinsic LLRs


The difficulty in symbol-wise iterative decoding is generally the provision of the extrinsic  LLRs   $L_{\rm E}(i)$. For a code of length  $n$  here, for the run variable:  $i = 1, \ \text{...} , \ n$.

$\text{Definition:}$  The  extrinsic LLR is a measure of the information that the other symbols  $(j ≠ i)$  of the codeword provide about the  $i$–th code symbol, expressed as a log likelihood ratio. We denote this characteristic value by  $L_{\rm E}(i)$.


We now calculate the extrinsic  LLRs  $L_{\rm E}(i)$  for two example codes.


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

A repetition code is characterized by the fact that all  $n$  code symbols  $x_i ∈ \{0, \, 1\}$  are identical. The extrinsic LLR for the  $i$&th symbol is very easy to specify here and is:

\[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}.\]
  • If the sum over all  $L_{j ≠ i}$  is positive, this implies a preference for the decision   $x_i = 0$ from the point of view of the other LLR.
  • On the other hand, if the sum is negative  $x_i = 1$  is more likely.
  • $L_{\rm E}(i) = 0$  does not allow prediction.


$\text{Example 5:}$  We consider the decoding of the repetition code  $\text{RC (4, 1,4)}$. We make three different assumptions for the  Log Likelihood Ratio  $\underline{L}_{\rm A}^{(I=0)} = \underline{L}_{\rm APP}$ .

Decoding example  $\rm (A)$  for the  ${\rm RC} \ (4, 1, 4)$

$\text{Decoding example (A):}$

$$\underline{L}_{\rm APP} = (+1, -1, +3, -1)\text{:}$$
$$L_{\rm E}(1) = -1+3-1 = +1\hspace{0.05cm},$$
$$L_{\rm E}(2) = +1+3-1 = +3\hspace{0.05cm},$$
$$L_{\rm E}(3) = +1-1 -1= -1\hspace{0.05cm},$$
$$L_{\rm E}(4) = +1-1 +3 = +3\hspace{0.05cm}$$
$$\hspace{0.3cm}\Rightarrow\hspace{0.3cm}\underline{L}_{\rm E}^{(I=0)}= (+1, +3, -1, +3) \hspace{0.3cm}\Rightarrow\hspace{0.3cm}\underline{L}_{\rm A}^{(I=1)}=\underline{L}_{\rm A}^{(I=0)}+ \underline{L}_{\rm E}^{(I=0)}= (+2, +2, +2, +2)$$
  • At the beginning  $(I=0)$  the positive  $L_{\rm E}$–values indicate  $x_1 = 0$, $x_2 = 0$  and  $x_4 = 0$  while  $x_3 =1$  is more likely.
  • Already after one iteration  $(I=1)$  all  $L_{\rm A}$–values are positive   ⇒   information bit is decoded as  $u = 0$ .
  • Further iterations yield nothing.


Decoding example  $\rm (B)$  for the  ${\rm RC} \ (4, 1, 4)$

$\text{Decoding example (B):}$ $$\underline{L}_{\rm APP} = (+1, +1, -4, +1)\text{:}$$ $$\underline{L}_{\rm E}^{(I=0)} = \ (-2, -2, +3, -2)$$

  • Although three signs were wrong at the beginning, after two iterations all $L_{\rm A}$–values (LLR) are negative.
  • The information bit is decoded as  $u = 1$ .
Decoding example  $\rm (C)$  for the  ${\rm RC} \ (4, 1, 4)$

$\text{Decoding example (C):}$ $$\underline{L}_{\rm APP} = (+1, +1, -3, +1)\text{:}$$ $$\underline{L}_{\rm E}^{(I=0)} = (-1, -1, +3, -1)$$

  • All  $L_{\rm A}$–values (LLR) are zero already after one iteration.
  • The information bit cannot be decoded, although the initial situation was not much worse than with  $\rm (B)$.
  • Further iterations bring nothing here either.


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

For each  Single Parity–check Code  the number of ones in each codeword is even. Or, put another way,   For each codeword  $\underline{x}$  the  "Hamming weight"  $w_{\rm H}(\underline{x})$  is even.

$\text{Definition:}$  Let the codeword  $\underline{x}^{(–i)}$  contain all symbols except  $x_i$   ⇒   vector of length  $n -1$. Thus, the  $\text{extrinsic }LLR$  is with respect to the  $i$–th symbol when  $\underline{x}$  was received:

\[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} \vert\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} \vert \hspace{0.05cm}\underline{y} \hspace{0.05cm}\right ]} \hspace{0.05cm}.\]

As will be shown in the  "Task 4.4" , it is also possible to write for this:

\[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}.\]


$\text{Example 6:}$  We assume  Single Parity–check code  with  $n = 3, \ k = 2$   ⇒   briefly  ${\rm SPC} \ (3, \ 2, \ 2)$  from.

The  $2^k = 4$  valid codewords  $\underline{x} = \{x_1, x_2, x_3\}$  are for bipolar description   ⇒   $x_i ∈ \{±1\}$:

Decoding example for the  ${\rm SPC} \ (3, 2, 2)$
$$ \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}, $$
$$\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}, $$
$$\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}, $$
$$\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}. $$

So, with this code, the product  $x_1 \cdot x_2 \cdot x_3$  is always positive.

The above table shows the decoding process for  $\underline{L}_{\rm APP} = (+2.0, +0.4, \, –1.6)$. The hard decision according to the signs of  $L_{\rm APP}(i)$  would yield here  $(+1, +1, \, -1)$, thus no valid codeword of  ${\rm SP}(3, \ 2, \ 2)$.

On the right side of the table, the corresponding extrinsic LLRs are entered:

\[L_{\rm E}(1) = 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) =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) =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}.\]

The second equation can be interpreted as follows:

  • $L_{\rm APP}(1) = +2.0$  and  $L_{\rm APP}(3) = \, -1.6$  state that the first bit is more likely to be  $+1$  than  $-1$  and the third bit is more likely to be  $-1$  than  $+1$. The reliability (the amount) is slightly greater for the first bit than for the third.
  • The extrinsic information  $L_{\rm E}(2) = \, -0.518$ considers only the information of bit 1 and bit 3 about bit 2. From their point of view, the second bit is a  $-1$  with reliability  $0.518$.
  • The  $y_2$  value derived from the received LLR ⇒   $L_{\rm APP}(2) = +0.4$  has suggested a  $+1$  for the second bit. The discrepancy is resolved here already in the iteration  $I = 1$ .
  • Decided here for the codeword  $\underline{x}_1$. For  $0.518 < L_{\rm APP}(2) < 1.6$  the result  $\underline{x}_1$  would only be available after several iterations. For  $L_{\rm APP}(2) > 1.6$  on the other hand, the decoder returns  $\underline{x}_0$.


BCJR decoding: Forward-backward algorithm


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  ${\it \Gamma}_0(S_0)$  nach  ${\it \Gamma}_5(S_0)$, nämlich  $S_0 → S_1 → S_0 → S_0 → S_1→ S_0 $. 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   ⇒   $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, \ \text{...}\hspace{0.05cm} , \ \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, \ \text{...}\hspace{0.05cm} , \ \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$.

Basic structure of concatenated coding systems


Die wichtigsten Kommunikationssysteme der letzten Jahre verwenden zwei unterschiedliche Kanalcodes. Man spricht dann von  verketteten Codiersystemen  (englisch:  Concatenated Codes). Auch bei relativ kurzen Komponentencodes  $\mathcal{C}_1$  und  $\mathcal{C}_2$  ergibt sich für den verketteten Code  $\mathcal{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), \ \text{...}\hspace{0.05cm} , \ 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,\hspace{0.05cm}1} $ und  $\underline{L}_{\rm K,\hspace{0.05cm}2}$  gebildet.
  • Der symbolweise Decoder ermittelt entsprechend der vorne beschriebenen  Vorgehensweise  die extrinsischen $L$–Werte  $\underline{L}_{\rm E,\hspace{0.05cm} 1}$  und  $\underline{L}_{\rm E,\hspace{0.05cm} 2}$, die gleichzeitig die Apriori–Informationen  $\underline{L}_{\rm A,\hspace{0.05cm} 2}$  und  $\underline{L}_{\rm A,\hspace{0.05cm} 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äß 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.