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

From LNTwww
 
(22 intermediate revisions by 6 users not shown)
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 Reed-Solomon error detection ==
 
<br>
 
<br>
Im Kapitel [[Kanalcodierung/Decodierung_linearer_Blockcodes#Decodierung_beim_Binary_Erasure_Channel|Decodierung beim Binary Erasure Channel]] wurde für die binären Blockcodes gezeigt, welche Berechnungen der Decoder ausführen muss, um aus einem unvollständigen Empfangswort $\underline{y}$ das gesendete Codewort $\underline{x}$ bestmöglich decodieren zu können. Zugrunde gelegt war dabei das [[Kanalcodierung/Klassifizierung_von_Signalen#Binary_Erasure_Channel_.E2.80.93_BEC| BEC&ndash;Kanalmodell]] (<i>Binary Erasure Channel</i>), das ein unsicheres Bit als <i>Erasure</i> $\rm E$ (&bdquo;Auslöschung&rdquo;) markiert.<br>
+
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,&nbsp; 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.&nbsp; In the Reed&ndash;Solomon chapter we renamed&nbsp; $\underline{x}$&nbsp; to&nbsp; $\underline{c}$.
  
Im Gegensatz zu [[Kanalcodierung/Klassifizierung_von_Signalen#Binary_Symmetric_Channel_.E2.80.93_BSC| BSC]] (<i>Binary Symmetric Channel</i>) und [[Kanalcodierung/Klassifizierung_von_Signalen#AWGN.E2.80.93Kanal_bei_bin.C3.A4rem_Eingang| AWGN]] (<i>Additive White Gaussian Noise</i>) wurden hier Bitfehler $(y_i &ne; x_i)$ ausgeschlossen. Jedes Bit eines Empfangswortes
+
[[File:EN_KC_T_2_4_S1_2neu.png|right|frame|Transmission system with Reed-Solomon coding/decoding and erasure channel|class=fit]]   
*stimmt also mit dem entsprechenden Bit des Codewortes überein $(y_i = x_i)$, oder
 
*ist bereits als Auslöschung markiert $(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]]
+
# This chapter is based on the&nbsp; [[Channel_Coding/Channel_Models_and_Decision_Structures#Binary_Erasure_Channel_.E2.80.93_BEC| $\text{BEC model}$]]&nbsp; ("Binary Erasure Channel"),&nbsp; which marks an uncertain bit as&nbsp; "erasure"&nbsp; $\rm E$.&nbsp;
 +
# In contrast to the&nbsp; [[Channel_Coding/Channel_Models_and_Decision_Structures#Binary_Symmetric_Channel_.E2.80.93_BSC|$\text{BSC model}$]]&nbsp; ("Binary Symmetric Channel") and &nbsp; [[Channel_Coding/Channel_Models_and_Decision_Structures#AWGN_channel_at_binary_input|$\text{AWGN model}$]]&nbsp; ("Additive White Gaussian Noise"), &nbsp; bit errors&nbsp; $(y_i &ne; c_i)$&nbsp; are excluded here.
  
Die Grafik zeigt das Blockschaltbild, das sich von dem Modell im Kapitel [[Kanalcodierung/Decodierung_linearer_Blockcodes#Blockschaltbild_und_Voraussetzungen|Decodierung linearer Blockcodes]] geringfügig unterscheidet:
+
 
*Da Reed&ndash;Solomon&ndash;Codes lineare Blockcodes sind, stehen Informationswort $\underline{u}$ und Codewort $\underline{c}$ über die Generatormatrix $\boldsymbol{\rm G}$ und die folgende Gleichung in Zusammenhang:
+
Each bit of a received word
 +
*thus matches the corresponding bit of the code word&nbsp; $(y_i = c_i)$,&nbsp; or
 +
 +
*is already marked as a cancellation&nbsp; $(y_i = \rm E)$.<br>
 +
 
 +
 
 +
 
 +
The graphic shows the block diagram,&nbsp; which is slightly different from the model in chapter&nbsp; [[Channel_Coding/Decoding_of_Linear_Block_Codes#Block_diagram_and_requirements|$\text{Decoding oflinear block codes}$]]:
 +
*Since Reed&ndash;Solomon codes are linear block codes,&nbsp; the information word&nbsp; $\underline{u}$&nbsp; and the code word&nbsp; $\underline{c}$&nbsp; are also related via the generator matrix&nbsp; $\boldsymbol{\rm G}$&nbsp; and 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}}
\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}  
+
\hspace{0.3cm} {\rm with}  \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})
 
\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}.</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,&nbsp; 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 with}\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 $c_i$ wird somit mit $m &#8805; 2$ Binärsymbolen (Bit) dargestellt. Zum Vergleich: Für die binären Blockcodes gilt $q=2$, $m=1$ und die Codewortlänge $n$ ist frei wählbar.<br>
+
*Each code symbol&nbsp; $c_i$&nbsp; is thus represented by&nbsp; $m &#8805; 2$&nbsp; binary symbols.&nbsp; For comparison: &nbsp; For the binary block codes hold&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 $m$&ndash;BEC&ndash;Modell erweitert werden. Mit der Wahrscheinlichkeit $\lambda_m &asymp; m \cdot\lambda$ wird ein Codesymbol $c_i$ ausgelöscht $(y_i = \rm E)$ und es gilt ${\rm Pr}(y_i = c_i) = 1 - \lambda_m$. Näheres zur Umrechnung der beiden Modelle finden Sie in der [[Aufgabe 2.11Z]].<br>
+
*When encoding at symbol level,&nbsp; the BEC model must be extended to the&nbsp; "m-BEC model":&nbsp;  
 
