N‐Bit binäre Zahlen (signed)
n‐Bit‐Darstellung ist ein Fenster auf die ersten n Stellen der Binär‐Zahl
…0000000000000000000000000000000000000000000000000110 = 6
…1111111111111111111111111111111111111111111111111101 = -3
MSB bestimmt das Vorzeichen. MSB=0 bedeutet nicht‐negativ, MSB=1 bedeutet negativ.
Beispiel: 16‐Bit
Beispiel vorzeichenbehaftete 8‐Bit‐Binärzahlen:
0 0 0 0 0 0 0 0 = 0 1 0 0 0 0 0 0 0 = -128 0 0 0 0 0 0 0 1 = 1 1 0 0 0 0 0 0 1 = -127 0 0 0 0 0 0 1 0 = 2 1 0 0 0 0 0 1 0 = -126
. .
. .
. .
0 1 1 1 1 1 0 1 = 125 1 1 1 1 1 1 0 1 = -3 0 1 1 1 1 1 1 0 = 126 1 1 1 1 1 1 1 0 = -2 0 1 1 1 1 1 1 1 = 127 1 1 1 1 1 1 1 1 = -1
Nicht‐vorzeichenbehaftete Zahlen (unsigned)
n‐Bit‐Darstellung ist ein Fenster auf die ersten n Stellen der Binär‐Zahl
…0000000000000000000000000000000000000000000000000110 = 6
…0000000000000000000000000000000000001111111111111101 = 65533
MSB bestimmt das Vorzeichen nicht. Zahl ist immer nicht‐negativ.
Beispiel: 16‐Bit
Beispiel nicht‐vorzeichenbehaftete 8‐Bit‐Binärzahlen:
0 0 0 0 0 0 0 0 = 0 1 0 0 0 0 0 0 0 = 128 0 0 0 0 0 0 0 1 = 1 1 0 0 0 0 0 0 1 = 129 0 0 0 0 0 0 1 0 = 2 1 0 0 0 0 0 1 0 = 130
. .
. .
. .
0 1 1 1 1 1 0 1 = 125 1 1 1 1 1 1 0 1 = 253 0 1 1 1 1 1 1 0 = 126 1 1 1 1 1 1 1 0 = 254 0 1 1 1 1 1 1 1 = 127 1 1 1 1 1 1 1 1 = 255
Signed‐N‐Bit Binär in Dezimal umrechnen
Beispiel 8‐Bit‐Binärzahl B:
1 1 1 1 1 1 0 1 binär ist dezimal:
Beobachtung für folgende 8‐Bit‐Zahl C (Erinnerung: 10000000 binär ist –128):
1 0 0 0 0 1 0 1
Also für signed n‐Bit‐Binärzahl b = bn‐1 bn‐2 ... b0 gilt:
Sign‐Extension
Gegeben 6 und –3 in 16‐Bit‐Darstellung.
Wie sieht die 32‐Bit‐Binärdarstellung aus?
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 6 in 16‐Bit‐Binärdarstellung
1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 –3 in 16‐Bit‐Binärdarstellung
6 in 32‐Bit‐Binärdarstellung?
–3 in 32‐Bit‐Binärdarstellung?
Erinnerung: n‐Bit‐Darstellung ist ein Fenster auf die ersten n Stellen der Binär‐Zahl
…0000000000000000000000000000000000000000000000000110 = 6
…1111111111111111111111111111111111111111111111111101 = -3
Arithmetischer Rechts‐Shift
Arithmetischer Rechts‐Shift am Beispiel von 8‐Bit‐Zahlen:
Arithmetischer Rechts‐Shift um 2 Stellen:
0 1 0 0 1 1 1 1 -->
Arithmetischer Rechts‐Shift um 2 Stellen:
1 1 1 1 0 0 0 1 -->
Arithmetischer Rechts‐Shift von b um x Stellen:
Verschiebe Bits nach rechts, um den angegeben Wert x.
Die neuen leeren Stellen werden mit dem Sign‐Bit aufgefüllt.
Overflow
Einschränkung auf n‐Bit kann einen Overflow bei Addition erzeugen:
(Carry) (A)
+ (B) ---
= (C) 0 1 0 1 1 0 1 0
0 1 1 0 0 1 1 1
Addition von negativer und nicht‐negativer Zahl. Overflow möglich?
Overflow erfordert, dass mindestens gilt:
Also Overflow in diesem Fall nicht möglich.
Overflow
Subtraktion von zwei negativen Zahlen x und y. Overflow möglich?
Der Fall „zwei nicht‐negativen Zahlen“ ist analog.
Also: Overflow in diesem Fall nicht möglich.
Zusammenfassung: Wann kann ein Overflow eintreten?
Operation Operand A Operand B Ergebnis welches Overflow anzeigt
A+B ≥ 0 ≥ 0 < 0
A+ B < 0 < 0 ≥ 0
A–B ≥ 0 < 0 < 0
A–B < 0 ≥ 0 ≥ 0
Randbemerkung
Andere Darstellungsformen für negative Binärzahlen:
• Einerkomplement: Negativer Wert von B ist NOT(B)
• Sign‐and‐Magnitude: MSB ist das Vorzeichen. Rest ist der Wert.
• Biased‐Notation (Beispielsweise mit 0 auf 1000...0000):
0000 0000 0000 0000 0000 0000 0000 0000 = kleinster negativer Wert 0000 0000 0000 0000 0000 0000 0000 0001 = kleinster negativer Wert + 1
...
0111 1111 1111 1111 1111 1111 1111 1111 = ‐1 1000 0000 0000 0000 0000 0000 0000 0000 = 0 1000 0000 0000 0000 0000 0000 0000 0001 = 1
...
1111 1111 1111 1111 1111 1111 1111 1110 = größter positiver Wert ‐1 1111 1111 1111 1111 1111 1111 1111 1111 = größter positiver Wert
Logische Bausteine
Logische Bausteine
Kombinatorische Schaltungen
Gatter
Funktion Eingabe Symbol Ausgabe
AND
OR
NOT
Und‐Gatter
Oder‐Gatter
Inverter
Verallgemeinerung auf n Eingänge
Und‐Gatter mit n Eingängen A AND B
B
A B
A A
A OR B
NOT A
A1 A2
An
A1 A2
An
A1 AND A2 ... AND An
A1 OR A2 ... OR An
Oder‐Gatter mit n Eingängen
Kombinatorische Schaltungen
Jede boolesche Funktion (gegeben als logischer Ausdruck) wie z.B.
f(A,B) = NOT( NOT(A) OR B)
Lässt sich als kombinatorische Schaltung realisieren. Das Beispiel:
Inverter werden häufig abgekürzt dargestellt. Das Beispiel:
Wahrheitstabellen
Jede boolesche Funktion lässt mit einer Wahrheitstabelle darstellen.
Beispiel: f(A,B,C) = A AND NOT(B OR C) als Wahrheitstabelle
A B C B OR C NOT(B OR C) f(A,B,C)=A AND NOT(B OR C) 0 0 0
0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
Wahrheitstabellen
Jede Wahrheitstabelle kann man mit einem logischen Ausdruck darstellen. Beispiel:
A B C f(A,B,C)
0 0 0 1
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 1
1 0 1 0
1 1 0 1
1 1 1 1
Die Zeilen in obigem Ausdruck bezeichnet man als
Minterme. Die Oder‐Verknüpfung aller Minterme ist die disjunktive Normalform.
Wahrheitstabellen
Allgemein: für den Entwurf von digitalen Schaltungen verwendet man in der Regel eine Darstellung von booleschen Funktionen mittels Normalformen.
A B C f(A,B,C)
0 0 0 1
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 1
1 0 1 0
1 1 0 1
1 1 1 1
Neben der disjunktiven Normalform gibt es noch die Konjunktive Normalform (Und‐Verknüpfung aller Maxterme)
Wahrheitstabellen
Bei der Suche nach möglichst kleinen kombinatorischen Schaltungen können auch sogenannte Don‘t ‐Care‐Terme recht hilfreich sein.
A B C f(A,B,C)
0 0 0 1
0 0 1 1
0 1 0 0
0 1 1 X
1 0 0 1
1 0 1 X
1 1 0 X
1 1 1 1
Don‘t‐Care Terme: In der kombinatorischen Schaltung, die diese Funktion implementiert, ist es egal welche Ausgabe die Schaltung für die Eingaben 011, 101 und 110 produziert.
Wahrheitstabellen
In einer Wahrheitstabelle kann für die Eingaben auch mehrere Ausgabe‐Bits festgelegt werden. Beispiel:
Eingabe Bit 0
Eingabe Bit 1
Eingabe Bit 2
Ausgabe Bit 0
Ausgabe Bit 1
0 0 0 1 1
0 0 1 1 1
0 1 0 0 1
0 1 1 0 1
1 0 0 1 0
1 0 1 1 1
1 1 0 1 0
1 1 1 1 0
Beispiel: Addition zweier Bits mit Übertrag
A B s(A,B)=A+B c(A,B)=Carry 0 0
0 1 1 0 1 1
Wahrheitstabelle Boolesche Ausdrücke
Kombinatorische Schaltung
Ist das eine gute Schaltung?
Wie sieht n‐Bit‐Addition aus?
Mehr dazu gleich noch.
Im weiter fortgeschrittenen Bereich der Vorlesung nehmen wir logische Bauelemente als Blackbox mit Eingängen und Ausgängen an. Die Funktion des Bausteins wird nur textuell
beschrieben.
Logische Bausteine
Minimierung
Minimierung mittels Rechenregeln
Beispiel: Minimierung der folgenden DNF
(!A * !B * C) + (!A * B * !C) + (A * !B * !C) + (A * !B * C) + (A * B * !C)
Minimierung mittels KV‐Diagramm
A B C D f(A,B,C,D)
0 0 0 0 1
0 0 0 1 1
0 0 1 0 0
0 0 1 1 0
0 1 0 0 1
0 1 0 1 0
0 1 1 0 0
0 1 1 1 1
1 0 0 0 0
1 0 0 1 0
1 0 1 0 0
1 0 1 1 0
1 1 0 0 1
1 1 0 1 0
1 1 1 0 1
Ordne Variablen einer 2‐, 3‐ oder 4‐Stelligen Funktion in Tabelle so an, dass sich benachbarte Felder nur in einer Variablen unterscheiden.
Minimierung mittels KV‐Diagramm
A B C D f(A,B,C,D)
0 0 0 0 1
0 0 0 1 1
0 0 1 0 0
0 0 1 1 0
0 1 0 0 1
0 1 0 1 0
0 1 1 0 0
0 1 1 1 1
1 0 0 0 1
1 0 0 1 0
1 0 1 0 0
1 0 1 1 0
1 1 0 0 1
1 1 0 1 0
1 1 1 0 1
1 1 1 1 1
Trage für alle Minterme eine 1 in dem Diagramm ein.
Minimierung mittels KV‐Diagramm
A B C D f(A,B,C,D)
0 0 0 0 1
0 0 0 1 1
0 0 1 0 0
0 0 1 1 0
0 1 0 0 1
0 1 0 1 0
0 1 1 0 0
0 1 1 1 1
1 0 0 0 1
1 0 0 1 0
1 0 1 0 0
1 0 1 1 0
1 1 0 0 1
1 1 0 1 0
1 1 1 0 1
Fasse benachbarte 1en zu den größtmöglichen Blöcken der Größe 2^n zusammen.
KV‐ Diagramm: Noch ein Beispiel
A B C D f(A,B,C,D)
0 0 0 0 1
0 0 0 1 X
0 0 1 0 0
0 0 1 1 0
0 1 0 0 1
0 1 0 1 0
0 1 1 0 X
0 1 1 1 1
1 0 0 0 X
1 0 0 1 0
1 0 1 0 1
1 0 1 1 0
1 1 0 0 1
1 1 0 1 0
1 1 1 0 0
1 1 1 1 0
Bemerkung 1: Don‘t cares können beliebig für 0 oder 1 stehen.
Bemerkung 2: Blöcke können auch über den KV‐
Diragrammrand hinaus reichen.
KV‐ Diagramm: Noch ein Beispiel
A B C D f(A,B,C,D)
0 0 0 0 1
0 0 0 1 0
0 0 1 0 0
0 0 1 1 1
0 1 0 0 1
0 1 0 1 0
0 1 1 0 1
0 1 1 1 1
1 0 0 0 1
1 0 0 1 0
1 0 1 0 1
1 0 1 1 1
1 1 0 0 0
1 1 0 1 0
1 1 1 0 1
Bemerkung 3: anstatt der 1en können auch die 0en zusammengefasst werden (dann als DNF).