Difference between revisions of "Channel Coding/Examples of Binary Block Codes"
Line 44: | Line 44: | ||
:x_1⊕x_2=x_3. | :x_1⊕x_2=x_3. | ||
− | *Für beliebiges k ⇒ n=k+1 unterscheidet sich jedes Codewort von allen anderen an einer geraden Anzahl von Positionen. | + | *Für beliebiges k ⇒ n=k+1 unterscheidet sich jedes Codewort von allen anderen an einer geraden Anzahl von Positionen. Die minimale Distanz des Codes ist dmin=2.<br><br> |
{{BlaueBox|TEXT= | {{BlaueBox|TEXT= | ||
Line 54: | Line 54: | ||
*Die obere Grafik zeigt somit den SPC (3, 2, 2), den SPC (4, 3, 2) und den SPC (5, 4, 2).}}<br> | *Die obere Grafik zeigt somit den SPC (3, 2, 2), den SPC (4, 3, 2) und den SPC (5, 4, 2).}}<br> | ||
− | Der digitale Kanal ändert möglicherweise das Codewort x_=(x1,x2,...,xn) in das Empfangswort y_=(y1,y2,...,yn) | + | Der digitale Kanal ändert möglicherweise das Codewort x_=(x1,x2,...,xn) in das Empfangswort y_=(y1,y2,...,yn). Mit dem Fehlervektor e_=(e1,e2,...,en) gilt: |
:y_=x_⊕e_. | :y_=x_⊕e_. | ||
Line 173: | Line 173: | ||
0.122\,\%\hspace{0.05cm}.</math> | 0.122\,\%\hspace{0.05cm}.</math> | ||
− | *Interessant ist, dass beim RC(6, 1, 6) die Wahrscheinlichkeit Pr(v=u) für eine mögliche und richtige Decodierung mit 98.42% kleiner ist als beim RC(5, 1, 5) mit 1−0.00122≈99.88%.}}<br> | + | *Interessant ist, dass beim RC(6, 1, 6) die Wahrscheinlichkeit Pr(v=u) für eine mögliche und richtige Decodierung mit 98.42% kleiner ist als beim RC (5, 1, 5) mit 1−0.00122≈99.88%.}}<br> |
{{GraueBox|TEXT= | {{GraueBox|TEXT= | ||
Beispiel 5: Leistungsfähigkeit des Wiederholungscodes beim AWGN–Kanal | Beispiel 5: Leistungsfähigkeit des Wiederholungscodes beim AWGN–Kanal | ||
<br> | <br> | ||
+ | |||
Nun betrachten wir den [[Kanalcodierung/Kanalmodelle_und_Entscheiderstrukturen#AWGN.E2.80.93Kanal_bei_bin.C3.A4rem_Eingang|AWGN–Kanal]]. Bei uncodierter Übertragung (oder dem Wiederholungscode mit n=1) ist der Empfangswert y=˜x+η, wobei ˜x∈{+1,−1} das Informationsbit bei bipolarer Signalisierung bezeichnet und η den Rauschterm. Um Verwechslungen mit dem Codeparameter n zu vermeiden, haben wir das Rauschen umbenannt: n → \eta.<br> | Nun betrachten wir den [[Kanalcodierung/Kanalmodelle_und_Entscheiderstrukturen#AWGN.E2.80.93Kanal_bei_bin.C3.A4rem_Eingang|AWGN–Kanal]]. Bei uncodierter Übertragung (oder dem Wiederholungscode mit n=1) ist der Empfangswert y=˜x+η, wobei ˜x∈{+1,−1} das Informationsbit bei bipolarer Signalisierung bezeichnet und η den Rauschterm. Um Verwechslungen mit dem Codeparameter n zu vermeiden, haben wir das Rauschen umbenannt: n → \eta.<br> | ||
Line 188: | Line 189: | ||
*das ''Signal–zu–Rauschleistungsverhältnis'' ρ=1/σ2=2⋅ES/N0,<br> | *das ''Signal–zu–Rauschleistungsverhältnis'' ρ=1/σ2=2⋅ES/N0,<br> | ||
− | *die Energie ES pro Codesymbol ⇒ ''Symbolenergie'',<br> | + | *die Energie ES pro Codesymbol ⇒ ''Symbolenergie'',<br> |
*die normierte Streuung σ des Rauschens, gültig für das bipolare Informationsbit ˜x∈{+1,−1}, und<br> | *die normierte Streuung σ des Rauschens, gültig für das bipolare Informationsbit ˜x∈{+1,−1}, und<br> | ||
Line 211: | Line 212: | ||
*Die Kurve für den Wiederholungsfaktor n erhält man durch Linksverschiebung um 10⋅lgn (in dB) gegenüber der Vergleichskurve. Der Gewinn beträgt 4.77 dB (n=3) bzw. ≈5 dB (n=5).<br> | *Die Kurve für den Wiederholungsfaktor n erhält man durch Linksverschiebung um 10⋅lgn (in dB) gegenüber der Vergleichskurve. Der Gewinn beträgt 4.77 dB (n=3) bzw. ≈5 dB (n=5).<br> | ||
− | *Allerdings ist ein Vergleich bei konstantem ES nicht fair, da man mit | + | *Allerdings ist ein Vergleich bei konstantem ES nicht fair, da man mit dem Repetition Code $\text{RC (5, 1, 5)}$ für die Übertragung eines Informationsbits eine um den Faktor n größere Energie aufwendet: EB=ES/R=n⋅ES. |
Line 218: | Line 219: | ||
{{BlaueBox|TEXT= | {{BlaueBox|TEXT= | ||
Fazit bezüglich Wiederholungscodes beim AWGN–Kanal: | Fazit bezüglich Wiederholungscodes beim AWGN–Kanal: | ||
− | *Die Fehlerwahrscheinlichkeit ist bei fairem Vergleich unabhängig vom Wiederholungsfaktor n: ${\rm Pr}(v \ne u) = {\rm Q}\left (\sqrt{2E_{\rm B} /{N_0} } \right ) | + | *Die Fehlerwahrscheinlichkeit ist bei fairem Vergleich unabhängig vom Wiederholungsfaktor n: ${\rm Pr}(v \ne u) = {\rm Q}\left (\sqrt{2E_{\rm B} /{N_0} } \right ) |
\hspace{0.05cm}.$ | \hspace{0.05cm}.$ | ||
Line 226: | Line 227: | ||
<br> | <br> | ||
[https://de.wikipedia.org/wiki/Richard_Hamming Richard Wesley Hamming] hat 1962 eine Klasse binärer Blockcodes angegeben, die sich durch die Anzahl m=2,3,... der zugesetzten <i>Parity Bits</i> unterscheiden. Für diese Codeklasse gilt: | [https://de.wikipedia.org/wiki/Richard_Hamming Richard Wesley Hamming] hat 1962 eine Klasse binärer Blockcodes angegeben, die sich durch die Anzahl m=2,3,... der zugesetzten <i>Parity Bits</i> unterscheiden. Für diese Codeklasse gilt: | ||
− | *Die Codelänge ergibt sich zu n=2m−1. Möglich sind demzufolge beim Hamming–Code nur die Längen n=3, n=7, n=15, n=31, n=63,n=127, n=255, usw.<br> | + | *Die Codelänge ergibt sich stets zu n=2m−1. Möglich sind demzufolge beim Hamming–Code auch nur die Längen n=3, n=7, n=15, n=31, n=63,n=127, n=255, usw.<br> |
*Ein Informationswort besteht aus k=n−m Bit. Die Coderate ist somit gleich | *Ein Informationswort besteht aus k=n−m Bit. Die Coderate ist somit gleich | ||
Line 236: | Line 237: | ||
*Alle Hamming–Codes weisen die minimale Distanz dmin=3 auf. Bei größerer Codelänge n erreicht man dmin=3 schon mit weniger Redundanz, also bei größerer Coderate R.<br> | *Alle Hamming–Codes weisen die minimale Distanz dmin=3 auf. Bei größerer Codelänge n erreicht man dmin=3 schon mit weniger Redundanz, also bei größerer Coderate R.<br> | ||
− | *Aus der Angabe dmin=3 folgt weiter, dass hier e=dmin−1=2 Fehler erkannt werden können und t=(dmin−1)/2=1 Fehler | + | *Aus der Angabe dmin=3 folgt weiter, dass hier e=dmin−1=2 Fehler erkannt werden können und man t=(dmin−1)/2=1 Fehler korrigieren kann.<br> |
− | *Der Hamming–Code (3, 1, 3) ist identisch mit dem Wiederholungscode (3, 1, 3) und lautet: | + | *Der Hamming–Code $\text{HC (3, 1, 3)}$ ist identisch mit dem Wiederholungscode $\text{RP (3, 1, 3)}$ und lautet: |
− | ::<math>\mathcal{C} = \{ (0, 0, 0) \hspace{0.05cm}, (1, 1, 1) \}\hspace{0.05cm}. </math> | + | ::<math>\mathcal{C} = \big \{ (0, 0, 0) \hspace{0.05cm}, (1, 1, 1) \big \}\hspace{0.05cm}. </math> |
*Bei systematischer Codierung sind die ersten k Stellen eines jeden Hamming–Codewortes x_ identisch mit dem Informationswort u_. Anschließend folgen dann die m=n−k Paritätsbit: | *Bei systematischer Codierung sind die ersten k Stellen eines jeden Hamming–Codewortes x_ identisch mit dem Informationswort u_. Anschließend folgen dann die m=n−k Paritätsbit: | ||
− | ::<math>\underline{x} = ( x_1, x_2, ... \hspace{0.05cm}, x_n) = ( u_1, u_2, ... \hspace{0.05cm}, u_k, p_1, p_2, ... \hspace{0.05cm}, p_{n-k}) | + | ::<math>\underline{x} = ( x_1, x_2,\hspace{0.05cm}\text{...} \hspace{0.05cm}, x_n) = ( u_1, u_2, \hspace{0.05cm}\text{...} \hspace{0.05cm}, u_k, p_1, p_2, \hspace{0.05cm}\text{...} \hspace{0.05cm}, p_{n-k}) |
\hspace{0.05cm}.</math> | \hspace{0.05cm}.</math> | ||
− | [[File:P ID2353 KC T 1 3 S3 v2.png|right|frame|Verdeutlichung des (7, 4, 3)–Hamming–Codes ]] | + | [[File:P ID2353 KC T 1 3 S3 v2.png|right|frame|Verdeutlichung des $\text{(7, 4, 3)}$–Hamming–Codes ]] |
{{GraueBox|TEXT= | {{GraueBox|TEXT= | ||
Beispiel 6: Paritätsgleichungen des (7, 4, 3)-Hamming-Codes | Beispiel 6: Paritätsgleichungen des (7, 4, 3)-Hamming-Codes | ||
− | <br>Im Folgenden betrachten wir stets den (7, 4, 3)–Hamming–Code, der durch das nebenstehende Schaubild verdeutlicht wird. Daraus lassen sich die drei Bedingungen ableiten: | + | <br>Im Folgenden betrachten wir stets den $\text{(7, 4, 3)}$–Hamming–Code, der durch das nebenstehende Schaubild verdeutlicht wird. Daraus lassen sich die drei Bedingungen ableiten: |
::<math>x_1 \oplus x_2 \oplus x_3 \oplus x_5 \hspace{-0.1cm} = \hspace{-0.1cm} 0 \hspace{0.05cm},</math> | ::<math>x_1 \oplus x_2 \oplus x_3 \oplus x_5 \hspace{-0.1cm} = \hspace{-0.1cm} 0 \hspace{0.05cm},</math> | ||
::<math>x_2 \oplus x_3 \oplus x_4 \oplus x_6 \hspace{-0.1cm} = \hspace{-0.1cm} 0 \hspace{0.05cm},</math> | ::<math>x_2 \oplus x_3 \oplus x_4 \oplus x_6 \hspace{-0.1cm} = \hspace{-0.1cm} 0 \hspace{0.05cm},</math> | ||
Line 259: | Line 260: | ||
− | Bei systematischer Codierung des (7, 4, 3)–Hamming–Codes | + | [[File:P ID2351 KC T 1 3 S3c v2.png|right|frame|Zuordnung u_→x_ des systematischen (7, 4, 3)–Hamming–Codes|class=fit]] |
+ | Bei systematischer Codierung des $\text{(7, 4, 3)}$–Hamming–Codes | ||
− | :<math>x_1 = u_1 ,\hspace{0.2cm} | + | ::<math>x_1 = u_1 ,\hspace{0.2cm} |
x_2 = u_2 ,\hspace{0.2cm} | x_2 = u_2 ,\hspace{0.2cm} | ||
x_3 = u_3 ,\hspace{0.2cm} | x_3 = u_3 ,\hspace{0.2cm} | ||
Line 269: | Line 271: | ||
x_7 = p_3 </math> | x_7 = p_3 </math> | ||
− | lauten die Bestimmungsgleichungen der drei Prüfbit, wie aus dem Schaubild | + | lauten die Bestimmungsgleichungen der drei Prüfbit, wie aus dem Schaubild hervorgeht: |
− | + | ||
+ | ::<math>p_1 =u_1 \oplus u_2 \oplus u_3 \hspace{0.05cm},</math> | ||
+ | ::<math>p_2 = u_2 \oplus u_3 \oplus u_4 \hspace{0.05cm},</math> | ||
+ | ::<math>p_3 = u_1 \oplus u_2 \oplus u_4 \hspace{0.05cm}.</math> | ||
+ | |||
− | + | Die Tabelle zeigt die 2k=16 zulässigen Codeworte x_=(x1,x2,x3,x4,x5,x6,x7)=(u1,u2,u3,u4,p1,p2,p3) des systematischen $\text{(7, 4, 3)}$–Codes. | |
− | |||
− | |||
− | |||
− | Die Tabelle zeigt die 2k=16 zulässigen Codeworte x_=(x1,x2,x3,x4,x5,x6,x7)=(u1,u2,u3,u4,p1,p2,p3) des systematischen (7, 4, 3)–Codes. | ||
*Das Informationswort u_=(u1,u2,u3,u4) ist schwarz dargestellt und die Prüfbits p1, p2 und p3 rot. | *Das Informationswort u_=(u1,u2,u3,u4) ist schwarz dargestellt und die Prüfbits p1, p2 und p3 rot. | ||
*Man erkennt anhand dieser Tabelle, dass sich jeweils zwei der 16 möglichen Codeworte in mindestens dmin=3 Binärwerten unterscheiden.}}<br> | *Man erkennt anhand dieser Tabelle, dass sich jeweils zwei der 16 möglichen Codeworte in mindestens dmin=3 Binärwerten unterscheiden.}}<br> | ||
Line 284: | Line 286: | ||
{{GraueBox|TEXT= | {{GraueBox|TEXT= | ||
Beispiel 7: Paritätsgleichungen des (7, 4, 3)-Hamming-Codes | Beispiel 7: Paritätsgleichungen des (7, 4, 3)-Hamming-Codes | ||
− | <br>Wir gehen weiter vom systematischen (7, 4, 3)–Code aus und betrachten das Empfangswort y_=(y1,y2,y3,y4,y5,y6,y7). Zur Decodierung bilden wir die drei Paritätsgleichungen | + | <br> |
+ | |||
+ | Wir gehen weiter vom systematischen (7, 4, 3)–Code aus und betrachten das Empfangswort y_=(y1,y2,y3,y4,y5,y6,y7). Zur Decodierung bilden wir die drei Paritätsgleichungen | ||
::<math> y_1 \oplus y_2 \oplus y_3 \oplus y_5 \hspace{-0.1cm}= \hspace{-0.1cm} 0 \hspace{0.05cm},\hspace{0.5cm}{\rm (I)} </math> | ::<math> y_1 \oplus y_2 \oplus y_3 \oplus y_5 \hspace{-0.1cm}= \hspace{-0.1cm} 0 \hspace{0.05cm},\hspace{0.5cm}{\rm (I)} </math> | ||
Line 290: | Line 294: | ||
::<math>y_1 \oplus y_2 \oplus y_4 \oplus y_7 \hspace{-0.1cm}= \hspace{-0.1cm} 0\hspace{0.05cm}. \hspace{0.5cm}{\rm (III)}</math> | ::<math>y_1 \oplus y_2 \oplus y_4 \oplus y_7 \hspace{-0.1cm}= \hspace{-0.1cm} 0\hspace{0.05cm}. \hspace{0.5cm}{\rm (III)}</math> | ||
− | Unter der Voraussetzung, dass in jedem Codewort höchstens ein Bit verfälscht wird, gelten dann die folgenden Aussagen | + | Unter der Voraussetzung, dass in jedem Codewort höchstens ein Bit verfälscht wird, gelten dann die folgenden Aussagen (v_ bezeichnet hierbei das Decodierergebnis; dieses sollte stets mit u_=(1,0,1,0) übereinstimmen): |
*Das Empfangswort y_=(1,0,1,0,0,1,1) erfüllt alle drei Paritätsgleichungen. Das heißt, dass kein einziger Übertragungsfehler aufgetreten ist ⇒ y_=x_ ⇒ v_=u_=(1,0,1,0).<br> | *Das Empfangswort y_=(1,0,1,0,0,1,1) erfüllt alle drei Paritätsgleichungen. Das heißt, dass kein einziger Übertragungsfehler aufgetreten ist ⇒ y_=x_ ⇒ v_=u_=(1,0,1,0).<br> | ||
Line 297: | Line 301: | ||
*Mit y_=(1,0,1,1,0,1,1) wird nur die Gleichung (I) erfüllt und die beiden anderen nicht. Somit kann man die Verfälschung des vierten Binärsymbols korrigieren, und es gilt auch hier v_=u_=(1,0,1,0).<br> | *Mit y_=(1,0,1,1,0,1,1) wird nur die Gleichung (I) erfüllt und die beiden anderen nicht. Somit kann man die Verfälschung des vierten Binärsymbols korrigieren, und es gilt auch hier v_=u_=(1,0,1,0).<br> | ||
− | *Ein Übertragungsfehler des zweiten Bits ⇒ y_=(1,1,1,0,0,1,1) führt dazu, dass alle drei Paritätsgleichungen nicht erfüllt werden. Auch dieser Fehler lässt sich eindeutig korrigieren.}}<br> | + | *Ein Übertragungsfehler des zweiten Bits ⇒ y_=(1,1,1,0,0,1,1) führt dazu, dass alle drei Paritätsgleichungen nicht erfüllt werden. Auch dieser Fehler lässt sich eindeutig korrigieren da nur u2 in allen Gleichungen vorkommt.}}<br> |
== Aufgaben zum Kapitel == | == Aufgaben zum Kapitel == |
Revision as of 14:05, 5 July 2018
Single Parity–check Codes
Der Single Parity–check Code (SPC) fügt zu dem Informationsblock u_=(u1,u2,...,uk) ein Prüfbit (englisch: Parity ) p hinzu:
- u_=(u1,u2,...,uk)⇒x_=(x1,x2,...,xn)=(u1,u2,...,uk,p).
Die Grafik zeigt drei Coder–Beispiele mit
- |C|=4 (k=2),
- |C|=8 (k=3),
- |C|=16 (k=4).
Dieser sehr einfache Code kann wie folgt charakterisiert werden:
- Aus n=k+1 folgt für die Coderate R=k/n=(n−1)/n und für die Redundanz 1−R=1/n. Für k=2 ergibt sich zum Beispiel die Coderate 2/3 und die relative Redundanz beträgt 33.3%.
- Das Prüfbit erhält man durch die Modulo–2–Addition. Darunter versteht man die Addition im Galoisfeld zur Basis 2 ⇒ GF(2), sodass 1⊕1=0 ergibt:
- p=u1⊕u2⊕...⊕uk.
- Damit enthält jedes gültige Codewort x_ eine gerade Anzahl von Einsen. Ausgedrückt mit ⊕ bzw. in vereinfachter Schreibweise gemäß der zweiten Gleichung lautet diese Bedingung:
- x1⊕x2⊕...⊕xn=0,oder:n∑i=1xi=0,AdditioninGF(2).
- Für k=2 ⇒ n=3 ergeben sich die folgenden vier Codeworte, wobei das Prüfbit p jeweils durch einen kleinen Pfeil markiert ist:
- x_0=(0,0→0),x_1=(0,1→1),x_2=(1,0→1),x_3=(1,1→0).
- Der Code C={(0,0,0), (0,1,1), (1,0,1), (1,1,0)} ist linear, da die Summe zweier beliebiger Codeworte wieder ein gültiges Codewort ergibt, zum Beispiel
- x_1⊕x_2=x_3.
- Für beliebiges k ⇒ n=k+1 unterscheidet sich jedes Codewort von allen anderen an einer geraden Anzahl von Positionen. Die minimale Distanz des Codes ist dmin=2.
Definition: Jeder Single Parity–check Code (SPC) lässt sich formal wie folgt beschreiben:
- C={x_∈GF(2n):mitgeradzahligerAnzahlvonEinseninx_}.
- Mit der allgemeinen Codebezeichnung (n, k, dmin) lässt sich jeder Single Parity–check Code auch mit (n, n−1, 2) benennen.
- Die obere Grafik zeigt somit den SPC (3, 2, 2), den SPC (4, 3, 2) und den SPC (5, 4, 2).
Der digitale Kanal ändert möglicherweise das Codewort x_=(x1,x2,...,xn) in das Empfangswort y_=(y1,y2,...,yn). Mit dem Fehlervektor e_=(e1,e2,...,en) gilt:
- y_=x_⊕e_.
Zur Decodierung des Single Parity–check Codes bildet man das so genannte Syndrom:
- s=y1⊕y2⊕...⊕yn=n∑i=1yi∈{0,1}.
Das Ergebnis s=1 weist dann auf (mindestens) einen Bitfehler innerhalb des Codewortes hin, während s=0 wie folgt zu interpretieren ist:
- Die Übertragung war fehlerfrei, oder:
- Die Anzahl der Bitfehler ist geradzahlig.
Beispiel 1: Wir betrachten den SPC (4, 3, 2) und gehen davon aus, dass das Nullwort gesendet wurde.
Die Tabelle zeigt alle Möglichkeiten, dass f Bit verfälscht werden und gibt das jeweilige Syndrom s∈{0,1} an.
Für das BSC–Modell mit der Verfälschungswahrscheinlichkeit ε=1% ergeben sich dann folgende Wahrscheinlichkeiten:
- Das Informationswort wird richtig decodiert (blaue Hinterlegung):
- Pr(v_=u_)=Pr(y_=x_)=(1−ε)n=0.994≈96%.
- Der Decoder erkennt, dass Übertragungsfehler aufgetreten sind (grüne Hinterlegung):
- {\rm Pr}(s=1) \hspace{-0.1cm} = \hspace{-0.1cm} \sum_{f=1 \atop f \hspace{0.1cm}{\rm ungerade} }^{n} {n \choose f} \cdot \varepsilon^{f} \cdot (1 - \varepsilon)^{n-f} = {4 \choose 1} \cdot 0.01 \cdot 0.99^3 + {4 \choose 3} \cdot 0.01^3 \cdot 0.99 \approx 3.9\,\%\hspace{0.05cm}.
- Das Informationswort wird falsch decodiert (rote Hinterlegung):
- {\rm Pr}(\underline{v} \ne \underline{u}) \hspace{-0.1cm} = \hspace{-0.1cm} \sum_{f=2 \atop f \hspace{0.1cm}{\rm gerade} }^{n} {n \choose f} \cdot \varepsilon^{f} \cdot (1 - \varepsilon)^{n-f} = 1 - {\rm Pr}(\underline{v} = \underline{u}) - {\rm Pr}(s=1)\approx 0.1\,\%\hspace{0.05cm}.
Wir verweisen hier auf das interaktive Applet Binomial- und Poissonverteilung. Die hier gewonnenen Ergebnisse werden auch in der Aufgabe A1.5 nochmals diskutiert.
\text{Beispiel 2:} Eine Fehlerkorrektur des Single Parity–check Codes ist beim BSC–Modell nicht möglich im Unterschied zum BEC–Kanal (Binary Erasure Channel). Bei diesem werden Bitfehler ausgeschlossen. Ist nur ein Bit ausgelöscht (englisch: Erasure, \rm E), so ist aufgrund der Tatsache „die Anzahl der Einsen im Codewort ist gerade” auch eine Fehlerkorrektur möglich, zum Beispiel für den \text{SPC (5, 4, 2)}:
\underline{y} = (1, 0, {\rm E}, 1, 1) \hspace{0.2cm}\Rightarrow\hspace{0.2cm}\underline{z} = (1, 0, 1, 1, 1) \hspace{0.2cm}\Rightarrow\hspace{0.2cm} \underline{v} = (1, 0, 1, 1) = \underline{u}\hspace{0.05cm}, \underline{y}=(0, 1, 1, {\rm E}, 0) \hspace{0.2cm}\Rightarrow\hspace{0.2cm}\underline{z} = (0, 1, 1, 0, 0) \hspace{0.2cm}\Rightarrow\hspace{0.2cm} \underline{v} = (0, 1, 1, 0) = \underline{u}\hspace{0.05cm}, \underline{y} = (0, 1, 0, 1, {\rm E}) \hspace{0.2cm}\Rightarrow\hspace{0.2cm}\underline{z} = (0, 1, 0, 1, 0) \hspace{0.2cm}\Rightarrow\hspace{0.2cm} \underline{v} = (0, 1, 0, 1) = \underline{u}\hspace{0.05cm}.
\text{Beispiel 3:} Auch beim AWGN–Kanal ist Fehlerkorrektur möglich, wenn man Soft Decision anwendet. Für das Folgende gehen wir von bipolarer Signalisierung aus:
- x=0 ⇒ → \tilde{x}= +1, sowie
- x=1 ⇒ → \tilde{x}= -1.
Die Grafik verdeutlicht den hier dargelegten Sachverhalt:
- Beispielsweise lautet der Empfangsvektor (rote Punkte):
- \underline{y} = (+0.8, -1.2, -0.1, +0.5, -0.6) \hspace{0.05cm}.
- Bei harter Entscheidung (Schwelle G = 0, nur die Vorzeichen werden ausgewertet) würde man zu folgendem binären Ergebnis kommen (grüne Quadrate Y_i = y_i/ \vert y_i \vert):
- \underline{Y} = (+1, -1, -1, +1, -1) \hspace{0.05cm}.
- In Symbolschreibweise ergibt sich daraus (0, 1, 1, 0, 1), was kein gültiges Codewort des \text{SPC (5, 4, 2)} ist ⇒ Syndrom s = 1. Also müssen ein, drei oder fünf Bit verfälscht worden sein.
- Die Wahrscheinlichkeit für drei oder fünf Bitfehler ist allerdings um Größenordnungen kleiner als diejenige für einen einzigen Fehler. Die Annahme „ein Bitfehler” ist deshalb nicht abwegig.
- Da der Empfangswert y_3 sehr nahe an der Schwelle G = 0 liegt, geht man davon aus, dass genau dieses Bit verfälscht wurde.
- Damit fällt bei Soft Decision die Entscheidung für \underline{z} = (0, 1, 0, 0, 1) ⇒ \underline{v} = (0, 1, 0, 0).
- Die Blockfehlerwahrscheinlichkeit {\rm Pr}(\underline{v} \ne \underline{u}) ist so am geringsten.
Wiederholungscodes
\text{Definition:} Ein Wiederholungscode (englisch: Repetition Code, \rm RC) ist ein linearer binärer (n, \, k)–Blockcode der Form
- \mathcal{C} = \big \{ \underline{x} \in {\rm GF}(2^n): x_i = x_j \hspace{0.15cm}{\rm f\ddot{u}r \hspace{0.15cm}alle\hspace{0.25cm} } i, j = 1, \hspace{0.05cm} \text{...} \hspace{0.05cm}, n \big \}.
- Der Codeparameter n bezeichnet die Codelänge. Unabhängig von n gilt stets k = 1.
- Entsprechend existieren nur die zwei Codeworte (0, 0, \hspace{0.05cm} \text{...} \hspace{0.05cm} , 0) und (1, 1, \hspace{0.05cm}\text{...}\hspace{0.05cm} , 1), die sich in n Binärstellen unterscheiden.
- Daraus folgt für die minimale Distanz d_{\rm min} = n.
Die Grafik zeigt Wiederholungscodes für
- n=3,
- n=4,
- n=5.
- Dieser (n, \, 1, \, n)–Blockcode besitzt die sehr kleine Coderate R = 1/n, ist also nur für die Übertragung bzw. Speicherung kleiner Dateien geeignet.
- Andererseits ist der Wiederholungscode sehr robust.
- Insbesondere beim BEC–Kanal (Binary Erasure Channel) genügt ein einziges richtig übertragenes Bit an beliebiger Position (alle anderen Bit können ausgelöscht sein), um das Informationswort richtig zu decodieren.
\text{Beispiel 4: Decodierung und Fehlerwahrscheinlichkeiten beim BSC–Kanal}
Es gelte der BSC–Kanal mit \varepsilon = 10\%. Die Decodierung basiere auf dem Majoritätsprinzip.
- Bei ungeradem n können e=n-1 Bitfehler erkannt und t=(n-1)/2 Bitfehler korrigiert werden. Damit ergibt sich für die Wahrscheinlichkeit der korrekten Decodierung der Informationsbits u:
- {\rm Pr}(v = u) = \sum_{f=0 }^{(n-1)/2} {n \choose f} \cdot \varepsilon^{f} \cdot (1 - \varepsilon)^{n-f} \hspace{0.05cm}.
- Die nachfolgenden Zahlenwerte gelten für n = 5. Das heißt: Es sind t = 2 Bitfehler korrigierbar:
- {\rm Pr}(v = u) = (1 - \varepsilon)^5 + 5 \cdot \varepsilon \cdot (1 - \varepsilon)^4 + 10 \cdot \varepsilon^2 \cdot (1 - \varepsilon)^3 \approx 99.15\,\%
- \Rightarrow\hspace{0.3cm}{\rm Pr}(v \ne u) = 1- {\rm Pr}(v = u) \approx 0.85\,\%\hspace{0.05cm}.
- Bei geradem n können dagegen nur t=n/2-1 Fehler korrigiert werden. Erhöht man n von 5 auf 6, so sind weiterhin auch nur zwei Bitfehler innerhalb eines Codewortes korrigierbar. Einen dritten Bitfehler kann man zwar nicht korrigieren, aber zumindest erkennen:
- {\rm Pr}({\rm nicht\hspace{0.15cm} korrigierbarer\hspace{0.15cm} Fehler}) = {6 \choose 3} \cdot \varepsilon^{3} \cdot (1 - \varepsilon)^{3}= 20 \cdot 0.1^{3} \cdot 0.9^{3}\approx 1.46\,\%\hspace{0.05cm}.
- Ein (unerkannter) Decodierfehler (v \ne u) ergibt sich erst, wenn innerhalb des 6 Bit–Wortes vier oder mehr Bit verfälscht wurden. Als Näherung unter der Annahme, dass fünf oder sechs Bitfehler sehr viel unwahrscheinlicher sind als vier, gilt:
- {\rm Pr}(v \ne u) \approx {6 \choose 4} \cdot \varepsilon^{4} \cdot (1 - \varepsilon)^{2}= 0.122\,\%\hspace{0.05cm}.
- Interessant ist, dass beim \text{RC(6, 1, 6)} die Wahrscheinlichkeit {\rm Pr}(v = u) für eine mögliche und richtige Decodierung mit 98.42\% kleiner ist als beim \text{RC (5, 1, 5)} mit 1- 0.00122 \approx 99.88\%.
\text{Beispiel 5: Leistungsfähigkeit des Wiederholungscodes beim AWGN–Kanal}
Nun betrachten wir den AWGN–Kanal. Bei uncodierter Übertragung (oder dem Wiederholungscode mit n=1) ist der Empfangswert y = \tilde{x}+\eta, wobei \tilde{x} \in \{+1, -1\} das Informationsbit bei bipolarer Signalisierung bezeichnet und \eta den Rauschterm. Um Verwechslungen mit dem Codeparameter n zu vermeiden, haben wir das Rauschen umbenannt: n → \eta.
Für die Fehlerwahrscheinlichkeit gilt mit dem komplementären Gaußschen Fehlerintegral {\rm Q}(x)
- {\rm Pr}(v \ne u) = {\rm Q}(\sqrt{\rho}) \hspace{0.05cm},
wobei folgende physikalische Größen zu verwenden sind:
- das Signal–zu–Rauschleistungsverhältnis \rho= 1/\sigma^2 = 2 \cdot E_{\rm S}/N_0,
- die Energie E_{\rm S} pro Codesymbol ⇒ Symbolenergie,
- die normierte Streuung \sigma des Rauschens, gültig für das bipolare Informationsbit \tilde{x} \in \{+1, -1\}, und
- die konstante (einseitige) Rauschleistungsdichte N_0 des AWGN–Rauschens.
Bei einem (n, 1, n)–Wiederholungscode ergibt sich dagegen für den Eingangswert des Maximum–Likelihood–Decoders y \hspace{0.04cm}' = \tilde{x} \hspace{0.04cm}'+\eta \hspace{0.04cm}' mit folgenden Eigenschaften:
- \tilde{x} \hspace{0.04cm}' =\sum_{i=1 }^{n} \tilde{x}_i \in \{ +n, -n \}\hspace{0.2cm} \Rightarrow\hspace{0.2cm} n{\rm -fache \hspace{0.15cm}Amplitude} \hspace{0.2cm} \Rightarrow\hspace{0.2cm}n^2{\rm -fache \hspace{0.15cm}Leistung}\hspace{0.05cm},
- \eta\hspace{0.04cm}' = \sum_{i=1 }^{n} \eta_i\hspace{0.2cm} \Rightarrow\hspace{0.2cm} n{\rm -fache \hspace{0.15cm}Varianz:\hspace{0.15cm} } \sigma^2 \rightarrow n \cdot \sigma^2\hspace{0.05cm},
- \rho\hspace{0.04cm}' = \frac{n^2}{n \cdot \sigma^2} = n \cdot \rho \hspace{0.2cm} \Rightarrow\hspace{0.2cm}{\rm Pr}(v \ne u) = {\rm Q}(\sqrt{n \cdot \frac{2E_{\rm S} }{N_0} } )\hspace{0.05cm}.
Die linke Grafik zeigt die Fehlerwahrscheinlichkeit in doppelt logarithmischer Darstellung. Als Abszisse ist 10 \cdot \lg \, (E_{\rm S}/N_0) aufgetragen. Diese Kurvenschar kann wie folgt interpretiert werden:
- Trägt man die Fehlerwahrscheinlichkeit über der Abszisse 10 \cdot \lg \, (E_{\rm S}/N_0) auf, so ergibt sich durch n–fache Wiederholung gegenüber uncodierter Übertragung (n=1) eine signifikante Verbesserung.
- Die Kurve für den Wiederholungsfaktor n erhält man durch Linksverschiebung um 10 \cdot \lg \, n (in dB) gegenüber der Vergleichskurve. Der Gewinn beträgt 4.77 \ {\rm dB} \ (n = 3) bzw. \approx 5 \ {\rm dB} \ (n = 5).
- Allerdings ist ein Vergleich bei konstantem E_{\rm S} nicht fair, da man mit dem Repetition Code \text{RC (5, 1, 5)} für die Übertragung eines Informationsbits eine um den Faktor n größere Energie aufwendet: E_{\rm B} = E_{\rm S}/{R} = n \cdot E_{\rm S}\hspace{0.05cm}.
Aus der rechten Grafik erkennt man, dass alle Kurven genau übereinander liegen, wenn auf der Abszisse 10 \cdot \lg \, (E_{\rm S}/N_0) aufgetragen wird.
\text{Fazit bezüglich Wiederholungscodes beim AWGN–Kanal:}
- Die Fehlerwahrscheinlichkeit ist bei fairem Vergleich unabhängig vom Wiederholungsfaktor n: {\rm Pr}(v \ne u) = {\rm Q}\left (\sqrt{2E_{\rm B} /{N_0} } \right ) \hspace{0.05cm}.
- Beim AWGN–Kanal ist durch einen Wiederholungscode kein Codiergewinn zu erzielen.
Hamming–Codes
Richard Wesley Hamming hat 1962 eine Klasse binärer Blockcodes angegeben, die sich durch die Anzahl m = 2, 3, \text{...} der zugesetzten Parity Bits unterscheiden. Für diese Codeklasse gilt:
- Die Codelänge ergibt sich stets zu n = 2^m -1. Möglich sind demzufolge beim Hamming–Code auch nur die Längen n = 3, n = 7, n = 15, n = 31, n = 63,n = 127, n = 255, usw.
- Ein Informationswort besteht aus k = n-m Bit. Die Coderate ist somit gleich
- R = \frac{k}{n} = \frac{2^m - 1 - m}{2^m - 1} \in \{1/3, \hspace{0.1cm}4/7,\hspace{0.1cm}11/15,\hspace{0.1cm}26/31,\hspace{0.1cm}57/63, \hspace{0.1cm}120/127,\hspace{0.1cm}247/255, \hspace{0.05cm} \text{...} \hspace{0.05cm} \}\hspace{0.05cm}.
- Alle Hamming–Codes weisen die minimale Distanz d_{\rm min} = 3 auf. Bei größerer Codelänge n erreicht man d_{\rm min} = 3 schon mit weniger Redundanz, also bei größerer Coderate R.
- Aus der Angabe d_{\rm min} = 3 folgt weiter, dass hier e = d_{\rm min} -1 =2 Fehler erkannt werden können und man t = (d_{\rm min} -1)/2 = 1 Fehler korrigieren kann.
- Der Hamming–Code \text{HC (3, 1, 3)} ist identisch mit dem Wiederholungscode \text{RP (3, 1, 3)} und lautet:
- \mathcal{C} = \big \{ (0, 0, 0) \hspace{0.05cm}, (1, 1, 1) \big \}\hspace{0.05cm}.
- Bei systematischer Codierung sind die ersten k Stellen eines jeden Hamming–Codewortes \underline{x} identisch mit dem Informationswort \underline{u}. Anschließend folgen dann die m = n-k Paritätsbit:
- \underline{x} = ( x_1, x_2,\hspace{0.05cm}\text{...} \hspace{0.05cm}, x_n) = ( u_1, u_2, \hspace{0.05cm}\text{...} \hspace{0.05cm}, u_k, p_1, p_2, \hspace{0.05cm}\text{...} \hspace{0.05cm}, p_{n-k}) \hspace{0.05cm}.
\text{Beispiel 6: Paritätsgleichungen des (7, 4, 3)-Hamming-Codes}
Im Folgenden betrachten wir stets den \text{(7, 4, 3)}–Hamming–Code, der durch das nebenstehende Schaubild verdeutlicht wird. Daraus lassen sich die drei Bedingungen ableiten:
- x_1 \oplus x_2 \oplus x_3 \oplus x_5 \hspace{-0.1cm} = \hspace{-0.1cm} 0 \hspace{0.05cm},
- x_2 \oplus x_3 \oplus x_4 \oplus x_6 \hspace{-0.1cm} = \hspace{-0.1cm} 0 \hspace{0.05cm},
- x_1 \oplus x_2 \oplus x_4 \oplus x_7 \hspace{-0.1cm} = \hspace{-0.1cm} 0 \hspace{0.05cm}.
- Im Schaubild kennzeichnet der rote Kreis die erste Prüfgleichung, der grüne die zweite und der blaue die letzte.
- In jedem Kreis muss die Anzahl der Einsen geradzahlig sein.
Bei systematischer Codierung des \text{(7, 4, 3)}–Hamming–Codes
- x_1 = u_1 ,\hspace{0.2cm} x_2 = u_2 ,\hspace{0.2cm} x_3 = u_3 ,\hspace{0.2cm} x_4 = u_4 ,\hspace{0.2cm} x_5 = p_1 ,\hspace{0.2cm} x_6 = p_2 ,\hspace{0.2cm} x_7 = p_3
lauten die Bestimmungsgleichungen der drei Prüfbit, wie aus dem Schaubild hervorgeht:
- p_1 =u_1 \oplus u_2 \oplus u_3 \hspace{0.05cm},
- p_2 = u_2 \oplus u_3 \oplus u_4 \hspace{0.05cm},
- p_3 = u_1 \oplus u_2 \oplus u_4 \hspace{0.05cm}.
Die Tabelle zeigt die 2^k = 16 zulässigen Codeworte \underline{x} = ( x_1, x_2, x_3, x_4, x_5, x_6, x_7) = ( u_1, u_2, u_3, u_4, p_1, p_2, p_3) des systematischen \text{(7, 4, 3)}–Codes.
- Das Informationswort \underline{u} =( u_1, u_2, u_3, u_4) ist schwarz dargestellt und die Prüfbits p_1, p_2 und p_3 rot.
- Man erkennt anhand dieser Tabelle, dass sich jeweils zwei der 16 möglichen Codeworte in mindestens d_{\rm min} = 3 Binärwerten unterscheiden.
Später wird die Decodierung linearer Blockcodes noch ausführlich behandelt. Das folgende Beispiel soll die Decodierung des Hamming–Codes eher intuitiv erklären.
\text{Beispiel 7: Paritätsgleichungen des (7, 4, 3)-Hamming-Codes}
Wir gehen weiter vom systematischen (7, 4, 3)–Code aus und betrachten das Empfangswort \underline{y} = ( y_1, y_2, y_3, y_4, y_5, y_6, y_7). Zur Decodierung bilden wir die drei Paritätsgleichungen
- y_1 \oplus y_2 \oplus y_3 \oplus y_5 \hspace{-0.1cm}= \hspace{-0.1cm} 0 \hspace{0.05cm},\hspace{0.5cm}{\rm (I)}
- y_2 \oplus y_3 \oplus y_4 \oplus y_6 \hspace{-0.1cm}= \hspace{-0.1cm}0 \hspace{0.05cm},\hspace{0.5cm}{\rm (II)}
- y_1 \oplus y_2 \oplus y_4 \oplus y_7 \hspace{-0.1cm}= \hspace{-0.1cm} 0\hspace{0.05cm}. \hspace{0.5cm}{\rm (III)}
Unter der Voraussetzung, dass in jedem Codewort höchstens ein Bit verfälscht wird, gelten dann die folgenden Aussagen (\underline{v} bezeichnet hierbei das Decodierergebnis; dieses sollte stets mit \underline{u} = (1, 0, 1, 0) übereinstimmen):
- Das Empfangswort \underline{y} = (1, 0, 1, 0, 0, 1, 1) erfüllt alle drei Paritätsgleichungen. Das heißt, dass kein einziger Übertragungsfehler aufgetreten ist ⇒ \underline{y} = \underline{x} ⇒ \underline{v} = \underline{u} = (1, 0, 1, 0).
- Werden zwei der drei Paritätsgleichungen erfüllt wie zum Beispiel für das empfangene Wort \underline{y} =(1, 0, 1, 0, 0, 1, 0), so wurde ein Paritätsbit verfälscht und es gilt auch hier \underline{v} = \underline{u} = (1, 0, 1, 0).
- Mit \underline{y} = (1, 0, 1, 1, 0, 1, 1) wird nur die Gleichung (I) erfüllt und die beiden anderen nicht. Somit kann man die Verfälschung des vierten Binärsymbols korrigieren, und es gilt auch hier \underline{v} = \underline{u} = (1, 0, 1, 0).
- Ein Übertragungsfehler des zweiten Bits ⇒ \underline{y} = (1, 1, 1, 0, 0, 1, 1) führt dazu, dass alle drei Paritätsgleichungen nicht erfüllt werden. Auch dieser Fehler lässt sich eindeutig korrigieren da nur u_2 in allen Gleichungen vorkommt.
Aufgaben zum Kapitel
Aufgabe 1.5: SPC (5, 4) und BEC–Modell
Aufgabe 1.5Z: SPC (5, 4) vs. RC (5, 1)
Aufgabe 1.6: Zum (7, 4)–Hamming–Code