+
:*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$.&nbsp;
 
+
:*For more details on the conversion of the two models,&nbsp; see&nbsp; [[Aufgaben:Exercise_2.11Z:_Erasure_Channel_for_Symbols|"Exercise 2.11Z"]].<br>
Im Folgenden beschäftigen wir uns ausschließlich mit dem Block  <i>Codewortfinder</i> (CWF), der aus dem Empfangsvektor $\underline{y}$ den Vektor $\underline{z} &#8712; \mathcal{C}_{\rm RS}$ gewinnt:
+
*In the following, we deal only with the block&nbsp; "code word finder"&nbsp; $\rm (CWF)$,&nbsp; which extracts from the received vector&nbsp; $\underline{y}$&nbsp; the vector&nbsp; $\underline{z} &#8712; \mathcal{C}_{\rm RS}$:
*Falls die Anzahl $e$ der Auslöschungen in Vektor $\underline{y}$ hinreichend klein ist, lässt sich das gesamte Codewort mit Sicherheit $(\underline{z}=\underline{c})$   finden.<br>
+
:*If the number&nbsp; $e$&nbsp; of erasures in the vector &nbsp; $\underline{y}$ &nbsp; is sufficiently small,&nbsp; the entire code word can be found with certainty: &nbsp; $(\underline{z}=\underline{c})$.  
 
+
:*If too many symbols of the received word&nbsp; $\underline{y}$&nbsp; are erased,&nbsp; the decoder reports that this word cannot be decoded.&nbsp; It may then be necessary to send this sequence again. <br>
*Sind zuviele Symbole des Empfangswortes $\underline{y}$ ausgelöscht, meldet der Decoder, dass dieses Wort nicht decodierbar ist. Eventuell wird dann die Codesequenz noch einmal gesendet.<br><br>
+
*In the case of the&nbsp; "m-BEC"&nbsp; model,&nbsp; an error decision&nbsp; $(\underline{z} \ne\underline{c})$&nbsp; is excluded &nbsp; &#8658; &nbsp; &raquo;'''block error probability'''&laquo;&nbsp; ${\rm Pr}(\underline{z}\ne\underline{c}) = 0$ &nbsp; &#8658; &nbsp; ${\rm Pr}(\underline{v}\ne\underline{u}) = 0$.  
 
+
:*The reconstructed information word results according to the block diagram&nbsp; $($yellow background$)$&nbsp; to&nbsp; $\underline{v} = {\rm enc}^{-1}(\underline{z})$.
Beim Auslöschungskanal ($m$&ndash;BEC) ist also im Gegensatz zum $m$&ndash;BSC, der im Kapitel [[Kanalcodierung/Fehlerkorrektur_nach_Reed–Solomon–Codierung|Fehlerkorrektur nach Reed–Solomon–Codierung]] Anwendung findet,  eine Fehlentscheidung $(\underline{z} \ne \underline{c})$ ausgeschlossen &nbsp; &#8658; &nbsp; Blockfehlerwahrscheinlichkeit ${\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 $\underline{v} = {\rm enc}^{-1}(\underline{z})$. Mit der Generatormatrix $\boldsymbol{\rm G}$ 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}}
 
 
\hspace{0.3cm} \Rightarrow  \hspace{0.3cm}\underline {z} = \underline {\upsilon} \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.3cm} \Rightarrow  \hspace{0.3cm}\underline {\upsilon} = \underline {z} \cdot { \boldsymbol{\rm G}}^{\rm T}
 
\hspace{0.05cm}. </math>
 
\hspace{0.05cm}. </math>
  
