Loading [MathJax]/jax/output/HTML-CSS/fonts/TeX/fontdata.js

Difference between revisions of "Aufgaben:Exercise 4.13: Decoding LDPC Codes"

From LNTwww
m (Textersetzung - „* Sollte die Eingabe des Zahlenwertes „0” erforderlich sein, so geben Sie bitte „0.” ein.“ durch „ “)
Line 2: Line 2:
  
 
[[File:P_ID3083__KC_A_4_13_v1.png|right|frame|Gegebene LDPC–Prüfmatrix]]
 
[[File:P_ID3083__KC_A_4_13_v1.png|right|frame|Gegebene LDPC–Prüfmatrix]]
Die Aufgabe behandelt die [[Kanalcodierung/Grundlegendes_zu_den_Low–density_Parity–check_Codes#Iterative_Decodierung_von_LDPC.E2.80.93Codes|Iterative Decodierung von LDPC–Codes]] gemäß dem ''Message–passing Algorithmus''.
+
Die Aufgabe behandelt die  [[Kanalcodierung/Grundlegendes_zu_den_Low–density_Parity–check_Codes#Iterative_Decodierung_von_LDPC.E2.80.93Codes|Iterative Decodierung von LDPC–Codes]]  gemäß dem  ''Message–passing Algorithmus''.
  
Ausgangspunkt ist die dargestellte 9 &times 12–Prüfmatrix H, die zu Beginn der Aufgabe als Tanner–Graph dargestellt werden soll. Dabei ist anzumerken:
+
Ausgangspunkt ist die dargestellte  9 &times 12–Prüfmatrix  H, die zu Beginn der Aufgabe als Tanner–Graph dargestellt werden soll. Dabei ist anzumerken:
* Die <i>Variable Nodes</i> (abgekürzt VNs) Vi bezeichnen die n Codewortbits.
+
* Die&nbsp; <i>Variable Nodes</i>&nbsp; (abgekürzt&nbsp; VNs)&nbsp; Vi&nbsp; bezeichnen die&nbsp; n&nbsp; Codewortbits.
* Die <i>Check Nodes</i> (abgekürzt CNs) Cj stehen für die m Prüfgleichungen.
+
* Die&nbsp; <i>Check Nodes</i>&nbsp; (abgekürzt&nbsp; CNs)&nbsp; Cj&nbsp; stehen für die&nbsp; m&nbsp; Prüfgleichungen.
* Eine Verbindung zwischen Vi und Cj zeigt an, dass das Matrixelement hj,i der Prüfmatrix H (in Zeile j, Spalte i) gleich 1 ist. Für hj,i=0 gibt es keine Verbindung zwischen Vi und Cj.
+
* Eine Verbindung zwischen&nbsp; Vi&nbsp; und&nbsp; Cj&nbsp; zeigt an, dass das Matrixelement&nbsp; hj,i&nbsp; der Prüfmatrix&nbsp; $\mathbf{H}$&nbsp; $($in Zeile&nbsp; j, Spalte&nbsp; $i)$&nbsp; gleich&nbsp; 1&nbsp; ist. Für&nbsp; hj,i=0&nbsp; gibt es keine Verbindung zwischen&nbsp; Vi&nbsp; und&nbsp; Cj.
* Als die <i>Nachbarn</i> N(Vi) von Vi bezeichnet man die Menge aller <i>Check Nodes</i> Cj, die mit Vi im Tanner&ndash;Graphen verbunden sind. Entsprechend gehören zu N(Cj) alle <i>Variable Nodes</i> Vi mit einer Verbindung zu Cj.
+
* Als die&nbsp; <i>Nachbarn</i>&nbsp; N(Vi)&nbsp; von&nbsp; Vi&nbsp; bezeichnet man die Menge aller&nbsp; <i>Check Nodes</i>&nbsp; Cj, die mit&nbsp; Vi&nbsp; im Tanner&ndash;Graphen verbunden sind. Entsprechend gehören zu&nbsp; N(Cj)&nbsp; alle <i>Variable Nodes</i>&nbsp; Vi&nbsp; mit einer Verbindung zu&nbsp; Cj.
  
  
 
Die Decodierung erfolgt abwechselnd bezüglich
 
Die Decodierung erfolgt abwechselnd bezüglich
* den <i>Variable Nodes</i> &nbsp; &#8658; &nbsp; <i>Variable Nodes Decoder</i> (VND), und
+
* den&nbsp; <i>Variable Nodes</i> &nbsp; &#8658; &nbsp; <i>Variable Nodes Decoder</i> (VND), und
* den <i>Check Nodes</i> &nbsp; &#8658; &nbsp; <i>Check Nodes Decoder</i> (CND).
+
* den&nbsp; <i>Check Nodes</i> &nbsp; &#8658; &nbsp; <i>Check Nodes Decoder</i> (CND).
  
  
Hierauf wird in den Teilaufgaben (5) und (6) Bezug genommen.
+
Hierauf wird in den Teilaufgaben '''(5)''' und '''(6)''' Bezug genommen.
  
  
Line 22: Line 22:
  
 
''Hinweise:''
 
''Hinweise:''
* Die Aufgabe gehört zum Themengebiet des Kapitels [[Kanalcodierung/Grundlegendes_zu_den_Low%E2%80%93density_Parity%E2%80%93check_Codes| Grundlegendes zu den Low&ndash;density Parity&ndash;check Codes]].
+
* Die Aufgabe gehört zum Kapitel&nbsp; [[Kanalcodierung/Grundlegendes_zu_den_Low%E2%80%93density_Parity%E2%80%93check_Codes| Grundlegendes zu den Low&ndash;density Parity&ndash;check Codes]].
*Bezug genommen wird insbesondere auf die Seite [[Kanalcodierung/Grundlegendes_zu_den_Low–density_Parity–check_Codes#Iterative_Decodierung_von_LDPC.E2.80.93Codes|Iterative Decodierung von LDPC&ndash;Codes]].  
+
*Bezug genommen wird insbesondere auf die Seite&nbsp; [[Kanalcodierung/Grundlegendes_zu_den_Low–density_Parity–check_Codes#Iterative_Decodierung_von_LDPC.E2.80.93Codes|Iterative Decodierung von LDPC&ndash;Codes]].  
 
   
 
   
  
Line 30: Line 30:
 
===Fragebogen===
 
===Fragebogen===
 
<quiz display=simple>
 
<quiz display=simple>
{Wie viele <i>Variable Nodes</i> (IVN) und <i>Check Nodes</i> (ICN) sind zu berücksichtigen?
+
{Wie viele&nbsp; <i>Variable Nodes</i> (IVN)&nbsp; und&nbsp; <i>Check Nodes</i> (ICN)&nbsp; sind zu berücksichtigen?
 
|type="{}"}
 
|type="{}"}
 
IVN = { 12 }  
 
IVN = { 12 }  
 
ICN = { 9 }
 
ICN = { 9 }
  
{Welche der folgenden <i>Check Nodes</i> und <i>Variable Nodes</i> sind verbunden?
+
{Welche der folgenden&nbsp; <i>Check Nodes</i>&nbsp; und&nbsp; <i>Variable Nodes</i>&nbsp; sind verbunden?
 
|type="[]"}
 
|type="[]"}
+ C4 und V6.
+
+ C4&nbsp; und &nbsp;V6.
+ C5 und V5.
+
+ C5&nbsp; und &nbsp;V5.
- C6 und V4.
+
- C6&nbsp; und &nbsp;V4.
- C6 und Vi für i>9.
+
- C6&nbsp; und &nbsp;Vi&nbsp; für &nbsp;i>9.
+ Cj und Vj1 für j>6.
+
+ Cj&nbsp; und &nbsp;Vj1&nbsp; für&nbsp; j>6.
  
{Welche Aussagen treffen bezüglich der Nachbarn N(Vi) und N(Cj) zu?
+
{Welche Aussagen treffen bezüglich der Nachbarn&nbsp; N(Vi)&nbsp; und&nbsp; N(Cj)&nbsp; zu?
 
|type="[]"}
 
|type="[]"}
 
- N(V1)={C1, C2, C3, C4},
 
- N(V1)={C1, C2, C3, C4},
Line 50: Line 50:
 
- N(C9)={V3, V5, V7}.
 
- N(C9)={V3, V5, V7}.
  
{Welche Aussagen treffen für den <i>Variable Node Decoder</i> (VND) zu?
+
{Welche Aussagen treffen für den&nbsp; <i>Variable Node Decoder</i>&nbsp; (VND) zu?
 
|type="[]"}
 
|type="[]"}
+ Zu Beginn (Iteration 0) werden die L&ndash;Werte der Knoten V1,..., Vn entsprechend den Kanaleingangswerten yi vorbelegt.
+
+ Zu Beginn (Iteration 0) werden die&nbsp; L&ndash;Werte der Knoten&nbsp; V1,..., Vn&nbsp; entsprechend den Kanaleingangswerten&nbsp; yi&nbsp; vorbelegt.
+ Für den VND stellt L(C_j &#8594; V_i) Apriori&ndash;Information dar.
+
+ Für den VND stellt&nbsp; L(C_j &#8594; V_i)&nbsp; Apriori&ndash;Information dar.
- Es gibt Analogien zwischen dem VND und der Decodierung eines <i>Single Parity&ndash;check Codes</i>-
+
- Es gibt Analogien zwischen dem&nbsp; <i>Variable Node Decoder</i>&nbsp; und der Decodierung eines <i>Single Parity&ndash;check Codes</i>.
  
{Welche Aussagen treffen für den <i>Check Node Decoder</i> (CND) zu?
+
{Welche Aussagen treffen für den&nbsp; <i>Check Node Decoder</i>&nbsp; (CND) zu?
 
|type="[]"}
 
|type="[]"}
 
- Der CND liefert am Ende die gewünschten Aposteriori&ndash;L&ndash;Werte.  
 
- Der CND liefert am Ende die gewünschten Aposteriori&ndash;L&ndash;Werte.  
- Für den CND stellt L(C_j &#8594; V_i) Apriori&ndash;Information dar.
+
- Für den CND stellt&nbsp; L(C_j &#8594; V_i)&nbsp; Apriori&ndash;Information dar.
+ Es gibt Analogien zwischen dem CND und der Decodierung eines <i>Single Parity&ndash;check Codes</i>.
+
+ Es gibt Analogien zwischen dem&nbsp; <i>Check Node Decoder</i>&nbsp; und der Decodierung eines <i>Single Parity&ndash;check Codes</i>.
 
</quiz>
 
</quiz>
  

Revision as of 15:49, 10 July 2019

Gegebene LDPC–Prüfmatrix

Die Aufgabe behandelt die  Iterative Decodierung von LDPC–Codes  gemäß dem  Message–passing Algorithmus.

Ausgangspunkt ist die dargestellte  9×12–Prüfmatrix  H, die zu Beginn der Aufgabe als Tanner–Graph dargestellt werden soll. Dabei ist anzumerken:

  • Die  Variable Nodes  (abgekürzt  VNsVi  bezeichnen die  n  Codewortbits.
  • Die  Check Nodes  (abgekürzt  CNsCj  stehen für die  m  Prüfgleichungen.
  • Eine Verbindung zwischen  Vi  und  Cj  zeigt an, dass das Matrixelement  hj,i  der Prüfmatrix  H  (in Zeile  j, Spalte  i)  gleich  1  ist. Für  hj,i=0  gibt es keine Verbindung zwischen  Vi  und  Cj.
  • Als die  Nachbarn  N(Vi)  von  Vi  bezeichnet man die Menge aller  Check Nodes  Cj, die mit  Vi  im Tanner–Graphen verbunden sind. Entsprechend gehören zu  N(Cj)  alle Variable Nodes  Vi  mit einer Verbindung zu  Cj.


Die Decodierung erfolgt abwechselnd bezüglich

  • den  Variable Nodes   ⇒   Variable Nodes Decoder (VND), und
  • den  Check Nodes   ⇒   Check Nodes Decoder (CND).


Hierauf wird in den Teilaufgaben (5) und (6) Bezug genommen.



Hinweise:



Fragebogen

1

Wie viele  Variable Nodes (IVN)  und  Check Nodes (ICN)  sind zu berücksichtigen?

IVN = 

ICN = 

2

Welche der folgenden  Check Nodes  und  Variable Nodes  sind verbunden?

C4  und  V6.
C5  und  V5.
C6  und  V4.
C6  und  Vi  für  i>9.
Cj  und  Vj1  für  j>6.

3

Welche Aussagen treffen bezüglich der Nachbarn  N(Vi)  und  N(Cj)  zu?

N(V1)={C1, C2, C3, C4},
N(C1)={V1, V2, V3, V4},
N(V9)={C3, C5,C7},
N(C9)={V3, V5, V7}.

4

Welche Aussagen treffen für den  Variable Node Decoder  (VND) zu?

Zu Beginn (Iteration 0) werden die  L–Werte der Knoten  V1,..., Vn  entsprechend den Kanaleingangswerten  yi  vorbelegt.
Für den VND stellt  L(CjVi)  Apriori–Information dar.
Es gibt Analogien zwischen dem  Variable Node Decoder  und der Decodierung eines Single Parity–check Codes.

5

Welche Aussagen treffen für den  Check Node Decoder  (CND) zu?

Der CND liefert am Ende die gewünschten Aposteriori–L–Werte.
Für den CND stellt  L(CjVi)  Apriori–Information dar.
Es gibt Analogien zwischen dem  Check Node Decoder  und der Decodierung eines Single Parity–check Codes.


Musterlösung

(1)  Der Variable Node (VN) Vi steht für das i–te Codewortbit, so dass IVN gleich der Codewortlänge n ist.

  • Aus der Spaltenzahl der H–Matrix erkennt man IVN=n =12_.
  • Für die Menge aller Variable Nodes kann man somit allgemein schreiben: VN={V1,...,Vi,..., Vn}.
  • Der Check Node (CN) Cj steht für die j–Prüfgleichung, und für die Menge aller Check Nodes gilt: CN={C1,..., Cj,..., Cm}.
  • Aus der Zeilenzahl der H–Matrix ergibt sich ICN =m=9_.


(2)  Die Ergebnisse können aus dem nachfolgend skizzierten Tanner–Graphen abgelesen werden.

Tanner–Graph für das vorliegende Beispiel

Richtig sind die Lösungsvorschläge 1, 2 und 5:

  • Das Matrixelement h5,5 (Spalte 5, Zeile 5) ist 1   ⇒   rote Verbindung.
  • Das Matrixelement h4,6 (Spalte 4, Zeile 6) ist 1   ⇒   blaue Verbindung.
  • Das Matrixelement h6,4 (Spalte 6, Zeile 4) ist 0   ⇒   keine Verbindung.
  • Es gilt h6,10=h6,11=1. Aber h6,11=0   ⇒   es bestehen nicht alle drei Verbindungen.
  • Es gilt h7,6=h8,7=h9,8=1   ⇒   grüne Verbindungen.


(3)  Es handelt sich um einen regulären LDPC–Code mit

  • wZ(j)=4=wZ für 1j9,
  • wS(i)=3=wS für 1i12.


Die Antworten 2 und 3 sind richtig, wie aus der ersten Zeile bzw. der neunten Spalte der Prüfmatrix H hervorgeht. Der Tanner–Graph bestätigt diese Ergebnisse:

  • Von C1 gibt es Verbindungen zu V1, V2, V3, und V4.
  • Von V9 gibt es Verbindungen zu C3, C5, und C7.


Die Antworten 1 und 4 können schon allein deshalb nicht richtig sein, da

  • die Nachbarschaft N(Vi) eines jeden Variable Nodes Vi genau wS=3 Elemente beinhaltet, und
  • die Nachbarschaft N(Cj) eines jeden Check Nodes Cj genau wZ=4 Elemente.


(4)  Richtig sind die Lösungsvorschläge 1 und 2, wie aus der entsprechenden Theorieseite hervorgeht:

  • Zu Beginn der Decodierung (sozusagen bei der Iteration I=0) werden die L–Werte der Variable Nodes  ⇒  L(Vi) entsprechend den Kanaleingangswerten vorbelegt.
  • Später (ab der Iteration I=1) wird im VND das vom CND übermittelte Log–Likelihood–Verhältnis L(CjVi) als Apriori–Information berücksichtigt.
  • Die Antwort 3 ist falsch. Richtig wäre vielmehr: Es gibt Analogien zwischen dem VND–Algorithmus und der Decodierung eines Repetition Codes (Wiederholungscodes).


(5)  Richtig ist nur der Lösungsvorschlag 3, weil

  • die endgültigen Aposteriori–L–Werte vom VND abgeleitet werden, nicht vom CND,
  • die L–Wert L(CjVi) für den CND extrinsische Information darstellt, und
  • es tatsächlich Analogien zwischen dem CND–Algorithmus und der SPC–Decodierung gibt.