Difference between revisions of "Channel Coding/Decoding of Linear Block Codes"
(16 intermediate revisions by 2 users not shown) | |||
Line 8: | Line 8: | ||
== Block diagram and requirements == | == Block diagram and requirements == | ||
<br> | <br> | ||
− | We start from the block diagram already shown in the chapter [[Channel_Coding/Channel_Models_and_Decision_Structures| | + | We start from the block diagram already shown in the chapter [[Channel_Coding/Channel_Models_and_Decision_Structures|$\text{Channel Models and Decision Structures}$]] where the digital channel model used is mostly the [[Channel_Coding/Channel_Models_and_Decision_Structures#Binary_Symmetric_Channel_.E2.80.93_BSC|$\text{Binary Symmetric Channel}$]] (BSC). |
− | For code word estimation, we use the "Maximum Likelihood Decision" (ML), which for binary codes ⇒ x_∈GF(2n) at the block level gives the same result as the [[Channel_Coding/Channel_Models_and_Decision_Structures#Definitions_of_the_different_optimal_receivers| | + | For code word estimation, we use the "Maximum Likelihood Decision" (ML), which for binary codes ⇒ x_∈GF(2n) at the block level gives the same result as the [[Channel_Coding/Channel_Models_and_Decision_Structures#Definitions_of_the_different_optimal_receivers|$\text{MAP Receiver}$]].<br> |
[[File:EN_KC_T_1_5_S1.png|right|frame|Block diagram for decoding block codes|class=fit]] | [[File:EN_KC_T_1_5_S1.png|right|frame|Block diagram for decoding block codes|class=fit]] | ||
Line 17: | Line 17: | ||
*The vector v_ after decoding (at the sink) should match the information word u_ as well as possible. | *The vector v_ after decoding (at the sink) should match the information word u_ as well as possible. | ||
− | *That is: The '''block error probability''' should be as small as possible: | + | *That is: The »'''block error probability'''« should be as small as possible: |
::<math>{ \rm Pr(block\:error)} = { \rm Pr}( \underline{v} \ne \underline{u}) \stackrel{!}{=} { \rm minimum}\hspace{0.05cm}.</math> | ::<math>{ \rm Pr(block\:error)} = { \rm Pr}( \underline{v} \ne \underline{u}) \stackrel{!}{=} { \rm minimum}\hspace{0.05cm}.</math> | ||
Line 27: | Line 27: | ||
::<math>\underline{z} = {\rm arg} \max_{\underline{x}_{\hspace{0.03cm}i} \hspace{0.05cm} \in \hspace{0.05cm} \mathcal{C}} \hspace{0.1cm} {\rm Pr}( \underline{x}_{\hspace{0.03cm}i} \hspace{0.05cm}|\hspace{0.05cm} \underline{y} ) \hspace{0.05cm}.</math> | ::<math>\underline{z} = {\rm arg} \max_{\underline{x}_{\hspace{0.03cm}i} \hspace{0.05cm} \in \hspace{0.05cm} \mathcal{C}} \hspace{0.1cm} {\rm Pr}( \underline{x}_{\hspace{0.03cm}i} \hspace{0.05cm}|\hspace{0.05cm} \underline{y} ) \hspace{0.05cm}.</math> | ||
− | *For the BSC model, both x_i∈GF(2n) and y_∈GF(2n), so the maximum likelihood decision rule can also be written using the [[Channel_Coding/Objective_of_Channel_Coding#Important_definitions_for_block_coding | | + | *For the BSC model, both x_i∈GF(2n) and y_∈GF(2n), so the maximum likelihood decision rule can also be written using the [[Channel_Coding/Objective_of_Channel_Coding#Important_definitions_for_block_coding |$\text{Hamming distance}$]] dH(y_,x_i): |
::<math>\underline{z} = {\rm arg} \min_{\underline{x}_{\hspace{0.03cm}i} \hspace{0.05cm} \in \hspace{0.05cm} \mathcal{C}} \hspace{0.1cm} | ::<math>\underline{z} = {\rm arg} \min_{\underline{x}_{\hspace{0.03cm}i} \hspace{0.05cm} \in \hspace{0.05cm} \mathcal{C}} \hspace{0.1cm} | ||
Line 44: | Line 44: | ||
\hspace{0.05cm}.</math> | \hspace{0.05cm}.</math> | ||
− | A bit error at position i ⇒ y_i ≠ x_i is expressed by the '''error coefficient''' ei=1.<br> | + | A bit error at position i ⇒ y_i ≠ x_i is expressed by the »'''error coefficient'''« ei=1.<br> |
{{BlaueBox|TEXT= | {{BlaueBox|TEXT= | ||
− | Definition: The '''syndrome''' s_=(s0,s1,...,sm−1) is calculated (as row resp. column vector) from the received word y_ and the parity-check matrix \boldsymbol{\rm H} as follows: | + | \text{Definition:} The »'''syndrome'''« \underline{s} = (s_0, s_1, \hspace{0.05cm}\text{...} \hspace{0.05cm}, s_{m-1}) is calculated (as row resp. column vector) from the received word \underline{y} and the parity-check matrix \boldsymbol{\rm H} as follows: |
::<math>\underline{s} = \underline{y} \cdot { \boldsymbol{\rm H} }^{\rm T}\hspace{0.3cm}{\rm bzw.}\hspace{0.3cm} | ::<math>\underline{s} = \underline{y} \cdot { \boldsymbol{\rm H} }^{\rm T}\hspace{0.3cm}{\rm bzw.}\hspace{0.3cm} | ||
Line 86: | Line 86: | ||
\end{pmatrix} = \underline{s}^{\rm T} \hspace{0.05cm}.</math> | \end{pmatrix} = \underline{s}^{\rm T} \hspace{0.05cm}.</math> | ||
− | Comparing the syndrome with the [[Channel_Coding/General_Description_of_Linear_Block_Codes#Code_definition_by_the_parity-check_matrix| parity-check equations]] of the Hamming code, we see that | + | Comparing the syndrome with the [[Channel_Coding/General_Description_of_Linear_Block_Codes#Code_definition_by_the_parity-check_matrix|$\text{parity-check equations}$]] of the Hamming code, we see that |
− | *most likely the fourth symbol (x_4 = u_4) of the code word has been | + | *most likely the fourth symbol (x_4 = u_4) of the code word has been falsified,<br> |
*the code word estimator will thus yield the result \underline{z} = (0, 1, 1, 0, 0, 0, 1),<br> | *the code word estimator will thus yield the result \underline{z} = (0, 1, 1, 0, 0, 0, 1),<br> | ||
− | *the decision is correct only if only one bit was | + | *the decision is correct only if only one bit was falsified during transmission.<br><br> |
Below are the required corrections for the \text{(7, 4, 3)} Hamming code resulting from the calculated syndrome \underline{s} corresponding to the columns of the parity-check matrix: | Below are the required corrections for the \text{(7, 4, 3)} Hamming code resulting from the calculated syndrome \underline{s} corresponding to the columns of the parity-check matrix: | ||
Line 108: | Line 108: | ||
− | Under this assumption, we briefly summarize the results of the last | + | Under this assumption, we briefly summarize the results of the last sections: |
*Syndrome decoding is a realization possibility of maximum likelihood decoding of block codes. One decides on the code word \underline{x}_i with the least Hamming distance to the received word \underline{y}: | *Syndrome decoding is a realization possibility of maximum likelihood decoding of block codes. One decides on the code word \underline{x}_i with the least Hamming distance to the received word \underline{y}: | ||
Line 117: | Line 117: | ||
:\underline{s} = \underline{y} \cdot { \boldsymbol{\rm H}}^{\rm T} . | :\underline{s} = \underline{y} \cdot { \boldsymbol{\rm H}}^{\rm T} . | ||
− | *With the [[Channel_Coding/Objective_of_Channel_Coding#Important_definitions_for_block_coding| | + | *With the [[Channel_Coding/Objective_of_Channel_Coding#Important_definitions_for_block_coding|$\text{Hamming weight}$]] w_{\rm H}(\underline{e}) the second interpretation can also be mathematically formulated as follows: |
::<math>\underline{z} = \underline{y} + {\rm arg} \min_{\underline{e}_{\hspace{0.03cm}i} \hspace{0.05cm} \in \hspace{0.05cm} {\rm GF}(2^n)} \hspace{0.1cm} | ::<math>\underline{z} = \underline{y} + {\rm arg} \min_{\underline{e}_{\hspace{0.03cm}i} \hspace{0.05cm} \in \hspace{0.05cm} {\rm GF}(2^n)} \hspace{0.1cm} | ||
Line 123: | Line 123: | ||
{{BlaueBox|TEXT= | {{BlaueBox|TEXT= | ||
− | \text{Conclusion:} Note that the error vector \underline{e} as well as the received vector \underline{y} is an element of {\rm GF}(2^n) unlike the syndrome \underline{s} \in {\rm GF}(2^m) with number m = n-k of parity-check equations. This means, | + | \text{Conclusion:} Note that the error vector \underline{e} as well as the received vector \underline{y} is an element of {\rm GF}(2^n) unlike the syndrome \underline{s} \in {\rm GF}(2^m) with number m = n-k of parity-check equations. This means, that |
*the association between the syndrome \underline{s} and the error vector \underline{e} is not unique, but | *the association between the syndrome \underline{s} and the error vector \underline{e} is not unique, but | ||
Line 131: | Line 131: | ||
\text{Example 2:} The facts shall be illustrated by the example with parameters n = 5, \ k = 2 ⇒ m = n-k = 3 . | \text{Example 2:} The facts shall be illustrated by the example with parameters n = 5, \ k = 2 ⇒ m = n-k = 3 . | ||
− | [[File: | + | [[File:EN_KC_T_1_5_S3a.png|right|frame|Splitting the 2^k error vectors into "cosets"|class=fit]] |
You can see from this graph: | You can see from this graph: | ||
Line 141: | Line 141: | ||
{{GraueBox|TEXT= | {{GraueBox|TEXT= | ||
\text{Example 3:} Starting from the systematic \text{(5, 2, 3)} code \mathcal{C} = \big \{ (0, 0, 0, 0, 0) \hspace{0.05cm},\hspace{0.15cm}(0, 1, 0, 1, 1) \hspace{0.05cm},\hspace{0.15cm}(1, 0, 1, 1, 0) \hspace{0.05cm},\hspace{0.15cm}(1, 1, 1, 0, 1) \big \} the syndrome decoding procedure is now described in detail. | \text{Example 3:} Starting from the systematic \text{(5, 2, 3)} code \mathcal{C} = \big \{ (0, 0, 0, 0, 0) \hspace{0.05cm},\hspace{0.15cm}(0, 1, 0, 1, 1) \hspace{0.05cm},\hspace{0.15cm}(1, 0, 1, 1, 0) \hspace{0.05cm},\hspace{0.15cm}(1, 1, 1, 0, 1) \big \} the syndrome decoding procedure is now described in detail. | ||
− | [[File: | + | [[File:EN_KC_T_1_5_S3b_neu2.png|right|frame|Example \text{(5, 2, 3)} syndrome table with cosets|class=fit]] |
*The generator matrix and the parity-check matrix are: | *The generator matrix and the parity-check matrix are: | ||
Line 192: | Line 192: | ||
{{BlaueBox|TEXT= | {{BlaueBox|TEXT= | ||
− | \text{Conclusion:} From these examples it is already clear that the '''syndrome decoding means a considerable effort''', if one cannot use certain properties e.g. cyclic codes. | + | \text{Conclusion:} From these examples it is already clear that the »'''syndrome decoding means a considerable effort'''«, if one cannot use certain properties e.g. cyclic codes. |
− | *For large block code lengths, this method fails completely. Thus, to decode a [https://en.wikipedia.org/wiki/BCH_code BCH | + | *For large block code lengths, this method fails completely. Thus, to decode a [https://en.wikipedia.org/wiki/BCH_code $\text{BCH code}$] (the abbreviation stands for their inventors '''B'''ose, '''C'''haudhuri, '''H'''ocquenghem) with code parameters n = 511, k = 259 and d_{\rm min} = 61, one has to evaluate and store exactly 2^{511-259} \approx 10^{76} error patterns of length 511. |
*Happily, however, there are special decoding algorithms for these and also for other codes of large block length, which lead to success with less effort}}. | *Happily, however, there are special decoding algorithms for these and also for other codes of large block length, which lead to success with less effort}}. | ||
== Coding gain - bit error rate with AWGN == | == Coding gain - bit error rate with AWGN == | ||
<br> | <br> | ||
− | We now consider the [[Digital_Signal_Transmission/Error_Probability_for_Baseband_Transmission#Definition_of_the_bit_error_rate| | + | We now consider the [[Digital_Signal_Transmission/Error_Probability_for_Baseband_Transmission#Definition_of_the_bit_error_rate|$\text{bit error rate}$]] for the following constellation: |
− | [[File: | + | [[File:EN_KC_T_1_5_S4.png|right|frame|Bit error rate for the \text{(7, 4, 3)} Hamming code|class=fit]] |
#Hamming code \text{HC (7, 4, 3)},<br> | #Hamming code \text{HC (7, 4, 3)},<br> | ||
#AWGN–channel, characterized by the quotient E_{\rm B}/N_0 (in dB),<br> | #AWGN–channel, characterized by the quotient E_{\rm B}/N_0 (in dB),<br> | ||
Line 213: | Line 213: | ||
*This configuration brings an improvement over the comparison system only for 10 \cdot \lg \, E_{\rm B}/N_0 >6 \, \rm dB. For \rm BER =10^{-5} one only needs 10 \cdot \lg \, E_{\rm B}/N_0 \approx 9.2 \, \rm dB.<br> | *This configuration brings an improvement over the comparison system only for 10 \cdot \lg \, E_{\rm B}/N_0 >6 \, \rm dB. For \rm BER =10^{-5} one only needs 10 \cdot \lg \, E_{\rm B}/N_0 \approx 9.2 \, \rm dB.<br> | ||
− | *The green crosses for [[Channel_Coding/General_Description_of_Linear_Block_Codes#Some_properties_of_the_.287.2C_4.2C_3.29_Hamming_code|\text{HC (7, 4, 3)}]] and [[Channel_Coding/Soft-in_Soft-Out_Decoder| | + | *The green crosses for [[Channel_Coding/General_Description_of_Linear_Block_Codes#Some_properties_of_the_.287.2C_4.2C_3.29_Hamming_code|\text{HC (7, 4, 3)}]] and [[Channel_Coding/Soft-in_Soft-Out_Decoder| \text{soft decision}]] \text{(ML–SD)} are below the red curve throughout the range. For \rm BER =10^{-5} this gives 10 \cdot \lg \, E_{\rm B}/N_0 \approx 7.8 \, \rm dB.<br><br> |
{{BlaueBox|TEXT= | {{BlaueBox|TEXT= | ||
− | \text{Definition:} We refer as '''coding gain''' of a considered system configuration, | + | \text{Definition:} We refer as »'''coding gain'''« of a considered system configuration, |
*characterized by its code and | *characterized by its code and | ||
*the way it is decoded, | *the way it is decoded, | ||
Line 238: | Line 238: | ||
<br> | <br> | ||
Finally, it will be shown to what extent the decoder has to be modified | Finally, it will be shown to what extent the decoder has to be modified | ||
− | *if instead of the [[Channel_Coding/Channel_Models_and_Decision_Structures#Binary_Symmetric_Channel_.E2.80.93_BSC| | + | *if instead of the [[Channel_Coding/Channel_Models_and_Decision_Structures#Binary_Symmetric_Channel_.E2.80.93_BSC| $\text{BSC model}$]] ("Binary Symmetric Channel") |
− | *the [[Channel_Coding/Channel_Models_and_Decision_Structures#Binary_Erasure_Channel_.E2.80.93_BEC| | + | *the [[Channel_Coding/Channel_Models_and_Decision_Structures#Binary_Erasure_Channel_.E2.80.93_BEC|$\text{BEC model}$]] ("Binary Erasure Channel") is used, |
Line 245: | Line 245: | ||
{{GraueBox|TEXT= | {{GraueBox|TEXT= | ||
− | \text{Example 4:} We consider again as in [[Channel_Coding/Decoding_of_Linear_Block_Codes#Generalization_of_syndrome_coding|$\text{ | + | \text{Example 4:} We consider again as in [[Channel_Coding/Decoding_of_Linear_Block_Codes#Generalization_of_syndrome_coding|\text{Example 3}]] the systematic \text{(5, 2, 3)} block code |
:\mathcal{C} = \big \{ (0, 0, 0, 0, 0) \hspace{0.05cm},\hspace{0.3cm}(0, 1, 0, 1, 1) \hspace{0.05cm},\hspace{0.3cm}(1, 0, 1, 1, 0) \hspace{0.05cm},\hspace{0.3cm}(1, 1, 1, 0, 1) \big \}. | :\mathcal{C} = \big \{ (0, 0, 0, 0, 0) \hspace{0.05cm},\hspace{0.3cm}(0, 1, 0, 1, 1) \hspace{0.05cm},\hspace{0.3cm}(1, 0, 1, 1, 0) \hspace{0.05cm},\hspace{0.3cm}(1, 1, 1, 0, 1) \big \}. | ||
The graphic shows the system model and gives exemplary values for the individual vectors. | The graphic shows the system model and gives exemplary values for the individual vectors. | ||
*The left part of the picture (yellow background) is valid for "BSC" with one bit error (0 → 1) at the third bit. | *The left part of the picture (yellow background) is valid for "BSC" with one bit error (0 → 1) at the third bit. | ||
− | *The right part of the picture (green background) is for "BEC" and shows two | + | *The right part of the picture (green background) is for "BEC" and shows two erasures (\rm 1 → E) at the second and the fourth bit. |
[[File:EN_KC_T_1_5_S5.png|right|frame|Error correction with BSC and BEC]] | [[File:EN_KC_T_1_5_S5.png|right|frame|Error correction with BSC and BEC]] | ||
Latest revision as of 18:17, 30 November 2022
Contents
Block diagram and requirements
We start from the block diagram already shown in the chapter \text{Channel Models and Decision Structures} where the digital channel model used is mostly the \text{Binary Symmetric Channel} \rm (BSC).
For code word estimation, we use the "Maximum Likelihood Decision" \rm (ML), which for binary codes ⇒ \underline{x} \in {\rm GF}(2^n) at the block level gives the same result as the \text{MAP Receiver}.
The task of the channel decoder can be described as follows:
- The vector \underline{v} after decoding (at the sink) should match the information word \underline{u} as well as possible.
- That is: The »block error probability« should be as small as possible:
- { \rm Pr(block\:error)} = { \rm Pr}( \underline{v} \ne \underline{u}) \stackrel{!}{=} { \rm minimum}\hspace{0.05cm}.
- Because of assignments \underline{x} = {\rm enc}(\underline{u}) resp. \underline{v} = {\rm enc}^{-1}(\underline{z}) also holds:
- { \rm Pr(block\:error)} = { \rm Pr}( \underline{z} \ne \underline{x}) \stackrel{!}{=} { \rm minimum}\hspace{0.05cm}.
- Sought is the most likely sent code word \underline{y} = \underline{x} +\underline{e} for the given received word \underline{x}_i, which is passed on as result \underline{z}:
- \underline{z} = {\rm arg} \max_{\underline{x}_{\hspace{0.03cm}i} \hspace{0.05cm} \in \hspace{0.05cm} \mathcal{C}} \hspace{0.1cm} {\rm Pr}( \underline{x}_{\hspace{0.03cm}i} \hspace{0.05cm}|\hspace{0.05cm} \underline{y} ) \hspace{0.05cm}.
- For the BSC model, both \underline{x}_i \in {\rm GF}(2^n) and \underline{y} \in {\rm GF}(2^n), so the maximum likelihood decision rule can also be written using the \text{Hamming distance} d_{\rm H}( \underline{y}, \, \underline{x}_i):
- \underline{z} = {\rm arg} \min_{\underline{x}_{\hspace{0.03cm}i} \hspace{0.05cm} \in \hspace{0.05cm} \mathcal{C}} \hspace{0.1cm} d_{\rm H}(\underline{y} \hspace{0.05cm}, \hspace{0.1cm}\underline{x}_{\hspace{0.03cm}i})\hspace{0.05cm}.
Principle of syndrome decoding
Assumed here is a (n, \, k) block code with the parity-check matrix \boldsymbol{\rm H} and the systematic code words
- \underline{x}\hspace{0.05cm} = (x_1, x_2, \hspace{0.05cm}\text{...} \hspace{0.05cm}, x_i, \hspace{0.05cm}\text{...} \hspace{0.05cm}, x_n) = (u_1, u_2, \hspace{0.05cm}\text{...} \hspace{0.05cm}, u_k, p_1, \hspace{0.05cm}\text{...} \hspace{0.05cm}, p_{n-k})\hspace{0.05cm}.
With the error vector \underline{e} then applies to the received word:
- \underline{y} = \underline{x} + \underline{e} \hspace{0.05cm}, \hspace{0.4cm} \underline{y} \in \hspace{0.1cm} {\rm GF}(2^n) \hspace{0.05cm}, \hspace{0.4cm} \underline{x} \in \hspace{0.1cm} {\rm GF}(2^n) \hspace{0.05cm}, \hspace{0.4cm} \underline{e} \in \hspace{0.1cm} {\rm GF}(2^n) \hspace{0.05cm}.
A bit error at position i ⇒ y_i ≠ x_i is expressed by the »error coefficient« e_i = 1.
\text{Definition:} The »syndrome« \underline{s} = (s_0, s_1, \hspace{0.05cm}\text{...} \hspace{0.05cm}, s_{m-1}) is calculated (as row resp. column vector) from the received word \underline{y} and the parity-check matrix \boldsymbol{\rm H} as follows:
- \underline{s} = \underline{y} \cdot { \boldsymbol{\rm H} }^{\rm T}\hspace{0.3cm}{\rm bzw.}\hspace{0.3cm} \underline{s}^{\rm T} = { \boldsymbol{\rm H} } \cdot \underline{y}^{\rm T}\hspace{0.05cm}.
- The vector length of \underline{s} is equal to m = n-k (row number of \boldsymbol{\rm H}).
The syndrome \underline{s} shows the following characteristics:
- Because of the equation \underline{x} \cdot { \boldsymbol{\rm H}}^{\rm T} = \underline{0} the syndrome \underline{s} does not depend on the code word \underline{x} but solely on the error vector \underline{e}:
- \underline{s} = \underline{y} \cdot { \boldsymbol{\rm H}}^{\rm T} = \hspace{0.05cm} \underline{x} \cdot { \boldsymbol{\rm H}}^{\rm T} + \hspace{0.05cm} \underline{e} \cdot { \boldsymbol{\rm H}}^{\rm T} = \hspace{0.05cm} \underline{e} \cdot { \boldsymbol{\rm H}}^{\rm T} \hspace{0.05cm}.
- For sufficiently few bit errors, \underline{s} provides a clear indication of the error locations, allowing full error correction.
\text{Example 1:} Starting from the systematic \text{(7, 4, 3)} Hamming code, the following result is obtained for the received vector \underline{y} = (0, 1, 1, 1, 0, 0, 1):
- { \boldsymbol{\rm H} } \cdot \underline{y}^{\rm T} = \begin{pmatrix} 1 &1 &1 &0 &1 &0 &0\\ 0 &1 &1 &1 &0 &1 &0\\ 1 &1 &0 &1 &0 &0 &1 \end{pmatrix} \cdot \begin{pmatrix} 0 \\ 1 \\ 1 \\ 1 \\ 0 \\ 0 \\ 1 \end{pmatrix} = \begin{pmatrix} 0 \\ 1 \\ 1 \end{pmatrix} = \underline{s}^{\rm T} \hspace{0.05cm}.
Comparing the syndrome with the \text{parity-check equations} of the Hamming code, we see that
- most likely the fourth symbol (x_4 = u_4) of the code word has been falsified,
- the code word estimator will thus yield the result \underline{z} = (0, 1, 1, 0, 0, 0, 1),
- the decision is correct only if only one bit was falsified during transmission.
Below are the required corrections for the \text{(7, 4, 3)} Hamming code resulting from the calculated syndrome \underline{s} corresponding to the columns of the parity-check matrix:
- \underline{s} = (0, 0, 0) \hspace{0.10cm} \Rightarrow\hspace{0.10cm}{\rm no\hspace{0.15cm} correction}\hspace{0.05cm};\hspace{0.8cm}\underline{s} = (1, 0, 0)\hspace{0.10cm} \Rightarrow\hspace{0.10cm}{\rm invert}\hspace{0.15cm}p_1\hspace{0.05cm};
- \underline{s} =(0, 0, 1)\hspace{0.10cm} \Rightarrow\hspace{0.10cm} {\rm invert}\hspace{0.15cm}p_3\hspace{0.05cm};\hspace{1.63cm}\underline{s} = (1, 0, 1)\hspace{0.10cm} \Rightarrow\hspace{0.10cm} {\rm invert}\hspace{0.15cm}u_1\hspace{0.05cm};
- \underline{s} =(0, 1, 0)\hspace{0.10cm} \Rightarrow\hspace{0.10cm} {\rm invert}\hspace{0.15cm}p_2\hspace{0.05cm};\hspace{1.63cm}\underline{s} = (1, 1, 0)\hspace{0.10cm} \Rightarrow\hspace{0.10cm} {\rm invert}\hspace{0.15cm}u_3\hspace{0.05cm};
- \underline{s} =(0, 1, 1)\hspace{0.10cm} \Rightarrow\hspace{0.10cm} {\rm invert}\hspace{0.15cm}u_4\hspace{0.05cm};\hspace{1.63cm}\underline{s} = (1, 1, 1)\hspace{0.10cm} \Rightarrow\hspace{0.10cm} {\rm invert}\hspace{0.15cm}u_2\hspace{0.05cm}.
Generalization of syndrome coding
We continue to assume the BSC channel model. This means:
- The received vector \underline{y} and the error vector \underline{e} are elements of {\rm GF}(2^n).
- The possible code words \underline{x}_i belong to the code \mathcal{C}, which spans a (n-k)-dimensional subspace of {\rm GF}(2^n).
Under this assumption, we briefly summarize the results of the last sections:
- Syndrome decoding is a realization possibility of maximum likelihood decoding of block codes. One decides on the code word \underline{x}_i with the least Hamming distance to the received word \underline{y}:
- \underline{z} = {\rm arg} \min_{\underline{x}_{\hspace{0.03cm}i} \hspace{0.05cm} \in \hspace{0.05cm} \mathcal{C}} \hspace{0.1cm} d_{\rm H}(\underline{y} \hspace{0.05cm}, \hspace{0.1cm}\underline{x}_{\hspace{0.03cm}i})\hspace{0.05cm}.
- But the syndrome decoding is also the search for the most probable error vector \underline{e} that satisfies the condition \underline{e} \cdot { \boldsymbol{\rm H}}^{\rm T} = \underline{s}. The "syndrome" is thereby determined by the equation
- \underline{s} = \underline{y} \cdot { \boldsymbol{\rm H}}^{\rm T} .
- With the \text{Hamming weight} w_{\rm H}(\underline{e}) the second interpretation can also be mathematically formulated as follows:
- \underline{z} = \underline{y} + {\rm arg} \min_{\underline{e}_{\hspace{0.03cm}i} \hspace{0.05cm} \in \hspace{0.05cm} {\rm GF}(2^n)} \hspace{0.1cm} w_{\rm H}(\underline{e}_{\hspace{0.03cm}i})\hspace{0.05cm}.
\text{Conclusion:} Note that the error vector \underline{e} as well as the received vector \underline{y} is an element of {\rm GF}(2^n) unlike the syndrome \underline{s} \in {\rm GF}(2^m) with number m = n-k of parity-check equations. This means, that
- the association between the syndrome \underline{s} and the error vector \underline{e} is not unique, but
- each 2^k error vectors lead to the same syndrome \underline{s} which one groups together into a so-called "coset".
\text{Example 2:} The facts shall be illustrated by the example with parameters n = 5, \ k = 2 ⇒ m = n-k = 3 .
You can see from this graph:
- The 2^n = 32 possible error vectors \underline{e} are divided into 2^m = 8 cosets {\it \Psi}_0, ... , {\it \Psi}_7. Explicitly drawn here are only the cosets {\it \Psi}_0 and {\it \Psi}_5.
- All 2^k = 4 error vectors of the coset {\it \Psi}_\mu lead to the syndrome \underline{s}_\mu.
- Each minor class {\it \Psi}_\mu has a "leader" \underline{e}_\mu, namely the one with the minimum Hamming weight.
\text{Example 3:} Starting from the systematic \text{(5, 2, 3)} code \mathcal{C} = \big \{ (0, 0, 0, 0, 0) \hspace{0.05cm},\hspace{0.15cm}(0, 1, 0, 1, 1) \hspace{0.05cm},\hspace{0.15cm}(1, 0, 1, 1, 0) \hspace{0.05cm},\hspace{0.15cm}(1, 1, 1, 0, 1) \big \} the syndrome decoding procedure is now described in detail.
- The generator matrix and the parity-check matrix are:
- { \boldsymbol{\rm G} } = \begin{pmatrix} 1 &0 &1 &1 &0 \\ 0 &1 &0 &1 &1 \end{pmatrix} \hspace{0.05cm},
- { \boldsymbol{\rm H} } = \begin{pmatrix} 1 &0 &1 &0 &0 \\ 1 &1 &0 &1 &0 \\ 0 &1 &0 &0 &1 \end{pmatrix} \hspace{0.05cm}.
- The table summarizes the final result. Note:
- The index \mu is not identical to the binary value of \underline{s}_\mu.
- The order is rather given by the number of ones in the minor class leader \underline{e}_\mu.
- For example, the syndrome \underline{s}_5 = (1, 1, 0) and the syndrome \underline{s}_6 = (1, 0, 1).
- To derive this table, note:
- The row 1 refers to the syndrome \underline{s}_0 = (0, 0, 0) and the associated cosets {\it \Psi}_0. The most likely error sequence here is (0, 0, 0, 0, 0) ⇒ no bit error, which we call the "coset leader" \underline{e}_0.
- The other entries in the first row, namely (1, 0, 1, 1, 0 ), (0, 1, 0, 1, 1) and (1, 1, 1, 0, 1 ), also each yield the syndrome \underline{s}_0 = (0, 0, 0), but only result with at least three bit errors and are correspondingly unlikely.
- In rows 2 to 6, the respective coset leader \underline{e}_\mu contains exactly a single "1" (\mu = 1, ... , 5). Here \underline{e}_\mu is always the most likely error pattern of the class {\it \Psi}_\mu. The other group members result only with at least two bit errors.
- The syndrome \underline{s}_6 = (1, 0, 1) is not possible with only one bit error. In creating the table, we then considered all "5\text{ over }2 = 10" error patterns \underline{e} with weight w_{\rm H}(\underline{e}) = 2.
- The first found sequence with syndrome \underline{s}_6 = (1, 0, 1) was chosen as coset leader \underline{e}_6 = (1, 1, 0, 0) . With a different probing order, the sequence (0, 0, 1, 0, 1) could also have resulted from {\it \Psi}_6.
- Similar procedure was followed in determining the leader \underline{e}_7 = (0, 1, 1, 0, 0) of the cosets class {\it \Psi}_7 characterized by the uniform syndrome \underline{s}_7 = (1, 1, 1). Also in the class {\it \Psi}_7 there is another sequence with Hamming weight w_{\rm H}(\underline{e}) = 2, namely (1, 0, 0, 0, 1).
- The table only needs to be created once. First, the syndrome must be determined, e.g. for the received vector \underline{y} = (0, 1, 0, 0, 1):
- \underline{s} = \underline{y} \cdot { \boldsymbol{\rm H} }^{\rm T} = \begin{pmatrix} 0 &1 &0 &0 &1 \end{pmatrix} \cdot \begin{pmatrix} 1 &1 &0 \\ 0 &1 &1 \\ 1 &0 &0 \\ 0 &1 &0 \\ 0 &0 &1 \\ \end{pmatrix} = \begin{pmatrix} 0 &1 &0 \end{pmatrix}= \underline{s}_2 \hspace{0.05cm}.
- Using the coset leader \underline{e}_2 = (0, 0, 0, 1, 0) from the above table (red entry for \mu =2) finally arrives at the decoding result:
- \underline{z} = \underline{y} + \underline{e}_2 = (0,\hspace{0.05cm} 1,\hspace{0.05cm} 0,\hspace{0.05cm} 0,\hspace{0.05cm} 1) + (0,\hspace{0.05cm} 0,\hspace{0.05cm} 0,\hspace{0.05cm} 1,\hspace{0.05cm} 0) = (0,\hspace{0.05cm} 1,\hspace{0.05cm} 0,\hspace{0.05cm} 1,\hspace{0.05cm} 1) \hspace{0.05cm}.
\text{Conclusion:} From these examples it is already clear that the »syndrome decoding means a considerable effort«, if one cannot use certain properties e.g. cyclic codes.
- For large block code lengths, this method fails completely. Thus, to decode a \text{BCH code} (the abbreviation stands for their inventors Bose, Chaudhuri, Hocquenghem) with code parameters n = 511, k = 259 and d_{\rm min} = 61, one has to evaluate and store exactly 2^{511-259} \approx 10^{76} error patterns of length 511.
- Happily, however, there are special decoding algorithms for these and also for other codes of large block length, which lead to success with less effort
.
Coding gain - bit error rate with AWGN
We now consider the \text{bit error rate} for the following constellation:
- Hamming code \text{HC (7, 4, 3)},
- AWGN–channel, characterized by the quotient E_{\rm B}/N_0 (in dB),
- Maximum Likelihood Decoder \rm (ML) with
"Hard Decision" \rm (HD) and "Soft Decision" \rm (SD), resp.
It should be noted with regard to this graph:
- The black comparison curve applies e.g. to binary phase modulation \rm (BPSK) without coding. For this one needs for the bit error rate 10^{-5} about 10 \cdot \lg \, E_{\rm B}/N_0 = 9.6 \, \rm dB.
- The red circles apply to the \text{HC (7, 4, 3)} and hard decisions of the maximum likelihood decoder \text{(ML–HD)}. Syndrome decoding is a possible realization form for this.
- This configuration brings an improvement over the comparison system only for 10 \cdot \lg \, E_{\rm B}/N_0 >6 \, \rm dB. For \rm BER =10^{-5} one only needs 10 \cdot \lg \, E_{\rm B}/N_0 \approx 9.2 \, \rm dB.
- The green crosses for \text{HC (7, 4, 3)} and \text{soft decision} \text{(ML–SD)} are below the red curve throughout the range. For \rm BER =10^{-5} this gives 10 \cdot \lg \, E_{\rm B}/N_0 \approx 7.8 \, \rm dB.
\text{Definition:} We refer as »coding gain« of a considered system configuration,
- characterized by its code and
- the way it is decoded,
the smaller 10 \cdot \lg \, E_{\rm B}/N_0 required for a given bit error rate \rm (BER) compared to the comparison system (without coding):
- G_{\rm Code} (\hspace{0.05cm}\text{considered system} \hspace{0.05cm}\vert\hspace{0.05cm}{\rm BER}\hspace{0.05cm}) =10 \cdot {\rm lg}\hspace{0.1cm}{E}_{\rm B}/N_0 \hspace{0.15cm}(\hspace{0.05cm}\text{comparison system}\hspace{0.05cm}\vert\hspace{0.05cm}{\rm BER}\hspace{0.05cm})- 10 \cdot {\rm lg}\hspace{0.1cm}{E}_{\rm B}/N_0 \hspace{0.15cm}(\hspace{0.05cm}\text{considered system}\hspace{0.05cm}\vert\hspace{0.05cm}{\rm BER}\hspace{0.05cm}) \hspace{0.05cm}.
Applied to the above graph, one obtains:
G_{\rm Code} (\hspace{0.05cm}{\rm Hamming \hspace{0.1cm}(7,\hspace{0.02cm}4,\hspace{0.02cm}3), ML-HD}\hspace{0.05cm}|\hspace{0.05cm}{\rm BER} = 10^{-5}\hspace{0.05cm}) = 0.4\ {\rm dB}\hspace{0.05cm},
G_{\rm Code} (\hspace{0.05cm}{\rm Hamming \hspace{0.1cm}(7,\hspace{0.02cm}4,\hspace{0.02cm}3), ML-SD}\hspace{0.05cm}|\hspace{0.05cm}{\rm BER} = 10^{-5}\hspace{0.05cm}) = 1.8\ {\rm dB}\hspace{0.05cm}.
Decoding at the Binary Erasure Channel
Finally, it will be shown to what extent the decoder has to be modified
- if instead of the \text{BSC model} ("Binary Symmetric Channel")
- the \text{BEC model} ("Binary Erasure Channel") is used,
which does not produce errors but marks uncertain bits as "erasures".
\text{Example 4:} We consider again as in \text{Example 3} the systematic \text{(5, 2, 3)} block code
- \mathcal{C} = \big \{ (0, 0, 0, 0, 0) \hspace{0.05cm},\hspace{0.3cm}(0, 1, 0, 1, 1) \hspace{0.05cm},\hspace{0.3cm}(1, 0, 1, 1, 0) \hspace{0.05cm},\hspace{0.3cm}(1, 1, 1, 0, 1) \big \}.
The graphic shows the system model and gives exemplary values for the individual vectors.
- The left part of the picture (yellow background) is valid for "BSC" with one bit error (0 → 1) at the third bit.
- The right part of the picture (green background) is for "BEC" and shows two erasures (\rm 1 → E) at the second and the fourth bit.
One recognizes:
- With BSC only t = 1 bit error (marked in red in the left part) can be corrected due to d_{\rm min} = 3. If one restricts oneself to error detection, this works up to e= d_{\rm min} -1 = 2 bit errors.
- For BEC, error detection makes no sense, because already the channel locates an uncertain bit as an "erasure" \rm E. The zeros and ones in the BEC received word \underline{y} are safe. Therefore the error correction works here up to e = 2 erasures (marked in red in the right part) with certainty.
- Also e = 3 erasures are sometimes still correctable. So \underline{y} \rm = (E, E, E, 1, 1) to \underline{z} \rm = (0, 1, 0, 1, 1) to be corrected since no second code word ends with two ones. But \underline{y} \rm = (0, E, 0, E, E) is not correctable because of the all zero word allowed in the code.
- If it is ensured that there are no more than two erasures in any received word, the BEC block error probability {\rm Pr}(\underline{z} \ne \underline{x}) = {\rm Pr}(\underline{v} \ne \underline{u}) \equiv 0. In contrast, the corresponding block error probability in the BSC model always has a value greater than 0.
Since after the BEC each received word is either decoded correctly or not at all, we call here the block \underline{y} → \underline{z} in the future "code word finder". An "estimation" takes place only in the BSC model.
But how does the decoding of a received word \underline{y} with erasures work algorithmically?
\text{Example 5:} Starting from the received word \underline{y} \rm = (0, E, 0, E, 1) in \text{Example 4} we formally set the output of the code word finder to \underline{z} \rm = (0, z_2, 0, z_4, 1), where the symbols z_2 \in \{0, \, 1\} and z_4 \in \{0, \, 1\} are to be determined according to the following equation:
- \underline{z} \cdot { \boldsymbol{\rm H} }^{\rm T}= \underline{0} \hspace{0.3cm} \Rightarrow \hspace{0.3cm} { \boldsymbol{\rm H} } \cdot \underline{z}^{\rm T}= \underline{0}^{\rm T} \hspace{0.05cm}.
The task is now to implement this determination equation as efficiently as possible. The following calculation steps result:
- With the parity-check matrix \boldsymbol{\rm H} of the \text{(5, 2, 3)} block code and the vector \underline{z} \rm = (0, z_2, 0, z_4, 1) is the above determination equation:
- { \boldsymbol{\rm H} } \cdot \underline{z}^{\rm T} = \begin{pmatrix} 1 &0 &1 &0 &0\\ 1 &1 &0 &1 &0\\ 0 &1 &0 &0 &1 \end{pmatrix} \cdot \begin{pmatrix} 0 \\ z_2 \\ 0 \\ z_4 \\ 1 \end{pmatrix} = \begin{pmatrix} 0 \\ 0 \\ 0 \end{pmatrix} \hspace{0.05cm}.
- We sum up the "correct bits" (German: "korrekt" ⇒ subscript "K") to the vector \underline{z}_{\rm K} and the "erased bits" to the vector \underline{z}_{\rm E}. Then we split the parity-check matrix \boldsymbol{\rm H} into the corresponding submatrices \boldsymbol{\rm H}_{\rm K} and \boldsymbol{\rm H}_{\rm E}:
- \underline{z}_{\rm K} =(0, 0, 1)\hspace{0.05cm},\hspace{0.3cm} { \boldsymbol{\rm H} }_{\rm K}= \begin{pmatrix} 1 &1 &0\\ 1 &0 &0\\ 0 &0 &1 \end{pmatrix} \hspace{0.3cm}\Rightarrow\hspace{0.3cm} \text{Rows 1, 3 and 5 of the parity-check matrix} \hspace{0.05cm},
- \underline{z}_{\rm E} = (z_2, z_4)\hspace{0.05cm},\hspace{0.35cm} { \boldsymbol{\rm H} }_{\rm E}= \begin{pmatrix} 0 &0\\ 1 &1\\ 1 &0 \end{pmatrix} \hspace{1.05cm}\Rightarrow\hspace{0.3cm} \text{Rows 2 and 4 of the parity-check matrix} \hspace{0.05cm}.
- Remembering that in \rm GF(2) subtraction equals addition, the above equation can be represented as follows:
- { \boldsymbol{\rm H} }_{\rm K} \cdot \underline{z}_{\rm K}^{\rm T} + { \boldsymbol{\rm H} }_{\rm E} \cdot \underline{z}_{\rm E}^{\rm T}= \underline{0}^{\rm T} \hspace{0.3cm} \Rightarrow \hspace{0.3cm} { \boldsymbol{\rm H} }_{\rm E} \cdot \underline{z}_{\rm E}^{\rm T}= { \boldsymbol{\rm H} }_{\rm K} \cdot \underline{z}_{\rm K}^{\rm T} \hspace{0.3cm} \Rightarrow \hspace{0.3cm} \begin{pmatrix} 0 &0\\ 1 &1\\ 1 &0 \end{pmatrix} \cdot \begin{pmatrix} z_2 \\ z_4 \end{pmatrix} = \begin{pmatrix} 1 &1 &0\\ 1 &0 &0\\ 0 &0 &1 \end{pmatrix} \cdot \begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} = \begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} \hspace{0.05cm}.
- This leads to a linear system of equations with two equations for the unknown z_2 and z_4 (each 0 or 1).
- From the last row follows z_2 = 1 and from the second row z_2 + z_4 = 0 ⇒ z_4 = 1. This gives the allowed code word \underline{z} \rm = (0, 1, 0, 1, 1).
Exercises for the chapter
Exercise 1.11: Syndrome Decoding
Exercise 1.11Z: Syndrome Decoding again
Exercise 1.12: Hard Decision vs. Soft Decision
Exercise 1.12Z: Comparison of HC (7, 4, 3) and HC (8, 4, 4)
Exercise 1.13: Binary Erasure Channel Decoding
Exercise 1.13Z: Binary Erasure Channel Decoding again