== Vorgehensweise am Beispiel des RSC (7, 3, 5)<sub>8</sub> ==
+
== Decoding procedure using the RSC (7, 3, 5)<sub>8</sub> as an example  ==
 
<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: Verwendet wird ein Reed&ndash;Solomon&ndash;Code mit den Parametern $n= 7$, $k= 3$ und $q= 2^3 = 8$.
+
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:  
  
Somit gilt für das Informationswort $\underline{u}$ und das Codewort $\underline{c}$:
+
*A Reed&ndash;Solomon code with parameters&nbsp; $n= 7$,&nbsp; $k= 3$&nbsp; and&nbsp; $q= 2^3 = 8$ is used.
  
 +
*Thus,&nbsp; 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}
 
\underline {c} = (c_0, c_1, c_2,c_3,c_4,c_5,c_6)\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\}
 
u_i, c_i \in {\rm GF}(2^3) = \{0, 1,  \alpha, \alpha^2, \text{...}\hspace{0.05cm} , \alpha^6\}
\hspace{0.05cm},</math>
+
\hspace{0.05cm}.</math>
  
und die Prüfmatrix $\boldsymbol{\rm H}$ lautet:
+
*The parity-check matrix&nbsp; $\boldsymbol{\rm H}$&nbsp; is:
  
 
::<math>{ \boldsymbol{\rm H}} =  
 
::<math>{ \boldsymbol{\rm H}} =  
Line 67: Line 74:
 
\end{pmatrix}\hspace{0.05cm}. </math>
 
\end{pmatrix}\hspace{0.05cm}. </math>
  
Beispielhaft wird vom  Empfangsvektor $\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)$ ausgegangen. Dann gilt:
+
&rArr; &nbsp; For example,&nbsp; the received vector&nbsp;
*Da der Auslöschungskanal keine Fehler produziert, sind dem Decoder vier der Codesymbole bekannt:
+
:$$\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:
 +
*Since the erasure channel produces no errors,&nbsp; 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 76: Line 85:
 
\hspace{0.05cm}.</math>
 
\hspace{0.05cm}.</math>
  
*Es ist offensichtlich, dass der Block &bdquo;Codewortfinder&rdquo; &ndash; im Blockschaltbild mit '''CWF''' bezeichnet &ndash; einen Vektor der 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)$ liefern soll mit $z_2,\hspace{0.03cm}z_3,\hspace{0.03cm}z_5 \in \rm GF(2^3)$.<br>
+
*It is obvious that the block&nbsp; "code word finder"&nbsp; $\rm (CWF)$&nbsp; is to provide 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;  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 $\underline {z}$ aber auch ein gültiges Reed&ndash;Solomon&ndash;Codewort  sein soll &nbsp; &#8658; &nbsp; $\underline {z} &#8712; \mathcal{C}_{\rm RS}$, muss aber ebenso gelten:
+
*But since the code word&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}$,&nbsp; it 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 103: Line 112:
 
\hspace{0.05cm}. </math>
 
\hspace{0.05cm}. </math>
  
*Daraus ergeben sich vier Gleichungen für die Unbekannten $z_2$, $z_3$ $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 $\underline {c} = \underline {z} $ gesendet wurde.<br><br>
+
*This gives four equations for the unknowns&nbsp; $z_2$,&nbsp; $z_3$&nbsp; and &nbsp;$z_5$.&nbsp; 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 $\underline {z}$, das die Bestimmungsgleichung $\boldsymbol{\rm H} \cdot \underline {z}^{\rm T} $ erfüllt. Zweckmäßigerweise spalten wir dazu den Vektor $\underline {z}$ in zwei Teilvektoren auf, nämlich in
+
Thus,&nbsp; it is necessary to find the admissible code word&nbsp; $\underline {z}$&nbsp; that satisfies the determination equation&nbsp;
*den Vektor $\underline {z}_{\rm E} = (z_2, z_3, z_5)$ der ausgelöschten Symbole (Index &bdquo;E&rdquo; für <i>Erasures</i>),<br>
+
:$$\boldsymbol{\rm H} \cdot \underline {z}^{\rm T}. $$
 
+
*For convenience,&nbsp; we split the vector&nbsp; $\underline {z}$&nbsp; into two partial vectors, viz.
*den Vektor $\underline {z}_{\rm K} = (c_0, c_1,c_4, c_6)$ der bekannten Symbole (Index &bdquo;K&rdquo; für <i>Korrekt</i>).<br><br>
+
# the vector &nbsp; $\underline {z}_{\rm E} = (z_2, z_3, z_5)$ &nbsp; of the erased symbols&nbsp; $($subscript&nbsp; "$\rm E$"&nbsp; for&nbsp; "erasures"$)$,<br>
 +
