Difference between revisions of "Channel Coding/Reed-Solomon Decoding for the Erasure Channel"

From LNTwww
m (Text replacement - "„" to """)
Line 1: Line 1:
 
   
 
   
 
{{Header
 
{{Header
|Untermenü=Reed–Solomon–Codes und deren Decodierung
+
|Untermenü=Reed–Solomon–Codes and Their Decoding
|Vorherige Seite=Definition und Eigenschaften von Reed–Solomon–Codes
+
|Vorherige Seite=Definition and Properties of Reed-Solomon Codes
|Nächste Seite=Fehlerkorrektur nach Reed–Solomon–Codierung
+
|Nächste Seite=Error Correction According to Reed-Solomon Coding
 
}}
 
}}
  
== Blockschaltbild und Voraussetzungen zur RS–Fehlererkennung ==
+
== Block diagram and requirements for RS fault detection ==
 
<br>
 
<br>
Im Kapitel&nbsp; [[Channel_Coding/Decodierung_linearer_Blockcodes#Decodierung_beim_Binary_Erasure_Channel|Decodierung beim Binary Erasure Channel]]&nbsp; wurde für die binären Blockcodes gezeigt, welche Berechnungen der Decoder ausführen muss, um aus einem unvollständigen Empfangswort&nbsp; $\underline{y}$&nbsp; das gesendete Codewort&nbsp; $\underline{x}$&nbsp; bestmöglich decodieren zu können. Im Reed&ndash;Solomon&ndash;Kapitel haben wir&nbsp; $\underline{x}$&nbsp; in&nbsp; $\underline{c}$&nbsp; umbenannt.   
+
In the&nbsp; [[Channel_Coding/Decoding_of_Linear_Block_Codes#Decoding_at_the_Binary_Erasure_Channel|"Decoding at the Binary Erasure Channel"]]&nbsp; chapter we showed for the binary block codes which calculations the decoder has to perform to decode from an incomplete received word&nbsp; $\underline{y}$&nbsp; the transmitted code word&nbsp; $\underline{x}$&nbsp; in the best possible way. In the Reed&ndash;Solomon chapter we renamed&nbsp; $\underline{x}$&nbsp; to&nbsp; $\underline{c}$&nbsp;.   
  
Zugrunde gelegt wird auch hier das&nbsp; [[Channel_Coding/Signal_classification#Binary_Erasure_Channel_.E2.80.93_BEC| BEC&ndash;Kanalmodell]]&nbsp; (<i>Binary Erasure Channel</i>&nbsp;), das ein unsicheres Bit als&nbsp; <i>Erasure</i>&nbsp; $\rm E$&nbsp; ("Auslöschung") markiert. Im Gegensatz zu&nbsp; [[Channel_Coding/Signal_classification#Binary_Symmetric_Channel_.E2.80.93_BSC| BSC]]&nbsp; (<i>Binary Symmetric Channel</i>&nbsp;) und&nbsp; [[Channel_Coding/Signal_classification#AWGN.E2.80.93Kanal_bei_bin.C3.A4rem_Eingang| AWGN]]&nbsp; (<i>Additive White Gaussian Noise</i>&nbsp;) sind hier Bitfehler&nbsp; $(y_i &ne; c_i)$&nbsp; ausgeschlossen. Jedes  Bit eines Empfangswortes
+
This is also based on the [[Channel_Coding/Channel_Models_and_Decision_Structures#Binary_Erasure_Channel_.E2.80.93_BEC| "BEC Channel Model]"]&nbsp; (<i>Binary Erasure Channel</i>&nbsp;), which marks an uncertain bit as&nbsp; <i>erasure</i>&nbsp; $\rm E$&nbsp;. In contrast to&nbsp; [[Channel_Coding/Signal_classification#Binary_Symmetric_Channel_.E2.80.93_BSC| BSC]]&nbsp; (<i>Binary Symmetric Channel</i>&nbsp;) and&nbsp; [[Channel_Coding/Channel_Models_and_Decision_Structures#AWGN_channel_at_Binary_Input| AWGN]]&nbsp; (<i>Additive White Gaussian Noise</i>&nbsp;) bit errors&nbsp; $(y_i &ne; c_i)$&nbsp; are excluded here. Each bit of a received word
*stimmt also mit dem entsprechenden Bit des Codewortes überein&nbsp; $(y_i = c_i)$, oder
+
*thus matches the corresponding bit of the code word&nbsp; $(y_i = c_i)$, or
*ist bereits als Auslöschung markiert&nbsp; $(y_i = \rm E)$.<br>
+
*is already marked as a cancellation&nbsp; $(y_i = \rm E)$.<br>
  
  
[[File:P ID2544 KC T 2 4 S1 v2.png|center|frame|Übertragungssystem mit Reed–Solomon–Codierung/Decodierung und Auslöschungskanal|class=fit]]
+
[[File:P ID2544 KC T 2 4 S1 v2.png|center|frame|Transmission system with Reed-Solomon coding/decoding and erasure channel|class=fit]]
  
Die Grafik zeigt das Blockschaltbild, das sich von dem Modell im Kapitel&nbsp; [[Channel_Coding/Decodierung_linearer_Blockcodes#Blockschaltbild_und_Voraussetzungen|Decodierung linearer Blockcodes]] geringfügig unterscheidet:
+
The diagram shows the block diagram, which is slightly different from the model in chapter&nbsp; [[Channel_Coding/Decoding_of_Linear_Block_Codes#Block_diagram_and_requirements|"Decoding linear block codes"]]:
*Da Reed&ndash;Solomon&ndash;Codes lineare Blockcodes sind, stehen auch hier Informationswort&nbsp; $\underline{u}$&nbsp; und Codewort&nbsp; $\underline{c}$&nbsp; über die Generatormatrix $\boldsymbol{\rm G}$ und die folgende Gleichung in Zusammenhang:
+
*Since Reed&ndash;Solomon codes are linear block codes, information word&nbsp; $\underline{u}$&nbsp; and code word&nbsp; $\underline{c}$&nbsp; are also related here via the generator matrix $\boldsymbol{\rm G}$ and the following equation:
  
 
::<math>\underline {c} = {\rm enc}(\underline {u}) = \underline {u} \cdot { \boldsymbol{\rm G}}
 
::<math>\underline {c} = {\rm enc}(\underline {u}) = \underline {u} \cdot { \boldsymbol{\rm G}}
Line 25: Line 25:
 
\hspace{0.05cm}.</math>
 
\hspace{0.05cm}.</math>
  
*Für die einzelnen Symbole von Informationsblock und Codewort gilt bei Reed&ndash;Solomon&ndash;Codierung:
+
*For the individual symbols of information block and code word, Reed&ndash;Solomon coding applies:
  
 
::<math>u_i \in {\rm GF}(q)\hspace{0.05cm},\hspace{0.2cm}c_i \in {\rm GF}(q)\hspace{0.3cm}{\rm mit}\hspace{0.3cm} q = n+1 = 2^m
 
::<math>u_i \in {\rm GF}(q)\hspace{0.05cm},\hspace{0.2cm}c_i \in {\rm GF}(q)\hspace{0.3cm}{\rm mit}\hspace{0.3cm} q = n+1 = 2^m
 
\hspace{0.3cm} \Rightarrow  \hspace{0.3cm} n = 2^m - 1\hspace{0.05cm}. </math>
 
\hspace{0.3cm} \Rightarrow  \hspace{0.3cm} n = 2^m - 1\hspace{0.05cm}. </math>
  
*Jedes Codesymbol&nbsp; $c_i$&nbsp; wird somit mit&nbsp; $m &#8805; 2$&nbsp; Binärsymbolen (Bit) dargestellt. Zum Vergleich: &nbsp; Für die binären Blockcodes gilt&nbsp; $q=2$,&nbsp; $m=1$&nbsp; und die Codewortlänge&nbsp; $n$&nbsp; ist frei wählbar.<br>
+
*Each code symbol&nbsp; $c_i$&nbsp; is thus represented by&nbsp; $m &#8805; 2$&nbsp; binary symbols (bits). For comparison: &nbsp; For the binary block codes&nbsp; $q=2$,&nbsp; $m=1$&nbsp; and the code word length&nbsp; $n$&nbsp; is freely selectable.<br>
  
*Bei Codierung auf Symbolebene muss das BEC&ndash;Modell zum&nbsp; $m$&ndash;BEC&ndash;Modell erweitert werden. Mit der Wahrscheinlichkeit&nbsp; $\lambda_m &asymp; m \cdot\lambda$&nbsp; wird ein Codesymbol&nbsp; $c_i$&nbsp; ausgelöscht&nbsp; $(y_i = \rm E)$&nbsp; und es gilt&nbsp; ${\rm Pr}(y_i = c_i) = 1 - \lambda_m$. Näheres zur Umrechnung der beiden Modelle finden Sie in der&nbsp; [[Aufgaben:Aufgabe_2.11Z:_Erasure–Kanal_für_Symbole|Aufgabe 2.11Z]].<br>
+
*When coding at symbol level, the BEC model must be extended to&nbsp; $m$ BEC model. With probability&nbsp; $\lambda_m &asymp; m \cdot\lambda$&nbsp; a code symbol&nbsp; $c_i$&nbsp; is erased&nbsp; $(y_i = \rm E)$&nbsp; and it holds&nbsp; ${\rm Pr}(y_i = c_i) = 1 - \lambda_m$. For more details on the conversion of the two models, see the&nbsp; [[Aufgaben:Exercise_2.11Z:_Erasure_Channel_for_Symbols|"Exercise 2.11Z"]].<br>
  
  
Im Folgenden beschäftigen wir uns nur mit dem Block&nbsp; <i>Codewortfinder</i> (CWF), der aus dem Empfangsvektor&nbsp; $\underline{y}$&nbsp; den Vektor&nbsp; $\underline{z} &#8712; \mathcal{C}_{\rm RS}$&nbsp; gewinnt:
+
In the following, we deal only with the block&nbsp; <i>code wordfinder</i> (CWF), which extracts from the received vector&nbsp; $\underline{y}$&nbsp; the vector&nbsp; $\underline{z} &#8712; \mathcal{C}_{\rm RS}$&nbsp; recovering:
*Falls die Anzahl&nbsp; $e$&nbsp; der Auslöschungen im Vektor&nbsp; $\underline{y}$&nbsp; hinreichend klein ist, lässt sich das gesamte Codewort mit Sicherheit&nbsp; $(\underline{z}=\underline{c})$&nbsp;   finden.<br>
+
*If the number&nbsp; $e$&nbsp; of extinctions in the vector&nbsp; $\underline{y}$&nbsp; is sufficiently small, the entire code word can be found with certainty&nbsp; $(\underline{z}=\underline{c})$&nbsp;.<br>
  
*Sind zuviele Symbole des Empfangswortes&nbsp; $\underline{y}$&nbsp; ausgelöscht, meldet der Decoder, dass dieses Wort nicht decodierbar ist und sendet eventuell die Sequenz noch einmal.<br><br>
+
*If too many symbols of the received word&nbsp; $\underline{y}$&nbsp; are erased, the decoder reports that this word cannot be decoded and may send the sequence again.<br><br>
  
Beim Auslöschungskanal&nbsp; ($m$&ndash;BEC)&nbsp; ist im Gegensatz zum &nbsp;$m$&ndash;BSC, der im Kapitel&nbsp; [[Channel_Coding/Fehlerkorrektur_nach_Reed–Solomon–Codierung|Fehlerkorrektur nach Reed–Solomon–Codierung]]&nbsp; Anwendung findet, eine Fehlentscheidung&nbsp; $(\underline{z} \ne \underline{c})$&nbsp; ausgeschlossen &nbsp; &#8658; &nbsp; Blockfehlerwahrscheinlichkeit&nbsp; ${\rm Pr}(\underline{z}\ne\underline{c}) = 0$ &nbsp; &#8658; &nbsp; ${\rm Pr}(\underline{v}\ne\underline{u}) = 0$.  
+
In the case of the erasure channel&nbsp; ($m$ BEC)&nbsp; unlike the &nbsp;$m$ BSC, which is described in the chapter&nbsp; [[Channel_Coding/Error_Correction_According_to_Reed-Solomon_Coding|"Error correction after Reed-Solomon coding"]]&nbsp; applies, an error decision&nbsp; $(\underline{z} \ne\underline{c})$&nbsp; is excluded &nbsp; &#8658; &nbsp; Block error probability&nbsp; ${\rm Pr}(\underline{z}\ne\underline{c}) = 0$ &nbsp; &#8658; &nbsp; ${\rm Pr}(\underline{v}\ne\underline{u}) = 0$.  
*Das rekonstruierte Informationswort ergibt sich gemäß dem Blockschaltbild (gelbe Hinterlegung) zu&nbsp; $\underline{v} = {\rm enc}^{-1}(\underline{z})$.  
+
*The reconstructed information word results according to the block diagram (yellow background) to&nbsp; $\underline{v} = {\rm enc}^{-1}(\underline{z})$.  
*Mit der Generatormatrix&nbsp; $\boldsymbol{\rm G}$&nbsp; kann hierfür auch geschrieben werden:
+
*With the generator matrix&nbsp; $\boldsymbol{\rm G}$&nbsp; can also be written for this:
  
 
::<math>\underline {c} = \underline {u} \cdot { \boldsymbol{\rm G}}
 
::<math>\underline {c} = \underline {u} \cdot { \boldsymbol{\rm G}}
Line 49: Line 49:
 
\hspace{0.05cm}. </math>
 
\hspace{0.05cm}. </math>
  
== Vorgehensweise am Beispiel des RSC (7, 3, 5)<sub>8</sub> ==
+
== Procedure using the RSC as an example (7, 3, 5)<sub>8</sub> ==
 
<br>
 
<br>
Um die Reed&ndash;Solomon&ndash;Decodierung beim Auslöschungskanal so einfach wie möglich darstellen zu können, gehen wir von einer konkreten Aufgabenstellung aus:  
+
In order to be able to represent the Reed&ndash;Solomon decoding at the extinction channel as simply as possible, we start from a concrete task:  
  
Verwendet wird ein Reed&ndash;Solomon&ndash;Code mit den Parametern&nbsp; $n= 7$,&nbsp; $k= 3$&nbsp; und&nbsp; $q= 2^3 = 8$.  
+
A Reed&ndash;Solomon code with parameters&nbsp; $n= 7$,&nbsp; $k= 3$&nbsp; and&nbsp; $q= 2^3 = 8$ is used.  
  
Somit gilt für das Informationswort&nbsp; $\underline{u}$&nbsp; und das Codewort&nbsp; $\underline{c}$:
+
Thus, for the information word&nbsp; $\underline{u}$&nbsp; and the code word&nbsp; $\underline{c}$:
  
 
::<math>\underline {u} = (u_0, u_1, u_2) \hspace{0.05cm},\hspace{0.15cm}
 
::<math>\underline {u} = (u_0, u_1, u_2) \hspace{0.05cm},\hspace{0.15cm}
Line 62: Line 62:
 
\hspace{0.05cm},</math>
 
\hspace{0.05cm},</math>
  
und die Prüfmatrix&nbsp; $\boldsymbol{\rm H}$&nbsp; lautet:
+
and the parity-check matrix&nbsp; $\boldsymbol{\rm H}$&nbsp; is:
  
 
::<math>{ \boldsymbol{\rm H}} =  
 
::<math>{ \boldsymbol{\rm H}} =  
Line 72: Line 72:
 
\end{pmatrix}\hspace{0.05cm}. </math>
 
\end{pmatrix}\hspace{0.05cm}. </math>
  
Beispielhaft wird hier vom  Empfangsvektor&nbsp; $\underline {y}  = (\alpha, \hspace{0.03cm} 1, \hspace{0.03cm}{\rm E}, \hspace{0.03cm}{\rm E}, \hspace{0.03cm}\alpha^2,{\rm E}, \hspace{0.03cm}\alpha^5)$&nbsp; ausgegangen. Dann gilt:
+
For example, the received vector&nbsp; $\underline {y}  = (\alpha, \hspace{0.03cm} 1, \hspace{0.03cm}{\rm E}, \hspace{0.03cm}{\rm E}, \hspace{0.03cm}\alpha^2,{\rm E}, \hspace{0.03cm}\alpha^5)$&nbsp; is assumed here. Then holds:
*Da der Auslöschungskanal keine Fehler produziert, sind dem Decoder vier der Codesymbole bekannt:
+
*Since the erasure channel produces no errors, four of the code symbols are known to the decoder:
  
 
::<math>c_0 = \alpha^1 \hspace{0.05cm},\hspace{0.2cm}
 
::<math>c_0 = \alpha^1 \hspace{0.05cm},\hspace{0.2cm}
Line 81: Line 81:
 
\hspace{0.05cm}.</math>
 
\hspace{0.05cm}.</math>
  
*Es ist offensichtlich, dass der Block "Codewortfinder" &ndash; im Blockschaltbild mit&nbsp; '''CWF'''&nbsp; bezeichnet &ndash; einen Vektor der Form&nbsp; $\underline {z} = (c_0, \hspace{0.03cm}c_1, \hspace{0.03cm}z_2, \hspace{0.03cm}z_3,\hspace{0.03cm}c_4,\hspace{0.03cm}z_5,\hspace{0.03cm}c_6)$&nbsp; liefern soll mit&nbsp; $z_2,\hspace{0.03cm}z_3,\hspace{0.03cm}z_5 \in \rm GF(2^3)$.<br>
+
*It is obvious that the block "code word finder" &ndash; in the block diagram is denoted by&nbsp; '''CWF''''&nbsp; a vector of the form&nbsp; $\underline {z} = (c_0, \hspace{0.03cm}c_1, \hspace{0.03cm}z_2, \hspace{0.03cm}z_3,\hspace{0.03cm}c_4,\hspace{0.03cm}z_5,\hspace{0.03cm}c_6)$&nbsp; is to be supplied with&nbsp; $z_2,\hspace{0.03cm}z_3,\hspace{0.03cm}z_5 \in \rm GF(2^3)$.<br>
  
*Da das vom Decoder gefundene Codewort&nbsp; $\underline {z}$&nbsp; aber auch ein gültiges Reed&ndash;Solomon&ndash;Codewort  sein soll &nbsp; &#8658; &nbsp; $\underline {z} &#8712; \mathcal{C}_{\rm RS}$, muss ebenso gelten:
+
*But since the codeword&nbsp; $\underline {z}$&nbsp; found by the decoder is also supposed to be a valid Reed&ndash;Solomon code word &nbsp; &#8658; &nbsp; $\underline {z} &#8712; \mathcal{C}_{\rm RS}$, must hold as well:
  
 
::<math>{ \boldsymbol{\rm H}} \cdot \underline {z}^{\rm T} = \underline {0}^{\rm T}  \hspace{0.3cm} \Rightarrow \hspace{0.3cm}
 
::<math>{ \boldsymbol{\rm H}} \cdot \underline {z}^{\rm T} = \underline {0}^{\rm T}  \hspace{0.3cm} \Rightarrow \hspace{0.3cm}
Line 108: Line 108:
 
\hspace{0.05cm}. </math>
 
\hspace{0.05cm}. </math>
  
*Daraus ergeben sich vier Gleichungen für die Unbekannten&nbsp; $z_2$,&nbsp; $z_3$&nbsp; und &nbsp;$z_5$. Bei eindeutiger Lösung &ndash; und nur bei einer solchen &ndash; ist die Decodierung erfolgreich und man kann dann mit Sicherheit sagen, dass tatsächlich&nbsp; $\underline {c} = \underline {z} $&nbsp; gesendet wurde.<br><br>
+
*This gives four equations for the unknowns&nbsp; $z_2$,&nbsp; $z_3$&nbsp; and &nbsp;$z_5$. With unique solution &ndash; and only with such &ndash; the decoding is successful and one can then say with certainty that indeed&nbsp; $\underline {c} = \underline {z} $&nbsp; was sent.<br><br>
  
  
  
== Lösung der Matrixgleichungen am Beispiel des RSC (7, 3, 5)<sub>8</sub> ==
+
== Solution of the matrix equations using the example of the RSC (7, 3, 5)<sub>8</sub> ==
 
<br>
 
<br>
Gefunden werden muss also das zulässige Codewort&nbsp; $\underline {z}$, das die Bestimmungsgleichung&nbsp; $\boldsymbol{\rm H} \cdot \underline {z}^{\rm T} $&nbsp; erfüllt. Zweckmäßigerweise spalten wir dazu den Vektor&nbsp; $\underline {z}$&nbsp; in zwei Teilvektoren auf, nämlich in
+
Thus, it is necessary to find the admissible codeword&nbsp; $\underline {z}$ that satisfies the determination equation&nbsp; $\boldsymbol{\rm H} \cdot \underline {z}^{\rm T} $&nbsp; satisfies. For convenience, we split the vector&nbsp; $\underline {z}$&nbsp; into two partial vectors, viz.
*den Vektor&nbsp; $\underline {z}_{\rm E} = (z_2, z_3, z_5)$&nbsp; der ausgelöschten Symbole&nbsp; (Index "$\rm E$" für <i>Erasures</i>&nbsp;),<br>
+
*the vector&nbsp; $\underline {z}_{\rm E} = (z_2, z_3, z_5)$&nbsp; of the erased symbols&nbsp; (index "$\rm E$" for <i>erasures</i>&nbsp;),<br>
  
*den Vektor&nbsp; $\underline {z}_{\rm K} = (c_0, c_1,c_4, c_6)$&nbsp; der bekannten Symbole&nbsp; (Index "$\rm K$" für <i>Korrekt</i>&nbsp;).<br><br>
+
*the vector&nbsp; $\underline {z}_{\rm K} = (c_0, c_1,c_4, c_6)$&nbsp; of known symbols&nbsp; (index "$\rm K$" for <i>correct</i>&nbsp;).<br><br>
  
Mit den zugehörigen Teilmatrizen (jeweils mit&nbsp; $n-k = 4$&nbsp; Zeilen)
+
With the associated partial matrices (each with&nbsp; $n-k = 4$&nbsp; rows)
  
 
::<math>{ \boldsymbol{\rm H}}_{\rm E} =  
 
::<math>{ \boldsymbol{\rm H}}_{\rm E} =  
Line 136: Line 136:
 
\end{pmatrix}</math>
 
\end{pmatrix}</math>
  
lautet somit die Bestimmungsgleichung:
+
the equation of determination is thus:
  
 
::<math>{ \boldsymbol{\rm H}}_{\rm E} \cdot \underline {z}_{\rm E}^{\rm T} +
 
::<math>{ \boldsymbol{\rm H}}_{\rm E} \cdot \underline {z}_{\rm E}^{\rm T} +
Line 144: Line 144:
 
{ \boldsymbol{\rm H}}_{\rm K} \cdot \underline {z}_{\rm K}^{\rm T}\hspace{0.05cm}.  </math>
 
{ \boldsymbol{\rm H}}_{\rm K} \cdot \underline {z}_{\rm K}^{\rm T}\hspace{0.05cm}.  </math>
  
*Da für alle Elemente&nbsp; $z_i &#8712; {\rm GF}(2^m)$&nbsp; die&nbsp; [[Channel_Coding/Einige_Grundlagen_der_Algebra#Definition_eines_Galoisfeldes |additive Inverse]]&nbsp; ${\rm Inv_A}(z_i)= (- z_i) = z_i$&nbsp; ist, gilt in gleicher Weise
+
*Since for all elements&nbsp; $z_i &#8712; {\rm GF}(2^m)$&nbsp; the&nbsp; [[Channel_Coding/Some_Basics_of_Algebra#Definition_of_a_Galois_field |"additive inverse"]]&nbsp; ${\rm Inv_A}(z_i)= (- z_i) = z_i$&nbsp; holds in the same way
  
 
::<math>{ \boldsymbol{\rm H}}_{\rm E} \cdot \underline {z}_{\rm E}^{\rm T} =  
 
::<math>{ \boldsymbol{\rm H}}_{\rm E} \cdot \underline {z}_{\rm E}^{\rm T} =  
Line 168: Line 168:
 
\hspace{0.05cm}.</math>
 
\hspace{0.05cm}.</math>
  
*Die rechte Gleichungsseite ergibt sich für das betrachtete Beispiel &nbsp; &#8658; &nbsp; $\underline {z}_{\rm K} = (c_0, c_1,c_4, c_6)$&nbsp; und basiert auf dem Polynom&nbsp; $p(x) = x^3 + x +1$, das zu folgenden Potenzen $($in&nbsp; &nbsp;$\alpha)$&nbsp; führt:
+
*The right-hand side of the equation results for the considered example &nbsp; &#8658; &nbsp; $\underline {z}_{\rm K} = (c_0, c_1,c_4, c_6)$&nbsp; and is based on the polynomial&nbsp; $p(x) = x^3 + x +1$, which leads to the following powers $($in&nbsp; &nbsp;$\alpha)$&nbsp;:
  
 
::<math>\alpha^3 =\alpha + 1\hspace{0.05cm},
 
::<math>\alpha^3 =\alpha + 1\hspace{0.05cm},
Line 179: Line 179:
 
\hspace{0.3cm} \alpha^{10} = \alpha^3 =  \alpha + 1\hspace{0.05cm},\hspace{0.1cm} \text{...}</math>
 
\hspace{0.3cm} \alpha^{10} = \alpha^3 =  \alpha + 1\hspace{0.05cm},\hspace{0.1cm} \text{...}</math>
  
*Damit lautet die Matrizengleichung zur Bestimmung des gesuchten Vektors&nbsp; $\underline {z}_{\rm E}$:
+
*Thus, the matrix equation for determining the vector we are looking for&nbsp; $\underline {z}_{\rm E}$:
  
 
::<math>\begin{pmatrix}
 
::<math>\begin{pmatrix}
Line 200: Line 200:
 
\hspace{0.05cm}. </math>
 
\hspace{0.05cm}. </math>
  
*Löst man diese Matrizengleichung (am einfachsten per Programm), so erhält man
+
*Solving this matrix equation (most easily by program), we get
  
 
::<math>z_2 = \alpha^2\hspace{0.05cm},\hspace{0.25cm}z_3 = \alpha^1\hspace{0.05cm},\hspace{0.25cm}z_5 = \alpha^5
 
::<math>z_2 = \alpha^2\hspace{0.05cm},\hspace{0.25cm}z_3 = \alpha^1\hspace{0.05cm},\hspace{0.25cm}z_5 = \alpha^5
Line 206: Line 206:
 
\hspace{0.05cm}.</math>
 
\hspace{0.05cm}.</math>
  
*Das Ergebnis ist richtig, wie die folgenden Kontrollrechnungen zeigen:  
+
*The result is correct, as the following control calculations show:  
  
 
::<math>\alpha^2 \cdot \alpha^2 + \alpha^3 \cdot \alpha^1 + \alpha^5 \cdot \alpha^5 =
 
::<math>\alpha^2 \cdot \alpha^2 + \alpha^3 \cdot \alpha^1 + \alpha^5 \cdot \alpha^5 =
Line 217: Line 217:
 
(\alpha + 1) + (\alpha^2 + 1) + (\alpha^2 + \alpha) = 0\hspace{0.05cm}.</math>
 
(\alpha + 1) + (\alpha^2 + 1) + (\alpha^2 + \alpha) = 0\hspace{0.05cm}.</math>
  
*Das zugehörige Informationswort erhält man mit der&nbsp; [[Channel_Coding/Allgemeine_Beschreibung_linearer_Blockcodes#Codefestlegung_durch_die_Generatormatrix| Generatormatrix]]&nbsp; $\boldsymbol{\rm G}$&nbsp; zu&nbsp; $\underline {v} = \underline {z} \cdot \boldsymbol{\rm G}^{\rm T} = (\alpha^1,\hspace{0.05cm}1,\hspace{0.05cm}\alpha^3)$.<br>
+
*The corresponding information word is obtained with the&nbsp; [[Channel_Coding/General_Description_of_Linear_Block_Codes#Code_definition_by_the_generator_matrix| "Generator Matrix"]]&nbsp; $\boldsymbol{\rm G}$&nbsp; to&nbsp; $\underline {v} = \underline {z} \cdot \boldsymbol{\rm G}^{\rm T} = (\alpha^1,\hspace{0.05cm}1,\hspace{0.05cm}\alpha^3)$.<br>
  
== Aufgaben zum Kapitel ==
+
== Exercises for the chapter ==
 
<br>
 
<br>
 
[[Aufgaben:2.11_RS–Decodierung_nach_„Erasures”|Aufgabe 2.11: RS–Decodierung nach „Erasures”]]
 
[[Aufgaben:2.11_RS–Decodierung_nach_„Erasures”|Aufgabe 2.11: RS–Decodierung nach „Erasures”]]

Revision as of 21:36, 3 September 2022

Block diagram and requirements for RS fault detection


In the  "Decoding at the Binary Erasure Channel"  chapter we showed for the binary block codes which calculations the decoder has to perform to decode from an incomplete received word  $\underline{y}$  the transmitted code word  $\underline{x}$  in the best possible way. In the Reed–Solomon chapter we renamed  $\underline{x}$  to  $\underline{c}$ .

This is also based on the [[Channel_Coding/Channel_Models_and_Decision_Structures#Binary_Erasure_Channel_.E2.80.93_BEC| "BEC Channel Model]"]  (Binary Erasure Channel ), which marks an uncertain bit as  erasure  $\rm E$ . In contrast to  BSC  (Binary Symmetric Channel ) and  AWGN  (Additive White Gaussian Noise ) bit errors  $(y_i ≠ c_i)$  are excluded here. Each bit of a received word

  • thus matches the corresponding bit of the code word  $(y_i = c_i)$, or
  • is already marked as a cancellation  $(y_i = \rm E)$.


Transmission system with Reed-Solomon coding/decoding and erasure channel

The diagram shows the block diagram, which is slightly different from the model in chapter  "Decoding linear block codes":

  • Since Reed–Solomon codes are linear block codes, information word  $\underline{u}$  and code word  $\underline{c}$  are also related here via the generator matrix $\boldsymbol{\rm G}$ and the following equation:
\[\underline {c} = {\rm enc}(\underline {u}) = \underline {u} \cdot { \boldsymbol{\rm G}} \hspace{0.3cm} {\rm mit} \hspace{0.3cm}\underline {u} = (u_0, u_1,\hspace{0.05cm}\text{ ... }\hspace{0.1cm}, u_i, \hspace{0.05cm}\text{ ... }\hspace{0.1cm}, u_{k-1})\hspace{0.05cm}, \hspace{0.2cm} \underline {c} = (c_0, c_1, \hspace{0.05cm}\text{ ... }\hspace{0.1cm}, c_i, \hspace{0.05cm}\text{ ... }\hspace{0.1cm}, c_{n-1}) \hspace{0.05cm}.\]
  • For the individual symbols of information block and code word, Reed–Solomon coding applies:
\[u_i \in {\rm GF}(q)\hspace{0.05cm},\hspace{0.2cm}c_i \in {\rm GF}(q)\hspace{0.3cm}{\rm mit}\hspace{0.3cm} q = n+1 = 2^m \hspace{0.3cm} \Rightarrow \hspace{0.3cm} n = 2^m - 1\hspace{0.05cm}. \]
  • Each code symbol  $c_i$  is thus represented by  $m ≥ 2$  binary symbols (bits). For comparison:   For the binary block codes  $q=2$,  $m=1$  and the code word length  $n$  is freely selectable.
  • When coding at symbol level, the BEC model must be extended to  $m$ BEC model. With probability  $\lambda_m ≈ m \cdot\lambda$  a code symbol  $c_i$  is erased  $(y_i = \rm E)$  and it holds  ${\rm Pr}(y_i = c_i) = 1 - \lambda_m$. For more details on the conversion of the two models, see the  "Exercise 2.11Z".


In the following, we deal only with the block  code wordfinder (CWF), which extracts from the received vector  $\underline{y}$  the vector  $\underline{z} ∈ \mathcal{C}_{\rm RS}$  recovering:

  • If the number  $e$  of extinctions in the vector  $\underline{y}$  is sufficiently small, the entire code word can be found with certainty  $(\underline{z}=\underline{c})$ .
  • If too many symbols of the received word  $\underline{y}$  are erased, the decoder reports that this word cannot be decoded and may send the sequence again.

In the case of the erasure channel  ($m$ BEC)  unlike the  $m$ BSC, which is described in the chapter  "Error correction after Reed-Solomon coding"  applies, an error decision  $(\underline{z} \ne\underline{c})$  is excluded   ⇒   Block error probability  ${\rm Pr}(\underline{z}\ne\underline{c}) = 0$   ⇒   ${\rm Pr}(\underline{v}\ne\underline{u}) = 0$.

  • The reconstructed information word results according to the block diagram (yellow background) to  $\underline{v} = {\rm enc}^{-1}(\underline{z})$.
  • With the generator matrix  $\boldsymbol{\rm G}$  can also be written for this:
\[\underline {c} = \underline {u} \cdot { \boldsymbol{\rm G}} \hspace{0.3cm} \Rightarrow \hspace{0.3cm}\underline {z} = \underline {\upsilon} \cdot { \boldsymbol{\rm G}} \hspace{0.3cm} \Rightarrow \hspace{0.3cm}\underline {\upsilon} = \underline {z} \cdot { \boldsymbol{\rm G}}^{\rm T} \hspace{0.05cm}. \]

Procedure using the RSC as an example (7, 3, 5)8


In order to be able to represent the Reed–Solomon decoding at the extinction channel as simply as possible, we start from a concrete task:

A Reed–Solomon code with parameters  $n= 7$,  $k= 3$  and  $q= 2^3 = 8$ is used.

Thus, for the information word  $\underline{u}$  and the code word  $\underline{c}$:

\[\underline {u} = (u_0, u_1, u_2) \hspace{0.05cm},\hspace{0.15cm} \underline {c} = (c_0, c_1, c_2,c_3,c_4,c_5,c_6)\hspace{0.05cm},\hspace{0.15cm} u_i, c_i \in {\rm GF}(2^3) = \{0, 1, \alpha, \alpha^2, \text{...}\hspace{0.05cm} , \alpha^6\} \hspace{0.05cm},\]

and the parity-check matrix  $\boldsymbol{\rm H}$  is:

\[{ \boldsymbol{\rm H}} = \begin{pmatrix} 1 & \alpha^1 & \alpha^2 & \alpha^3 & \alpha^4 & \alpha^5 & \alpha^6\\ 1 & \alpha^2 & \alpha^4 & \alpha^6 & \alpha^1 & \alpha^{3} & \alpha^{5}\\ 1 & \alpha^3 & \alpha^6 & \alpha^2 & \alpha^{5} & \alpha^{1} & \alpha^{4}\\ 1 & \alpha^4 & \alpha^1 & \alpha^{5} & \alpha^{2} & \alpha^{6} & \alpha^{3} \end{pmatrix}\hspace{0.05cm}. \]

For example, the received vector  $\underline {y} = (\alpha, \hspace{0.03cm} 1, \hspace{0.03cm}{\rm E}, \hspace{0.03cm}{\rm E}, \hspace{0.03cm}\alpha^2,{\rm E}, \hspace{0.03cm}\alpha^5)$  is assumed here. Then holds:

  • Since the erasure channel produces no errors, four of the code symbols are known to the decoder:
\[c_0 = \alpha^1 \hspace{0.05cm},\hspace{0.2cm} c_1 = 1 \hspace{0.05cm},\hspace{0.2cm} c_4 = \alpha^2 \hspace{0.05cm},\hspace{0.2cm} c_6 = \alpha^5 \hspace{0.05cm}.\]
  • It is obvious that the block "code word finder" – in the block diagram is denoted by  CWF'  a vector of the form  $\underline {z} = (c_0, \hspace{0.03cm}c_1, \hspace{0.03cm}z_2, \hspace{0.03cm}z_3,\hspace{0.03cm}c_4,\hspace{0.03cm}z_5,\hspace{0.03cm}c_6)$  is to be supplied with  $z_2,\hspace{0.03cm}z_3,\hspace{0.03cm}z_5 \in \rm GF(2^3)$.
  • But since the codeword  $\underline {z}$  found by the decoder is also supposed to be a valid Reed–Solomon code word   ⇒   $\underline {z} ∈ \mathcal{C}_{\rm RS}$, must hold as well:
\[{ \boldsymbol{\rm H}} \cdot \underline {z}^{\rm T} = \underline {0}^{\rm T} \hspace{0.3cm} \Rightarrow \hspace{0.3cm} \begin{pmatrix} 1 & \alpha^1 & \alpha^2 & \alpha^3 & \alpha^4 & \alpha^5 & \alpha^6\\ 1 & \alpha^2 & \alpha^4 & \alpha^6 & \alpha^1 & \alpha^{3} & \alpha^{5}\\ 1 & \alpha^3 & \alpha^6 & \alpha^2 & \alpha^{5} & \alpha^{1} & \alpha^{4}\\ 1 & \alpha^4 & \alpha^1 & \alpha^{5} & \alpha^{2} & \alpha^{6} & \alpha^{3} \end{pmatrix} \cdot \begin{pmatrix} c_0\\ c_1\\ z_2\\ z_3\\ c_4\\ z_5\\ c_6 \end{pmatrix} = \begin{pmatrix} 0\\ 0\\ 0\\ 0 \end{pmatrix} \hspace{0.05cm}. \]
  • This gives four equations for the unknowns  $z_2$,  $z_3$  and  $z_5$. With unique solution – and only with such – the decoding is successful and one can then say with certainty that indeed  $\underline {c} = \underline {z} $  was sent.


Solution of the matrix equations using the example of the RSC (7, 3, 5)8


Thus, it is necessary to find the admissible codeword  $\underline {z}$ that satisfies the determination equation  $\boldsymbol{\rm H} \cdot \underline {z}^{\rm T} $  satisfies. For convenience, we split the vector  $\underline {z}$  into two partial vectors, viz.

  • the vector  $\underline {z}_{\rm E} = (z_2, z_3, z_5)$  of the erased symbols  (index "$\rm E$" for erasures ),
  • the vector  $\underline {z}_{\rm K} = (c_0, c_1,c_4, c_6)$  of known symbols  (index "$\rm K$" for correct ).

With the associated partial matrices (each with  $n-k = 4$  rows)

\[{ \boldsymbol{\rm H}}_{\rm E} = \begin{pmatrix} \alpha^2 & \alpha^3 & \alpha^5 \\ \alpha^4 & \alpha^6 & \alpha^{3} \\ \alpha^6 & \alpha^2 & \alpha^{1} \\ \alpha^1 & \alpha^{5} & \alpha^{6} \end{pmatrix} \hspace{0.05cm},\hspace{0.4cm} { \boldsymbol{\rm H}}_{\rm K} \begin{pmatrix} 1 & \alpha^1 & \alpha^4 & \alpha^6\\ 1 & \alpha^2 & \alpha^1 & \alpha^{5}\\ 1 & \alpha^3 & \alpha^{5} & \alpha^{4}\\ 1 & \alpha^4 & \alpha^{2} & \alpha^{3} \end{pmatrix}\]

the equation of determination is thus:

\[{ \boldsymbol{\rm H}}_{\rm E} \cdot \underline {z}_{\rm E}^{\rm T} + { \boldsymbol{\rm H}}_{\rm K} \cdot \underline {z}_{\rm K}^{\rm T} = \underline {0}^{\rm T} \hspace{0.5cm} \Rightarrow \hspace{0.5cm} { \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.05cm}. \]
  • Since for all elements  $z_i ∈ {\rm GF}(2^m)$  the  "additive inverse"  ${\rm Inv_A}(z_i)= (- z_i) = z_i$  holds in the same way
\[{ \boldsymbol{\rm H}}_{\rm E} \cdot \underline {z}_{\rm E}^{\rm T} = { \boldsymbol{\rm H}}_{\rm K} \cdot \underline {z}_{\rm K}^{\rm T} = \begin{pmatrix} 1 & \alpha^1 & \alpha^4 & \alpha^6\\ 1 & \alpha^2 & \alpha^1 & \alpha^{5}\\ 1 & \alpha^3 & \alpha^{5} & \alpha^{4}\\ 1 & \alpha^4 & \alpha^{2} & \alpha^{3} \end{pmatrix} \cdot \begin{pmatrix} \alpha^1\\ 1\\ \alpha^{2}\\ \alpha^{6} \end{pmatrix} = \hspace{0.45cm}... \hspace{0.45cm}= \begin{pmatrix} \alpha^3\\ \alpha^{4}\\ \alpha^{2}\\ 0 \end{pmatrix} \hspace{0.05cm}.\]
  • The right-hand side of the equation results for the considered example   ⇒   $\underline {z}_{\rm K} = (c_0, c_1,c_4, c_6)$  and is based on the polynomial  $p(x) = x^3 + x +1$, which leads to the following powers $($in   $\alpha)$ :
\[\alpha^3 =\alpha + 1\hspace{0.05cm}, \hspace{0.3cm} \alpha^4 = \alpha^2 + \alpha\hspace{0.05cm}, \hspace{0.3cm} \alpha^5 = \alpha^2 + \alpha + 1\hspace{0.05cm}, \hspace{0.3cm} \alpha^6 = \alpha^2 + 1\hspace{0.05cm}, \hspace{0.3cm} \alpha^7 \hspace{-0.15cm} = \hspace{-0.15cm} 1\hspace{0.05cm}, \hspace{0.3cm} \alpha^8 = \alpha^1 \hspace{0.05cm}, \hspace{0.3cm} \alpha^9 = \alpha^2 \hspace{0.05cm}, \hspace{0.3cm} \alpha^{10} = \alpha^3 = \alpha + 1\hspace{0.05cm},\hspace{0.1cm} \text{...}\]
  • Thus, the matrix equation for determining the vector we are looking for  $\underline {z}_{\rm E}$:
\[\begin{pmatrix} \alpha^2 & \alpha^3 & \alpha^5 \\ \alpha^4 & \alpha^6 & \alpha^{3} \\ \alpha^6 & \alpha^2 & \alpha^{1} \\ \alpha^1 & \alpha^{5} & \alpha^{6} \end{pmatrix} \cdot \begin{pmatrix} z_2\\ z_3\\ z_5 \end{pmatrix} \stackrel{!}{=} \begin{pmatrix} \alpha^3\\ \alpha^{4}\\ \alpha^{2}\\ 0 \end{pmatrix} \hspace{0.05cm}. \]
  • Solving this matrix equation (most easily by program), we get
\[z_2 = \alpha^2\hspace{0.05cm},\hspace{0.25cm}z_3 = \alpha^1\hspace{0.05cm},\hspace{0.25cm}z_5 = \alpha^5 \hspace{0.5cm} \Rightarrow \hspace{0.5cm}\underline {z} = \left ( \hspace{0.05cm} \alpha^1, \hspace{0.05cm}1, \hspace{0.05cm}\alpha^2, \hspace{0.05cm}\alpha^1, \hspace{0.05cm}\alpha^2, \hspace{0.05cm}\alpha^5, \hspace{0.05cm}\alpha^5 \hspace{0.05cm}\right ) \hspace{0.05cm}.\]
  • The result is correct, as the following control calculations show:
\[\alpha^2 \cdot \alpha^2 + \alpha^3 \cdot \alpha^1 + \alpha^5 \cdot \alpha^5 = \alpha^4 + \alpha^4 + \alpha^{10} = \alpha^{10} = \alpha^3\hspace{0.05cm},\]
\[\alpha^4 \cdot \alpha^2 + \alpha^6 \cdot \alpha^1 + \alpha^3 \cdot \alpha^5 = (\alpha^2 + 1) + (1) + (\alpha) = \alpha^{2} + \alpha = \alpha^4\hspace{0.05cm},\]
\[\alpha^6 \cdot \alpha^2 + \alpha^2 \cdot \alpha^1 + \alpha^1 \cdot \alpha^5 = (\alpha) + (\alpha + 1) + (\alpha^2 + 1) = \alpha^{2} \hspace{0.05cm},\]
\[\alpha^1 \cdot \alpha^2 + \alpha^5 \cdot \alpha^1 + \alpha^6 \cdot \alpha^5 = (\alpha + 1) + (\alpha^2 + 1) + (\alpha^2 + \alpha) = 0\hspace{0.05cm}.\]
  • The corresponding information word is obtained with the  "Generator Matrix"  $\boldsymbol{\rm G}$  to  $\underline {v} = \underline {z} \cdot \boldsymbol{\rm G}^{\rm T} = (\alpha^1,\hspace{0.05cm}1,\hspace{0.05cm}\alpha^3)$.

Exercises for the chapter


Aufgabe 2.11: RS–Decodierung nach „Erasures”

Aufgabe 2.11Z: Erasure–Kanal für Symbole