Difference between revisions of "Aufgaben:Exercise 4.13: Decoding LDPC Codes"
m (Guenter moved page Aufgabe 4.13: Decodierung von LDPC–Codes to Exercise 4.13: Decoding LDPC Codes) |
|||
Line 1: | Line 1: | ||
− | {{quiz-Header|Buchseite= | + | {{quiz-Header|Buchseite=Channel_Coding/The_Basics_of_Low-Density_Parity_Check_Codes}} |
− | [[File:P_ID3083__KC_A_4_13_v1.png|right|frame| | + | [[File:P_ID3083__KC_A_4_13_v1.png|right|frame|Given LDPC parity-check matrix]] |
− | + | The exercise deals with [[Channel_Coding/The_Basics_of_Low-Density_Parity_Check_Codes#Iterative_decoding_of_LDPC_codes|"Iterative decoding of LDPC–codes"]] according to the ''Message passing algorithm''. | |
− | + | The starting point is the presented $9 × 12$–parity-check matrix $\mathbf{H}$, which is to be represented as a Tanner–graph at the beginning of the exercise. It should be noted that: | |
− | * | + | * The <i>variable nodes</i> (abbreviated $\rm VNs$) $V_i$ denote the $n$ codeword bits. |
− | * | + | * The <i>check nodes</i> (abbreviated $\rm CNs$) $C_j$ represent the $m$ parity-check equations. |
− | * | + | * A connection between $V_i$ and $C_j$ indicates that the matrix element $h_{j,\hspace{0.05cm} i}$ of the parity-check matrix $\mathbf{H}$ $($in row $j$, column $i)$ is equal $1$ . For $h_{j,\hspace{0.05cm}i} = 0$ there is no connection between $V_i$ and $C_j$. |
− | * | + | * The <i>neighbors</i> $N(V_i)$ of $V_i$ is called the set of all check nodes $C_j$ connected to $V_i$ in the Tanner ;graph. Correspondingly, to $N(C_j)$ belong all variable nodes $V_i$ with a connection to $C_j$. |
− | + | The decoding is performed alternately with respect to | |
− | * den <i> | + | * den <i>variable nodes</i> ⇒ variable nodes decoder (VND), and |
− | * | + | * the <i>check nodes</i> ⇒ check nodes decoder (CND). |
− | + | This is referred to in subtasks '''(5)''' and '''(6)''''. | |
− | + | Hints: | |
− | * | + | *The exercise belongs to the chapter [[Channel_Coding/The_Basics_of_Low-Density_Parity_Check_Codes| Basic information about Low–density Parity–check Codes]]. |
− | * | + | *Reference is made in particular to the page [[Channel_Coding/The_Basics_of_Low-Density_Parity_Check_Codes#Iterative_decoding_of_LDPC_codes|Iterative decoding of LDPC codes]]. |
− | === | + | ===Questions=== |
<quiz display=simple> | <quiz display=simple> | ||
− | { | + | {How many <i>variable nodes</i> $(I_{\rm VN})$ and <i>check nodes</i> $(I_{\rm CN})$ are to be considered? |
|type="{}"} | |type="{}"} | ||
$I_{\rm VN} \ = \ ${ 12 } | $I_{\rm VN} \ = \ ${ 12 } | ||
$I_{\rm CN} \ = \ ${ 9 } | $I_{\rm CN} \ = \ ${ 9 } | ||
− | { | + | {Which of the following <i>check nodes</i> and <i>variable nodes</i> are connected? |
|type="[]"} | |type="[]"} | ||
− | + $C_4$ | + | + $C_4$ and $V_6$. |
− | + $C_5$ | + | + $C_5$ and $V_5$. |
− | - $C_6$ | + | - $C_6$ and $V_4$. |
− | - $C_6$ | + | - $C_6$ and $V_i$ for $i > 9$. |
− | + $C_j$ | + | + $C_j$ and $V_{j-1}$ for $j > 6$. |
− | { | + | {Which statements are true regarding neighbors $N(V_i)$ and $N(C_j)$ ? |
|type="[]"} | |type="[]"} | ||
- $N(V_1) = \{C_1, \ C_2, \ C_3, \ C_4\}$, | - $N(V_1) = \{C_1, \ C_2, \ C_3, \ C_4\}$, | ||
Line 50: | Line 50: | ||
- $N(C_9) = \{V_3, \ V_5, \ V_7\}$. | - $N(C_9) = \{V_3, \ V_5, \ V_7\}$. | ||
− | { | + | {Which statements are true for the <i>variable node decoder</i> (VND)? |
|type="[]"} | |type="[]"} | ||
− | + | + | + At the beginning (iteration 0) the $L$ values of the nodes $V_1, \hspace{0.05cm} \text{...} \hspace{0.05cm}, \ V_n$ corresponding to the channel input values $y_i$ preassigned. |
− | + | + | + For the VND represents $L(C_j → V_i)$ apriori–information. |
− | - | + | - There are analogies between the <i>variable node decoder</i> and the decoding of a <i>single parity–check code</i>. |
− | { | + | {Which statements are true for the <i>Check Node Decoder</i> (CND)? |
|type="[]"} | |type="[]"} | ||
− | - | + | - The CND returns the desired a posteriori–$L$–values at the end. |
− | - | + | - For the CND represents $L(C_j → V_i)$ apriori–information. |
− | + | + | + There are analogies between the <i>check node decoder</i> and the decoding of a <i>single parity–check code</i>. |
</quiz> | </quiz> | ||
− | === | + | ===Solution=== |
{{ML-Kopf}} | {{ML-Kopf}} | ||
− | '''(1)''' | + | '''(1)''' The <i>variable node</i>$\rm (VN)$ $V_i$ stands for the $i$–th codeword bit, so that $I_{\rm VN}$ is equal to the codeword length $n$. |
− | * | + | *From the column number of the $\mathbf{H}$–matrix, we can see $I_{\rm VN} = n \ \underline{= 12}$. |
− | * | + | *For the set of all <i>variable nodes</i>,one can thus write in general: ${\rm VN} = \{V_1, \hspace{0.05cm} \text{...} \hspace{0.05cm} , V_i, \hspace{0.05cm} \text{...} \hspace{0.05cm} , \ V_n\}$. |
− | * | + | *The <i>check node</i> ${\rm (CN)} \ C_j$ represents the $j$ parity-check equation, and for the set of all <i>check nodes</i>, ${\rm CN} = \{C_1, \hspace{0.05cm} \text{...} \hspace{0.05cm} , \ C_j, \hspace{0.05cm} \text{...} \hspace{0.05cm} , \ C_m\}$. |
− | * | + | *From the number of rows of the $\mathbf{H}$ matrix we get $I_{\rm CN} \ \underline {= m = 9}$. |
− | '''(2)''' | + | '''(2)''' The results can be read from the Tanner graph sketched below. |
− | [[File:P_ID3084__KC_A_4_13c_v1.png|right|frame|Tanner | + | [[File:P_ID3084__KC_A_4_13c_v1.png|right|frame|Tanner graph for the present example. ]] |
− | + | Correct are <u>the proposed solutions 1, 2 and 5</u>: | |
− | * | + | * The matrix element $h_{5,\hspace{0.05cm}5}$ (column 5, row 5) ist $1$ <br>⇒ red edge. |
− | * | + | * The matrix element $h_{4,\hspace{0.05cm} 6}$ (column 4, row 6) ist $1$ <br>⇒ blue edge. |
− | * | + | * The matrix element $h_{6, \hspace{0.05cm}4}$ (column 6, row 4) ist $0$ <br>⇒ no edge. |
− | * | + | * $h_{6,\hspace{0.05cm} 10} = h_{6,\hspace{0.05cm} 11} = 1$. But $h_{6,\hspace{0.05cm}12} = 0$ <br>⇒ not all three edges exist. |
− | * | + | * It holds $h_{7,\hspace{0.05cm}6} = h_{8,\hspace{0.05cm}7} = h_{9,\hspace{0.05cm}8} = 1$ ⇒ green edges. |
− | '''(3)''' | + | '''(3)''' It is a regular LDPC code with |
* $w_{\rm Z}(j) = 4 = w_{\rm Z}$ für $1 ≤ j ≤ 9$, | * $w_{\rm Z}(j) = 4 = w_{\rm Z}$ für $1 ≤ j ≤ 9$, | ||
* $w_{\rm S}(i) = 3 = w_{\rm S}$ für $1 ≤ i ≤ 12$. | * $w_{\rm S}(i) = 3 = w_{\rm S}$ für $1 ≤ i ≤ 12$. | ||
− | + | The <u>answers 2 and 3</u> are correct, as can be seen from the first row and ninth column, respectively, of the parity-check matrix $\mathbf{H}$. <br>The Tanner graph confirms these results: | |
− | * | + | * From $C_1$ there are edges to $V_1, \ V_2, \ V_3$, and $V_4$. |
− | * | + | * From $V_9$ there are edges to $C_3, \ C_5$, and $C_7$. |
− | + | The answers 1 and 4 cannot be correct already because | |
− | * | + | * the neighborhood $N(V_i)$ of each <i>variable node</i> $V_i$ contains exactly $w_{\rm S} = 3$ elements, and |
− | * | + | * the neighborhood $N(C_j)$ of each <i>check ndes</i> $C_j$ contains exactly $w_{\rm Z} = 4$ elements. |
− | '''(4)''' | + | '''(4)''' Correct are <u>proposed solutions 1 and 2</u>, as can be seen from the [[Channel_Coding/The_Basics_of_Low-Density_Parity_Check_Codes#Iterative_decoding_of_LDPC_codes|"corresponding theory page"]]: |
− | * | + | * At the beginning of decoding $($so to speak at iteration $I=0)$ the $L$–values of the <i>variable nodes</i> ⇒ $L(V_i)$ are preallocated with the channel input values. |
− | * | + | * Later $($from iteration $I = 1)$ the log–likelihood–ratio $L(C_j → V_i)$ transmitted by the CND is considered in the VND as a priori information. |
− | * | + | * Answer 3 is wrong. Rather, the correct answer would be: there are analogies between the VND algorithm and the decoding of a <i>repetition code</i>. |
− | '''(5)''' | + | '''(5)''' Correct is <u>only proposed solution 3</u> because. |
− | * | + | * the final a posteriori $L$ values are derived from the VND, not from the CND, |
− | * | + | * the $L$ value $L(C_j → V_i)$ represents extrinsic information for the CND, and |
− | * | + | * there are indeed analogies between the CND–algorithm and SPC–decoding. |
{{ML-Fuß}} | {{ML-Fuß}} | ||
Revision as of 22:09, 10 December 2022
The exercise deals with "Iterative decoding of LDPC–codes" according to the Message passing algorithm.
The starting point is the presented $9 × 12$–parity-check matrix $\mathbf{H}$, which is to be represented as a Tanner–graph at the beginning of the exercise. It should be noted that:
- The variable nodes (abbreviated $\rm VNs$) $V_i$ denote the $n$ codeword bits.
- The check nodes (abbreviated $\rm CNs$) $C_j$ represent the $m$ parity-check equations.
- A connection between $V_i$ and $C_j$ indicates that the matrix element $h_{j,\hspace{0.05cm} i}$ of the parity-check matrix $\mathbf{H}$ $($in row $j$, column $i)$ is equal $1$ . For $h_{j,\hspace{0.05cm}i} = 0$ there is no connection between $V_i$ and $C_j$.
- The neighbors $N(V_i)$ of $V_i$ is called the set of all check nodes $C_j$ connected to $V_i$ in the Tanner ;graph. Correspondingly, to $N(C_j)$ belong all variable nodes $V_i$ with a connection to $C_j$.
The decoding is performed alternately with respect to
- den variable nodes ⇒ variable nodes decoder (VND), and
- the check nodes ⇒ check nodes decoder (CND).
This is referred to in subtasks (5) and (6)'.
Hints:
- The exercise belongs to the chapter Basic information about Low–density Parity–check Codes.
- Reference is made in particular to the page Iterative decoding of LDPC codes.
Questions
Solution
- From the column number of the $\mathbf{H}$–matrix, we can see $I_{\rm VN} = n \ \underline{= 12}$.
- For the set of all variable nodes,one can thus write in general: ${\rm VN} = \{V_1, \hspace{0.05cm} \text{...} \hspace{0.05cm} , V_i, \hspace{0.05cm} \text{...} \hspace{0.05cm} , \ V_n\}$.
- The check node ${\rm (CN)} \ C_j$ represents the $j$ parity-check equation, and for the set of all check nodes, ${\rm CN} = \{C_1, \hspace{0.05cm} \text{...} \hspace{0.05cm} , \ C_j, \hspace{0.05cm} \text{...} \hspace{0.05cm} , \ C_m\}$.
- From the number of rows of the $\mathbf{H}$ matrix we get $I_{\rm CN} \ \underline {= m = 9}$.
(2) The results can be read from the Tanner graph sketched below.
Correct are the proposed solutions 1, 2 and 5:
- The matrix element $h_{5,\hspace{0.05cm}5}$ (column 5, row 5) ist $1$
⇒ red edge. - The matrix element $h_{4,\hspace{0.05cm} 6}$ (column 4, row 6) ist $1$
⇒ blue edge. - The matrix element $h_{6, \hspace{0.05cm}4}$ (column 6, row 4) ist $0$
⇒ no edge. - $h_{6,\hspace{0.05cm} 10} = h_{6,\hspace{0.05cm} 11} = 1$. But $h_{6,\hspace{0.05cm}12} = 0$
⇒ not all three edges exist. - It holds $h_{7,\hspace{0.05cm}6} = h_{8,\hspace{0.05cm}7} = h_{9,\hspace{0.05cm}8} = 1$ ⇒ green edges.
(3) It is a regular LDPC code with
- $w_{\rm Z}(j) = 4 = w_{\rm Z}$ für $1 ≤ j ≤ 9$,
- $w_{\rm S}(i) = 3 = w_{\rm S}$ für $1 ≤ i ≤ 12$.
The answers 2 and 3 are correct, as can be seen from the first row and ninth column, respectively, of the parity-check matrix $\mathbf{H}$.
The Tanner graph confirms these results:
- From $C_1$ there are edges to $V_1, \ V_2, \ V_3$, and $V_4$.
- From $V_9$ there are edges to $C_3, \ C_5$, and $C_7$.
The answers 1 and 4 cannot be correct already because
- the neighborhood $N(V_i)$ of each variable node $V_i$ contains exactly $w_{\rm S} = 3$ elements, and
- the neighborhood $N(C_j)$ of each check ndes $C_j$ contains exactly $w_{\rm Z} = 4$ elements.
(4) Correct are proposed solutions 1 and 2, as can be seen from the "corresponding theory page":
- At the beginning of decoding $($so to speak at iteration $I=0)$ the $L$–values of the variable nodes ⇒ $L(V_i)$ are preallocated with the channel input values.
- Later $($from iteration $I = 1)$ the log–likelihood–ratio $L(C_j → V_i)$ transmitted by the CND is considered in the VND as a priori information.
- Answer 3 is wrong. Rather, the correct answer would be: there are analogies between the VND algorithm and the decoding of a repetition code.
(5) Correct is only proposed solution 3 because.
- the final a posteriori $L$ values are derived from the VND, not from the CND,
- the $L$ value $L(C_j → V_i)$ represents extrinsic information for the CND, and
- there are indeed analogies between the CND–algorithm and SPC–decoding.