# the vector &nbsp; $\underline {z}_{\rm K} = (c_0, c_1,c_4, c_6)$ &nbsp; of known symbols&nbsp; $($subscript&nbsp; "$\rm K$"&nbsp; for&nbsp; "korrect" &nbsp; &rArr; &nbsp; "correct" $)$.<br><br>
  
Mit den zugehörigen Teilmatrizen (jeweils mit $n-k = 4$ Zeilen)
+
*With the associated partial matrices&nbsp; $($each with&nbsp; $n-k = 4$&nbsp; rows$)$
  
 
::<math>{ \boldsymbol{\rm H}}_{\rm E} =  
 
::<math>{ \boldsymbol{\rm H}}_{\rm E} =  
Line 131: Line 141:
 
\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 139: Line 149:
 
{ \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 $z_i &#8712; {\rm GF}(2^m)$ die [[Kanalcodierung/Einige_Grundlagen_der_Algebra#Definition_eines_Galoisfeldes |additive Inverse]] ${\rm Inv_A}(z_i)= (- z_i) = z_i$ ist, gilt in gleicher Weise
+
*Since for all elements&nbsp; $z_i &#8712; {\rm GF}(2^m)$ &nbsp; &rArr; &nbsp; the&nbsp; [[Channel_Coding/Some_Basics_of_Algebra#Definition_of_a_Galois_field |$\text{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 154: Line 164:
 
\alpha^{2}\\
 
\alpha^{2}\\
 
\alpha^{6}
 
\alpha^{6}
\end{pmatrix} = \hspace{0.15cm}... \hspace{0.15cm}=   
+
\end{pmatrix} = \hspace{0.45cm}... \hspace{0.45cm}=   
 
\begin{pmatrix}
 
\begin{pmatrix}
 
\alpha^3\\
 
\alpha^3\\
Line 163: Line 173:
 
\hspace{0.05cm}.</math>
 
\hspace{0.05cm}.</math>
  
Die rechte Gleichungsseite ergibt für das betrachtete Beispiel &nbsp; &#8658; &nbsp; $\underline {z}_{\rm K} = (c_0, c_1,c_4, c_6)$ und basiert auf dem Polynom $p(x) = x^3 + x +1$, das zu folgenden Potenzen (in $\alpha$) führt:
+
*The right&ndash;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$,&nbsp; which leads to the following powers&nbsp; $($in&nbsp; &nbsp;$\alpha)$&nbsp;:
  
 
::<math>\alpha^3 =\alpha + 1\hspace{0.05cm},
 
::<math>\alpha^3 =\alpha + 1\hspace{0.05cm},
Line 174: Line 184:
 
\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 $\underline {z}_{\rm E}$:
+
*Thus,&nbsp; the matrix equation for determining the vector&nbsp; $\underline {z}_{\rm E}$&nbsp; we are looking for:
  
 
::<math>\begin{pmatrix}
 
::<math>\begin{pmatrix}
Line 195: Line 205:
 
\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&nbsp; $($most easily by program$)$,&nbsp; 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 201: Line 211:
 
\hspace{0.05cm}.</math>
 
\hspace{0.05cm}.</math>
  
Das Ergebnis ist richtig, wie die folgenden Kontrollrechnungen zeigen:  
+
*The result is correct,&nbsp; as the following control calculations show:  
  
::<math>\alpha^2 \cdot \alpha^2 + \alpha^3 \cdot \alpha^1 + \alpha^5 \cdot \alpha^5 \hspace{-0.15cm}  = \hspace{-0.15cm}
+
::<math>\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},</math>
 
\alpha^4 + \alpha^4 + \alpha^{10} = \alpha^{10} = \alpha^3\hspace{0.05cm},</math>
::<math>\alpha^4 \cdot \alpha^2 + \alpha^6 \cdot \alpha^1 + \alpha^3 \cdot \alpha^5 \hspace{-0.15cm}  = \hspace{-0.15cm}
+
::<math>\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},</math>
 
(\alpha^2 + 1) + (1) + (\alpha) = \alpha^{2} + \alpha = \alpha^4\hspace{0.05cm},</math>
::<math>\alpha^6 \cdot \alpha^2 + \alpha^2 \cdot \alpha^1 + \alpha^1 \cdot \alpha^5 \hspace{-0.15cm}  = \hspace{-0.15cm}
+
::<math>\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},</math>
 
