Schaltnetze und Schaltwerke (Rechensysteme A) - E

Werbung
Schaltnetze und Schaltwerke
(Rechensysteme A)
Skriptum zur Vorlesung im WS 2005/6
Prof. Dr.-Ing. Werner Grass
Lehrstuhl für Informatik
mit Schwerpunkt Rechnerstrukturen
1 Einführung
1.2
Inhalt der Vorlesung: Erster Teil
Normales Skript
1 Einführung ........................................................................................................................................................... 4
1.1
Information und Datum........................................................................................................................ 4
1.2 Codes und Codierung .................................................................................................................................. 6
1.3
Wichtige Begriffe............................................................................................................................... 14
1.4
Literatur ............................................................................................................................................. 15
Online-Kurs: Formale Grundlagen von Schaltnetzen
Lekion L 1:
I. Grundlegende Begriffe und Notationen
Überblick
2-4: Boolesches Wort, Boolesche Sequenz
5-8: Verhalten und Struktur von Schaltnetzen
9: Notationen
Zusammenfassung
Training
II. Boolesche Funktionen und Schaltfunktionen
Lektion L 2: Verhaltensbeschreibung
Überblick
2: Boolesche Funktionen
3-5: Dualzahlen
6-8: Basiskomponenten von Schaltnetzen
Zusammenfassung
Training
Lektion L 3: Strukturbeschreibung
Überblick
2: Strukturbeschreibung durch Graphen
3-5: Schaltnetzstruktur
6-12: Basisfunktionen für die Schaltnetzstruktur
Zusammenfassung
Training
L 4: Erweiterte Konzepte
Überblick
2-3: Analyse
4-6: Von Booleschen Werten zu Booleschen Wörtern
7: Schaltungsoptimierung
8: Modularer Aufbau
Zusammenfassung
Training
1 Einführung
1.3
III. Boolesche Algebra
Lektion L 5: Termdarstellung
Überblick
2-5: Grundlegende Definitionen
6-10: Def. Boolescher Term
11-13: Termdarstellung - Wertetabelle
14-17: Boolesche Terme über Funktionen
18-20: Operatoren und partielle Ordnung
Zusammenfassung
Training
Gesetze der Booleschen Algebra
Lektion L 6: Grundlegende Gesetze und Definitionen
Überblick
2-5: Grundlegende Definitionen
6-9: Erweiterte Definitionen
Zusammenfassung
Training
Lektion L 7: Darstellung von Booleschen Funktionen als Terme
Überblick
2-3: Einführung 'Entwicklungssatz'
4-7: Anwendung 'Entwicklungssatz'
8: Darstellungstheorem
Zusammenfassung
Training
Lektion L 8: Disjunktive und Konjunktive Normalform
Überblick
2-3: Von Wertetabellen zur Termdarstellung
4-5: Min-Terme, Max-Terme
Zusammenfassung
Training
Normales Skript:
Ergänzung zu Lektion 8: 8a Schaltnetzoptimierung
definiert.
Fehler!
Textmarke
nicht
8a.1 Einführung und Begriffe
Fehler! Textmarke nicht definiert.
8a.2 Methode des Iterativen Consensus zur Bestimmung aller Primimplikanten Fehler!
Textmarke
nicht definiert.
8a.3 Optimale Auswahl von Primimplikanten
Fehler! Textmarke nicht definiert.
8a.4 Grafische Methode zur näherungsweisen Optimierung von Booleschen Funktionen Fehler!
Textmarke nicht definiert.
Wichtige Begriffe Fehler! Textmarke nicht definiert.
1 Einführung
1.4
1 Einführung
1.5
1 Einführung
1.1 Information und Datum
Informatik hat etwas mit Information zu tun. Aber was versteht man unter dem Begriff Information? Beginnen
wir mit Beobachtungen aus unserem täglichen Leben, die im Bezug zum Begriff der Information stehen.
Zwei Menschen telefonieren miteinander. Beim Sprechen werden Schallwellen erzeugt, die durch das im
Telefon eingebaute Mikrofon in elektromagnetische Wellen transformiert werden. Das Telefon des
Gesprächspartners empfängt diese elektromagnetischen Wellen. Der Lautsprecher wandelt sie wieder in
Schallwellen, so dass sie durch das Ohr des Empfängers erfasst werden können.
Wir beobachten an diesem Beispiel, dass Mitteilungen über ein Telefon durch Übertragung physikalischer
Größen erfolgen. Entsprechendes gilt auch bei der Übertragung von Bildern.
Definition: Signal, Signalübertragung
Die Darstellung einer Mitteilung durch zeitliche Veränderungen einer physikalischen Größe
heißt Signal. Eine Weitergabe einer Mitteilung erfolgt durch Signalübertragung.
Die Herstellung einer Verbindung zum Gesprächspartner gelingt nicht immer. Dann ist ein Anrufbeantworter
eine gute Möglichkeit, ein Sprachsignal zu speichern. Text speichert man auf Papier, Plattenspeicher (disk), CD
ROM u.ä. Bei all diesen Trägern bezeichnet man den Speichervorgang als "schreiben" oder "aufzeichnen".
Definition: Inschrift, Schriftträger
Eine dauerhafte Darstellung einer Mitteilung bezeichnen wir als Inschrift. Das benutzte
Medium nennen wir Schriftträger.
Die Informatik erzeugt und verarbeitet Signale und Inschriften. Dabei genügt es oftmals, von der physikalischen
Darstellung von Mitteilungen zu abstrahieren. Bei Text interessiert beispielsweise die Zeichenfolge und nicht, ob
sie gesprochen oder geschrieben wurde und welches Medium benutzt wurde.
Definition: Nachricht, Repräsentation von Nachrichten
Abstraktionen von Inschriften und Signalen nennen wir Nachrichten. Wir repräsentieren
Nachrichten in Form von endlichen Zeichenfolgen.
Beispiel: "Position" ist eine endliche Zeichenfolge.
Beispiel: Ein Bild aus roten und weißen Punkten kann beispielsweise durch folgende
Zeichenkette beschrieben werden:
rrrwwrrwwwrwrwwwwwrwwwwwr.
Dabei bezeichne w ein weißes Feld, r ein rotes Feld und  eine neue Zeile.
1 Einführung
1.6
r
r
r
w
w
r
r
w
w
w
r
w
r
w
w
w
w
w
r
w
w
w
w
w
r
Nachrichten sind Gegenstände der Informatik. Signale und Inschriften sind Mittel zur Übertragung bzw.
Speicherung von Nachrichten. In diesem Kapitel beschäftigen wir uns mit Nachrichten und solchen Zeichen, die
zur Repräsentation von Nachrichten in der Informatik eingesetzt werden.
Nun können wir uns dem Begriff Information zuwenden.
Definition: Information, Kontext, Interpretationsvorschrift
Information ist die einer Nachricht zugeordnete Bedeutung. Damit eine solche Zuordnung
möglich ist, muss man den Kontext der Nachricht kennen. Die kontextabhängige Ermittlung
der Information aus einer Nachricht nennen wir Interpretationsvorschrift.
Interpretationsvorschrift
Nachricht 
→ Information
Die gleiche Nachricht wird unter verschiedenen Kontexten unterschiedlich interpretiert.
Beispiel: Die Zeichenfolge "Passat" kann je nach Kontext ein Autotyp oder ein Wind sein.
Gleiche Nachrichten können aber auch im gleichen Kontext unterschiedlich interpretiert werden. Solche
Nachrichten heißen mehrdeutig.
Beispiel: Die Zeichenfolge "Position einer Person" kann die Aufgabenstellung in einem Betrieb
kennzeichnen oder den Ort, an dem sich ein Mitarbeiter des Betriebs aufhält. Hier kann nicht
immer garantiert werden, dass der Kontext eine eindeutige Interpretation erzwingt.
Wir kennen auch inkonsistente Nachrichten, das sind solche, denen sich in einem Kontext keine Information
zuordnen lässt.
Beispiel: Ein Kreter sagt: "Alle Kreter lügen"
Die Informatik hat u.a. die Aufgabe, Nachrichten zu interpretieren. Hierzu muss ein Kontext und eine damit
verbundene Interpretationsvorschrift festgelegt werden. Mehrdeutigkeiten sind zu klären und Inkonsistenzen zu
vermeiden.
Jeder Nachricht kann dann im entsprechenden Kontext eine Bedeutung zugeordnet werden.
Definition: Daten
Das Paar
Nachricht, zugeordnete Information
nennen wir Datum.
Ein Datum ist also eine bedeutungstragende Nachricht.
Definition: Datenverarbeitung
Eine bedeutungstreue Verarbeitung von Nachrichten nennen wir Datenverarbeitung.
1 Einführung
1.7
Beispiel: Nachricht: "Dies ist ein Satz."
Das Ergebnis einer Verarbeitung kann beispielsweise das Sortieren der Buchstaben, Satz- und
Leerzeichen sein: "aDeeiiinSsttz. "
Bei einer Interpretationsvorschrift "Deutsche Sprache" ist diese Verarbeitung natürlich nicht
bedeutungstreu, da das Ergebnis im Kontext der deutschen Sprache keinen Sinn ergibt.
Anders ist die Situation, wenn die Interpretationsvorschrift "Zeichenfolge" lautet, etwa mit
dem Ziel Zeichenfolgen zu analysieren (z.B.: Häufigkeitsverteilung der Buchstaben). Dann ist
das Ergebnis der Berechnung durchaus bedeutungstreu, da "aDeeiiinSsttz. " eine Zeichenfolge
darstellt.
1.2 Codes und Codierung
Notation:
` 0 = {0,1, 2,3, 4,…} :
` = {1, 2,3, 4,…} :
\:
Menge der natürlichen Zahlen einschließlich der 0
Menge der natürlichen Zahlen
Menge der reellen Zahlen
B = {O, L} :
Menge der Booleschen Werte
B = B
×
B
× " ×
B :
n
Menge der n-stelligen Booleschen Wörter
n mal
B* :
bn bn −1 " b1 :
Menge beliebiger, endlich langer Boolescher Wörter
n-stelliges Wort über B = {O, L} , d.h. bi ∈ B für 1 ≤ i ≤ n
B 2 = B × B = { OO , OL , LO , LL
A, E :
A*, E * :
Menge der zweistelligen Booleschen Wörter; die Klammerung
kann auch entfallen
endliche, linear geordnete Zeichenvorräte
Menge beliebiger, endlich langer Wörter über den Alphabeten
A bzw. E
Sei x ∈ \;  x  ∈ ] :  x  ≤ x <  x  + 1 :
A:
}:
größte ganze Zahl ≤ x
Anzahl der Element in einer Menge A
In diesem Abschnitt betrachten wir die Darstellung von Nachrichten in Form von Zeichenfolgen über einem
endlichen, linear geordneten Zeichenvorrat A , auch Alphabet genannt.
Beispiel: Sei A = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. Wegen 0 < 1 < 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 ist
dieser Zeichenvorrat linear geordnet. Für jedes Paar von unterschiedlichen Zeichen aus A
kann nämlich gesagt werden, welches größer und welches kleiner ist. Auch die Zeichen des
Schriftalphabets sind linear geordnet: a < b < c < d < .......
Aus technischen Gründen spielt der Zeichenvorrat B = {O, L} in der Rechnertechnik eine besondere Rolle. Wir
werden später genauer darauf eingehen, jetzt legen wir einfach fest: O < L. Die Werte O und L bezeichnen wir
auch als Boolesche Werte (nach dem Mathematiker George Boole 1815-1864).
1 Einführung
1.8
Ein Element der Menge B nennen wir Binärzeichen oder Bit (binary digit).
Aus den Elementen eines Zeichenvorrats lassen sich endliche Zeichenfolgen bilden, die wir Wörter nennen.
Werden die Elemente eines Zeichenvorrats als Ziffern interpretiert, sprechen wir auch von Zahlen anstatt von
Wörtern. Wörter fügen wir häufig in spitze Klammern, Zahlen dagegen grundsätzlich nicht.
Beispiel: wort , 7384
Die Menge A * der endlichen Zeichenfolgen über einem Zeichenvorrat A nennen wir Menge der Wörter über
A . Dabei ist die Länge der Wörter in A* beliebig, aber endlich.
Beispiel: Sei A = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. Wir betrachten endliche Zeichenfolgen der
maximalen Länge 2, dann sind unter anderem alle Zahlen von 0, 1, ..., 98, 99 Elemente der
Menge A *.
Bei der Menge B* = {O, L} * sprechen wir von Binärwörtern. Häufig betrachten wir Mengen von Binärwörtern
einer festen Stellenzahl n ∈ ` : B n = {O, L} ; man spricht in diesem Fall auch von n-Bit-Wörtern.
n
Beispiel: Menge aller 2-Bit-Wörter:
B2 = {O, L} = { OO , OL , LO , LL } .
2
Abbildungen zwischen Zeichenvorräten A → E und zwischen den Wörtern von Zeichenvorräten A* → E *
heißen Codes (oder Codierung).
Ein Code ist also im Allgemeinen eine (injektive) Abbildung der Form:
c: A* → E *
Wichtige Spezialfälle entstehen durch die Einschränkung auf feste Stellenzahlen und damit auf die Teilmengen
A n ⊂ A * und E m ⊂ E * :
mit n, m ∈ `
c: A n → E m
oder auf andere spezifische Teilmengen von A * und E * .
c: A ' → E '
mit A ' ⊆ A * und E ' ⊆ E *
Bei Spezialisierungen auf Mengen Boolescher Wörter schreiben wir B statt A bzw. E
Beispiel:
Seien: n = 1, m = 2, A = {0,1, 2,3} , B2 = { OO , OL , LO , LL } ⊂ B * und c1 : A → B 2
mit c1(0) = ⟨OO⟩, c1(1) = ⟨OL⟩, c1(2) = ⟨LO⟩, c1(3) = ⟨LL⟩.
Beispiel:
Seien: A = {0,1, 2,3} , B ' = { O , LO , LLO , LLL } ⊂ B * und c2 : A → B ' mit c2(0) =
⟨O⟩, c2(1) = ⟨LO⟩, c2(2) = ⟨LLO⟩, c2(3) = ⟨LLL⟩. Die Codewörter entstehen durch
Anwendung einer speziellen Konstruktionsvorschrift, auf die hier nicht eingegangen werden
kann.
In dieser Einführung sehen wir vor, dass die Abbildungen umkehrbar eindeutig sind. Die Umkehrabbildung zum
Code c nennen wir Decodierungs-Abbildung oder kurz Decodierung d.
d : {c(a ) : a ∈ A '} → A ' ,
dabei bedeutet {c(a ) : a ∈ A '} die Menge aller Wörter, die durch Anwendung der Funktion c auf die Menge der
Elemente aus A ' entstehen. Da die Abbildungen umkehrbar eindeutig sein sollen, gilt für jedes Element a ∈ A ' :
1 Einführung
1.9
d (c ( a )) = a
Beispiel: A = {0,1, 2,3} , B ' = { O , LO , LLO , LLL } ⊂ B * und c2 : A → B ' mit c2(0) =
⟨O⟩, c2(1) = ⟨LO⟩, c2(2) = ⟨LLO⟩, c2(3) = ⟨LLL⟩.
Außerdem sei d 2 : B → A ' mit d2(⟨O⟩) = 0, d2(⟨LO⟩) = 1, d2(⟨LLO⟩) = 2, d2(⟨LLL⟩) = 3.
Damit gilt:
d(c(0)) = d(⟨O⟩) = 0, d(c(1)) = d(⟨LO⟩) = 1, d(c(2)) = d(⟨LLO⟩) = 2, d(c(3)) = , d(⟨LLL⟩) = 3.
1.2.1 Beispiele für Codes
Wir betrachten Binärcodes, die jedes zu codierende Zeichen a ∈ A auf ein n-Bit-Wort aus B n abbilden:
c:A → E
mit E ⊆ B n
(erlaubt partielle Abbildungen)
Ein weit verbreiteter Code mit der Länge n = 7 ist der ASCII – Code (ASCII: American Standard Code for
Information Interchange), der in Bild 1.1 dargestellt ist. Jedem Zeichen auf der Tastatur ist ein rechnerinterner
Code zugewiesen.
c7 c6 c5
c4 c3 c2c1
OOO
OOL
OOOO
NUL
DLE
OOOL
SOH
DC1
OOLO
STX
OOLL1
OLO
OLL
LOO
LOL
LLO
LLL
0
@
P
`
p
!
1
A
Q
a
q
DC2
"
2
B
R
b
r
ETX
DC3
#
3
C
S
c
s
OLOO
EOT
DC4
$
4
D
T
d
t
OLOL
ENQ
NAK
%
5
E
U
e
u
OLLO
ACK
SYN
&
6
F
V
f
v
OLLL
BEL
ETB
´
7
G
W
g
w
LOOO
BS
CAN
(
8
H
X
h
x
LOOL
HT
EM
)
9
I
Y
I
y
LOLO
LF
SUB
*
:
J
Z
j
z
LOLL
VT
ESC
+
;
K
[
k
{
LLOO
FF
FS
,
<
L
\
l
|
LLOL
CR
QS
-
=
M
]
m
}
LLLO
SO
RS
.
>
N
^
n

LLLL
SI
US
/
?
O
_
o
DEL
Bild 1.1: ASCII-Code; Beispiele cASCII(A) = ⟨LOO OOOL⟩
Die sieben Stellen reichen zur Darstellung von 52 Groß- und Kleinbuchstaben, 10 Ziffern sowie 66 Steuer- und
Sonderzeichen. Insgesamt kann man mit n-stelligen Binärwörtern 2n unterschiedliche Binärwörter (Elemente der
Menge B n ) bilden. Bei n = 7 also 27 = 128 unterschiedliche Binärwörter.
1 Einführung
1.10
Für die Beurteilung von Codes im Zusammenhang verschiedener Anwendungen spielt der Hammingabstand eine
bedeutende Rolle.
Seien a, b Binärwörter gleicher Länge n: a = an an −1 " a1 , b = bn bn −1 " b1 ,
Die Anzahl der Stellen, in denen sich die Wörter a und b unterscheiden, nennen wir ihren Hammingabstand
(nach dem Mathematiker Richard Wesley Hamming 1915 -1998).
Definition: Hammingabstand zweier Binärwörter
Der Hammingabstand zweier Binärwörter kann damit wie folgt definiert werden:
Ham_abst: A × A → ` mit A ⊆ Bn
mit Ham_abst ( an an −1 " a1 , bn bn −1 " b1
n
) = ∑d
i =1
i
,
1, falls ai ≠ bi
wobei di = 
0 sonst
Beispiel: Seien a = OLLOL und b = OOLLL , dann sind d5 = 0, d4 = 1, d3 = 0, d2 = 1, d1
= 0 und
Ham_abst ( OLLOL , OOLLL
5
) = ∑d
i =1
i
= 0 +1+ 0 +1+ 0 = 2 .
Definition: Hammingabstand einer Codierungsabbildung
Der Hammingabstand einer Codierungsabbildung c
c:A → E
mit E ⊆ B n
ist durch den kleinsten Hammingabstand zwischen je zwei unterschiedlichen Binärwörtern aus
E gegeben (a, b ∈ A , c(a), c(b) ∈ E , aus a ≠ b folgt c(a) ≠ c(b)).
Ham_abst(c) = min{Ham_abst(c(a), c(b)): (a, b ∈ A ) ∧ a ( a ≠ b ) ).
Bei vielen Codes ist der Hammingabstand der Codierungsabbildung 1. Ein großer Hammingabstand ist dann
erforderlich, wenn man Fehler, wie sei etwa bei der Übertragung von Zeichenketten oder deren Abspeicherung
entstehen können, mit großer Wahrscheinlichkeit als solche erkennen oder sogar korrigieren will.
Beispiel: Seien A = {⊕, ⊗} , E ' = { OOO , LLL
} , d.h.
E ' ⊆ B3 . Obwohl wir also
zur Codierung der zwei Zeichen nur einstellige Binärwörter brauchen, wählen wir
Binärwörter, die jeweils aus drei gleichen Binärzeichen bestehen.
Sei c ( ⊕ ) = OOO und c ( ⊗ ) = LLL .
Dann ist Ham_abst(c) = min{Ham_abst(c ( ⊕ ) , c ( ⊗ ) ) = 3. Nehmen wir an, dass wir
die Binärwörter Bit für Bit über eine Leitung übertragen und dass Störungen auftreten
können. Sie machen sich dadurch bemerkbar, dass einzelne Stellen unvorhersehbar
von O nach L bzw. L nach O verfälscht werden. Der Empfänger erhält bei einer solchen Störung ein Binärwort, für das gilt: e ∈ B3 aber e ∉ E ' . Das empfangene Codewort ist also nicht zulässig.
1 Einführung
1.11
Nehmen wir an, dass wir bei einer bestimmten Übertragung das Wort OOO
sen-
den, der Empfänger aber OLO empfängt. Der Empfänger kennt das empfangene
Wort und die Menge zulässiger Codewörter E ' = { OOO , LLL
} . Er weiß daher
mit Sicherheit, dass ein Fehler bei der Sendung aufgetreten ist. Dies nennt man
Fehlererkennung.
Kann der Empfänger darüber hinaus ermitteln, welche der drei Stellen mit höchster
Wahrscheinlichkeit gestört sind, spricht man von Fehlerkorrektur. Sind die Stellen
bekannt, muss man bei Binärwörtern nur den jeweils anderen Wert einsetzen, also O
für L oder L für O.
Im Beispiel gelingt dies tatsächlich, wenn wir annehmen, dass die Wahrscheinlichkeit
für die Verfälschung einer Stelle höher ist als die Wahrscheinlichkeit für eine
Verfälschung von zwei Stellen und die wiederum höher als die Wahrscheinlichkeit für
die Verfälschung von drei Stellen usw.
Fehlerkorrektur:
Der Empfänger bildet den Hammingabstand des empfangenen Codewortes zu allen
Codewörtern der Menge E ' = { OOO , LLL } . Es werde OLO empfangen.
Ham_abst ( OLO , OOO
Wenn OOO
) =1;
gesendet und die zweite Stelle verfälscht wurde, dann wird OLO
empfangen.
Ham_abst ( OLO , LLL
)=2
Wenn LLL gesendet und die Stellen eins und drei verfälscht wurden, dann wird
ebenfalls OLO empfangen.
Dieser zweite Fall mit zwei gestörten Stellen ist laut Annahme aber unwahrscheinlicher als der erste Fall. Daher kann der Empfänger das Wort OLO zum Wort
OOO korrigieren und hat damit mit großer Wahrscheinlichkeit das tatsächlich ge-
sendete Wort ermittelt.
Hinweis: Das Aneinanderreihen von drei gleichen Wörtern ist keine gute Methode,
um mit Fehlern umzugehen. Sie dient hier nur zur Erklärung der Begriffe Fehlererkennung und Fehlerkorrektur.
Aufgabe: Schreiben Sie die drei Binärwörter auf, die nicht Element von
E ' = { OOO , LLL } sind, und die der Empfänger in das Wort OOO korrigiert.
Die zwei Zeichen der Menge A = {⊕, ⊗} könnte man mit den einstelligen Binärwörtern O und L codieren.
Im Beispiel haben wir drei Stellen verwendet. Man nennt eine solche Codierung stellen-redundant. Redundanz
ist immer erforderlich, um Fehler zu erkennen. Mehr Redundanz ist erforderlich, um Fehler sogar zu korrigieren.
Definition: Stellen-redundante Codierung
Ein Code
c:A → E
mit E ⊆ B n
1 Einführung
1.12
heißt stellen-redundant, wenn gilt n > log 2 A  , wobei log 2 den Logarithmus zur Basis 2, A
die Anzahl der Elemente in A und   : Rundung auf die nächst größere ganze Zahl bedeutet.
Beispiel: Sei A = {⊕, ⊗, :} . Dann gilt: A = 3,
log 2 A  = 2 , jeder Code mit n > 2 ist
stellen-redundant.
Beispiel:  2.7  = 3 , 3 = 3
Ist ein n-stelliger Code stellen-redundanzfrei, dann schreiben wir:
c : A → Bn ,
auch dann, wenn A keine Zweierpotenz darstellt und damit 2n - A Wörter der Menge B n nicht genutzt
werden.
Im Falle n-stelliger stellen-redundanter Codes schreiben wir:
c:A → E
mit E ⊆ B n ,
da jetzt höchstens die Hälfte der Wörter der Menge B n genutzt werden, wir codieren ja mit mindestens einer
Stelle mehr als unbedingt notwendig wäre.
Eine systematische Methode zur Einführung nützlicher Redundanz mit der Möglichkeit der Fehlererkennung ist
das Anketten eines Paritäts-Bits an die Wörter der Bildmenge eines redundanzfreien Codes.
Sei ein stellen-redundanzfreier Code
c1 : A → B n
gegeben. Wir konstruieren dazu einen stellen-redundanten Code:
c2 : A → E
mit E ⊆ B n +1
durch Ankettung eines Paritätsbits. Hierzu definieren wir eine Funktion pb zur Bestimmung des Wertes des
Paritätsbits. Für jedes Element a ∈ A legen wir fest:
c2 ( a ) = c1 ( a ) pb ( c1 ( a ) ) .
Dabei bezeichnet der Operator "| " die Konkatenation, d.h. das nebeneinander Anordnen von Binärwörtern.
c1 ( a ) bezeichnet ein n-stelliges Binärwort e = en en −1 " e1 und pb ( c1 ( a ) ) ∈ {O, L}
Es gilt:
pb: B n → B mit:
O, falls qs ( e ) gerade
pb ( e ) = 
L, falls qs ( e ) ungerade
und
qs: B n → `
mit
qs ( en en −1 " e1
n
) = ∑d
i =1
i
,
1, falls ei = L
wobei di = 
0 sonst
qs(e) bezeichnet also die Anzahl der Zeichen L in e (Quersumme).
1 Einführung
1.13
Beispiel: Seien A = {⊕, ⊗, :} und c1 ( ⊕ ) = OO , c1 ( ⊗ ) = OL , c1 ( : ) = LO .
Dann gilt:
da qs ( OO
) =0
c2 ( ⊕ ) = OO
O =
OOO ,
c2 ( ⊗ ) = OL
L =
OLL ,
da qs ( OL
) =1
(ungerade Anzahl)
c2 ( ⊗ ) = LO
L =
LOL ,
da qs ( LO ) = 1.
(ungerade Anzahl)
(gerade Anzahl)
Jedes Binärwort aus E = { OOO , OLL , LOL } besitzt eine gerade Anzahl von
Zeichen L. Bei Verfälschung von genau einem Wert entsteht eine ungerade Anzahl
von Zeichen L in dem verfälschten Wort. Wird also ein Wort mit ungerader Anzahl
von Zeichen L empfangen, dann ist sicher eine Verfälschung aufgetreten.
Bei Einsatz von Paritätsbits kann man daher einen Teil der möglichen Verfälschungen erkennen.
Aufgabe: Geben Sie ein Beispiel für die Verfälschung mehrerer Stellen an, die mit
dieser Methode nicht erkannt werden kann.
Will man Fehler nicht nur erkennen, sondern möglichst auch korrigieren, dann benötigt man mehr redundante
Stellen. Wir haben weiter oben schon die Möglichkeit kennen gelernt, ein Codewort einfach dreimal zu verschicken.
Sei ein stellen-redundanzfreier Code
c1 : A → B n
gegeben. Wir konstruieren dazu einen stellen-redundanten Code:
c2 : A → E
mit E ⊆ B3n
mit c2 ( a ) = c1 ( a ) c1 ( a ) c1 ( a )
Wird dann eine Stelle verfälscht, dann betrifft dies nur eines der drei Wörter. Die beiden übrigen Wörter bleiben
korrekt. Vergleicht man daher die drei empfangenen Wörter, und bestimmt die beiden gleichen Wörter, dann
kann man c1 ( a ) daraus ermitteln.
Beispiel: Es werde c2 ' ( a ) = c1 ( a ) c1 ' ( a ) c1 ( a ) empfangen. Das erste und dritte Wort sind
gleich und bestimmen das als korrekt angesehenen Wort c1 ( a ) .
Die geschilderte Methode ist sehr aufwändig, da man 2n redundante Stellen benötigt. Mit einer einfachen
Modifikation erreicht man das gleiche Ziel mit weniger redundanten Stellen.
Sei ein stellen-redundanzfreier Code
c1 : A → Bn
gegeben. Wir konstruieren zu jedem Codewort c1(a) die Paritätsstelle und verdoppeln das so geschaffene und um
eine Stelle verlängerte Wort:
c2 : A → E
mit E ⊆ B
2⋅( n +1)
mit c2 ( a ) = c1 ( a ) pb ( c1 ( a ) ) c1 ( a ) pb ( c1 ( a ) )
1 Einführung
1.14
Wird dann eine Stelle verfälscht, dann betrifft dies nur eines der beiden Wörter c1 ( a ) pb ( c1 ( a ) ) . Durch Auswertung der Paritätsstelle können wir erkennen, welches der beiden Wörter gestört wurde, das andere ist korrekt.
Beispiel: Es werde c2 ' ( a ) = c1 ' ( a ) pb ( c1 ( a ) ) c1 ( a ) pb ( c1 ( a ) ) empfangen. Im ersten Wort
erkennen wir einen Fehler bei der Überprüfung des Paritätsbits. Das zweite Teilwort liefert uns
das gewünschte Wort c1 ( a ) .
Die modifizierte Methode ist immer noch sehr aufwändig. Man benötigt zwar nur noch n + 2 redundante Stellen,
doch gibt es "intelligentere Verfahren" die weit weniger Stellen benötigen und das gleiche leisten. Um solche
Verfahren zu beschreiben, fehlen uns hier die Zeit und mathematische Grundkenntnisse.
Solche Verfahren haben eine große Bedeutung im Internet und bei der Abspeicherung von Binärwörtern im
Arbeitsspeicher und auf dem Plattenspeicher eines Rechners.
1.2.2 Zahlendarstellung
Wir werden uns in einem späteren Kapitel ausführlicher mit Zahlendarstellungen im Rechner und Rechenoperationen beschäftigen. Hier wollen wir lediglich einige einfache Grundlagen legen.
Das Dezimalzahlenssystem ist uns so vertraut, dass wir keinen Unterschied mehr machen zwischen der Zahl,
einem Wort über der Menge der Ziffern {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} und ihrem Wert. So hat die Zahl 287 den
Wert 2*102 + 8*101 + 7*100. Der Zahl 10 kommt hier eine Sonderrolle zu, man nennt sie die Basis B. Ziffern
sind alle Werte aus ` 0 im Bereich 0 bis B – 1.
Einen solchen systematischen Zusammenhang zwischen Zahl und Wert nennt man Stellenwertsystem. Zur Darstellung führen wir eine Funktion wertB ein. Sie liefert zu einer Zahl mit der Basis B den zugehörigen Wert. Wir
konkretisieren dies gleich für die Basen B = 10 und B = 2:
wert10: {0,1, 2,3, 4,5, 6, 7,8,9} → ` 0
n
n
mit wert10 ( zn zn −1 " z1 ) = ∑ zi *10i −1
i =1
Wie allgemein üblich verzichten wir auf die Klammerung von Zahlen, die wir bei Wörtern eingeführt haben.
In der rechnerinternen Darstellung verwendet man u.a. das Dualzahlensystem, eine spezielle Form eines binären
Zahlensystems. (Es gibt eine Vielzahl anderer binärer Zahlensysteme). Dualzahlen besitzen die Basis 2 und können als Wort über der Menge der Ziffern {0, 1} dargestellt werden.
wert2: {0,1}n → ` 0
n
mit wert2 ( an an −1 " a1 ) = ∑ ai * 2i −1
i =1
Um Dualzahlen von Dezimalzahlen zu unterscheiden, fügen wir in Zweifelsfällen die Indizes 2 bzw. 10 an.
Beispiel: Wir betrachten die Zahlen 1110 und 112
wert10 (1110 ) = 1*101 + 1*100
wert2 (112 ) = 1*21 + 1*20
Bei Einhaltung der angegebenen Randbedingungen ist jeder Zahl in einem Stellenwertsystem umkehrbar eindeutig ein Wert zugeordnet. Zahlen verschiedener Basen lassen sich ineinander umrechnen.
1 Einführung
1.15
Die Wandlung einer Dualzahl in eine Dezimalzahl ist sehr einfach: Da die Ziffern 0 und 1 und die Basis 2 auch
n
im Dezimalzahlensystem gültig sind, berechnet man einfach die Summe
∑a *2
i =1
i −1
i
unter Anwendung der
Rechenregeln im Dezimalzahlensystem.
Beispiel: 100102 = 1*24 + 0*23 + 0*22 + 1*21 + 0*20
1.3
10
= 1610 + 2 10 = 1810
Wichtige Begriffe
In diesem Abschnitt geben wir Begriffe an, die im Text besprochen wurden. An Hand dieser Liste können Sie
überprüfen, ob Sie alle wichtigen Begriffe beherrschen. Ausnahmsweise geben wir in diesem Kapitel auch
Kurzantworten:
Bit: Ein Element der Menge B = {O, L}
Binärzeichen = Bit
Code: (nicht unbedingt eindeutige)
Abbildung der Form:
c: A* → E *
A * und E * Wörter aus Zeichenvorräten A bzw. E
Codierung = Code
Codewort:
endliche Zeichenfolgen aus beliebigem Zeichenvorrat
Daten: Ein Datum ist eine bedeutungstragende Nachricht
Datenverarbeitung: bedeutungstreue Verarbeitung von Nachrichten
Decodierung: Umkehrabbildung zum Code c nennen wir Decodierung d
d : {c(a ) : a ∈ A '} → A ' ,
Dualzahl: Zahl im Stellenwertsystem mit der Basis 2
Fehlererkennung: empfangenes Codewort gehört nicht zu den vereinbarten;
Paritybit
kann
erkennen,
wenn
eine
ungerade
Zahl
von
Stellenverfälschungen aufgetreten ist.
1-Fehlerkorrektur: Bestimmung
der
Stelle
eines
Codewortes,
die
am
wahrscheinlichsten gestört wurde und Veränderung dieser Stelle von O
nach L oder von L nach O.
Hammingabstand: Anzahl der Stellen, in denen sich zwei Binärwörter a und
b unterscheiden
Inschrift: dauerhafte
Darstellung
einer
Mitteilung
(Beispiel
auf
Magnetplattenspeicher)
Interpretationsvorschrift: kontextabhängige
einer Nachricht
Ermittlung
der
Information
aus
1 Einführung
Konkatenation von Wörtern: a1a2 ....am
1.16
b1b2 ....bn = a1a2 ....am b1b2 ....bn
Nachricht: Abstraktionen von Inschriften und Signalen
Bn → B
Paritätsbit: Berechnungsvorschrift: pb:
O, falls qs ( e ) gerade
pb ( e ) = 
L, falls qs ( e ) ungerade
mit:
Repräsentation von Nachrichten: endliche Zeichenfolgen
Schriftträger: Medium zur dauerhafte Darstellung einer Mitteilung
Signal: zeitliche Veränderungen einer physikalischen Größe
Stellenredundanz: Ein Code c : A → E
mit E ⊆ B n heißt stellen-redundant, wenn
gilt n > log 2 A 
Wert von Zahlen in Stellenwertsystemen: Beispiel Dezimalzahl:
1.4
( zn
n
zn −1 " z1 ) = ∑ zi *10i −1
i =1
Literatur
Dieses Kapitel 1 orientiert sich an:
Broy, Manfred: Informatik; Eine grundlegende Einführung, Teil II; Berlin: Springer Verlag
Richter, Reinhard; Sander, Peter; Stucky Wolffried: Der Rechner als System: Organisation, Daten, Programme:
Stuttgart: Teubner-Verlag
Zimmermann, Wolf: Signale, Datum, Information;
http://www.informatik.uni-halle.de/swt/Teaching/info1/folien/signal.pdf
1 Einführung
1.17
Herunterladen