Difference between revisions of "Aufgaben:Exercise 4.13: Decoding LDPC Codes"
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 × 12–Prüfmatrix H, die zu Beginn der Aufgabe als Tanner–Graph dargestellt werden soll. Dabei ist anzumerken: | + | Ausgangspunkt ist die dargestellte 9 × 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 <i>Variable Nodes</i> (abgekürzt VNs) Vi bezeichnen die n Codewortbits. |
− | * Die <i>Check Nodes</i> (abgekürzt CNs) Cj stehen für die m Prüfgleichungen. | + | * Die <i>Check Nodes</i> (abgekürzt CNs) Cj 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 | + | * Eine Verbindung zwischen Vi und Cj zeigt an, dass das Matrixelement hj,i der Prüfmatrix $\mathbf{H}$ $($in Zeile j, Spalte $i)$ gleich 1 ist. Für hj,i=0 gibt es keine Verbindung zwischen Vi und 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–Graphen verbunden sind. Entsprechend gehören zu N(Cj) alle <i>Variable Nodes</i> Vi mit einer Verbindung zu 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–Graphen verbunden sind. Entsprechend gehören zu N(Cj) alle <i>Variable Nodes</i> Vi mit einer Verbindung zu Cj. |
Die Decodierung erfolgt abwechselnd bezüglich | Die Decodierung erfolgt abwechselnd bezüglich | ||
− | * den <i>Variable Nodes</i> ⇒ <i>Variable Nodes Decoder</i> (VND), und | + | * den <i>Variable Nodes</i> ⇒ <i>Variable Nodes Decoder</i> (VND), und |
− | * den <i>Check Nodes</i> ⇒ <i>Check Nodes Decoder</i> (CND). | + | * den <i>Check Nodes</i> ⇒ <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 | + | * Die Aufgabe gehört zum Kapitel [[Kanalcodierung/Grundlegendes_zu_den_Low%E2%80%93density_Parity%E2%80%93check_Codes| Grundlegendes zu den Low–density Parity–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–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–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 <i>Variable Nodes</i> (IVN) und <i>Check Nodes</i> (ICN) 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 <i>Check Nodes</i> und <i>Variable Nodes</i> sind verbunden? |
|type="[]"} | |type="[]"} | ||
− | + C4 und V6. | + | + C4 und V6. |
− | + C5 und V5. | + | + C5 und V5. |
− | - C6 und V4. | + | - C6 und V4. |
− | - C6 und Vi für i>9. | + | - C6 und Vi für i>9. |
− | + Cj und Vj−1 für j>6. | + | + Cj und Vj−1 für j>6. |
− | {Welche Aussagen treffen bezüglich der Nachbarn N(Vi) und N(Cj) zu? | + | {Welche Aussagen treffen bezüglich der Nachbarn N(Vi) und N(Cj) 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 <i>Variable Node Decoder</i> (VND) zu? |
|type="[]"} | |type="[]"} | ||
− | + Zu Beginn (Iteration 0) werden die L–Werte der Knoten V1,..., Vn entsprechend den Kanaleingangswerten yi vorbelegt. | + | + Zu Beginn (Iteration 0) werden die L–Werte der Knoten V1,..., Vn entsprechend den Kanaleingangswerten yi vorbelegt. |
− | + Für den VND stellt L(C_j → V_i) Apriori–Information dar. | + | + Für den VND stellt L(C_j → V_i) Apriori–Information dar. |
− | - Es gibt Analogien zwischen dem | + | - Es gibt Analogien zwischen dem <i>Variable Node Decoder</i> und der Decodierung eines <i>Single Parity–check Codes</i>. |
− | {Welche Aussagen treffen für den <i>Check Node Decoder</i> (CND) zu? | + | {Welche Aussagen treffen für den <i>Check Node Decoder</i> (CND) zu? |
|type="[]"} | |type="[]"} | ||
- Der CND liefert am Ende die gewünschten Aposteriori–L–Werte. | - Der CND liefert am Ende die gewünschten Aposteriori–L–Werte. | ||
− | - Für den CND stellt L(C_j → V_i) Apriori–Information dar. | + | - Für den CND stellt L(C_j → V_i) Apriori–Information dar. |
− | + Es gibt Analogien zwischen dem | + | + Es gibt Analogien zwischen dem <i>Check Node Decoder</i> und der Decodierung eines <i>Single Parity–check Codes</i>. |
</quiz> | </quiz> | ||
Revision as of 15:49, 10 July 2019
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 VNs) Vi bezeichnen die n Codewortbits.
- Die Check Nodes (abgekürzt CNs) Cj 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:
- Die Aufgabe gehört zum Kapitel Grundlegendes zu den Low–density Parity–check Codes.
- Bezug genommen wird insbesondere auf die Seite Iterative Decodierung von LDPC–Codes.
Fragebogen
Musterlösung
- 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.
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 1≤j≤9,
- wS(i)=3=wS für 1≤i≤12.
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(Cj→Vi) 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(Cj→Vi) für den CND extrinsische Information darstellt, und
- es tatsächlich Analogien zwischen dem CND–Algorithmus und der SPC–Decodierung gibt.