(\alpha) + (\alpha + 1) + (\alpha^2 + 1) = \alpha^{2} \hspace{0.05cm},</math>
::<math>\alpha^1 \cdot \alpha^2 + \alpha^5 \cdot \alpha^1 + \alpha^6 \cdot \alpha^5 \hspace{-0.15cm}  = \hspace{-0.15cm}
+
::<math>\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}.</math>
 
(\alpha + 1) + (\alpha^2 + 1) + (\alpha^2 + \alpha) = 0\hspace{0.05cm}.</math>
  
Das zugehörige Informationswort erhält man mit der [[Kanalcodierung/Allgemeine_Beschreibung_linearer_Blockcodes#Codefestlegung_durch_die_Generatormatrix| Generatormatrix]] $\boldsymbol{\rm G}$ zu $\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| $\text{generator matrix}$]]&nbsp; $\boldsymbol{\rm G}$:
 +
:$$\underline {v} = \underline {z} \cdot \boldsymbol{\rm G}^{\rm T} = (\alpha^1,\hspace{0.05cm}1,\hspace{0.05cm}\alpha^3).$$
  
== Aufgaben zum Kapitel ==
+
== Exercises for the chapter ==
 
<br>
 
<br>
[[Aufgaben:2.11_RS–Decodierung_nach_„Erasures”|Aufgabe 2.11: RS–Decodierung nach „Erasures”]]
+
[[Aufgaben:Exercise_2.11:_Reed-Solomon_Decoding_according_to_"Erasures"|Exercise 2.11: Reed-Solomon Decoding according to "Erasures"]]
  
[[Aufgaben:2.11Z_Erasure–Kanal_für_Symbole|Aufgabe 2.11Z: Erasure–Kanal für Symbole]]
+
[[Aufgaben:Exercise_2.11Z:_Erasure_Channel_for_Symbols|Exercise 2.11Z: Erasure Channel for Symbols]]
  
 
{{Display}}
 
{{Display}}

Latest revision as of 12:36, 24 November 2022

Block diagram and requirements for Reed-Solomon error 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}$.

Transmission system with Reed-Solomon coding/decoding and erasure channel
  1. This chapter is based on the  $\text{BEC model}$  ("Binary Erasure Channel"),  which marks an uncertain bit as  "erasure"  $\rm E$. 
  2. In contrast to the  $\text{BSC model}$  ("Binary Symmetric Channel") and   $\text{AWGN model}$  ("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)$.


The graphic shows the block diagram,  which is slightly different from the model in chapter  $\text{Decoding oflinear block codes}$:

  • Since Reed–Solomon codes are linear block codes,  the information word  $\underline{u}$  and the code word  $\underline{c}$  are also related via the generator matrix  $\boldsymbol{\rm G}$  and following equation:
\[\underline {c} = {\rm enc}(\underline {u}) = \underline {u} \cdot { \boldsymbol{\rm G}} \hspace{0.3cm} {\rm with} \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 with}\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.  For comparison:   For the binary block codes hold  $q=2$,  $m=1$  and the code word length  $n$  is freely selectable.
  • When encoding at symbol level,  the BEC model must be extended to the  "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  "Exercise 2.11Z".
  • In the following, we deal only with the block  "code word finder"  $\rm (CWF)$,  which extracts from the received vector  $\underline{y}$  the vector  $\underline{z} ∈ \mathcal{C}_{\rm RS}$:
  • If the number  $e$  of erasures 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.  It may then be necessary to send this sequence again.
  • In the case of the  "m-BEC"  model,  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}. \]

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


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}.\]
  • 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"  $\rm (CWF)$  is to provide 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)$   with  $z_2,\hspace{0.03cm}z_3,\hspace{0.03cm}z_5 \in \rm GF(2^3)$.
  • But since the code word  $\underline {z}$  found by the decoder is also supposed to be a valid Reed–Solomon code word   ⇒   $\underline {z} ∈ \mathcal{C}_{\rm RS}$,  it 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 code word  $\underline {z}$  that satisfies the determination equation 

$$\boldsymbol{\rm H} \cdot \underline {z}^{\rm T}. $$
  • For convenience,  we split the vector  $\underline {z}$  into two partial vectors, viz.
  1. the vector   $\underline {z}_{\rm E} = (z_2, z_3, z_5)$   of the erased symbols  $($subscript  "$\rm E$"  for  "erasures"$)$,
  2. the vector   $\underline {z}_{\rm K} = (c_0, c_1,c_4, c_6)$   of known symbols  $($subscript  "$\rm K$"  for  "korrect"   ⇒   "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  $\text{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  $\underline {z}_{\rm E}$  we are looking for:
\[\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}.\]
$$\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


Exercise 2.11: Reed-Solomon Decoding according to "Erasures"

Exercise 2.11Z: Erasure Channel for Symbols