Leseprobe - VDE Verlag

Werbung
5
Bild 5.1
Der CD-Player
Mikroskopische Aufnahme der Oberfläche einer CD (© Kenneth M. Bart)
Die Musik-CD hat in einem Siegeszug in den 1980er-Jahren den Plattenspieler verdrängt
und ist heute überall verbreitet. Die CD bietet eine sehr gute Musikqualität, und die CDPlayer sind preiswert. Damit dieses System funktionieren konnte, musste eine Vielzahl von
Problemen durch Ingenieure gelöst werden. Das erste grundsätzliche Problem, das geklärt
werden musste, war, wie viel Musik auf eine CD passen sollte. Da das System neu war,
konnte man diesen Parameter festlegen. Der Grund, warum man sich auf 74 min und 33 s
geeinigt hat, war folgender: Es sollte mindestens Beethovens neunte Symphonie „Alle Menschen werden Brüder“ [17] auf eine CD passen. Da Ingenieure sorgfältig sind, hat man die
Ausführungsdauer verschiedener Dirigenten gemessen. Herbert von Karajan brauchte nur
52 min, dagegen benötigte Wilhelm Furtwängler für diese Symphonie im Jahr 1951 bei den
Bayreuther Festspielen über 70 min.
Auf der spiegelnden Seite der CD befinden sich Löcher und Nichtlöcher, welche die binären
Daten repräsentieren. Die spiralförmige Spur der Daten besitzt eine Länge von 5,38 km und
wird von einem Laserstrahl mit 4,8 km
h gelesen, was ungefähr Schrittgeschwindigkeit entspricht. Man kann sich vorstellen, dass es außer der Kapazitätsfrage auch eine Menge tech-
118
5 Der CD-Player
nischer Probleme gab, die zu lösen waren. Neben den Fortschritten in der Mikroelektronik
waren vor allem mathematische Methoden und Verfahren wichtig, um dieses technische
Meisterwerk zu kreieren. Von der großen Menge an Mathematik, die im CD-Player enthalten
ist, wollen wir hier die Methode der Fehlerkorrektur herausgreifen und beschreiben. Dabei
wird die Zahlentheorie im Vordergrund stehen, die das Rechnen mit ganzen Zahlen zum
Inhalt hat. Wir benötigen hier das Teilen ganzer Zahlen mit Rest.
Der Einsatz von Verfahren zur Fehlerkorrektur bei der Musik-CD ermöglicht, dass Kratzer (bis
zu einem gewissen Ausmaß) nicht hörbar sind. Das Konzept besteht darin, der Information
Redundanz anzufügen, die benutzt werden kann, um Fehler zu erkennen und zu korrigieren. Wir können uns die Fehlerkorrektur am Beispiel unserer Sprache verdeutlichen, die viel
Redundanz enthält und somit Fehlerkorrektur ermöglicht. So wird jeder das Wort „Infarmatiom“ als „Information“ mit zwei Fehlern korrigieren, indem er das Wort „Infarmatiom“
mit allen gültigen Wörtern, dem Codebuch, vergleicht. Man nimmt dabei an, dass weniger
Fehler wahrscheinlicher sind als viele. Nimmt man an, es seien drei Fehler aufgetreten, so
kann man „Infarmatiom“ auch zu dem Wort „Inkarnation“ korrigieren. Wenn man alle außer einem Buchstaben als fehlerhaft annimmt, kann man zu sehr vielen gültigen Wörtern
korrigieren, und dies ist nicht mehr eindeutig. Die Worte „Aufstellung“ und „Abfalleimer“
sind zwei mögliche Lösungen, die nur einen bzw. zwei Buchstaben mit „Infarmatiom“ gemeinsam haben. In Analogie zum Vorgehen bei der deutschen Sprache kann man sich ein
technisches Verfahren ausdenken, das ein gegebenes Wort mit allen gültigen Codewörtern
vergleicht und das wahrscheinlichste, in der Regel das mit den wenigsten Fehlern, aussucht.
Wie dies im Detail funktioniert, soll hier beschrieben werden.
Anmerkung zum Lesen: Dieses Kapitel ist in zwei mathematische Niveaus gegliedert. Die
Abschnitte 5.1 bis 5.3 beschreiben die mathematischen Grundlagen und die Verfahren zur
Fehlerkorrektur anhand vieler Beispiele, jedoch überwiegend ohne Beweise. Für Leser, die
eine etwas höhere abstrakte mathematische Denkweise mögen, wiederholen die Abschnitte
5.4 bis 5.5 die gleichen Verfahren allgemeiner, und es werden zusätzlich interessante Sätze und deren Beweise angegeben. Besonders empfehlenswert für diese Lesergruppe ist die
elegante Lösung der Fehlerkorrektur durch Anwendung des euklidischen Algorithmus in
Abschnitt 5.5.2. Dieser wird in Abschnitt 5.4.2 in üblicher und in erweiterter Form beschrieben. Der euklidische Algorithmus für sich selbst betrachtet ist ein Verfahren, das zur Lösung
vieler Probleme einsetzbar ist.
5.1
Problemstellung
Ursprünglich gab es ein Problem bei dem Herstellungsverfahren von CDs, denn die Ausbeute
bei der Fertigung war zu gering. Da die Produktion nicht gut genug war, entstanden zufällige
Fehler in den Daten auf der CD, die damit Ausschuss wurde und nicht funktioniert hat. Jeder
kennt das Problem, dass es schlecht gebrannte CDs gibt, die nicht mehr lesbar oder abspielbar
sind. Deshalb hat man sich entschlossen Fehlerkorrektur einzusetzen, die die Fehler bei der
Fertigung korrigieren kann. Als Nebeneffekt werden nun neben den Fertigungsfehlern auch
Fehler, die durch Kratzer oder Schmutz entstehen, korrigiert.
5.1 Problemstellung
119
Betrachten wir zunächst, wie Musik digitalisiert wird. Entsprechend Abschnitt 4.1 wandelt
ein Mikrofon den Schall in ein elektrisches Signal um, das gespeichert werden muss. Im Fall
der Musik-CD misst man 44 100 Mal pro Sekunde den Wert dieses Signals und speichert
diese Abtastwerte in binärer Form, d. h. als Dualzahl ab. Bei der Musik-CD besteht jeder
abgetastete Wert aus 16 bit. Also entstehen 16 · 44 100 = 705 600 bit/s pro Stereokanal. Die
Anzahl der Quantisierungsstufen, die man entsprechend Abschnitt 4.1 nummerieren kann,
ist mit 216 = 65 536 sehr groß. Damit kann die Musik von sehr leise bis extrem laut in
sehr feinen Stufen aufgelöst werden1 . In Bild 5.2 ist ein Blockschaltbild angegeben, das
den ganzen Vorgang, von der Musik bis zur Erzeugung der binären Daten und zurück,
darstellt. Man erkennt links oben die Abtastung des elektrischen Musiksignals durch den
AD-Umsetzer. Dieser Block wird als Quellcodierung bezeichnet. Linear quantisiert bedeutet
dabei, dass die Quantisierungsstufen der Abtastung entsprechend Abschnitt 4.1 gleich groß
C&D-Bit
(Titel, Länge, ...)
AD-Umsetzer
Abtastrate 44,1 kHz
16 bit
linear quantisiert
Cross-Interleaved
Reed-SolomonCodierer
R = 34
Quellcodierung
Kanalcodierung
EFM
rechter Kanal „eight to fourteen
linker Kanal
modulation“
+ 3 merging bit
+ Synchronisation
1 Mbit/s
4,32 Mbit/s
Störung
Master Disc
Vervielfältigung
berührungsfreies
Lesen
Compact Disc
linker Kanal
Signalverarbeitung
Interpolation
DA-Umsetzer
Decodierer
Fehlerkorrektur
Fehlererkennung
Demodulation
C&D-Bit
Bild 5.2
1
Speicherung der Bits auf der CD
Als die ersten CD-Player auf den Markt kamen, gingen durch Joseph Haydns Symphonie Nr. 94
„mit dem Paukenschlag“ [18] etliche Lautsprecher kaputt, und zwar genau durch den Paukenschlag.
Mit den Werten der Abtastung kann extrem schnell zwischen leise und laut geschaltet werden, was
für viele Lautsprecher zu schnell war.
120
5 Der CD-Player
sind. Das abgetastete Signal wird dann dem Block Kanalcodierung zugeführt, in dem mit
einem sog. Reed-Solomon-Codierer Redundanz zugefügt wird. Dies ist der Gegenstand dieses Kapitels, d. h.: Wir werden die Codierung und Decodierung von Reed-Solomon-Codes
beschreiben. Nach der Codierung kommen zusätzliche Bits hinzu, was im Block oben rechts
in Bild 5.2 skizziert ist. Zum einen die gleiche Menge Bits vom anderen Stereokanal und
zum anderen die sog. C&D-Bits, die die Informationen zum Musiktitel, der Länge des Musikstücks etc. enthalten. Die „eight to fourteen modulation“ dient zur Vermeidung von zu
langen Null- oder Eins-Folgen in den Daten. Dies wird erreicht, indem man einen Block
von 8 bit auf einen Block von 14 bit abbildet, der eben nicht aus lauter Nullen bzw. Einsen besteht. Entsprechend der Mikroskopaufnahme in Bild 5.1 würde eine zu lange Folge
von Nullen bedeuten, dass man sehr lange kein Loch (pit) hat. Dies hätte zur Konsequenz,
dass die Synchronisation des Laserstrahls, d. h. den Laserstrahl exakt auf der Spur zu halten, nicht mehr so gut funktionieren würde. Diese Synchronisation basiert nämlich auf der
Änderungen zwischen Loch (pit) und Nichtloch. Da es sich bei den pits um Dimensionen im
Mikrometerbereich1 handelt, ist klar, dass ein Kratzer oder Schmutz die gespeicherten Daten
ebenso verfälschen kann, wie Probleme beim Herstellungsverfahren, was durch den mittleren Block rechts in Bild 5.2 angedeutet ist. Insgesamt werden 4 320 000 bit/s (= 4,32 Mbit/s)
benötigt, um die Musikqualität der CD sicherzustellen. Die unteren drei Blöcke in Bild 5.2
stellen die Wiedergabe der Musik dar. Zunächst wird im Block Demodulation die „eight to
fourteen modulation“ rückgängig gemacht, indem einem Block aus 14 bit der entsprechende
Block von 8 bit zugewiesen wird. Dann werden die Bits nach Stereokanälen und C&D-Bits
getrennt. Anschließend ist der Reed-Solomon-Decodierer-Block gezeichnet, der evtl. aufgetretene Fehler korrigiert und erkennt und die korrigierten Daten weitergibt. Im DA-Umsetzer
wird aus dem digitalen Signal wieder ein analoges Signal erzeugt, das dann verstärkt auf
einen Lautsprecher gegeben wird.
Die Problemstellung lautet demnach, wie kann man Fehler in den Daten korrigieren? Dazu
werden wir Reed-Solomon-Codes beschreiben, jedoch zunächst die notwendigen mathematischen Grundlagen dafür einführen.
Problemstellung
Wie kann man Fehler in Daten korrigieren?
5.2
Elementare mathematische Grundlagen
Für die Fehlerkorrektur mit Reed-Solomon-(RS-)Codes benötigen wir nur das Rechnen mit
ganzen Zahlen. Dazu werden wir als erstes die Modulo-Rechnung einführen. Basis dafür
ist das Teilen ganzer Zahlen mit Rest. Wir werden als Teiler Primzahlen verwenden und
damit Primkörper definieren, in denen wir dann rechnen können. Die Eigenschaften eines
1
1 μm = 0,000 001 m
5.2 Elementare mathematische Grundlagen
121
Primkörpers sind so geartet, dass wir die gewohnten Grundrechenarten Addition, Subtraktion, Multiplikation und Division benutzen können. Der Vorteil beim Rechnen in einem
Primkörper ist, dass er nur endlich viele Elemente besitzt, weshalb er auch als endlicher
Körper bezeichnet wird. Danach werden wir Polynome in einer Variablen über Primkörpern
definieren. Die Variable kann dabei auch nur die endlich vielen Werte aus dem Körper annehmen. Zum Schluss besprechen wir noch den Fundamentalsatz der Algebra bei endlichen
Körpern, der eine Schlüsselrolle bei der Definition von RS-Codes spielen wird. Außerdem
werden wir Pierre de Fermats kleinen Satz erörtern, dessen Aussage zu einem speziellen
Polynom führt. Es sei darauf hingewiesen, dass in diesem Kapitel in Abschnitt 5.4 noch
weitere mathematische Grundlagen eingeführt werden, um die Decodierung nochmals etwas
abstrakter zu beschreiben.
5.2.1
Modulo-Rechnung bei ganzen Zahlen
„Die ganzen Zahlen hat der liebe Gott gemacht, alles andere ist Menschenwerk.“
Leopold Kronecker, berühmter deutscher Mathematiker, 1823–1891 [19]
Die Menge der ganzen Zahlen sei Z = {r, –2, –1, 0, 1, 2, r}. Setzen wir voraus, dass wir nur
ganze Zahlen kennen, so können wir eine Division einführen, deren Ergebnis zwei ganze
Zahlen liefert, nämlich ein Divisionsergebnis und einen Rest, der eine ganze Zahl kleiner als
der Teiler ist. Für alle ganzen Zahlen a, b ∈ Z existiert ein Divisionsergebnis q ∈ Z und ein
Rest r ∈ Z mit 0 o r < b, sodass gilt:
a = b·q+r
←→
a : b = q Rest r.
Bei der Modulo-Rechnung steht der Rest r im Mittelpunkt und der Quotient q ist zweitrangig.
Im Prinzip führt jeder von uns täglich Modulo-Rechnung durch, indem er die Wochentage
benennt. Es ist klar, dass wenn heute Sonntag ist, in sieben Tagen wieder Sonntag sein wird.
Es wird auch in 14, 21, 28, r, also in j ·7, j ∈ N Tagen wieder Sonntag sein. Genauso war vor
–7 Tagen Sonntag und vor –14, –21, r auch. Allgemein sind alle Tage j · 7, j ∈ Z Sonntage.
Definition 5.1 Modulo-Rechnung
Seien a, b, q, r ∈ Z und b n 0. Die Modulo-Rechnung a mod b besitzt als Ergebnis den Rest r.
Folgende Notationen beschreiben das Teilen ganzer Zahlen mit Rest einer Zahl a durch b.
a:b =
a =
a≡
b |
q Rest r
b·q+r
r mod b
a–r
sprich: a kongruent r Modulo b
b teilt (a – r).
Falls der Rest r = 0 ist, so teilt b die Zahl a, und man schreibt b|a.
Wir werden im Folgenden statt ≡ das Gleichheitszeichen = verwenden.
122
5 Der CD-Player
Beispiel 5.2 Modulo-Rechnung
Wir wollen einige Zahlenbeispiele zur Teilung ganzer Zahlen mit Rest ausführen:
17 : 5 = 3 Rest 2 −→
Rest, d. h. 5|15.
17 = 2 mod 5, offensichtlich teilt 5 die Differenz 17 – 2 = 15 ohne
29 : 7 = 4 Rest 1 −→
Rest teilt, also 7|28.
29 = 1 mod 7, auch hier gilt, dass 7 die Differenz 29 – 1 = 28 ohne
113 : 11 = 10 Rest 3 −→ 113 = 3 mod 11, erneut können wir sagen, dass 11 die Differenz
113 – 3 = 110 ohne Rest teilt, denn 110 = 10 · 11.
42:113 = 0 Rest 42 −→
♦
42 = 42 mod 113.
Eine Besonderheit der Modulo-Rechnung ist, dass eine ganze Klasse von Zahlen das gleiche
Ergebnis mod b liefert:
a = c mod b
−→
∀i∈Z : a + i · b = c mod b,
wobei (∀i∈Z :) bedeutet: Für alle ganzen Zahlen i gilt.
Beispiel 5.3 Zahlen, die Modulo gerechnet das gleiche Ergebnis liefern
Wir suchen alle Zahlen, die mod 7 gerechnet das Ergebnis 4 liefern. Einige Beispiele sind:
18 = 4 mod 7, 25 = 4 mod 7, 11 = 4 mod 7 usw. Wir können also zu der Zahl 4 Vielfache von
7 addieren und erhalten so alle Zahlen, die das gewünschte Ergebnis 4 ergeben:
{r, –17, –10, –3, 4, 11, 18, 25, 32, r} = 4 mod 7
−→ {4 + j · 7, j ∈ Z} = 4 mod 7.
♦
Jetzt wollen wir an einem Beispiel untersuchen, wie die Modulo-Rechnung bei Summen und
Produkten funktioniert.
Beispiel 5.4 Modulo-Rechnung bei Summen und Produkten
Betrachten wir zunächst eine Addition bei der mod-7-Rechnung. Wir errechnen 25 + 76 =
101 = 3 mod 7, wobei wir 101 durch 7 teilen müssen und den Rest bestimmen. Rechnen wir
dagegen erst 25 = 4 mod 7 und 76 = 6 mod 7, addieren die Ergebnisse 4 + 6 = 10 und rechnen
dies mod 7, so erhalten wir ebenfalls 3. Dass diese beiden Rechenwege immer zum gleichen
Ergebnis führen, werden wir später zeigen.
Berechnen wir das Produkt 44 · 78 = 3 432 = 2 mod 7, indem wir erst multiplizieren, müssen
wir 3 432 durch 7 teilen und den Rest bestimmen. Viel einfacher dagegen ist es erst 44 =
2 mod 7 und 78 = 1 mod 7 zu berechnen, und dann die Ergebnisse zu multiplizieren. In
diesem Fall ist man auch schon fertig, da das Produkt bereits kleiner als 7 ist, 2 · 1 = 2 mod 7.
Auch hierfür werden wir zeigen, dass die beiden Rechenwege immer zum gleichen Ergebnis
führen.
♦
5.2 Elementare mathematische Grundlagen
123
Die Modulo-Rechnung kann bei Additionen bei den Summanden oder bei Multiplikationen
bei den Faktoren durchgeführt werden, ohne dass sich das Ergebnis ändert. Dies vereinfacht
das Modulo-Rechnen erheblich und wird im Folgenden gezeigt. Für die zwei Zahlen a, b ∈ Z
gelte:
a = qa c + ra und b = qb c + rb ,
anders ausgedrückt ist a = ra mod c und b = rb mod c. Die Addition von ra und rb habe als
Ergebnis d, d. h.
ra + rb = d mod c.
Die Addition von Vielfachen von c ändert das Ergebnis nicht. Also können wir schreiben
ra + rb + j · c = d mod c.
Wählen wir j = qa + qb , so ergibt sich
d = ra + rb + j · c = ra + rb + (qa + qb )c = ra + qa · c + rb + qb · c = a + b mod c.
Für die Multiplikation von a und b kann man schreiben:
a · b = (qa c + ra ) · (qb c + rb ) = qa qb cc + qa rb c + qb ra c + ra rb = ra rb mod c.
Wir haben damit gezeigt, dass gilt:
(a + b) mod c = (a mod c + b mod c) mod c
(a · b) mod c = [(a mod c) · (b mod c)] mod c.
Eine Anwendung dieser Regeln wollen wir benutzen, um den folgenden Satz zu beweisen.
Satz 5.5 Teilbarkeit einer Zahl durch 9
Eine ganze Zahl a ist durch 9 teilbar, wenn ihre Quersumme durch 9 teilbar ist.
Beweis
Eine (s + 1)-stellige Dezimalzahl a kann durch ihre Ziffern wie folgt beschrieben werden
a = a0 · 100 + a1 · 101 + r + as · 10s ,
mit ai ∈ {0, 1, 2, 3, r, 9}.
Nun brauchen wir nur beide Seiten Modulo 9 zu rechnen und sehen, dass gilt 10 = 1 mod 9,
100 = 1 mod 9, 1 000 = 1 mod 9 usw. Damit erhalten wir a mod 9 = (a0 +a1 +a2 +r+as ) mod 9,
wobei rechts genau die Quersumme steht. Wenn die Quersumme gleich 0 mod 9 ist, ist auch
die Zahl gleich 0 mod 9, d. h. durch 9 teilbar.
Nun wollen wir noch Primzahlen einführen, da sie eine wichtige Rolle bei den RS-Codes
spielen werden.
124
5 Der CD-Player
Definition 5.6 Primzahl
Eine Zahl p ∈ Z, p > 1, die nur durch 1 und sich selbst teilbar ist, heißt Primzahl.
Die Zahl 2 erfüllt die Definition einer Primzahl und ist die einzige gerade Primzahl. Bereits
Euklid hat bewiesen, dass es unendlich viele Primzahlen gibt. Dass eine Primzahl die herausragende Eigenschaft besitzt, keinen Teiler außer die 1 und sich selbst zu haben, werden
wir im folgenden Abschnitt ausnutzen.
5.2.2
Primkörper, Galoisfeld GF(p)
Wir erhalten einen Primkörper, wenn wir ganze Zahlen addieren und multiplizieren, jedoch
alle Operationen Modulo einer Primzahl p, also mod p durchführen. In der Mathematik bezeichnet der Begriff Körper eine Menge von Elementen mit zwei Rechenoperationen und
bestimmten Eigenschaften für das Rechnen. Wir werden sehen, dass wenn man in einem
Primkörper rechnet, das Leben sehr einfach ist.
Man bezeichnet einen Primkörper auch als Galoisfeld1 GF(p). Offensichtlich treten als Ergebnisse bei der Addition und der Multiplikation nur Zahlen aus der Menge {0, 1, 2, r, p – 1}
auf, da der Rest beim Teilen durch p immer echt kleiner als p ist.
Definition 5.7 Primkörper, Galoisfeld GF(p)
Sei p eine Primzahl. Ein Primkörper besteht aus den Elementen GF(p) = {0, 1, 2, r, p – 1},
sowie der Addition und der Multiplikation der Elemente a, b ∈ GF(p) Modulo p, d. h.
a + b mod p und a · b mod p
∀a∈Z : a = b mod p, b ∈ {0, 1, 2, r, p – 1}.
(5.1)
Die Eigenschaften eines Primkörpers sind in Tabelle 5.1 zusammengefasst.
Beispiel 5.8 Primkörper GF(5)
Der Primkörper mit p = 5 ist: GF(5) = {0, 1, 2, 3, 4}.
Die Multiplikation von Zahlen: 3 · 4 = 12 = 2 mod 5.
Die Addition von Zahlen: 5 + 6 = 11 = 1 mod 5.
Eine gemischte Rechnung: (2 + 6) · (5 + 6) = 3 · 1 = 3 mod 5.
1
♦
Die Theorie wurde begründet durch den Mathematiker Évariste Galois. Eine Legende besagt, dass
er 1832 im Alter von 20 Jahren bei einem Duell wegen einer jungen Dame starb, jedoch am Abend
vorher noch seine mathematischen Gedanken aufgeschrieben und einem Freund gegeben hat.
Herunterladen