Difference between revisions of "Channel Coding/Definition and Properties of Reed-Solomon Codes"

From LNTwww
 
(52 intermediate revisions by 7 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=Erweiterungskörper
+
|Vorherige Seite=Extension Field
|Nächste Seite=Reed–Solomon–Decodierung beim Auslöschungskanal
+
|Nächste Seite=Reed-Solomon Decoding for the Erasure Channel
 
}}
 
}}
  
== Definition und Eigenschaften der Reed–Solomon–Codes ==
+
== Coding principle and code parameters ==
 
<br>
 
<br>
[[File:P ID2515 KC T 2 3 S1 v2.png|right|frame|Linearer $(n, \, k)$–Blockcode|class=fit]]
+
A&nbsp; "Reed&ndash;Solomon code"&nbsp; &ndash; hereafter sometimes shortened to&nbsp; "RS code" &nbsp; &ndash; is a&nbsp; [[Channel_Coding/General_Description_of_Linear_Block_Codes#Linear_codes_and_cyclic_codes|$\text{linear block code}$]] which assigns
Ein <i>Reed&ndash;Solomon&ndash;Code</i> &ndash; im Folgenden manchmal auch verkürzt  als '''RS&ndash;Code''' bezeichnet &ndash; ist ein [[Kanalcodierung/Allgemeine_Beschreibung_linearer_Blockcodes#Lineare_Codes_und_zyklische_Codes| linearer Blockcode]], der einem Informationsblock $\underline{u}$ mit $k$ Symbolen ein entsprechendes Codewort $\underline{c}$ mit $n > k$ Symbolen zuordnet. Diese noch heute vielfach eingesetzten Codes wurden bereits Anfang der 1960er Jahre von [https://de.wikipedia.org/wiki/Irving_Stoy_Reed Irving Stoy Reed] und [https://de.wikipedia.org/wiki/Gustave_Solomon Gustave Solomon] erfunden.<br>
+
*an information block&nbsp; $\underline{u}$&nbsp; with&nbsp; $k$&nbsp; symbols
 +
 +
*to a corresponding code word&nbsp; $\underline{c}$&nbsp; with&nbsp; $n > k$&nbsp; symbols.  
  
Im Kapitel [[Kanalcodierung/Zielsetzung_der_Kanalcodierung#Blockschaltbild_und_Voraussetzungen|Zielsetzung der Kanalcodierung]] wurde der Informationsblock mit $\underline{u}= (u_1,$ ... , $u_k)$ und das Codewort mit $\underline{x}= (x_1,$ ... , $x_n)$ bezeichnet. Die Nomenklaturänderung gemäß obiger Grafik wurde vorgenommen, um Verwechslungen mit dem Argument von Polynomen auszuschließen und die Beschreibung der RS&ndash;Codes zu vereinfachen.
 
<br clear=all>
 
  
Alle im Abschnitt [[Kanalcodierung/Allgemeine_Beschreibung_linearer_Blockcodes#Lineare_Codes_und_zyklische_Codes|Lineare Codes und zyklische Codes]] genannten Eigenschaften linearer zyklischer Blockcodes gelten auch für einen Reed&ndash;Solomon&ndash;Code. Zusätzlich gilt:
+
[[File:P ID2515 KC T 2 3 S1 v2.png|right|frame|Linear&nbsp; $(n, \, k)$&nbsp; block code with new nomenclature|class=fit]]
*Konstruktion und Decodierung von Reed&ndash;Solomon&ndash;Codes basieren auf der Arithmetik eines Galoisfeldes ${\rm GF}(q)$, wobei wir uns hier auf binäre Erweiterungskörper mit $q=2^m$ Elementen beschränken:
+
These codes,&nbsp; still widely used today,&nbsp; were invented as early as the early 1960s
 +
*by&nbsp; [https://en.wikipedia.org/wiki/Irving_S._Reed $\text{Irving Stoy Reed}$]&nbsp;
  
 +
*and&nbsp; [https://en.wikipedia.org/wiki/Gustave_Solomon $\text{Gustave Solomon}$].<br>
 +
 +
 +
In the chapter&nbsp; [[Channel_Coding/Objective_of_Channel_Coding#Block_diagram_and_requirements|"Objective of Channel Coding"]]&nbsp;
 +
*the information block was denoted by&nbsp; $\underline{u}= (u_1,$ ... , $u_k)$&nbsp; and
 +
 +
*the code word by&nbsp; $\underline{x}= (x_1,$ ... , $x_n)$.&nbsp;
 +
 +
 +
The nomenclature change &nbsp; $\underline{x} \to \underline{c}$ &nbsp; $($see graphic$)$&nbsp; was made to eliminate confusion with the argument of polynomials and to simplify the description of Reed&ndash;Solomon codes.
 +
 +
All the properties of linear cyclic block codes mentioned in the section&nbsp; [[Channel_Coding/General_Description_of_Linear_Block_Codes#Linear_codes_and_cyclic_codes|"Linear codes and cyclic codes"]]&nbsp; also apply to the Reed&ndash;Solomon codes.&nbsp;  In addition:
 +
 +
*Construction and decoding of Reed&ndash;Solomon codes are based on the arithmetic of a Galois field&nbsp; ${\rm GF}(q)$,&nbsp; where we restrict ourselves here to binary extension fields with&nbsp; $q=2^m$&nbsp; elements;:
 
::<math>{\rm GF}(2^m) = \big \{\hspace{0.05cm}0\hspace{0.05cm},\hspace{0.1cm} \alpha^{0}  ,\hspace{0.05cm}\hspace{0.1cm}
 
::<math>{\rm GF}(2^m) = \big \{\hspace{0.05cm}0\hspace{0.05cm},\hspace{0.1cm} \alpha^{0}  ,\hspace{0.05cm}\hspace{0.1cm}
\alpha^{1}\hspace{0.05cm},\hspace{0.1cm} \alpha^{2}\hspace{0.05cm},\hspace{0.1cm}...\hspace{0.1cm},  \alpha^{q-2}\hspace{0.05cm} \big \}\hspace{0.05cm}. </math>
+
\alpha^{1}\hspace{0.05cm},\hspace{0.1cm} \alpha^{2}\hspace{0.05cm},\hspace{0.1cm}\text{...}\hspace{0.1cm},  \alpha^{q-2}\hspace{0.05cm} \big \}\hspace{0.05cm}. </math>
  
*Prinzipiell unterschiedlich zum ersten Kapitel ist, dass die Koeffizienten $u_0$, $u_1$, ... , $u_{k-1}$ nun nicht mehr einzelne Informationsbits ($0$ oder $1$) angeben, sondern ebenfalls Elemente aus ${\rm GF}(2^m)$ sind. Jedes der $n$ Symbole steht vielmehr für $m$ Bit.<br>
+
*Principally different from the first chapter is that the coefficients&nbsp; $u_0$,&nbsp; $u_1$, ... ,&nbsp; $u_{k-1}$&nbsp; now no longer specify individual bits of information&nbsp; $(0$&nbsp; or&nbsp; $1)$&nbsp; but they are also elements of&nbsp; ${\rm GF}(2^m)$.&nbsp; Each of the&nbsp; $n$&nbsp; symbols represents&nbsp; $m$&nbsp; bits.<br>
  
*Bei den Reed&ndash;Solomon&ndash;Codes ist der Parameter $n$ (Codelänge) gleich der Anzahl der Elemente des Galoisfeldes ohne das Nullwort: $n= q-1$. Wir verwenden hierzu folgende Nomenklatur:
+
*For Reed&ndash;Solomon codes,&nbsp; the parameter&nbsp; $n$&nbsp; ("code length")&nbsp; is always equal to the number of elements of the Galois field excluding the zero word: &nbsp; $n= q-1$. <br>We use  for this purpose the following nomenclature:
  
 
::<math>{\rm GF}(2^m) \hspace{-0.05cm}\setminus \hspace{-0.05cm} \{0\} = \big \{\hspace{0.05cm} \alpha^{0}  ,\hspace{0.05cm}\hspace{0.1cm}
 
::<math>{\rm GF}(2^m) \hspace{-0.05cm}\setminus \hspace{-0.05cm} \{0\} = \big \{\hspace{0.05cm} \alpha^{0}  ,\hspace{0.05cm}\hspace{0.1cm}
 
\alpha^{1}\hspace{0.05cm},\hspace{0.1cm} \alpha^{2}\hspace{0.05cm},\hspace{0.1cm}...\hspace{0.1cm},  \alpha^{n-1}\hspace{0.05cm} \big \}\hspace{0.05cm}. </math>
 
\alpha^{1}\hspace{0.05cm},\hspace{0.1cm} \alpha^{2}\hspace{0.05cm},\hspace{0.1cm}...\hspace{0.1cm},  \alpha^{n-1}\hspace{0.05cm} \big \}\hspace{0.05cm}. </math>
  
*Die $k$ Koeffizienten $u_i \in {\rm GF}(2^m)$ des Informationsblocks $\underline{u} \ ( 0 \le i < k)$ kann man formal auch durch ein Polynom $u(x)$ ausdrücken. Der Grad des Polynoms ist dabei $k-1$:
+
*The&nbsp; $k$&nbsp; coefficients&nbsp; $u_i \in {\rm GF}(2^m)$&nbsp; of the information block&nbsp; $\underline{u}$,&nbsp; where for the index&nbsp; $ 0 \le i < k$&nbsp; holds,&nbsp; can also be formally expressed by a polynomial&nbsp; $u(x)$.&nbsp; The degree of this polynomial is&nbsp; $k-1$:
  
::<math>u(x) = \sum_{i = 0}^{k-1} u_i \cdot x^{i}  = u_0 + u_1 \cdot x + u_2 \cdot x^2 + \hspace{0.1cm}... \hspace{0.1cm}+ u_{k-1} \cdot x^{k-1}  \hspace{0.05cm},\hspace{0.4cm} u_i \in {\rm GF}(2^m)
+
::<math>u(x) = \sum_{i = 0}^{k-1} u_i \cdot x^{i}  = u_0 + u_1 \cdot x + u_2 \cdot x^2 + \hspace{0.1cm}\text{...}\hspace{0.1cm}+ u_{k-1} \cdot x^{k-1}  \hspace{0.05cm},\hspace{0.4cm} u_i \in {\rm GF}(2^m)
 
\hspace{0.05cm}.</math>
 
\hspace{0.05cm}.</math>
  
*Die $n$ Symbole des zugehörigen Codewortes $\underline{c}= (c_0, c_1,$ ... , $c_{n-1})$ergeben sich mit diesem  Polynom $u(x)$ zu
+
*The&nbsp; $n$&nbsp; symbols of the associated code word&nbsp; $\underline{c}= (c_0, c_1,$ ... , $c_{n-1})$&nbsp; result with this polynomial&nbsp; $u(x)$&nbsp; to be
  
 
::<math>c_0 = u(\alpha^{0}) \hspace{0.05cm},\hspace{0.3cm} c_1 = u(\alpha^{1})\hspace{0.05cm},\hspace{0.1cm}...\hspace{0.1cm},\hspace{0.3cm} c_{n-1}= u(\alpha^{n-1}) \hspace{0.05cm}.</math>
 
::<math>c_0 = u(\alpha^{0}) \hspace{0.05cm},\hspace{0.3cm} c_1 = u(\alpha^{1})\hspace{0.05cm},\hspace{0.1cm}...\hspace{0.1cm},\hspace{0.3cm} c_{n-1}= u(\alpha^{n-1}) \hspace{0.05cm}.</math>
  
*Meist werden die Codesymbole $c_i \in {\rm GF}(2^m)$ vor der Übertragung wieder in Binärform &nbsp; &#8658; &nbsp; ${\rm GF}(2)$ gebracht, wobei dann jedes Symbol durch <i>m</i> Bit dargestellt wird.<br>
+
*Mostly the code symbols&nbsp; $c_i \in {\rm GF}(2^m)$&nbsp; are converted back to binary &nbsp; &#8658; &nbsp; ${\rm GF}(2)$&nbsp; before transmission,&nbsp; where each symbol is then represented by &nbsp;$m$&nbsp; bits.<br>
  
  
Fassen wir die bisherigen Aussagen kurz zusammen:
+
We briefly summarize these statements:
  
 
{{BlaueBox|TEXT=   
 
{{BlaueBox|TEXT=   
$\text{Definition:}$&nbsp; Ein $(n, k)$'''&ndash;Reed&ndash;Solomon&ndash;Code''' für das Galoisfeld ${\rm GF}(2^m)$ wird festgelegt durch
+
$\text{Definition:}$&nbsp; An &nbsp; $(n,\ k)\text{ Reed&ndash;Solomon code}$&nbsp; for the Galois field&nbsp; ${\rm GF}(2^m)$&nbsp; is defined by
*die $n= 2^{m-1}$ Elemente von ${\rm GF}(2^m) \hspace{-0.05cm}\setminus \hspace{-0.05cm} \{0\} =\{ \alpha^0, \alpha^1, \, \text{...} , \alpha^{n-1}\}$, wobei $\alpha$ ein [[Kanalcodierung/Erweiterungskörper#Bin.C3.A4re_Erweiterungsk.C3.B6rper_.E2.80.93_Primitive_Polynome|primitives Element]] von ${\rm GF}(2^m)$ bezeichnet,
+
*the&nbsp; $n= 2^{m-1}$&nbsp; elements of&nbsp; ${\rm GF}(2^m) \hspace{-0.05cm}\setminus \hspace{-0.05cm} \{0\} =\{ \alpha^0, \alpha^1, \, \text{...} \, , \alpha^{n-1}\}$,&nbsp; where&nbsp; $\alpha$&nbsp; denotes a&nbsp; [[Channel_Coding/Extension_Field#Binary_extension_fields_.E2.80.93_Primitive_polynomials|$\text{primitive element}$]]&nbsp; of&nbsp; ${\rm GF}(2^m)$,&nbsp;
 
 
*ein an den Informationsblockt $\underline{u}$ angepasstes [[Kanalcodierung/Erweiterungskörper#Verallgemeinerte_Definition_eines_Erweiterungsk.C3.B6rpers|Polynom]] vom Grad $k-1$ der Form
 
  
::<math>u(x) = \sum_{i = 0}^{k-1} u_i \cdot x^{i}  = u_0 + u_1 \cdot x + u_2 \cdot x^2 + \hspace{0.1cm}... \hspace{0.1cm}+ u_{k-1} \cdot x^{k-1}  \hspace{0.05cm},\hspace{0.4cm} u_i \in {\rm GF}(2^m)
+
* a&nbsp; [[Channel_Coding/Extension_Field#Generalized_definition_of_an_extension_field|$\text{polynomial}$]]&nbsp; of degree&nbsp; $k-1$&nbsp; matched to an information block&nbsp; $\underline{u}$:&nbsp;
 +
:::<math>u(x) = \sum_{i = 0}^{k-1} u_i \cdot x^{i}  = u_0 + u_1 \cdot x + u_2 \cdot x^2 + \hspace{0.1cm}... \hspace{0.1cm}+ u_{k-1} \cdot x^{k-1}  \hspace{0.05cm},\hspace{0.4cm} u_i \in {\rm GF}(2^m)
 
\hspace{0.05cm}.</math>
 
\hspace{0.05cm}.</math>
  
Damit lässt sich der $(n, k)$&ndash;Reed&ndash;Solomon&ndash;Code  beschreiben als
+
&rArr; &nbsp; Thus,&nbsp; the&nbsp; $(n,k)$&nbsp; Reed&ndash;Solomon code can be described as follows:
  
 
::<math>C_{\rm RS} = \Big \{ \underline {c} =  \big ( u(\alpha^{0}) \hspace{0.05cm},\hspace{0.1cm} u(\alpha^{1})\hspace{0.05cm},\hspace{0.1cm}...\hspace{0.1cm},  u(\alpha^{n-1})\hspace{0.1cm}  \big )
 
::<math>C_{\rm RS} = \Big \{ \underline {c} =  \big ( u(\alpha^{0}) \hspace{0.05cm},\hspace{0.1cm} u(\alpha^{1})\hspace{0.05cm},\hspace{0.1cm}...\hspace{0.1cm},  u(\alpha^{n-1})\hspace{0.1cm}  \big )
Line 56: Line 70:
 
\Big \}  \hspace{0.05cm}.</math>}}<br>
 
\Big \}  \hspace{0.05cm}.</math>}}<br>
  
Die bisherigen Angaben sollen nun an zwei einfachen Beispielen verdeutlicht werden.
+
The previous information will now be illustrated by two simple examples.
  
[[File:P ID2517 KC T 2 3 S1b v3.png|right|frame|GF(2<sup>2</sup>) in Exponenten–, Polynom– und Koeffizientenform |class=fit]]
 
 
{{GraueBox|TEXT=   
 
{{GraueBox|TEXT=   
$\text{Beispiel 1:}$&nbsp; Wir betrachten die folgenden Codeparametern:
+
$\text{Example 1:}$&nbsp; We consider the following code parameters:
 
+
[[File:KC_T_2_3_S1b_neu2.png|right|frame|$\rm GF(2^2)$&nbsp; in three different representations: <br>Exponential, polynomial and coefficient form|class=fit]]
::<math>k = 2 \hspace{0.05cm},\hspace{0.15cm}n = 3 \hspace{0.5cm} \Rightarrow  \hspace{0.5cm} \underline {u} = (u_0, u_1)\hspace{0.05cm},\hspace{0.15cm}  
+
::<math>k = 2 \hspace{0.05cm},\hspace{0.15cm}n = 3 \hspace{0.5cm} \Rightarrow  \hspace{0.5cm} \underline {u} = (u_0,\ u_1)\hspace{0.05cm},\hspace{0.15cm}  
\underline {c} = (c_0, c_1, c_2)\hspace{0.05cm},</math>
+
\underline {c} = (c_0,\ c_1,\ c_2)\hspace{0.05cm},</math>
 
 
 
::<math>q = n+1 = 4 \hspace{0.45cm} \Rightarrow  \hspace{0.5cm} {\rm GF} (q) = {\rm GF} (2^m)  
 
::<math>q = n+1 = 4 \hspace{0.45cm} \Rightarrow  \hspace{0.5cm} {\rm GF} (q) = {\rm GF} (2^m)  
 
\hspace{0.5cm} \Rightarrow  \hspace{0.5cm} m = 2\hspace{0.05cm}.</math>
 
\hspace{0.5cm} \Rightarrow  \hspace{0.5cm} m = 2\hspace{0.05cm}.</math>
  
Ausgehend von der Bedingungsgleichung $p(\alpha) = \alpha^2 + \alpha + 1 = 0&nbsp; &#8658; &nbsp; $\alpha^2 = \alpha + 1$ erhält man die Zuordnungen zwischen
+
Starting from the conditional equation&nbsp;
*der Exponentendarstellung,  
+
:$$p(\alpha) = \alpha^2 + \alpha + 1 = 0 \hspace{0.3cm} &rArr; \hspace{0.3cm} \alpha^2 = \alpha + 1,$$
*der Polynomdarstellung und
+
one obtains the assignments between
*der Koeffizientendarstellung
+
*the exponential representation,
 +
 +
*the polynomial representation and
  
 +
*the coefficient representation
  
von ${\rm GF}(2^2)$ gemäß obiger Tabelle. Daraus ist ersichtlich:
 
  
*Der Koeffizientenvektor wird durch das Polynom $u(x) = u_0 + u_1 \cdot x$  ausgedrückt. Der Polynomgrad ist $k- 1 = 1$.
+
of&nbsp; ${\rm GF}(2^2)$&nbsp; according to the above table.&nbsp; From this it can be seen:
*Für $u_0 = \alpha^1$ und $u_1 = \alpha^2$ erhält man beispielsweise das Polynom $u(x) = \alpha + \alpha^2 \cdot x$ und damit
 
  
::<math>c_0 = u (x = \alpha^0) = u (x = 1) =  \alpha + \alpha^2 \cdot 1 = \alpha + (\alpha + 1) =1 \hspace{0.05cm},</math>
+
# The coefficient vector is expressed by the polynomial &nbsp; $u(x) = u_0 + u_1 \cdot x$. &nbsp; The polynomial degree is&nbsp; $k- 1 = 1$.
::<math>c_1 =u (x = \alpha^1) =  \alpha + \alpha^2 \cdot \alpha = \alpha + \alpha^3 =  \alpha + \alpha^0  =  \alpha + 1 = \alpha^2 \hspace{0.05cm},</math>  
+
# For&nbsp; $u_0 = \alpha^1$&nbsp; and&nbsp; $u_1 = \alpha^2$&nbsp; we obtain e.g. the polynomial &nbsp; $u(x) = \alpha + \alpha^2 \cdot x$ &nbsp; and thus
::<math>c_2 =u (x = \alpha^2) =  \alpha + \alpha^2 \cdot \alpha^2 = \alpha + \alpha^4 =  \alpha + \alpha^1 = 0 \hspace{0.05cm}.</math>
+
:::<math>c_0 = u (x = \alpha^0) = u (x = 1) =  \alpha + \alpha^2 \cdot 1 = \alpha + (\alpha + 1) =1 \hspace{0.05cm},</math>
 +
:::<math>c_1 =u (x = \alpha^1) =  \alpha + \alpha^2 \cdot \alpha = \alpha + \alpha^3 =  \alpha + \alpha^0  =  \alpha + 1 = \alpha^2 \hspace{0.05cm},</math>  
 +
:::<math>c_2 =u (x = \alpha^2) =  \alpha + \alpha^2 \cdot \alpha^2 = \alpha + \alpha^4 =  \alpha + \alpha^1 = 0 \hspace{0.05cm}.</math>
  
Daraus ergeben sich folgende Zuordnungen auf Symbol&ndash; bzw. Bitebene:
+
&rArr; &nbsp; This results in the following assignments on symbol or bit level:
  
::<math>\underline {u} =(\alpha^1, \alpha^2)\hspace{0.57cm}\leftrightarrow\hspace{0.3cm}  
+
:$$\underline {u} =(\alpha^1, \ \alpha^2)\hspace{0.57cm}\leftrightarrow\hspace{0.3cm}  
\underline {c} = (1, \alpha^2, 0)\hspace{0.05cm},\hspace{1cm}\underline {u}_{\rm bin} =(1,0,1,1)\hspace{0.3cm}\leftrightarrow\hspace{0.3cm}  
+
\underline {c} = (1, \ \alpha^2, \ 0)\hspace{0.05cm},$$
\underline {c}_{\rm bin} = (0,1,1,1,0,0)\hspace{0.05cm}.</math>}}<br>
+
:$$\underline {u}_{\rm bin} =(1,\ 0,\ 1,\ 1)\hspace{0.3cm}\leftrightarrow\hspace{0.3cm}  
 +
\underline {c}_{\rm bin} = (0,\ 1,\ 1,\ 1,\ 0,\ 0)\hspace{0.05cm}.$$}}<br>
  
[[File:P ID2570 KC T 2 3 S1bb v3.png|right|frame||Codetabelle des RSC (3, 2, 2)<sub>4</sub>]]
 
 
{{GraueBox|TEXT=   
 
{{GraueBox|TEXT=   
$\text{Beispiel 2:}$&nbsp;   
+
$\text{Example 2:}$&nbsp;   
Rechts ist die Codetabelle des '''RSC (3, 2, 2)<sub>4</sub>''' genannten Reed&ndash;Solomon&ndash;Codes.
+
On the right you see the code table of a special Reed&ndash;Solomon code named&nbsp; $\text{RSC (3, 2, 2)}_4$.
*Die Bezeichnung bezieht sich auf die Parameter $n=3$, $k=2$, $d_{\rm min}=2$ und $q = 4$.  
+
[[File:P ID2570 KC T 2 3 S1bb v3.png|right|frame||Code table of the&nbsp; $\text{RSC (3, 2, 2)}_4$]]
*In den Spalten 1 bis 3 erkennt man den Zusammenhang $\underline {u} \ &#8594; \ u(x) \ &#8594; \ \underline {c}$.
+
*In den beiden letzten Spalten ist die Codiervorschrift $\underline {u}_{\rm bin} \ &#8596; \ \underline {c}_{\rm bin}$ angegeben.<br>
+
*The label refers to the parameters&nbsp; $n=3$,&nbsp; $k=2$,&nbsp; $d_{\rm min}=2$&nbsp; and&nbsp; $q = 4$.
 +
 +
*In columns 1 to 3, one can see the relationship &nbsp;$\underline {u} \ &#8594; \ u(x) \ &#8594; \ \underline {c}$.
 +
 
 +
*In the last two columns, the coding rule &nbsp;$\underline {u}_{\rm bin} \ &#8596; \ \underline {c}_{\rm bin}$ is given.<br>
  
  
Zur Verdeutlichung nochmals der Eintrag für $(\alpha^0, \, \alpha^2)$:
+
&rArr; &nbsp; For clarification the entry for&nbsp; $(\alpha^0, \ \alpha^2)$:
  
 
::<math>u(x) = u_0 + u_1 \cdot x = \alpha^0 +  \alpha^2 \cdot x. </math>
 
::<math>u(x) = u_0 + u_1 \cdot x = \alpha^0 +  \alpha^2 \cdot x. </math>
  
Daraus ergeben sich folgende Codesymbole:
+
This results in the following code symbols&nbsp; (see red mark):
  
 
::<math>c_0 = u (x = \alpha^0) =  1 + \alpha^2 \cdot 1 = 1 + (1+\alpha ) =\alpha \hspace{0.05cm},</math>
 
::<math>c_0 = u (x = \alpha^0) =  1 + \alpha^2 \cdot 1 = 1 + (1+\alpha ) =\alpha \hspace{0.05cm},</math>
Line 108: Line 127:
 
::<math>c_2 =u (x = \alpha^2) =  1 + \alpha^2 \cdot \alpha^2 = 1 + \alpha =  \alpha^2  \hspace{0.05cm}.</math>
 
::<math>c_2 =u (x = \alpha^2) =  1 + \alpha^2 \cdot \alpha^2 = 1 + \alpha =  \alpha^2  \hspace{0.05cm}.</math>
  
<i>Hinweise:</i>  
+
<u>Notes:</u>  
*Aus der Elementenmenge $\{0, \alpha^0 = 1, \alpha^1 = \alpha, \alpha^2\}$ sollte nicht geschlossen werden, dass für diesen Code die [[Kanalcodierung/Erweiterungskörper#Bin.C3.A4re_Erweiterungsk.C3.B6rper_.E2.80.93_Primitive_Polynome|3D&ndash;Darstellung]] mit den Achsen $\alpha^0 = 1$, $\alpha^1 = \alpha$ und $\alpha^2$ zutrifft.  
+
*From the element set&nbsp; $\{0, \ \alpha^0 = 1, \ \alpha^1 = \alpha, \ \alpha^2\}$&nbsp; it should not be concluded that for this code the three-dimensional representation with axes &nbsp; $\alpha^0 = 1$, &nbsp; $\alpha^1 = \alpha$, &nbsp; $\alpha^2$ &nbsp; applies.&nbsp; See section &nbsp; [[Channel_Coding/Extension_Field#Binary_extension_fields_.E2.80.93_Primitive_polynomials|"Primitive Polynomials"]]&nbsp;&ndash; Example 5.
*Aus der Koeffizientendarstellung geht vielmehr eindeutig hervor, dass ${\rm GF} (2^m)$ ein zweidimensionaler Code ist, wobei die Achsen der [[Kanalcodierung/Erweiterungskörper#Interpretation_des_neuen_Elementes_.7FUNIQ-MathJax56-QINU.7F| 2D&ndash;Darstellung]] mit $\alpha^0 = 1$ und $\alpha^1 = \alpha$ zu beschriften sind.}}<br>
+
 
 +
*On the contrary,&nbsp; from the coefficient representation in&nbsp; $\text{Example 1}$&nbsp; it is clear that &nbsp; ${\rm GF} (2^2)$&nbsp; is two-dimensional,&nbsp; where the axes of the two dimensional representation are to be labeled&nbsp; $\alpha^0 = 1$&nbsp; and&nbsp; $\alpha^1 = \alpha$.
 +
}}<br>
  
== Generatormatrix  der Reed–Solomon–Codes ==
+
== Generator matrix of Reed-Solomon codes ==
 
<br>
 
<br>
Da es sich beim Reed&ndash;Solomon&ndash;Code um einen linearen Blockcode handelt, ist der Zusammenhang zwischen Informationswort $\underline {u}$ und Codewort $\underline {c}$ durch die [[Kanalcodierung/Allgemeine_Beschreibung_linearer_Blockcodes#Codefestlegung_durch_die_Generatormatrix| Generatormatrix]] $\boldsymbol{\rm G}$ gegeben:
+
Since the Reed&ndash;Solomon code is a linear block code,&nbsp; the relationship between the information word&nbsp; $\underline {u}$&nbsp; and the  code word&nbsp; $\underline {c}$&nbsp; is given by the&nbsp; [[Channel_Coding/General_Description_of_Linear_Block_Codes#Code_definition_by_the_generator_matrix|$\text{generator matrix}$]]&nbsp; $\boldsymbol{\rm G}$:
  
:<math>\underline {c} = \underline {u} \cdot { \boldsymbol{\rm G}}
+
::<math>\underline {c} = \underline {u} \cdot { \boldsymbol{\rm G}}
 
\hspace{0.05cm}.</math>
 
\hspace{0.05cm}.</math>
  
Wie bei jedem linearen $(n, k)$&ndash;Blockcode besteht die Generatormatrix aus $k$ Zeilen und $n$ Spalten. Im Gegensatz zum Kapitel [[Kanalcodierung/Allgemeine_Beschreibung_linearer_Blockcodes#Lineare_Codes_und_zyklische_Codes|Allgemeine Beschreibung linearer Blockcodes]] sind nun aber die Elemente der Generatormatrix nicht mehr binär ($0$ oder $1$), sondern entstammen dem Galoisfeld ${\rm GF}(2^m) \hspace{-0.05cm}\setminus \hspace{-0.05cm} \{0\} $.<br>
+
As with any linear&nbsp; $(n,\ k)$&nbsp; block code,&nbsp; the generator matrix consists of&nbsp;  
 +
*$k$&nbsp; rows and&nbsp;
 +
*$n$&nbsp; columns.  
 +
 
 +
 
 +
In contrast to the chapter&nbsp; [[Channel_Coding/General_Description_of_Linear_Block_Codes#Linear_codes_and_cyclic_codes|"General Description of Linear Block Codes"]]&nbsp;
 +
*now the elements of the generator matrix are no longer binary&nbsp; $(0$&nbsp; or&nbsp; $1)$,  
 +
 
 +
*but come from the Galois field&nbsp; ${\rm GF}(2^m) \hspace{-0.05cm}\setminus \hspace{-0.05cm} \{0\} $.<br>
 +
 
  
 
{{GraueBox|TEXT=   
 
{{GraueBox|TEXT=   
$\text{Beispiel 3:}$&nbsp; Wir betrachten wie im Beispiel 2 auf der vorherigen Seite wieder den '''RSC (3, 2, 2)<sub>4</sub>''', dessen Generatormatrix folgende Form hat:
+
$\text{Example 3:}$&nbsp; We consider as in&nbsp; [[Channel_Coding/Definition_and_Properties_of_Reed-Solomon_Codes#Coding_principle_and_code_parameters|$\text{Example 2}$]]&nbsp; (see previous section)&nbsp; the&nbsp; $\text{RSC (3, 2, 2)}_4$&nbsp; whose generator matrix has the following form:
  
:<math> { \boldsymbol{\rm G} } =  
+
::<math> { \boldsymbol{\rm G} } =  
 
\begin{pmatrix}
 
\begin{pmatrix}
 
g_{00} & g_{01} & g_{02}\\
 
g_{00} & g_{01} & g_{02}\\
Line 132: Line 162:
 
\alpha^{1}\hspace{0.05cm},\hspace{0.1cm} \alpha^{2} \hspace{0.05cm}\big \}\hspace{0.05cm}. </math>
 
\alpha^{1}\hspace{0.05cm},\hspace{0.1cm} \alpha^{2} \hspace{0.05cm}\big \}\hspace{0.05cm}. </math>
  
Daneben gilt:
+
Beside this:
*Die erste Zeile von $\boldsymbol{\rm G}$ gibt das Codewort für das Informationswort $\underline {u}_1 = (1, 0)$ an bzw. für die Polynomfunktion $u_1(x) = 1$. Damit erhält man die Matrixelemente der ersten Zeile zu
+
*The first row of&nbsp; $\boldsymbol{\rm G}$&nbsp; gives the code word for the information word&nbsp; $\underline {u}_1 = (1,\ 0)$&nbsp; respectively for the polynomial function&nbsp; $u_1(x) = 1$.&nbsp; Thus one receives the matrix elements of the first row
 
 
::<math>g_{00} = u_{1}(\alpha^{0}) = 1\hspace{0.05cm},\hspace{0.3cm}
 
g_{01} = u_{1}(\alpha^{1}) = 1\hspace{0.05cm},\hspace{0.3cm}
 
g_{02} = u_{1}(\alpha^{2}) = 1\hspace{0.05cm}.</math>
 
  
*Die zweite Zeile ist gleich dem Codewort für das Informationswort $\underline {u}_2 = (0, 1)$ &nbsp; &#8658; &nbsp; $u_2(x) = x$. Die Matrixelemente der zweiten Zeile lauten somit:
+
:$$g_{00} = u_{1}(\alpha^{0}) = 1\hspace{0.05cm},$$
 +
:$$g_{01} = u_{1}(\alpha^{1}) = 1\hspace{0.05cm},$$
 +
:$$g_{02} = u_{1}(\alpha^{2}) = 1\hspace{0.05cm}.$$
  
::<math>g_{10} = u_{2}(\alpha^{0}) = \alpha^{0} = 1\hspace{0.05cm},\hspace{0.3cm}
+
*The second row is equal to the code word for the information word $\underline {u}_2 = (0,\ 1)$ &nbsp; &#8658; &nbsp; $u_2(x) = x$.&nbsp; Thus,&nbsp; the matrix elements of the second row are:
g_{11} = u_{2}(\alpha^{1}) =  \alpha \hspace{0.05cm},\hspace{0.3cm}
 
g_{12} = u_{2}(\alpha^{2}) = \alpha^{2}\hspace{0.05cm}.</math>
 
  
::<math>\Rightarrow\hspace{0.3cm} { \boldsymbol{\rm G} } =  
+
:$$g_{10} = u_{2}(\alpha^{0}) = \alpha^{0} = 1\hspace{0.05cm},$$
 +
:$$g_{11} = u_{2}(\alpha^{1}) =  \alpha \hspace{0.05cm},$$
 +
:$$g_{12} = u_{2}(\alpha^{2}) = \alpha^{2}\hspace{0.05cm}.$$
 +
* So the complete generator matrix is:
 +
:$$ { \boldsymbol{\rm G} } =  
 
\begin{pmatrix}
 
\begin{pmatrix}
 
1 & 1 & 1\\
 
1 & 1 & 1\\
 
1 & \alpha & \alpha^2
 
1 & \alpha & \alpha^2
\end{pmatrix}\hspace{0.05cm}.</math>
+
\end{pmatrix}\hspace{0.05cm}.$$
 
+
[[File:P ID2519 KC T 2 3 S2a v1.png|right|frame|Code table of the&nbsp; $\text{RSC (3, 2, 2)}_4$&nbsp; at symbol level|class=fit]]
Für das Informationswort $\underline {u}= (u_0, u_1)$ mit den Symbolen $u_0, u_1 &#8712; \{0, \alpha^0, \alpha^1 = \alpha, \alpha^2\}$ erhält man unter Berücksichtigung der beiden Gleichungen $\alpha^2 = \alpha + 1$ sowie $\alpha^3 = \alpha^0 = 1$ wiederum die Codetabelle des RSC (3, 2, 2)<sub>4</sub> auf Symbolebene.<br>
 
  
[[File:P ID2519 KC T 2 3 S2a v1.png|center|frame|Codetabelle des RSC (3, 2, 2)<sub>4</sub> auf Symbolebene|class=fit]]
+
*For the information word&nbsp; $\underline {u}= (u_0, \ u_1)$&nbsp; with symbols&nbsp;
 +
:$$u_0, \ u_1 &#8712; \{0, \ \alpha^0 = 1, \ \alpha^1 = \alpha, \ \alpha^2\}$$
 +
:one obtains,&nbsp; considering the two equations &nbsp; $\alpha^2 = \alpha + 1$ &nbsp; and &nbsp; $\alpha^3 = \alpha^0 = 1$ &nbsp; again the code table of the&nbsp; $\text{RSC (3, 2, 2)}_4$&nbsp; at symbol level.<br>
  
Man erhält natürlich mit der Generatormatrix genau die gleiche Codetabelle $\underline {u} &nbsp; &#8596; &nbsp; \underline {c}$ wie nach der Berechnung über die Funktion $u(x)$. Die entsprechende Codetabelle auf Bitebene (siehe Beispiel 2 auf der vorherigen Seite) ergibt sich wieder, wenn man die Elemente nicht in Exponentendarstellung angibt, sondern in Koeffizientenform:
+
#Of course,&nbsp; with the same generator matrix you get exactly the same code table&nbsp; $\underline {u} &nbsp; &#8596; &nbsp; \underline {c}$&nbsp; as after the calculation via the function&nbsp; $u(x)$.  
 +
#The corresponding code table on bit level&nbsp; $($see&nbsp; $\text{Example 2}$&nbsp; in the previous section$)$&nbsp; results again,&nbsp; if the elements are not given in exponent representation,&nbsp; but in coefficient form:
  
::<math>(0, \hspace{0.1cm}\alpha^{0}, \hspace{0.1cm}\alpha^{1}, \hspace{0.1cm}\alpha^{2}) \hspace{0.3cm}\Leftrightarrow\hspace{0.3cm}(00, \hspace{0.1cm}01, \hspace{0.1cm}10, \hspace{0.1cm}11)  
+
:::<math>(0, \hspace{0.1cm}\alpha^{0}, \hspace{0.1cm}\alpha^{1}, \hspace{0.1cm}\alpha^{2}) \hspace{0.3cm}\Leftrightarrow\hspace{0.3cm}(00, \hspace{0.1cm}01, \hspace{0.1cm}10, \hspace{0.1cm}11)  
 
\hspace{0.05cm}. </math>}}<br>
 
\hspace{0.05cm}. </math>}}<br>
  
== Generatormatrix  und Prüfmatrix ==
+
== Generator matrix and parity-check matrix ==
 
<br>
 
<br>
Wir verallgemeinern nun das Ergebnis der letzten Seite für einen Reed&ndash;Solomon&ndash;Code mit
+
We now generalize the result of the last section for a Reed&ndash;Solomon code with
*der Dimension $k$ (Symbolanzahl pro Informationsblock),<br>
+
*dimension&nbsp; $k$&nbsp; $($number of symbols per information block$)$,<br>
 +
 
 +
*code word length&nbsp; $n$&nbsp; $($number of symbols per code word$)$.<br>
 +
 
  
*der Codewortlänge $n$ (Symbolanzahl pro Codewort).<br><br>
+
{{BlaueBox|TEXT=
 +
&rArr; &nbsp; The&nbsp; [[Channel_Coding/General_Description_of_Linear_Block_Codes#Code_definition_by_the_generator_matrix|$\text{generator matrix}$]]&nbsp; $\boldsymbol{\rm G}$&nbsp; $(k$ rows,&nbsp; $n$ columns$)$&nbsp; and the&nbsp;  [[Channel_Coding/General_Description_of_Linear_Block_Codes#Code_definition_by_the_parity-check_matrix|$\text{parity-check matrix}$]]&nbsp; $\boldsymbol{\rm H}$&nbsp; $(n-k$ rows,&nbsp; $n$&nbsp; columns$)$&nbsp; must jointly satisfy the following equation:
  
Die [[Kanalcodierung/Allgemeine_Beschreibung_linearer_Blockcodes#Codefestlegung_durch_die_Generatormatrix| Generatormatrix]] $\boldsymbol{\rm G}$ (mit $k$ Zeilen und $n$ Spalten) und die [[Kanalcodierung/Allgemeine_Beschreibung_linearer_Blockcodes#Codefestlegung_durch_die_Pr.C3.BCfmatrix| Prüfmatrix]] $\boldsymbol{\rm H}$ ($n-k$ Zeilen, $n$ Spalten) müssen gemeinsam folgende Gleichung erfüllen:
+
:$${\boldsymbol{\rm G} } \cdot { \boldsymbol{\rm H } }^{\rm T}= { \boldsymbol{\rm 0} }\hspace{0.05cm}.$$
  
::<math>{ \boldsymbol{\rm G}} \cdot { \boldsymbol{\rm H }}^{\rm T}= { \boldsymbol{\rm 0}}\hspace{0.05cm}.</math>
+
Here,&nbsp; "$\boldsymbol{\rm 0}$"&nbsp; denotes a zero matrix&nbsp; $($all elements equal&nbsp; $0)$ &nbsp; with&nbsp; $k$&nbsp; rows and&nbsp; $n-k$&nbsp; columns.<br>}}
  
Hierbei bezeichnet $\boldsymbol{\rm 0}$ eine Nullmatrix (alle Elemente gleich $0$) mit $k$ Zeilen und $n-k$ Spalten.<br>
 
  
 
{{GraueBox|TEXT=   
 
{{GraueBox|TEXT=   
$\text{Beispiel 4:}$&nbsp; Wir betrachten den '''RSC (7, 3, 5)<sub>8</sub>''' &nbsp; &#8658; &nbsp; Codeparameter $n= 7$, $k= 3$, basierend auf dem Galoisfeld $\rm GF(2^3 = 8)$ mit der Nebenbedingung $\alpha^3 =\alpha + 1$. Beachten Sie hinsichtlich der Codebezeichnung:
+
$\text{Example 4:}$&nbsp; We consider the &nbsp; $\text{RSC (7, 3, 5)}_8$:
*Der dritte Parameter der für Blockcodes üblichen Nomenklatur nennt die freie Distanz $d_{\rm min}= 5$.<br>
+
*code parameters&nbsp; $n= 7$,&nbsp; $k= 3$,
 +
 +
*based on the Galois field&nbsp; $\rm GF(2^3 = 8)$&nbsp;
 +
 +
*with the constraint&nbsp; $\alpha^3 =\alpha + 1$.  
 +
 
  
*Anders als bei den im Kapitel [[Kanalcodierung/Beispiele_binärer_Blockcodes|Beispiele binärer Blockcodes]] behandelten binären Codes (Single Parity–check Code, Repetition Code, Hamming Code) wird bei den Reed&ndash;Solomon&ndash;Codes noch der Hinweis $q$ zum Galoisfeld hinzugefügt (hier: $q = 8$).<br><br>
+
Note with respect to the code name:
 +
#The third parameter of the nomenclature commonly used for block codes names the free distance&nbsp; $d_{\rm min}= 5$.<br>
 +
#Unlike the binary codes discussed in the chapter&nbsp; [[Channel_Coding/Examples_of_Binary_Block_Codes|"Examples of binary block codes"]]&nbsp; $($single parity-check code, repetition code, Hamming code$)$,&nbsp; the Reed&ndash;Solomon codes still have the hint&nbsp; $q$&nbsp; added to the Galois field&nbsp; $($here: &nbsp; $q = 8)$.<br><br>
  
Alle Elemente der Generatormatrix und der Prüfmatrix
+
All elements of the generator matrix and the parity-check matrix,
  
:<math>{ \boldsymbol{\rm G} } =  
+
::<math>{ \boldsymbol{\rm G} } =  
 
\begin{pmatrix}
 
\begin{pmatrix}
 
1 & 1 & 1 & 1 & 1 & 1 & 1\\
 
1 & 1 & 1 & 1 & 1 & 1 & 1\\
Line 193: Line 235:
 
1 & \alpha^3 & \alpha^6 & \alpha^2 & \alpha^{5} & \alpha^{1} & \alpha^{4}\\
 
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}
 
1 & \alpha^4 & \alpha^1 & \alpha^{5} & \alpha^{2} & \alpha^{6} & \alpha^{3}
\end{pmatrix} </math>
+
\end{pmatrix}\hspace{0.05cm}, </math>
  
entstammen dem Galoisfeld ${\rm GF}(2^3) \hspace{-0.01cm}\setminus \hspace{-0.01cm} \{0\} = \big \{\hspace{0.05cm} \alpha^{0}  \hspace{0.05cm},\hspace{0.1cm}\alpha^{1}\hspace{0.05cm},\hspace{0.1cm} \alpha^{2} \hspace{0.05cm} \alpha^{3}  \hspace{0.05cm},\hspace{0.1cm}\alpha^{4}\hspace{0.05cm},\hspace{0.1cm} \alpha^{5} \hspace{0.05cm},\hspace{0.1cm} \alpha^{6} \hspace{0.05cm}\big \}$. Für das Matrixprodukt gilt:
+
originate from the Galois field&nbsp; ${\rm GF}(2^3) \hspace{-0.01cm}\setminus \hspace{-0.01cm} \{0\} = \big \{\hspace{0.05cm} \alpha^{0}  \hspace{0.05cm},\hspace{0.1cm}\alpha^{1}\hspace{0.05cm},\hspace{0.1cm} \alpha^{2} \hspace{0.05cm},\hspace{0.1cm} \alpha^{3}  \hspace{0.05cm},\hspace{0.1cm}\alpha^{4}\hspace{0.05cm},\hspace{0.1cm} \alpha^{5} \hspace{0.05cm},\hspace{0.1cm} \alpha^{6} \hspace{0.05cm}\big \}$. For the matrix product holds:
  
 
::<math>{ \boldsymbol{\rm G} } \cdot { \boldsymbol{\rm H } }^{\rm T}= \begin{pmatrix}
 
::<math>{ \boldsymbol{\rm G} } \cdot { \boldsymbol{\rm H } }^{\rm T}= \begin{pmatrix}
Line 218: Line 260:
 
\hspace{0.05cm}.</math>
 
\hspace{0.05cm}.</math>
  
Dies soll hier nur für zwei Elemente nachgewiesen werden:
+
This will be demonstrated here for two elements only:
*Erste Zeile, erste Spalte:
+
*First row,&nbsp; first column:
  
::<math>1 \hspace{0.1cm}  \cdot  \hspace{0.1cm} \big [1 + \alpha^1 + \alpha^2 + \alpha^3 + \alpha^4 + \alpha^5 + \alpha^6 \big ] =  1 + \alpha + \alpha^2 + (\alpha + 1) + (\alpha^2 + \alpha)+ (\alpha^2 + \alpha +1)+ (\alpha^2 + 1) = 0 \hspace{0.05cm}, </math>
+
::<math>1 \hspace{0.1cm}  \cdot  \hspace{0.1cm} \big [1 + \alpha^1 + \alpha^2 + \alpha^3 + \alpha^4 + \alpha^5 + \alpha^6 \big ] =  1 + \alpha + \alpha^2 + (\alpha + 1) + (\alpha^2 + \alpha)+ (\alpha^2 + \alpha +1)+ (\alpha^2 + 1) = 0 \hspace{0.05cm}; </math>
  
*Letzte Zeile, letzte Spalte:
+
*Last row,&nbsp; last column:
  
 
::<math>1 \hspace{0.1cm}  \cdot  \hspace{0.1cm} 1 + \alpha^2 \cdot \alpha^4 + \alpha^4 \cdot \alpha^1
 
::<math>1 \hspace{0.1cm}  \cdot  \hspace{0.1cm} 1 + \alpha^2 \cdot \alpha^4 + \alpha^4 \cdot \alpha^1
 
+ \alpha^6 \cdot \alpha^5+ \alpha^1 \cdot \alpha^2+ \alpha^3 \cdot \alpha^6+ \alpha^5 \cdot \alpha^3= 1 + \alpha^6 + \alpha^5 + \alpha^{11} + \alpha^{3}+ \alpha^{9}+ \alpha^{8} =</math>
 
+ \alpha^6 \cdot \alpha^5+ \alpha^1 \cdot \alpha^2+ \alpha^3 \cdot \alpha^6+ \alpha^5 \cdot \alpha^3= 1 + \alpha^6 + \alpha^5 + \alpha^{11} + \alpha^{3}+ \alpha^{9}+ \alpha^{8} =</math>
::<math> \hspace{0.5cm}  =  \hspace{0.15cm} 1 + \alpha^6 + \alpha^5 + \alpha^{4} + \alpha^{3}+ \alpha^{2}+ \alpha^{1} =0 \hspace{0.05cm}.</math>}}<br>
+
::<math> \hspace{1.5cm}  =  \hspace{0.15cm} 1 + \alpha^6 + \alpha^5 + \alpha^{4} + \alpha^{3}+ \alpha^{2}+ \alpha^{1} =0 \hspace{0.05cm}.</math>}}<br>
  
== Singleton–Schranke und minimale Distanz ==
+
== Singleton bound and minimum distance ==
 
<br>
 
<br>
Eine wichtige Kenngröße eines jeden Blockcodes ist die [http://en.lntwww.de/Kanalcodierung/Zielsetzung_der_Kanalcodierung#Einige_wichtige_Definitionen_zur_Blockcodierung minimale  Distanz] zwischen zwei beliebigen Codeworten <u><i>c</i></u><sub><i>i</i></sub> und <u><i>c</i></u><sub><i>j</i></sub>. Die Reed&ndash;Solomon&ndash;Codes gehören zur Klasse der <i>linearen</i> und <i>zyklischen</i> Codes. Bei diesen kann man vom Nullwort <u><i>c</i></u><sub>0</sub> = (0 0 ... 0) als Bezugsgröße ausgehen. Aus der Anzahl der Nullen in den anderen Codeworten <u><i>c</i></u><sub><i>j</i></sub> &ne; <u><i>c</i></u><sub>0</sub> lässt sich das [http://en.lntwww.de/Kanalcodierung/Schranken_f%C3%BCr_die_Blockfehlerwahrscheinlichkeit#Distanzspektrum_eines_linearen_Codes_.282.29 Distanzspektrum] {<i>W<sub>i</sub></i>} angeben.<br>
+
An important parameter of any block code is the&nbsp; [[Channel_Coding/Objective_of_Channel_Coding#Important_definitions_for_block_coding|$\text{minimum distance}$]]&nbsp; between any two code words&nbsp; $\underline {c}_i$&nbsp; and&nbsp; $\underline {c}_j$.  
 +
*The Reed&ndash;Solomon&ndash;codes belong to the class of&nbsp; &raquo;'''linear&nbsp; and&nbsp; cyclic codes'''&laquo;.&nbsp; For these,&nbsp; one can start from the zero word&nbsp; $\underline {c}_0 = (0, 0, \hspace{0.05cm} \text{...} \hspace{0.05cm}, 0)$&nbsp; as the reference.
 +
 +
*From the number of zeros in the other code words&nbsp; $\underline {c}_j &ne; \underline {c}_0$&nbsp; the&nbsp; [[Channel_Coding/Bounds_for_Block_Error_Probability#Distance_spectrum_of_a_linear_code|$\text{distance spectrum}$]]&nbsp; $\{ \hspace{0.05cm}W_j\hspace{0.05cm}\}$&nbsp; can be specified.<br>
  
{{Beispiel}}''':''' Die Grafik zeigt die Bestimmung des Distanzspektrums für den RSC (3, 2, 2)<sub>4</sub>. Gegenüber den bisherigen Grafiken sind die Symbole mit 0, 1, 2, 3 anstelle von 0, <i>&alpha;</i><sup>0</sup>,  <i>&alpha;</i><sup>1</sup>, <i>&alpha;</i><sup>2</sup> bezeichnet. Die Distanz <i>d</i>  zwischen <u><i>c</i></u><sub><i>j</i></Sub> und dem Nullwort <u><i>c</i></u><sub>0</sub> ist identisch dem Hamming&ndash;Gewicht <i>w</i><sub>H</sub> (<u><i>c</i></u><sub><i>j</i></sub>).<br>
 
  
[[File:P ID2520 KC T 2 3 S3 v1.png|Zur Herleitung des Distanzspektrums für den RSC (3, 2, 2)<sub>4</sub>|class=fit]]<br>
+
{{GraueBox|TEXT= 
 +
$\text{Example 5:}$&nbsp; The table illustrates the determination of the distance spectrum for the&nbsp; $\text{RSC (3, 2, 2)}_4$.
 +
*Compared to the previous graphs,&nbsp; the symbol set is simplified by &nbsp; $\{0,\ 1,\ 2,\ 3\}$ &nbsp; instead of &nbsp; $\{0,\ \alpha^0,\ \alpha^1,\ \alpha^2\}$.
 +
 +
*The distance&nbsp; $d$&nbsp; between&nbsp; $\underline {c}_j$&nbsp; and the null word&nbsp; $\underline {c}_0$&nbsp; is identical to the&nbsp; [[Channel_Coding/Objective_of_Channel_Coding#Important_definitions_for_block_coding|$\text{Hamming weight}$]]&nbsp; $w_{\rm H}(\underline {c}_j)$.<br>
  
Neun der Codeworte unterscheiden sich vom Nullwort in zwei Symbolen und sechs Codeworte in drei Symbolen: <i>W</i><sub>2</Sub> = 9, <i>W</i><sub>3</Sub> = 6. Es gibt kein einziges Codewort mit nur einer Null. Das heißt: Die minimale Distanz beträgt hier <i>d</i><sub>min</sub> = 2. <br>
+
[[File:EN_KC_T_2_3_S3.png|right|frame|To derive the distance spectrum for the&nbsp; $\text{RSC (3, 2, 2)}_4$|class=fit]]
 +
<br>
 +
&rArr; &nbsp; From the upper table can be read among others:
 +
#Nine code words differ from the zero word in two symbols and six code words in three symbols: &nbsp; $W_2 = 9$,&nbsp; $W_3 = 6$.  
 +
#There is not a single code word with only one zero.&nbsp; That means: &nbsp; The minimum distance here is&nbsp; $d_{\rm min} = 2$. <br>
  
Aus der zweiten Tabelle erkennt man, dass auch für die Binärdarstellung <i>d</i><sub>min</sub> = 2 gilt.{{end}}<br>
 
  
Dieses empirische Ergebnis soll nun ohne Beweis verallgemeinert werden:
+
&rArr; &nbsp; From the table below one can see that also for the binary representation holds&nbsp; $d_{\rm min} = 2$.}}<br>
*Die <i>minimale Distanz</i> eines jeden (<i>n</i>, <i>k</i>)&ndash;Reed&ndash;Solomon&ndash;Codes beträgt <b><i>d</i><sub>min</sub> = <i>n</i> &ndash; <i>k</i> + 1</b>. Damit lassen sich <i>e</i> = <i>d</i><sub>min</sub> &ndash; 1 = <i>n</i> &ndash; <i>k</i> Symbolfehler erkennen.<br>
 
  
*Bei <i>fehlerkorrigierenden Codes</i> wählt man meist ein <i>d</i><sub>min</sub> ungeradzahlig &#8658;&nbsp; <i>n</i> &ndash; <i>k</i> geradzahlig. Bei RS&ndash;Codes können dann bis zu <i>t</i> = (<i>n</i> &ndash; <i>k</i>)/2 Symbolfehler korrigiert werden.<br>
+
This empirical result will now be generalized:
  
*Die <span style="font-weight: bold;">Singleton&ndash;Schranke</span> besagt, dass für alle linearen Codes <i>d</i><sub>min</sub> &#8804; <i>n</i> &ndash; <i>k</i> + 1 gilt. RS&ndash;Codes erreichen die Schranke mit Gleichheit; sie sind <b>MDS&ndash;Codes</b> (<i>Maximum Distance Separable</i>).
+
{{BlaueBox|TEXT=
 
+
$\text{Without proof:}$&nbsp;
*Das [http://en.lntwww.de/Kanalcodierung/Schranken_f%C3%BCr_die_Blockfehlerwahrscheinlichkeit#Distanzspektrum_eines_linearen_Codes_.282.29 Distanzspektrum] setzt sich zusammen aus <i>W</i><sub>0</sub> = 1 sowie weiteren Gewichtsfaktoren <i>W<sub>i</sub></i> mit <i>d</i> &#8804; <i>i</i> &#8804; <i>n</i>, wobei in der folgenden Gleichung <i>d</i><sub>min</sub> mit <i>d</i> abgekürzt ist:
+
#The&nbsp; "minimum distance"&nbsp; of each&nbsp; $(n,\ k)$&nbsp; Reed&ndash;Solomon code is&nbsp; $d_{\rm min} =n-k+1$ &nbsp; &rArr; &nbsp; symbol errors can be detected &nbsp; &rArr; &nbsp; $e = d_{\rm min} -1 =n-k$&nbsp;.<br>
 +
#For&nbsp; "error correcting codes"&nbsp; one usually chooses&nbsp; $d_{\rm min} $&nbsp; odd &nbsp; &#8658; &nbsp; $n-k$&nbsp; even.&nbsp; 
 +
#For Reed&ndash;Solomon codes then up to &nbsp; $t =(n-k)/2$ &nbsp; symbol errors can be corrected.<br>
 +
#The&nbsp; [https://en.wikipedia.org/wiki/Singleton_bound $\text{Singleton bound}$]&nbsp; says that&nbsp; $d_{\rm min} \le n-k+1$&nbsp; holds for all linear codes.  
 +
#Reed&ndash;Solomon codes reach this bound with equality;&nbsp; they are so-called&nbsp; [https://en.wikipedia.org/wiki/Singleton_bound#MDS_codes $\text{maximum distance separable codes}$]&nbsp; (short: "MDS codes").
 +
#The&nbsp; [[Channel_Coding/Bounds_for_Block_Error_Probability#Distance_spectrum_of_a_linear_code|$\text{distance spectrum}$]]&nbsp; is composed of&nbsp; $W_0 = 1$&nbsp; and other weight factors&nbsp; $W_i$&nbsp; with&nbsp; $d &#8804; i &#8804; n$,&nbsp; where in the following equation&nbsp; $d_{\rm min}$&nbsp; is abbreviated as&nbsp; $d$:
  
::<math>W_i =  {n \choose i} \cdot \sum_{j = 0}^{i-d}\hspace{0.15cm}(-1)^j \cdot {i \choose j} \cdot \big [\hspace{0.03cm}q^{i\hspace{0.03cm}-\hspace{0.03cm}j\hspace{0.03cm}-\hspace{0.03cm}d\hspace{0.03cm}+\hspace{0.03cm}1}-1 \hspace{0.03cm} \big ]\hspace{0.05cm}.</math>
+
:::<math>W_i =  {n \choose i} \cdot \sum_{j = 0}^{i-d}\hspace{0.15cm}(-1)^j \cdot {i \choose j} \cdot \bigg [\hspace{0.03cm}q^{i\hspace{0.03cm}-\hspace{0.03cm}j\hspace{0.03cm}-\hspace{0.03cm}d\hspace{0.03cm}+\hspace{0.03cm}1}-1 \hspace{0.03cm} \bigg ]\hspace{0.05cm}.</math>}}
  
== Codebezeichnung und Coderate ==
+
== Code name and code rate ==
 
<br>
 
<br>
Die übliche Bezeichnung für die Reed&ndash;Solomon&ndash;Codes ist &nbsp;<b>RSC&nbsp;(<i>n</i>,&nbsp;<i>k</i>,&nbsp;<i>d</i><sub>min</sub>)<sub><i>q</i></sub></b>&nbsp; mit
+
The usual designation for the Reed&ndash;Solomon codes is &nbsp;${\rm RSC} \ \ (n,\ k, \ d_{\rm min})_q$&nbsp; with
*der Länge <i>n</i> des Codes (Symbolanzahl eines Codewortes),<br>
+
*the length&nbsp; $n$&nbsp; of the code $($symbol number of a code word$)$,<br>
  
*der Dimension <i>k</i> des Codes (Symbolanzahl eines Informationswortes),<br>
+
*the dimension&nbsp; $k$&nbsp; of the code&nbsp; $($symbol number of an information word$)$,<br>
  
*der minimalen Distanz <i>d</i><sub>min</sub> = <i>n</i> &ndash; <i>k</i> + 1, maximal entsprechend der Singleton&ndash;Schranke, und<br>
+
*the minimum distance&nbsp; $d_{\rm min} = n-k+1$,&nbsp; which is maximum corresponding to the&nbsp; "Singleton bound",&nbsp; and<br>
  
*der Größe <i>q</i> = 2<sup><i>m</i></sup> des Galoisfeldes &#8658; GF(<i>q</i>).<br><br>
+
*the size&nbsp; $q = 2^m$&nbsp; of the Galois field&nbsp; ${\rm GF}(q)$.<br><br>
  
Alle Elemente <i>u<sub>i</sub></i> des Informationswortes <u><i>u</i></u> = (<i>u</i><sub>0</sub>, ..., <i>u<sub>i</sub></i>, ..., <i>u<sub>k</sub></i><sub>&ndash;1</sub>) und alle Elemente <i>c<sub>i</sub></i> des Codewortes <u><i>c</i></u>&nbsp;=&nbsp;(<i>c</i><sub>0</sub>,&nbsp;...,&nbsp;<i>c<sub>i</sub></i>,&nbsp;...,&nbsp;<i>c<sub>n</sub></i><sub>&ndash;1</sub>) sind nicht binäre Symbole und entstammen dem Galoisfeld GF(<i>q</i>).<br>
+
&rArr; &nbsp; All elements&nbsp; $u_i$&nbsp; of the information word &nbsp; $\underline{u}= (u_0, \hspace{0.05cm}\text{...} \hspace{0.05cm}, u_i, \hspace{0.05cm}\text{...} \hspace{0.05cm}, u_{k-1})$ &nbsp; and all elements&nbsp; $c_i$&nbsp; of the code word $\underline{c}= (c_0, \hspace{0.05cm}\text{...} \hspace{0.05cm}, c_i, \hspace{0.05cm}\text{...} \hspace{0.05cm}, c_{n-1})$&nbsp; are non-binary symbols and come from the Galois field&nbsp; ${\rm GF}(q)$.<br>
  
Für die Realisierung werden diese Symbole stets auch binär dargestellt &nbsp;&#8658;&nbsp; <i>u<sub>i</sub></i>, <i>x<sub>i</sub></i> &#8712; GF(2), und man kommt zum äquivalenten binären Code &nbsp;<b>RSC (<i>n</i><sub>bin</sub>, <i>k</i><sub>bin</sub>, <i>d</i><sub>min</sub>)<sub>2</sub> </b>&nbsp; mit
+
&rArr; &nbsp; For the realization these symbols are also represented in binary and one arrives at the&nbsp; "equivalent binary Reed&ndash;Solomon code" &nbsp;${\rm RSC} \ \ (n_{\rm bin},\ k_{\rm bin}, \ d_{\rm min})_2$&nbsp; with
*<i>n</i><sub>bin</sub> = <i>n</i> &middot; <i>m</i> Bit eines Codewortes,<br>
+
*$n_{\rm bin} = n \cdot m$ &nbsp; bits of a code word,<br>
  
*<i>k</i><sub>bin</sub> = <i>k</i> &middot; <i>m</i> Bit eines Informationswortes.<br><br>
+
*$k_{\rm bin} = k \cdot m$ &nbsp; bit of an information word.<br><br>
  
Die Coderate wird durch diese Maßnahme nicht verändert:
+
&rArr; &nbsp; The code rate is not changed by this action:
  
:<math>R = \frac{k}{n}= \frac{k_{\rm bin}}{n_{\rm bin}} = \frac{k \cdot m}{n \cdot m} = \frac{k}{n}
+
::<math>R_{\rm bin} = \frac{k_{\rm bin}}{n_{\rm bin}} = \frac{k \cdot m}{n \cdot m} = \frac{k}{n} = R
 
\hspace{0.05cm}.</math>
 
\hspace{0.05cm}.</math>
  
Ebenso ändert sich durch den Übergang von GF(<i>q</i>) auf GF(2) nichts an der minimalen Distanz <i>d</i><sub>min</sub>.<br>
+
&rArr; &nbsp; Similarly,&nbsp; the transition from&nbsp; ${\rm GF}(q)$&nbsp; to&nbsp; ${\rm GF}(2)$&nbsp; does not change the minimum distance&nbsp; $d_{\rm min}$.<br>
 +
 
 +
{{GraueBox|TEXT= 
 +
$\text{Example 6:}$&nbsp; As in&nbsp; [[Channel_Coding/Definition_and_Properties_of_Reed-Solomon_Codes#Singleton_bound_and_minimum_distance|$\text{Example 5}$]]&nbsp; $($previous section$)$,&nbsp; we consider the&nbsp; $\text{RSC (3, 2, 2)}_4$.&nbsp;
 +
[[File:EN_KC_T_2_3_S3.png|right|frame|Derivation of the distance spectra of&nbsp; $\text{RSC (3, 2, 2)}_4$&nbsp; and &nbsp;$\text{RSC (6, 4, 2)}_2$|class=fit]]
 +
#The upper table shows again the&nbsp; "distance spectrum"&nbsp; $\{ \hspace{0.05cm}W_j\hspace{0.05cm}\}$&nbsp; of the&nbsp; $\text{RSC (3, 2, 2)}_4$.
 +
#The lower table applies to the equivalent binary Reed&ndash;Solomon code&nbsp; $\text{RSC (6, 4, 2)}_2$.
 +
<br>
 +
<u>Note.</u>
 +
*Both codes have the same code rate &nbsp;$R = k/n =2/3$.
  
{{Beispiel}}''':''' Beim RSC (3, 2, 2)<sub>4</sub> ist die Coderate <i>R</i> = <i>k</i>/<i>n</i> = 2/3 und die minimale Distanz <i>d</i><sub>min</sub> = 2. Für das <b>Distanzspektrum</b> {<i>W<sub>i</sub></i>} und die <b>Gewichtsfunktion</b> <i>W</i>(<i>X</i>) gilt nach [http://en.lntwww.de/Kanalcodierung/Schranken_f%C3%BCr_die_Blockfehlerwahrscheinlichkeit#Distanzspektrum_eines_linearen_Codes_.282.29 Kapitel 1.6] (siehe Tabelle):
+
*Both codes have the same  minimum distance &nbsp;$d_{\rm min} = 2$.
  
:<math>W_0 =  1\hspace{0.05cm}, \hspace{0.2cm}W_2 =  9\hspace{0.05cm}, \hspace{0.2cm}W_3 =  6\hspace{0.3cm}\Rightarrow\hspace{0.3cm}W(X) = 1 + 9 \cdot X^2 + 6 \cdot X^3\hspace{0.05cm}.</math>
+
*But the two codes differ in terms of the distance spectrum&nbsp; $\{ \hspace{0.05cm}W_j\hspace{0.05cm}\}$&nbsp; and the&nbsp; [[Channel_Coding/Bounds_for_Block_Error_Probability#Distance_spectrum_of_a_linear_code|$\text{weight enumerator function}$]]&nbsp; $W(X)$:
  
[[File:P ID2521 KC T 2 3 S3 v1.png|Herleitung der Distanzspektren von RSC (3, 2, 2) <sub>4</sub> und RSC (6, 4, 2)<sub>2</sub>|class=fit]]<br>
+
:$$\text{RSC (3, 2, 2)}_4\text{:} \hspace{0.3cm} W_0 =  1\hspace{0.05cm}, \hspace{0.2cm}W_2 =  9\hspace{0.05cm}, \hspace{0.2cm}W_3 =  6\hspace{0.3cm}$$
 +
:$$\Rightarrow\hspace{0.3cm}W(X) = 1 + 9 \cdot X^2 + 6 \cdot X^3\hspace{0.05cm}.$$
  
Die binäre Repräsentation des Codes  RSC (3, 2, 2)<sub>4</sub> führt zum RSC (6, 4, 2)<sub>2</sub>, ebenfalls mit der Rate <i>R</i>&nbsp;=&nbsp;4/6&nbsp;=&nbsp;2/3 und der Minimaldistanz <i>d</i><sub>min</sub> = 2. Es ergibt sich allerdings ein anderes Distanzspektrum:
+
:$$\text{RSC (6, 4, 2)}_2\text{:} \hspace{0.3cm} W_0 =  1\hspace{0.05cm}, \hspace{0.2cm}W_2 =  3\hspace{0.05cm}, \hspace{0.2cm}W_3 = 8
 +
\hspace{0.05cm}, \hspace{0.2cm}W_4 = 3\hspace{0.05cm}, \hspace{0.2cm}W_6 =  1.$$
 +
:$$\Rightarrow\hspace{0.3cm}W(X) = 1 + 3 \cdot X^2 + 8 \cdot X^3 + 4 \cdot X^4 + X^6 \hspace{0.05cm}.$$}}
  
:<math>W_0 =  1\hspace{0.05cm}, \hspace{0.2cm}W_2 =  3\hspace{0.05cm}, \hspace{0.2cm}W_3 =  8
 
\hspace{0.05cm}, \hspace{0.2cm}W_4 =  3\hspace{0.05cm}, \hspace{0.2cm}W_6 =  1</math>
 
  
:<math>\Rightarrow\hspace{0.3cm}W(X) = 1 + 3 \cdot X^2 + 8 \cdot X^3 + 4 \cdot X^4 + X^6 \hspace{0.05cm}.</math>{{end}}<br>
 
  
== Bedeutung der Reed–Solomon–Codes ==
+
== Meaning of the Reed-Solomon codes ==
 
<br>
 
<br>
Anhand des hier oft beispielhaft betrachteten RSC&nbsp;(3,&nbsp;2,&nbsp;2)<sub>4</sub> konnten wir viele Eigenschaften der Reed&ndash;Solomon&ndash;Codes in überschaubarem Rahmen kennenlernen. Praxisrelevant ist dieser Code nicht, da wegen <i>d</i><sub>min</sub> = 2 kein einziger Fehler korrigiert und auch nur ein einziger Fehler erkannt werden kann. Schon der nächstgrößere Code RSC&nbsp;(7,&nbsp;3,&nbsp;5)<sub>8</sub>, der bis zu <i>t</i> = 2 Fehler korrigieren kann, weist bereits eine Codetabelle mit  8<sup>3</sup> = 512 Einträgen auf und ist zu Demonstrationszwecken weniger gut geeignet.<br>
+
Using the&nbsp; $\text{RSC (3, 2, 2)}_4$&nbsp; often considered here as an example,&nbsp; we were able to learn many properties of Reed&ndash;Solomon codes in a manageable way.  
 
+
*However,&nbsp; this code is not relevant in practice,&nbsp; since due to&nbsp; $d_{\rm min} = 2$&nbsp; not a single error can be corrected,&nbsp; and not even a single error can be detected.  
In der Praxis werden meist größere RS&ndash;Codes eingesetzt, zum Beispiel der RSC (255, 223, 33)<sub>256</sub> mit den folgenden Eigenschaften:
 
*Der Code basiert auf dem Galoisfeld GF(2<sup>8</sup>). Jedes Symbol entspricht somit einem Byte. Die Coderate ist mit <i>R</i> = 0.8745 relativ groß.<br>
 
 
 
*Trotz dieser großen Coderate (geringen Redundanz) können mit diesem Code bis zu <i>e</i> = 32 Fehler innerhalb eines Blocks aus 255 Symbolen erkannt und <i>t</i> = 16 Fehler korrigiert werden.<br>
 
 
 
*Die Codetabelle würde allerdings 2<sup>8 &middot; 223</sup> = 2<sup>1784</sup> &asymp; 10<sup>537</sup> Einträge aufweisen und wird deshalb wahrscheinlich auch von niemanden tatsächlich erstellt.<br><br>
 
 
 
Der große Vorteil der Reed&ndash;Solomon&ndash;Codes (und einer ganzen Reihe davon abgeleiteter weiterer Codes) ist zum einen, dass sie analytisch geschlossen konstruiert werden können, zum anderen ihre große Flexibilität hinsichtlich der Codeparameter. Meist geht man wie folgt vor:
 
*Man gibt die Korrekturfähigkeit in Form des Parameters <i>t</i> vor. Daraus ergibt sich die minimale Distanz <i>d</i><sub>min</sub> = 2<i>t</i> + 1 und die Differenz <i>n</i> &ndash; <i>k</i> = 2<i>t</i> entsprechend der Singleton&ndash;Schranke. Einen besseren Wert gibt es nicht.<br>
 
  
*Ein weiterer Entwurfsparameter ist die Coderate <i>R</i> = <i>k</i>/<i>n</i>, wobei die Codewortlänge <i>n</i> = 2<sup><i>m</i></sup> &ndash; 1 nicht völlig frei wählbar ist. Durch Erweiterung, Verkürzung und Punktierung &ndash; siehe Aufgabe Z1.9 &ndash; kann die Vielzahl an möglichen Codes weiter vergrößert werden.<br>
+
*The next larger code&nbsp; $\text{RSC (7, 3, 5)}_8$,&nbsp; which can correct up to&nbsp; $t = 2$&nbsp; errors,&nbsp; has a code table with&nbsp; $8^3 = 512$&nbsp; entries and is unsuitable for demonstration purposes.<br>
  
*Bei Reed&ndash;Solomon&ndash;Codes ist die Gewichtsverteilung exakt bekannt und es ist eine Anpassung an die Fehlerstruktur des Kanals möglich. Sie sind insbesondere für Bündelfehlerkanäle gut geeignet, die bei mobilen Funksystemen aufgrund von temporären Abschattungen häufig vorliegen.<br>
 
  
*Im Falle statistisch unabhängiger Fehler sind BCH&ndash;Codes (von Bose&ndash;Chaudhuri&ndash;Hocquenghem) besser geeignet. Diese sind eng verwandt mit den RS&ndash;Codes, allerdings erfüllen sie nicht immer das Singleton&ndash;Kriterium. Eine ausführliche Beschreibung finden Sie in [Fri96]<ref>Friedrichs, B.: ''Kanalcodierung – Grundlagen und Anwendungen in modernen Kommunikations- systemen.'' Berlin – Heidelberg: Springer, 1996.</ref>.<br>
+
In practice, very large Reed&ndash;Solomon codes are usually used,&nbsp; for example the&nbsp; $\text{RSC (255, 223, 33)}_{256}$&nbsp; with the following properties:
 +
# The code is based on the Galois field&nbsp; $\rm GF(2^8)$.&nbsp; Each symbol thus corresponds to one byte.&nbsp; The code rate is relatively large with&nbsp; $R = 0.8745$.<br>
 +
# Despite this large code rate&nbsp; (i.e., low redundancy),&nbsp; this code can detect up to&nbsp; $e = 32$&nbsp; errors within a block of&nbsp; $255$&nbsp; symbols and can correct up to &nbsp; $t = 16$&nbsp; errors.<br>
 +
#The code table,&nbsp; however,&nbsp; would have&nbsp; $2^{8 \hspace{0.05cm}\cdot \hspace{0.05cm} 223}= 2^{ \hspace{0.05cm} 1784} &asymp; 10^{537}$&nbsp; entries,&nbsp; and is therefore unlikely to be actually created by anyone.<br><br>
  
*Die Decodierung nach dem BDD&ndash;Prinzip (<i>Bounded Distance Decoding</i>) kann rechentechnisch sehr einfach erfolgen, zum Beispiel mit dem Berlekamp&ndash;Massey&ndash;Algorithmus. Zudem kann im Decoder ohne wesentlichen Mehraufwand auch <i>Soft&ndash;Decision&ndash;Information</i> verarbeitet werden.<br>
+
The great advantage of Reed&ndash;Solomon codes&nbsp; $($and a whole series of further codes derived from them$)$&nbsp; is on the one hand that they can be constructed analytically closed,&nbsp; on the other hand their large flexibility regarding the code parameters.&nbsp; Usually one proceeds as follows:
 +
# One specifies the correction capability in the form of the parameter&nbsp; $t$.&nbsp; From this,&nbsp; the minimum distance&nbsp; $d_{\rm min} = 2t + 1$&nbsp; and the difference&nbsp; $n-k = 2t$&nbsp; corresponding to the Singleton bound.&nbsp; There is no better value.<br>
 +
# Another design parameter is the code rate&nbsp; $R=k/n$,&nbsp; where the code word length&nbsp; $n = 2^m -1$&nbsp; is not completely arbitrary.&nbsp; By extension,&nbsp; shortening and puncturing &ndash; see&nbsp; [[Aufgaben:Exercise_1.09Z:_Extension_and/or_Puncturing|"Exercise 1.9Z"]]&nbsp; &ndash; the variety of possible codes can be further increased.<br>
 +
# For Reed&ndash;Solomon codes,&nbsp; the weight distribution is known exactly and adaptation to the error structure of the channel is possible.&nbsp; These codes are particularly well suited for burst error channels,&nbsp; which are often present in mobile radio systems due to temporary shadowing.<br>
 +
# In the case of statistically independent errors,&nbsp; [https://en.wikipedia.org/wiki/BCH_code $\text{BCH codes}$]&nbsp; $($from the inventors&nbsp; $\rm B$ose&ndash;$\rm C$haudhuri&ndash;$\rm H$ocquenghem$)$&nbsp; are more suitable.&nbsp; These codes are closely related to Reed&ndash;Solomon codes,&nbsp; but they do not always satisfy the Singleton criterion.&nbsp; A detailed description can be found in [Fri96]<ref name='Fri96'>Friedrichs, B.:&nbsp; Kanalcodierung - Grundlagen und Anwendungen in modernen Kommunikations- systemen.&nbsp; Berlin - Heidelberg: Springer, 1996.</ref>.<br>
 +
# Decoding according to the&nbsp; [https://en.wikipedia.org/wiki/Lattice_problem $\text{BDD Principle}$]&nbsp; ("Bounded Distance Decoding")&nbsp; can be done computationally very easily,&nbsp; for example with the&nbsp; [https://en.wikipedia.org/wiki/Berlekamp%E2%80%93Massey_algorithm $\text{Berlekamp&ndash;Massey Algorithm}$].&nbsp; Moreover,&nbsp; the decoder can also process&nbsp; [https://en.wikipedia.org/wiki/Soft-decision_decoder $\text{Soft Decision Information}$]&nbsp;  without much additional effort.<br>
  
== Aufgaben ==
+
== Exercises for the chapter==
 
<br>
 
<br>
[[Aufgaben:2.7 Reed–Solomon–Code (7, 3, 5)(Base 8)|A2.7 Reed–Solomon–Code (7, 3, 5)(Base 8)]]
+
[[Aufgaben:Exercise_2.07:_Reed-Solomon_Code_(7,_3,_5)_to_Base_8|Exercise 2.07: Reed-Solomon Code (7, 3, 5) to Base 8]]
  
[[Zusatzaufgaben:2.7 Reed–Solomon–Code (15, 5, 11)(Base 16)]]
+
[[Aufgaben:Exercise_2.07Z:_Reed-Solomon_Code_(15,_5,_11)_to_Base_16|Exercise 2.07Z: Reed-Solomon Code (15, 5, 11) to Base 16]]
  
[[Aufgaben:2.8 RS–Generatorpolynome|A2.8 RS–Generatorpolynome]]
+
[[Aufgaben:Exercise_2.08:_Generator_Polynomials_for_Reed-Solomon|Exercise 2.08: Generator Polynomials for Reed-Solomon]]
  
[[Zusatzaufgaben:2.8 „Plus” und „Mal” in GF(2^3)]]
+
[[Aufgaben:Exercise_2.08Z:_Addition_and_Multiplication_in_GF(2_power_3)|Exercise 2.08Z: Addition and Multiplication in GF(2 power 3)]]
  
[[Aufgaben:2.9 Reed–Solomon–Parameter|A2.9 Reed–Solomon–Parameter]]
+
[[Aufgaben:Exercise_2.09:_Reed–Solomon_Parameters|Exercise 2.09: Reed–Solomon Parameters]]
  
[[Aufgaben:2.10 Fehlererkennung bei RSC|A2.10 Fehlererkennung bei RSC]]
+
[[Aufgaben:Exercise_2.10:_Reed-Solomon_Fault_Detection|Exercise 2.10: Reed-Solomon Fault Detection]]
  
[[Zusatzaufgaben:2.10 Coderate und minimale Distanz]]
+
[[Aufgaben:Exercise_2.10Z:_Code_Rate_and_Minimum_Distance|Exercise 2.10Z: Code Rate and Minimum Distance]]
  
==Quellenverzeichnis==
+
==References==
 
<references/>
 
<references/>
  
 
{{Display}}
 
{{Display}}

Latest revision as of 20:46, 23 November 2022

Coding principle and code parameters


A  "Reed–Solomon code"  – hereafter sometimes shortened to  "RS code"   – is a  $\text{linear block code}$ which assigns

  • an information block  $\underline{u}$  with  $k$  symbols
  • to a corresponding code word  $\underline{c}$  with  $n > k$  symbols.


Linear  $(n, \, k)$  block code with new nomenclature

These codes,  still widely used today,  were invented as early as the early 1960s


In the chapter  "Objective of Channel Coding" 

  • the information block was denoted by  $\underline{u}= (u_1,$ ... , $u_k)$  and
  • the code word by  $\underline{x}= (x_1,$ ... , $x_n)$. 


The nomenclature change   $\underline{x} \to \underline{c}$   $($see graphic$)$  was made to eliminate confusion with the argument of polynomials and to simplify the description of Reed–Solomon codes.

All the properties of linear cyclic block codes mentioned in the section  "Linear codes and cyclic codes"  also apply to the Reed–Solomon codes.  In addition:

  • Construction and decoding of Reed–Solomon codes are based on the arithmetic of a Galois field  ${\rm GF}(q)$,  where we restrict ourselves here to binary extension fields with  $q=2^m$  elements;:
\[{\rm GF}(2^m) = \big \{\hspace{0.05cm}0\hspace{0.05cm},\hspace{0.1cm} \alpha^{0} ,\hspace{0.05cm}\hspace{0.1cm} \alpha^{1}\hspace{0.05cm},\hspace{0.1cm} \alpha^{2}\hspace{0.05cm},\hspace{0.1cm}\text{...}\hspace{0.1cm}, \alpha^{q-2}\hspace{0.05cm} \big \}\hspace{0.05cm}. \]
  • Principally different from the first chapter is that the coefficients  $u_0$,  $u_1$, ... ,  $u_{k-1}$  now no longer specify individual bits of information  $(0$  or  $1)$  but they are also elements of  ${\rm GF}(2^m)$.  Each of the  $n$  symbols represents  $m$  bits.
  • For Reed–Solomon codes,  the parameter  $n$  ("code length")  is always equal to the number of elements of the Galois field excluding the zero word:   $n= q-1$.
    We use for this purpose the following nomenclature:
\[{\rm GF}(2^m) \hspace{-0.05cm}\setminus \hspace{-0.05cm} \{0\} = \big \{\hspace{0.05cm} \alpha^{0} ,\hspace{0.05cm}\hspace{0.1cm} \alpha^{1}\hspace{0.05cm},\hspace{0.1cm} \alpha^{2}\hspace{0.05cm},\hspace{0.1cm}...\hspace{0.1cm}, \alpha^{n-1}\hspace{0.05cm} \big \}\hspace{0.05cm}. \]
  • The  $k$  coefficients  $u_i \in {\rm GF}(2^m)$  of the information block  $\underline{u}$,  where for the index  $ 0 \le i < k$  holds,  can also be formally expressed by a polynomial  $u(x)$.  The degree of this polynomial is  $k-1$:
\[u(x) = \sum_{i = 0}^{k-1} u_i \cdot x^{i} = u_0 + u_1 \cdot x + u_2 \cdot x^2 + \hspace{0.1cm}\text{...}\hspace{0.1cm}+ u_{k-1} \cdot x^{k-1} \hspace{0.05cm},\hspace{0.4cm} u_i \in {\rm GF}(2^m) \hspace{0.05cm}.\]
  • The  $n$  symbols of the associated code word  $\underline{c}= (c_0, c_1,$ ... , $c_{n-1})$  result with this polynomial  $u(x)$  to be
\[c_0 = u(\alpha^{0}) \hspace{0.05cm},\hspace{0.3cm} c_1 = u(\alpha^{1})\hspace{0.05cm},\hspace{0.1cm}...\hspace{0.1cm},\hspace{0.3cm} c_{n-1}= u(\alpha^{n-1}) \hspace{0.05cm}.\]
  • Mostly the code symbols  $c_i \in {\rm GF}(2^m)$  are converted back to binary   ⇒   ${\rm GF}(2)$  before transmission,  where each symbol is then represented by  $m$  bits.


We briefly summarize these statements:

$\text{Definition:}$  An   $(n,\ k)\text{ Reed–Solomon code}$  for the Galois field  ${\rm GF}(2^m)$  is defined by

  • the  $n= 2^{m-1}$  elements of  ${\rm GF}(2^m) \hspace{-0.05cm}\setminus \hspace{-0.05cm} \{0\} =\{ \alpha^0, \alpha^1, \, \text{...} \, , \alpha^{n-1}\}$,  where  $\alpha$  denotes a  $\text{primitive element}$  of  ${\rm GF}(2^m)$, 
  • $\text{polynomial}$  of degree  $k-1$  matched to an information block  $\underline{u}$: 
\[u(x) = \sum_{i = 0}^{k-1} u_i \cdot x^{i} = u_0 + u_1 \cdot x + u_2 \cdot x^2 + \hspace{0.1cm}... \hspace{0.1cm}+ u_{k-1} \cdot x^{k-1} \hspace{0.05cm},\hspace{0.4cm} u_i \in {\rm GF}(2^m) \hspace{0.05cm}.\]

⇒   Thus,  the  $(n,\ k)$  Reed–Solomon code can be described as follows:

\[C_{\rm RS} = \Big \{ \underline {c} = \big ( u(\alpha^{0}) \hspace{0.05cm},\hspace{0.1cm} u(\alpha^{1})\hspace{0.05cm},\hspace{0.1cm}...\hspace{0.1cm}, u(\alpha^{n-1})\hspace{0.1cm} \big ) \hspace{0.1cm} \big \vert \hspace{0.2cm} u(x) = \sum_{i = 0}^{k-1} u_i \cdot x^{i}\hspace{0.05cm},\hspace{0.2cm} u_i \in {\rm GF}(2^m) \Big \} \hspace{0.05cm}.\]


The previous information will now be illustrated by two simple examples.

$\text{Example 1:}$  We consider the following code parameters:

$\rm GF(2^2)$  in three different representations:
Exponential, polynomial and coefficient form
\[k = 2 \hspace{0.05cm},\hspace{0.15cm}n = 3 \hspace{0.5cm} \Rightarrow \hspace{0.5cm} \underline {u} = (u_0,\ u_1)\hspace{0.05cm},\hspace{0.15cm} \underline {c} = (c_0,\ c_1,\ c_2)\hspace{0.05cm},\]
\[q = n+1 = 4 \hspace{0.45cm} \Rightarrow \hspace{0.5cm} {\rm GF} (q) = {\rm GF} (2^m) \hspace{0.5cm} \Rightarrow \hspace{0.5cm} m = 2\hspace{0.05cm}.\]

Starting from the conditional equation 

$$p(\alpha) = \alpha^2 + \alpha + 1 = 0 \hspace{0.3cm} ⇒ \hspace{0.3cm} \alpha^2 = \alpha + 1,$$

one obtains the assignments between

  • the exponential representation,
  • the polynomial representation and
  • the coefficient representation


of  ${\rm GF}(2^2)$  according to the above table.  From this it can be seen:

  1. The coefficient vector is expressed by the polynomial   $u(x) = u_0 + u_1 \cdot x$.   The polynomial degree is  $k- 1 = 1$.
  2. For  $u_0 = \alpha^1$  and  $u_1 = \alpha^2$  we obtain e.g. the polynomial   $u(x) = \alpha + \alpha^2 \cdot x$   and thus
\[c_0 = u (x = \alpha^0) = u (x = 1) = \alpha + \alpha^2 \cdot 1 = \alpha + (\alpha + 1) =1 \hspace{0.05cm},\]
\[c_1 =u (x = \alpha^1) = \alpha + \alpha^2 \cdot \alpha = \alpha + \alpha^3 = \alpha + \alpha^0 = \alpha + 1 = \alpha^2 \hspace{0.05cm},\]
\[c_2 =u (x = \alpha^2) = \alpha + \alpha^2 \cdot \alpha^2 = \alpha + \alpha^4 = \alpha + \alpha^1 = 0 \hspace{0.05cm}.\]

⇒   This results in the following assignments on symbol or bit level:

$$\underline {u} =(\alpha^1, \ \alpha^2)\hspace{0.57cm}\leftrightarrow\hspace{0.3cm} \underline {c} = (1, \ \alpha^2, \ 0)\hspace{0.05cm},$$
$$\underline {u}_{\rm bin} =(1,\ 0,\ 1,\ 1)\hspace{0.3cm}\leftrightarrow\hspace{0.3cm} \underline {c}_{\rm bin} = (0,\ 1,\ 1,\ 1,\ 0,\ 0)\hspace{0.05cm}.$$


$\text{Example 2:}$  On the right you see the code table of a special Reed–Solomon code named  $\text{RSC (3, 2, 2)}_4$.

Code table of the  $\text{RSC (3, 2, 2)}_4$
  • The label refers to the parameters  $n=3$,  $k=2$,  $d_{\rm min}=2$  and  $q = 4$.
  • In columns 1 to 3, one can see the relationship  $\underline {u} \ → \ u(x) \ → \ \underline {c}$.
  • In the last two columns, the coding rule  $\underline {u}_{\rm bin} \ ↔ \ \underline {c}_{\rm bin}$ is given.


⇒   For clarification the entry for  $(\alpha^0, \ \alpha^2)$:

\[u(x) = u_0 + u_1 \cdot x = \alpha^0 + \alpha^2 \cdot x. \]

This results in the following code symbols  (see red mark):

\[c_0 = u (x = \alpha^0) = 1 + \alpha^2 \cdot 1 = 1 + (1+\alpha ) =\alpha \hspace{0.05cm},\]
\[c_1 = u (x = \alpha^1) = 1 + \alpha^2 \cdot \alpha = 1 + (1+\alpha ) \cdot \alpha = 1 + \alpha + \alpha^2 = 0 \hspace{0.05cm},\]
\[c_2 =u (x = \alpha^2) = 1 + \alpha^2 \cdot \alpha^2 = 1 + \alpha = \alpha^2 \hspace{0.05cm}.\]

Notes:

  • From the element set  $\{0, \ \alpha^0 = 1, \ \alpha^1 = \alpha, \ \alpha^2\}$  it should not be concluded that for this code the three-dimensional representation with axes   $\alpha^0 = 1$,   $\alpha^1 = \alpha$,   $\alpha^2$   applies.  See section   "Primitive Polynomials" – Example 5.
  • On the contrary,  from the coefficient representation in  $\text{Example 1}$  it is clear that   ${\rm GF} (2^2)$  is two-dimensional,  where the axes of the two dimensional representation are to be labeled  $\alpha^0 = 1$  and  $\alpha^1 = \alpha$.


Generator matrix of Reed-Solomon codes


Since the Reed–Solomon code is a linear block code,  the relationship between the information word  $\underline {u}$  and the code word  $\underline {c}$  is given by the  $\text{generator matrix}$  $\boldsymbol{\rm G}$:

\[\underline {c} = \underline {u} \cdot { \boldsymbol{\rm G}} \hspace{0.05cm}.\]

As with any linear  $(n,\ k)$  block code,  the generator matrix consists of 

  • $k$  rows and 
  • $n$  columns.


In contrast to the chapter  "General Description of Linear Block Codes" 

  • now the elements of the generator matrix are no longer binary  $(0$  or  $1)$,
  • but come from the Galois field  ${\rm GF}(2^m) \hspace{-0.05cm}\setminus \hspace{-0.05cm} \{0\} $.


$\text{Example 3:}$  We consider as in  $\text{Example 2}$  (see previous section)  the  $\text{RSC (3, 2, 2)}_4$  whose generator matrix has the following form:

\[ { \boldsymbol{\rm G} } = \begin{pmatrix} g_{00} & g_{01} & g_{02}\\ g_{10} & g_{11} & g_{12} \end{pmatrix}\hspace{0.05cm},\hspace{0.3cm} g_{ij} \in {\rm GF}(2^2) \hspace{-0.01cm}\setminus \hspace{-0.01cm} \{0\} = \big \{\hspace{0.05cm} \alpha^{0} \hspace{0.05cm},\hspace{0.1cm} \alpha^{1}\hspace{0.05cm},\hspace{0.1cm} \alpha^{2} \hspace{0.05cm}\big \}\hspace{0.05cm}. \]

Beside this:

  • The first row of  $\boldsymbol{\rm G}$  gives the code word for the information word  $\underline {u}_1 = (1,\ 0)$  respectively for the polynomial function  $u_1(x) = 1$.  Thus one receives the matrix elements of the first row
$$g_{00} = u_{1}(\alpha^{0}) = 1\hspace{0.05cm},$$
$$g_{01} = u_{1}(\alpha^{1}) = 1\hspace{0.05cm},$$
$$g_{02} = u_{1}(\alpha^{2}) = 1\hspace{0.05cm}.$$
  • The second row is equal to the code word for the information word $\underline {u}_2 = (0,\ 1)$   ⇒   $u_2(x) = x$.  Thus,  the matrix elements of the second row are:
$$g_{10} = u_{2}(\alpha^{0}) = \alpha^{0} = 1\hspace{0.05cm},$$
$$g_{11} = u_{2}(\alpha^{1}) = \alpha \hspace{0.05cm},$$
$$g_{12} = u_{2}(\alpha^{2}) = \alpha^{2}\hspace{0.05cm}.$$
  • So the complete generator matrix is:
$$ { \boldsymbol{\rm G} } = \begin{pmatrix} 1 & 1 & 1\\ 1 & \alpha & \alpha^2 \end{pmatrix}\hspace{0.05cm}.$$
Code table of the  $\text{RSC (3, 2, 2)}_4$  at symbol level
  • For the information word  $\underline {u}= (u_0, \ u_1)$  with symbols 
$$u_0, \ u_1 ∈ \{0, \ \alpha^0 = 1, \ \alpha^1 = \alpha, \ \alpha^2\}$$
one obtains,  considering the two equations   $\alpha^2 = \alpha + 1$   and   $\alpha^3 = \alpha^0 = 1$   again the code table of the  $\text{RSC (3, 2, 2)}_4$  at symbol level.
  1. Of course,  with the same generator matrix you get exactly the same code table  $\underline {u}   ↔   \underline {c}$  as after the calculation via the function  $u(x)$.
  2. The corresponding code table on bit level  $($see  $\text{Example 2}$  in the previous section$)$  results again,  if the elements are not given in exponent representation,  but in coefficient form:
\[(0, \hspace{0.1cm}\alpha^{0}, \hspace{0.1cm}\alpha^{1}, \hspace{0.1cm}\alpha^{2}) \hspace{0.3cm}\Leftrightarrow\hspace{0.3cm}(00, \hspace{0.1cm}01, \hspace{0.1cm}10, \hspace{0.1cm}11) \hspace{0.05cm}. \]


Generator matrix and parity-check matrix


We now generalize the result of the last section for a Reed–Solomon code with

  • dimension  $k$  $($number of symbols per information block$)$,
  • code word length  $n$  $($number of symbols per code word$)$.


⇒   The  $\text{generator matrix}$  $\boldsymbol{\rm G}$  $(k$ rows,  $n$ columns$)$  and the  $\text{parity-check matrix}$  $\boldsymbol{\rm H}$  $(n-k$ rows,  $n$  columns$)$  must jointly satisfy the following equation:

$${\boldsymbol{\rm G} } \cdot { \boldsymbol{\rm H } }^{\rm T}= { \boldsymbol{\rm 0} }\hspace{0.05cm}.$$

Here,  "$\boldsymbol{\rm 0}$"  denotes a zero matrix  $($all elements equal  $0)$   with  $k$  rows and  $n-k$  columns.


$\text{Example 4:}$  We consider the   $\text{RSC (7, 3, 5)}_8$:

  • code parameters  $n= 7$,  $k= 3$,
  • based on the Galois field  $\rm GF(2^3 = 8)$ 
  • with the constraint  $\alpha^3 =\alpha + 1$.


Note with respect to the code name:

  1. The third parameter of the nomenclature commonly used for block codes names the free distance  $d_{\rm min}= 5$.
  2. Unlike the binary codes discussed in the chapter  "Examples of binary block codes"  $($single parity-check code, repetition code, Hamming code$)$,  the Reed–Solomon codes still have the hint  $q$  added to the Galois field  $($here:   $q = 8)$.

All elements of the generator matrix and the parity-check matrix,

\[{ \boldsymbol{\rm G} } = \begin{pmatrix} 1 & 1 & 1 & 1 & 1 & 1 & 1\\ 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} \end{pmatrix}\hspace{0.05cm},\hspace{0.4cm} { \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}, \]

originate from the Galois field  ${\rm GF}(2^3) \hspace{-0.01cm}\setminus \hspace{-0.01cm} \{0\} = \big \{\hspace{0.05cm} \alpha^{0} \hspace{0.05cm},\hspace{0.1cm}\alpha^{1}\hspace{0.05cm},\hspace{0.1cm} \alpha^{2} \hspace{0.05cm},\hspace{0.1cm} \alpha^{3} \hspace{0.05cm},\hspace{0.1cm}\alpha^{4}\hspace{0.05cm},\hspace{0.1cm} \alpha^{5} \hspace{0.05cm},\hspace{0.1cm} \alpha^{6} \hspace{0.05cm}\big \}$. For the matrix product holds:

\[{ \boldsymbol{\rm G} } \cdot { \boldsymbol{\rm H } }^{\rm T}= \begin{pmatrix} 1 & 1 & 1 & 1 & 1 & 1 & 1\\ 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} \end{pmatrix} \begin{pmatrix} 1 & 1 & 1 & 1 \\ \alpha^1 & \alpha^2 & \alpha^3 & \alpha^4\\ \alpha^2 & \alpha^4 & \alpha^6 & \alpha^1\\ \alpha^3 & \alpha^6 & \alpha^2 & \alpha^{5}\\ \alpha^4 & \alpha^1 & \alpha^{5} & \alpha^{2}\\ \alpha^5 & \alpha^{3} & \alpha^{1} & \alpha^{6}\\ \alpha^6 & \alpha^{5} & \alpha^{4} & \alpha^{3} \end{pmatrix} = \begin{pmatrix} 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \end{pmatrix} \hspace{0.05cm}.\]

This will be demonstrated here for two elements only:

  • First row,  first column:
\[1 \hspace{0.1cm} \cdot \hspace{0.1cm} \big [1 + \alpha^1 + \alpha^2 + \alpha^3 + \alpha^4 + \alpha^5 + \alpha^6 \big ] = 1 + \alpha + \alpha^2 + (\alpha + 1) + (\alpha^2 + \alpha)+ (\alpha^2 + \alpha +1)+ (\alpha^2 + 1) = 0 \hspace{0.05cm}; \]
  • Last row,  last column:
\[1 \hspace{0.1cm} \cdot \hspace{0.1cm} 1 + \alpha^2 \cdot \alpha^4 + \alpha^4 \cdot \alpha^1 + \alpha^6 \cdot \alpha^5+ \alpha^1 \cdot \alpha^2+ \alpha^3 \cdot \alpha^6+ \alpha^5 \cdot \alpha^3= 1 + \alpha^6 + \alpha^5 + \alpha^{11} + \alpha^{3}+ \alpha^{9}+ \alpha^{8} =\]
\[ \hspace{1.5cm} = \hspace{0.15cm} 1 + \alpha^6 + \alpha^5 + \alpha^{4} + \alpha^{3}+ \alpha^{2}+ \alpha^{1} =0 \hspace{0.05cm}.\]


Singleton bound and minimum distance


An important parameter of any block code is the  $\text{minimum distance}$  between any two code words  $\underline {c}_i$  and  $\underline {c}_j$.

  • The Reed–Solomon–codes belong to the class of  »linear  and  cyclic codes«.  For these,  one can start from the zero word  $\underline {c}_0 = (0, 0, \hspace{0.05cm} \text{...} \hspace{0.05cm}, 0)$  as the reference.
  • From the number of zeros in the other code words  $\underline {c}_j ≠ \underline {c}_0$  the  $\text{distance spectrum}$  $\{ \hspace{0.05cm}W_j\hspace{0.05cm}\}$  can be specified.


$\text{Example 5:}$  The table illustrates the determination of the distance spectrum for the  $\text{RSC (3, 2, 2)}_4$.

  • Compared to the previous graphs,  the symbol set is simplified by   $\{0,\ 1,\ 2,\ 3\}$   instead of   $\{0,\ \alpha^0,\ \alpha^1,\ \alpha^2\}$.
  • The distance  $d$  between  $\underline {c}_j$  and the null word  $\underline {c}_0$  is identical to the  $\text{Hamming weight}$  $w_{\rm H}(\underline {c}_j)$.
To derive the distance spectrum for the  $\text{RSC (3, 2, 2)}_4$


⇒   From the upper table can be read among others:

  1. Nine code words differ from the zero word in two symbols and six code words in three symbols:   $W_2 = 9$,  $W_3 = 6$.
  2. There is not a single code word with only one zero.  That means:   The minimum distance here is  $d_{\rm min} = 2$.


⇒   From the table below one can see that also for the binary representation holds  $d_{\rm min} = 2$.


This empirical result will now be generalized:

$\text{Without proof:}$ 

  1. The  "minimum distance"  of each  $(n,\ k)$  Reed–Solomon code is  $d_{\rm min} =n-k+1$   ⇒   symbol errors can be detected   ⇒   $e = d_{\rm min} -1 =n-k$ .
  2. For  "error correcting codes"  one usually chooses  $d_{\rm min} $  odd   ⇒   $n-k$  even. 
  3. For Reed–Solomon codes then up to   $t =(n-k)/2$   symbol errors can be corrected.
  4. The  $\text{Singleton bound}$  says that  $d_{\rm min} \le n-k+1$  holds for all linear codes.
  5. Reed–Solomon codes reach this bound with equality;  they are so-called  $\text{maximum distance separable codes}$  (short: "MDS codes").
  6. The  $\text{distance spectrum}$  is composed of  $W_0 = 1$  and other weight factors  $W_i$  with  $d ≤ i ≤ n$,  where in the following equation  $d_{\rm min}$  is abbreviated as  $d$:
\[W_i = {n \choose i} \cdot \sum_{j = 0}^{i-d}\hspace{0.15cm}(-1)^j \cdot {i \choose j} \cdot \bigg [\hspace{0.03cm}q^{i\hspace{0.03cm}-\hspace{0.03cm}j\hspace{0.03cm}-\hspace{0.03cm}d\hspace{0.03cm}+\hspace{0.03cm}1}-1 \hspace{0.03cm} \bigg ]\hspace{0.05cm}.\]

Code name and code rate


The usual designation for the Reed–Solomon codes is  ${\rm RSC} \ \ (n,\ k, \ d_{\rm min})_q$  with

  • the length  $n$  of the code $($symbol number of a code word$)$,
  • the dimension  $k$  of the code  $($symbol number of an information word$)$,
  • the minimum distance  $d_{\rm min} = n-k+1$,  which is maximum corresponding to the  "Singleton bound",  and
  • the size  $q = 2^m$  of the Galois field  ${\rm GF}(q)$.

⇒   All elements  $u_i$  of the information word   $\underline{u}= (u_0, \hspace{0.05cm}\text{...} \hspace{0.05cm}, u_i, \hspace{0.05cm}\text{...} \hspace{0.05cm}, u_{k-1})$   and all elements  $c_i$  of the code word $\underline{c}= (c_0, \hspace{0.05cm}\text{...} \hspace{0.05cm}, c_i, \hspace{0.05cm}\text{...} \hspace{0.05cm}, c_{n-1})$  are non-binary symbols and come from the Galois field  ${\rm GF}(q)$.

⇒   For the realization these symbols are also represented in binary and one arrives at the  "equivalent binary Reed–Solomon code"  ${\rm RSC} \ \ (n_{\rm bin},\ k_{\rm bin}, \ d_{\rm min})_2$  with

  • $n_{\rm bin} = n \cdot m$   bits of a code word,
  • $k_{\rm bin} = k \cdot m$   bit of an information word.

⇒   The code rate is not changed by this action:

\[R_{\rm bin} = \frac{k_{\rm bin}}{n_{\rm bin}} = \frac{k \cdot m}{n \cdot m} = \frac{k}{n} = R \hspace{0.05cm}.\]

⇒   Similarly,  the transition from  ${\rm GF}(q)$  to  ${\rm GF}(2)$  does not change the minimum distance  $d_{\rm min}$.

$\text{Example 6:}$  As in  $\text{Example 5}$  $($previous section$)$,  we consider the  $\text{RSC (3, 2, 2)}_4$. 

Derivation of the distance spectra of  $\text{RSC (3, 2, 2)}_4$  and  $\text{RSC (6, 4, 2)}_2$
  1. The upper table shows again the  "distance spectrum"  $\{ \hspace{0.05cm}W_j\hspace{0.05cm}\}$  of the  $\text{RSC (3, 2, 2)}_4$.
  2. The lower table applies to the equivalent binary Reed–Solomon code  $\text{RSC (6, 4, 2)}_2$.


Note.

  • Both codes have the same code rate  $R = k/n =2/3$.
  • Both codes have the same minimum distance  $d_{\rm min} = 2$.
$$\text{RSC (3, 2, 2)}_4\text{:} \hspace{0.3cm} W_0 = 1\hspace{0.05cm}, \hspace{0.2cm}W_2 = 9\hspace{0.05cm}, \hspace{0.2cm}W_3 = 6\hspace{0.3cm}$$
$$\Rightarrow\hspace{0.3cm}W(X) = 1 + 9 \cdot X^2 + 6 \cdot X^3\hspace{0.05cm}.$$
$$\text{RSC (6, 4, 2)}_2\text{:} \hspace{0.3cm} W_0 = 1\hspace{0.05cm}, \hspace{0.2cm}W_2 = 3\hspace{0.05cm}, \hspace{0.2cm}W_3 = 8 \hspace{0.05cm}, \hspace{0.2cm}W_4 = 3\hspace{0.05cm}, \hspace{0.2cm}W_6 = 1.$$
$$\Rightarrow\hspace{0.3cm}W(X) = 1 + 3 \cdot X^2 + 8 \cdot X^3 + 4 \cdot X^4 + X^6 \hspace{0.05cm}.$$


Meaning of the Reed-Solomon codes


Using the  $\text{RSC (3, 2, 2)}_4$  often considered here as an example,  we were able to learn many properties of Reed–Solomon codes in a manageable way.

  • However,  this code is not relevant in practice,  since due to  $d_{\rm min} = 2$  not a single error can be corrected,  and not even a single error can be detected.
  • The next larger code  $\text{RSC (7, 3, 5)}_8$,  which can correct up to  $t = 2$  errors,  has a code table with  $8^3 = 512$  entries and is unsuitable for demonstration purposes.


In practice, very large Reed–Solomon codes are usually used,  for example the  $\text{RSC (255, 223, 33)}_{256}$  with the following properties:

  1. The code is based on the Galois field  $\rm GF(2^8)$.  Each symbol thus corresponds to one byte.  The code rate is relatively large with  $R = 0.8745$.
  2. Despite this large code rate  (i.e., low redundancy),  this code can detect up to  $e = 32$  errors within a block of  $255$  symbols and can correct up to   $t = 16$  errors.
  3. The code table,  however,  would have  $2^{8 \hspace{0.05cm}\cdot \hspace{0.05cm} 223}= 2^{ \hspace{0.05cm} 1784} ≈ 10^{537}$  entries,  and is therefore unlikely to be actually created by anyone.

The great advantage of Reed–Solomon codes  $($and a whole series of further codes derived from them$)$  is on the one hand that they can be constructed analytically closed,  on the other hand their large flexibility regarding the code parameters.  Usually one proceeds as follows:

  1. One specifies the correction capability in the form of the parameter  $t$.  From this,  the minimum distance  $d_{\rm min} = 2t + 1$  and the difference  $n-k = 2t$  corresponding to the Singleton bound.  There is no better value.
  2. Another design parameter is the code rate  $R=k/n$,  where the code word length  $n = 2^m -1$  is not completely arbitrary.  By extension,  shortening and puncturing – see  "Exercise 1.9Z"  – the variety of possible codes can be further increased.
  3. For Reed–Solomon codes,  the weight distribution is known exactly and adaptation to the error structure of the channel is possible.  These codes are particularly well suited for burst error channels,  which are often present in mobile radio systems due to temporary shadowing.
  4. In the case of statistically independent errors,  $\text{BCH codes}$  $($from the inventors  $\rm B$ose–$\rm C$haudhuri–$\rm H$ocquenghem$)$  are more suitable.  These codes are closely related to Reed–Solomon codes,  but they do not always satisfy the Singleton criterion.  A detailed description can be found in [Fri96][1].
  5. Decoding according to the  $\text{BDD Principle}$  ("Bounded Distance Decoding")  can be done computationally very easily,  for example with the  $\text{Berlekamp–Massey Algorithm}$.  Moreover,  the decoder can also process  $\text{Soft Decision Information}$  without much additional effort.

Exercises for the chapter


Exercise 2.07: Reed-Solomon Code (7, 3, 5) to Base 8

Exercise 2.07Z: Reed-Solomon Code (15, 5, 11) to Base 16

Exercise 2.08: Generator Polynomials for Reed-Solomon

Exercise 2.08Z: Addition and Multiplication in GF(2 power 3)

Exercise 2.09: Reed–Solomon Parameters

Exercise 2.10: Reed-Solomon Fault Detection

Exercise 2.10Z: Code Rate and Minimum Distance

References

  1. Friedrichs, B.:  Kanalcodierung - Grundlagen und Anwendungen in modernen Kommunikations- systemen.  Berlin - Heidelberg: Springer, 1996.