Termine [BTU Projektwiki]

Werbung
Informatik V-Teil 2, Kap. 3, SS 99
3.
Kombinatorische Logik
3.1
Grundfunktionen und Grundgesetze
3.1.1 Boolesche Funktionen
Für eine Einführung in die mathematische Logik existiert eine Spezialvorlesung in der Mathematik.
Wir wollen uns deshalb an dieser Stelle auf eine Einführung in die zweiwertige Boolesche Algebra
und die entsprechende Logik beschränken.
Hier sollen die Regeln und Gesetze vorgestellt werden, welche technisch von direkter Bedeutung
sind.
In der Digitaltechnik wird bis auf wenige, relativ unbedeutende Ausnahmen fast nur zweiwertige
Logik verwendet. Eine Variable kann also nur die logischen Werte "0" und "1" einnehmen. Diese
Zustände werden auf zwei Spannungspegel "high" (H) und "low" (L) abgebildet. Technisch wird der
"1" -Pegel meistens mit der positiveren Spannung assoziiert, man spricht dann von positiver Logik.
Es gibt aber auch Ausnahmen, wo die negativere Spannung als logischer "high"-Wert interpretiert
wird. Manchmal werden die Zustände auch mit "L" (low) für "0" und "H" (high) für "1" bezeichnet.
Die logischen Grundoperationen sind:
− die UND - Funktion, meistens mit dem Zeichen " ∧ " oder auch mit "*" gekennzeichnet. Oft wird
hier aber (wie bei der Multiplikation) das Verknüpfungszeichen weggelassen.
− die OR - Funktion, meistens mit dem Zeichen" ∨ ", oft aber auch noch mit "+" gekennzeichnet
− die Negation, meistens mit dem Symbol "¬ " oder mit einem Strich über der Variablen gekennzeichnet.
Die Zeichen "+" für das logische ODER und "*" für das logische UND führen oft zu
Verwechslungen, wenn man nicht genau weiß, ob eine binäre Variable als binäre Zahl oder als
Boolesche Variable zu sehen ist. Wir wollen uns hier deshalb eine möglichst eindeutige Schreibweise
angewöhnen. Man kann alle logischen Operationen zwischen zwei Booleschen Variablen auf UND,
ODER und Negation zurückführen. Es ist, wie in der Aussagenlogik dargestellt, sogar möglich, nur
entweder AND oder OR in Kombination mit der Negation zu verwenden.
Da die Boolesche Algebra die Grundlage technischer Prozesse der Digitaltechnik ist, die mittels
einfacher Schalter aufgebaut werden, bezeichnet man sie auch als "Schaltalgebra".
Natürlich kann man zwischen 2 oder mehr zweiwertigen Variablen noch weitere Relationen
definieren. Man kann nämlich zwischen zwei Booleschen Variablen tatsächlich 16 Verknüpfungen
definieren, die allerdings in der technischen Praxis dann fast ausschließlich aus den logischen
Grundfunktionen abgeleitet werden.
Diese Grundfunktionen kann man zunächst über entsprechende Wertetabellen, sogenannten
Wahrheitstabellen definieren. Für die Funktionen mit zwei Eingangsvariablen x und y und der
Ausgangsvariablen z sollen die Wahrheitstabellen für die Grundfunktionen dargestellt werden.
Natürlich sind die Grundfunktionen UND und OR auch für beliebig viele Eingänge definiert.
Für die UND(AND) - Funktion gilt:
Eingänge
Ausgang
1
Informatik V-Teil 2, Kap. 3, SS 99
x
0
0
1
1
y
0
1
0
1
z=x∧ y
0
0
0
1
Der Ausgang hat nur dann den Wert "1", wenn alle Eingänge auf "1" sind.
Als daraus abgeleitete Grundfunktion läßt sich die NAND-Funktion definieren, die sich praktisch
meistens einfacher realisieren läßt:
Eingänge
x
y
0
0
1
0
0
1
1
1
Ausgang
______
z = ¬ (x ∧ y) = (x ∧ y)
1
1
1
0
Dies ist die negierte AND-Funktion. Der Ausgang ist nur dann "0", wenn alle Eingänge auf "1" sind.
Die ODER (OR)-Funktion wird wie folgt definiert:
Eingänge
x
y
0
0
0
1
1
0
1
1
Ausgänge
z=x∨y
0
1
1
1
Hier ist also ein Ausgang auf "1", wenn mindestens ein Eingang auf "1" ist.
Praktisch ebenso wichtig ist die negierte OR oder NOR - Funktion:
Eingänge
x
y
0
0
0
1
1
0
1
1
Ausgänge
_____
z = ¬ (x ∨ y) = (x ∨ y)
1
0
0
0
Aus den Tafeln kann man folgende Grundregeln ableiten:
0∨0=0
1∧ 1=1
0∨1=1∨0=1
1∧ 0=0∧ 1=0
Es gilt das kommutative Gesetz:
Konjunktion (UND-Verknüpfung): a ∧ b = b ∧ a
Disjunktion (ODER-Verknüpfung): a ∨ b = b ∨ a
Das assoziative Gesetz bestimmt die Zusammenfassung der Operanden bei mehr als zwei
Eingangsvariablen (X1, X2, X3):
2
Informatik V-Teil 2, Kap. 3, SS 99
Konjunktion: X1 ∧ X2 ∧ X3 = X1 ∧ (X2 ∧ X3) = (X1 ∧ X2) ∧ X3
Disjunktion: X1 ∨ X2 ∨ X3 = X1 ∨ (X2 ∨ X3) = (X1 ∨ X2) ∨ X3
Auch die Gültigkeit des aus der "gewöhnlichen" Algebra bekannten distributiven Gesetzes kann
nachgewiesen werden:
1. Distributives Gesetz:
X1 ∧ (X2 ∨ X3) = (X1 ∧ X2) ∨ (X1 ∧ X3)
2. Distributives Gesetz:
X1 ∨ (X2 ∧ X3) = (X1 ∨ X2) ∧ (X1 ∨ X3)
Man kann bezüglich der UND und der ODER -Verknüpfung neutrale Elemente definieren. Wenn a
eine Boolesche Variable ist, so gilt:
a∧ 1=a
a∨0=a
Für die Komplementbildung gilt:
_
a∨a=1
_
a∧ a=0
Wichtig für die Minimierung und Optimierung logischer Funktionen sind die Gesetze von De
Morgan:
1. De Morgansches Gesetz:
________________
__ __
__
X1 ∧ X2 ∧ ....∧ Xn = X1 ∨ X2 ∨.....∨ Xn
2. De Morgansches Gesetz:
________________ __
__
___
X1 ∨ X2 ∨..... ∨ Xn = X1 ∧ X2 ∧ ......∧ .Xn
Als Shannonsches Gesetz kann man die Regeln von De Morgan auch allgemeiner fassen:
__________________
_ __
___
f (X1,X2,........, Xn ; ∧ , ∨) = f (X1, X2, ......., Xn ; ∨, ∧ )
Darüber hinaus gibt es weitere nützliche Regeln, mit deren Hilfe man Boolesche Funktionen
vereinfachen kann. Man könnte diese unter dem Begriff "Kürzungsregeln" zusammenfassen.
Regel 1: X1 ∨ (X1 ∧ X2) = X1
Regel 2: X1 ∧ (X1 ∨ X2) = X1
__
Regel 3: X1 ∨ (X1 ∧ X2) = X1 ∨ X2
__
Regel 4: X1 ∧ (X1 ∨ X2 ) = X1 ∧ X2
__
Regel 5: (X1 ∧ X2) ∨ (X1 ∧ X2) = X1
__
3
Informatik V-Teil 2, Kap. 3, SS 99
Regel 6: (X1 ∨ X2) ∧ (X1 ∨ X2) = X1
3.1.2 Binäre Verknüpfungsfunktionen
Wir haben bereits im letzten Unterpunkt angesprochen, daß man insgesamt 16 verschiedene
Verknüpfungen zwischen 2 logischen Variablen definieren kann.
Wie in der Digitaltechnik oft üblich, bezeichnen wir die Eingangsvariablen mit a und b und die
Ausgangsvariable mit Y und einem Index i.
Verknüpfung
Funktionswert für
a0 1 0 1
b0 0 1 1
Bezeichnung
Y0 = 0
0 0 0 0
Nullfunktion / Null
Y1 = a ∧ b
_
Y2 = a ∧ b
0 0 0 1
Konjunktion, UND-Verknüpfung
0 0 1 0
Inhibition, Ausschluß
Y3 = b
0 0 1 1
Identität, Tautologie
_
Y4 = a ∧ b
0 1 0 0
Inhibition, Ausschluß
Y5 = a
0 1 0 1
Identität, Tautologie
_
_
Y6 = (a ∧ b ) ∨ (a ∧ b) 0 1 1 0
Antivalenz, Exklusiv Oder
Y7 = a ∨ b
Disjunktion, ODER-Verknüpfung
0 1 1 1
____ _ _
Y8 = a ∨ b = a ∧ b
1 0 0 0
_ _
Y9 = (a ∧ b) ∨ (a ∧ b) 1 0 0 1
Peirce-Verknüpfung, NOR
a ↔ b Äquivalenz
_
Y10 = a
1 0 1 0
_
Y11 = a ∨ b = a → b 1 0 1 1
_
Y12 = b
_
Y13 = b ∨ a = b → a
_____ _ _
Y14 = a ∧ b = a ∨ b
¬ a, a' Negation
Implikation, wenn - dann
1 1 0 0
¬ b, b' Negation
1 1 0 1
Implikation
1 1 1 0
Sheffer-Funktion, NAND-Verknüpfung
Y15 = 1
1 1 1 1
Eins-Funktion, Einheit
Technisch wird man mit vorhandenen Grundbauelementen alle diese Funktion mehr oder weniger gut
darstellen können. Wir haben zunächst die AND und die OR-Funktion sowie die Negation
eingeführt. Mit AND oder OR jeweils plus der Negierung lassen sich alle anderen Funktionen
4
Informatik V-Teil 2, Kap. 3, SS 99
darstellen. Günstig ist auch, dass für AND und OR das kommutative, das assiozative und das
distributive Gesetz gelten. Auch sind AND und OR für beliebig viele Eingangsvariable definiert.
Ein Blick in die Elektronik zeigt allerdings, daß sich am einfachsten die NAND und die NOR Funktion realisieren lassen, je nach der gewählten Schaltungstechnik (z. B. NAND in TTL-Logik,
NOR in ECL-Logik, NAND und NOR in CMOS-Logik).
Tatsächlich genügt sogar eine dieser beiden Funktionen, um alle anderen Funktionen darzustellen.
Für 2 Eingangsvariable entsprechen NAND und NOR dem sogenannten Sheffer- bzw. PeirceOperator. NAND und NOR können auch mehrstellig sein.
Baut man eine Logik auf diesen Operatoren auf, so muß man sich vorsehen:
Das Assoziativgesetz gilt nicht mehr.
Die Antivalenz- und die Äquivalenzfunktion (auch XOR bzw. XNOR genannt) erfüllen wieder das
Assoziativgesetz.
Beide sind auch mehrstellig definiert:
Das Ergebnis einer Äquivalenzfunktion (XNOR) ist genau dann 1, wenn die Anzahl der Nullen im
Argument gerade ist.
Das Ergebis der Antivalenzfunktion (XOR) ist genau dann 1, wenn die Anzahl der Einsen im
Argument ungerade ist.
3.1.2 Normalformen Boolescher Gleichungen
Will man mit logischen Schaltungen solch halbwegs sinnvolle Objekte wie Computer bauen, so ist
eine einfache und übersichtliche Darstellung logischer Funktionen notwendig.
Für die Darstellung logischer Funktionen in der Praxis benutzt man vorwiegend die AND- und die
OR-Funktion in einer besonderen Verknüpfung.
Als Normalform einer Booleschen Funktion gilt eine Darstellung, bei der nur Negation, konjunktive
und disjunktive logische Verknüpfungen vorkommen.
Eine besondere Bedeutung dabei spielen sogenannte Minterme und Maxterme.
Ein Minterm ist die konjunktive Verknüpfung aller Eingangsvariablen, wobei jede Eingangsvariable
in negierter oder nicht-negierter Form vorkommen muß.
Für eine Boolesche Funktion mit den Eingangswerten A, B, C gibt es insgesamt 8 mögliche
Minterme:
__
__ _
_ _
_
_
__ __
A ∧ B C, A ∧ B ∧ C, A ∧ B ∧ C, A ∧ B ∧ C, A ∧ B ∧ C, A ∧ B ∧ C, A ∧ B ∧ C,
_ _
_
A ∧ B ∧ C.
Ein Maxterm dagegen ist die disjunktive Verknüpfung aller Eingangsvariablen, wobei jede
Eingangsvariable in negierter oder nicht-negierter Form vorkommen muß.
Die möglichen Maxterme für drei Eingangsvariablen A, B, C sind:
__
_
__ _ _
_
_
A ∨ B ∨ C, A ∨ B ∨ C, A ∨ B ∨ C, A ∨ B ∨ C, A ∨ B ∨ C, A ∨ B ∨ C,
_ _
_ _ _
A ∨ B ∨ C, A ∨ B ∨ C
Die sogenannte Normalform einer Booleschen Gleichung erhält man entweder durch die disjunktive
Verknüpfung von Mintermen als sogenannte "disjunktive Normalform" oder als konjunktive
Verknüpfung von Maxtermen als sogenannte "konjuktive Normalform".
5
Informatik V-Teil 2, Kap. 3, SS 99
Für den Entwurf digitaler Schaltungen geht man meistens von der disjunktiven Normalform aus.
Über die Shannon-Formel kann man die konjunktive und die disjunktive Normalform ineinander
umwandeln.
Zur Aufstellung der Normalform geht man von der Wahrheitstabelle aus.
Beispiel:
0
1
2
3
4
5
6
7
X1
0
0
0
0
1
1
1
1
X2
0
0
1
1
0
0
1
1
X3
0
1
0
1
0
1
0
1
Y
0
1
1
0
1
0
0
0
Damit erhält man folgende disjunktive Normalform:
__ __
__
__
__ __
Y = X1 X2 X3 ∨ X1 X2 X3 ∨ X1 X2 X3
Die Funktion erhält also bei den obigen Mintermen den logischen Wert 1.
Wenn die Wertetabelle mehr Minterme enthält, bei denen Y = 1 wird als solche, bei denen Y = 0
wird, so ist es günstiger, die Normalform für Y = 0 , also
_
Y = 1 aufzustellen.
An dieser Stelle soll nur erwähnt werden, daß man insbesondere die disjunktive Normalform
technisch verwendet, um bei einer vorgegebenen Wertetabelle die Logik-Schaltung zu finden, welche
diese Logik mit minimalem Aufwand realisiert.
3.2
Grundelemente
Wir wollen nachfolgend die Grundelemente kombinatorischer Logik behandeln.
Eine Logik ist dann kombinatorisch, wenn sie keine speichernden Schaltelemente enthält. Dies
bedeutet auch, daß (bis auf unvermeidbare Rückwirkungen der Grundelemente wie Transistoren)
keine Rückkopplungen vorkommen. Eine Zustandsänderung am Eingang eines kombinatorischen
Blocks wird also, so die logische Funktion dies zuläßt, stets in eine Zustandsänderung am Ausgang
umgesetzt.
In Rechnern heutiger Generation wird fast ausschließlich 2-wertige Logik verwendet, obwohl
Logiken beliebig hoher Ordnung mathematisch darstellbar sind.
Beschrieben werden kombinatorische Schaltungen z. B. durch 2-wertige Boolesche Logik. Die
zulässigen Zustände sind "0" oder "low" und "1" oder "high".
Bemerkung:
6
Informatik V-Teil 2, Kap. 3, SS 99
In Logik-Simulatoren werden oft noch die Zustände "X" (kann stehen für "unbekannt" oder
"beliebig" und "R" für "steigende Zustandsänderung" und "F" für "fallende Zustandsänderung"
benötigt.
Grundelemente kombinatorischer Logik sind die Funktionen:
− "UND" mit dem Funktionszeichen
* oder, zur Unterscheidung von der Multiplikation ∧ ,
− "ODER" mit dem Funktionszeichen
+ oder, zur Unterscheidung von der Addition ∨,
− "Negierung" mit dem Funktionszeichen ' oder Querstrich über der Variablen.
Logik-Funktionen sind nicht mit arithmetischen Funktionen zu verwechseln.
Es gibt aber Bezüge:
Für eine einzelne Bitstelle entspricht die "ODER"- Verknüpfung der Addition, die "UND"Verknüpfung der Multiplikation.
Achtung: Zuweilen wird in der Schreibweise von Gleichungen bei der Multiplikation bzw. der UNDVerknüpfung der Punkt oder Stern weggelassen!
Eine weitere sehr häufig verwendete logische "Makro"-Funktion ist die Exklusiv-Oder-Funktion
(XOR) bzw. deren Negierung (XNOR). Sie läßt sich auf unterschiedliche Weise aus den
Grundfunktionen kombinieren.
Logik-Elemente spielen in Rechnern natürlich die dominierende Rolle:
Einmal sind komplexere arithmetische Einheiten (Addierer, Subtrahierer) und andere
Funktionsblöcke (Coder, Decoder, Multiplexer, Demultiplexer), die in Rechnern als MakroBausteine verwendet werden, oft aus Logik-Bausteinen aufgebaut. Auch sequentielle Schaltungselemente enthalten logische Bausteine, dann aber mit Rückkopplungen.
Die Beschreibung von Logik geschieht für Grundelemente und oft auch für komplexe
Funktionsblöcke oft durch logische Wertetabellen, meistens als Wahrheitstabellen bezeichnet..
Beispiele:
AND-Gatter
Eingänge
x y
Ausgang
out
x
y
OR-Gatter
Eingänge Ausgang
x y out
x
&
out
y
0
1
0
1
0
0
1
1
>1
0
0
0
1
out
0 0
1 0
0 1
1 1
0
1
1
1
Aus technologischen Gründen werden die Grundgatter in realen Schaltungen oft als invertierende
Gatter realisiert , d. h. als NAND und NOR.
Eingänge
Ausgang
Eingänge
7
Ausgang
Informatik V-Teil 2, Kap. 3, SS 99
NAND-Gatter
x y
out
x
y
&
NOR-Gatter
x
y
out
x
out
y
0 0
1 0
0 1
1 1
>1
1
1
1
0
out
0
1
0
0
0
1
1
1
0
0
1
0
Eine wesentliche Eigenschaft ist hier schon sichtbar:
Alle Eingänge eines Gatters, und das können für die Grundfunktionen auch mehrere (3, 4, 6 fach
AND, OR, NAND, NOR sind durchaus üblich) sein, sind logisch äquivalent. Man kann sie also
beliebig miteinander vertauschen.
Praktisch gilt das nicht ganz:
Bei z. B. einem 6- fach NAND-Gatter in CMOS-Technik wird es stets etwas "langsamere" und
"schnellere" Eingänge geben. Das heißt, ich kann für eine L-H oder H-L- Zustandsänderung am
Gatter-Ausgang durchaus unterschiedliche Verzögerungszeiten erhalten, je nachdem, über welchen
der 6 Eingänge die Umschaltung des logischen Zustandes vorgenommen wird. !
Der Vollständigkeit halber sei auch die "fast" Grundfunktion exklusiv OR (XOR im Englischen)
aufgeführt. Auch deren Negierung, das XNOR, tritt häufig auf:
Gatter XOR
Eingänge
x y
Ausgang
out
x
y
XNOR
Eingänge
x y
Ausgang
out
x
=1
out
y
0
1
0
1
0
0
1
1
0
1
1
0
=1
out
0
1
0
1
0
0
1
1
1
0
0
1
Es ist anzumerken, daß XOR und XNOR eigentlich nur für 2 Eingänge definiert sind, während die
Grundfunktionen beliebig viele Eingänge haben dürfen (theoretisch, praktisch gibt es Grenzen).
XOR und XNOR haben eine große praktische Bedeutung:
Sie zeigen nämlich an, ob die Eingangsbits gleich oder verschieden sind und sind damit sowohl bei
Bit-Vergleichsoperationen als auch in Addierern vorzüglich einsetzbar. Mit dem XOR hat man, bis
auf den Übertrag, auch fast schon eine einfache Arithmetik-Schaltung, den Addierer, realisiert.
Für "richtige" Addierer-Schaltungen ist die Behandlung von Überträgen zu ergänzen.
Wahrheitstabellen der obigen Art werden auch für komplexe Kombinatoriken verwendet. Eine
andere Art der Beschreibung sind die Booleschen Gleichungen.
3.3 Realisierung von Logik und Eigenschaften realer Bauelemente
8
Informatik V-Teil 2, Kap. 3, SS 99
3.3.1 Realisierungen
Logische and arithmetische Schaltungen werden in Rechnern in unterschiedlichsten Ausführungen
benötigt.
Man unterscheidet zunächst einstufige und mehrstufige Logik. Für komplexe Logik-Funktionen
werden mehrere Stufen benötigt.
In der graphischen Darstellung komplexerer logischer Funktionen werden Invertierungen oft nicht als
separate Elmente dargestellt, sondern als Kreise an den Logik-Funktionen. Die nachfolgende
Abbildung zeigt also die Funktion
__
out = x * y
x
&
y
out
Abb. 3.1: Logik-Symbol mit Invertierung am Eingang
x1
x2
x3
x4
&
>1
&
Y
x5
x6
x7
x8
&
&
Abb. 3.2: Zweistufige kombinatorische Logik-Schaltung aubauend auf die disjunktiven
Normalform
x1
x2
x3
x4
x5
x6
x7
x8
>1
>1
&
Y
>1
>1
Abb. 3.3: Zweistufige kombinatorische Logikschaltung aufbauend auf die konjunktive
Normalform
Auch die Darstellung noch komplexerer Logik-Funktionen, z. B. in zweistufiger Darstellung
aufgrund disjunktiver oder konjunktiver Normalfomen ist möglich.
Die Realisierung kann ganz unterschiedlich erfolgen:
9
Informatik V-Teil 2, Kap. 3, SS 99
a. Aufbau aus logischen Grundgattern
Dies ist zweifellos die "einfachste" und allgemeinste Methode, da man Logik-Beschreibungen quasi
direkt und ohne wesentliche Einschränkungen umsetzen kann. Sie ist jedoch nicht unbedingt auch die
effektivste. Sie eignet sich besonders dann, wenn logische Netze mit vielen Eingängen und nur einem
bis wenigen Ausgängen benötigt werden.
b. Aufbau aus Komplexgattern
In der nMOS- und der CMOS-Technologie kann man einstufige Transistorschaltungen entwerfen,
welche mehrstufige logische Funktionen umsetzen. Damit spart man in der Regel Bauelemente
(Transistoren) ein, meistens sind diese Komplexgatter-Realisierungen aber langsamer als die aus
Einzelgattern.
c. Reguläre Makros
Eine weitere Realisierungsmöglichkeit bieten reguläre Makros, z. B. sogenannte
"Programmable Logic Arrays" (PLAs). Man hat im wesentlichen nur eine zweistufige Logik, aber
dabei fast gleich viele Ausgänge wie Eingänge.
PLAs und vergleichbare Methoden eignen sich also dann, wenn eine Logik geringer Tiefe, aber
großer Breite (viele Ein-und Ausgänge) benötigt wird.
d. Leitungsstrukturen
In der "normalen" (z. B. CMOS-) Schaltungstechnik ist es verboten, Gatterausgänge direkt
zusammenzuschalten. In der Technik der bipolaren Logik ist dies aber unter Umständen möglich.
Dann kann, wie z. B. in der TTL-Technik, ein auf 'low" liegender Gatterausgang den Ausgangsstrom
eines auf "high" liegenden, angeschlossenen anderen Ausgangs aufnehmen. Der Ausgang wird
logisch "low". Er bekommt nur dann den Spannungwert "high", wenn beide treibenden Gatter am
Ausgang auf "high" sind. Dies wäre dann ein "wired-AND". Entsprechend kann man auch "wiredOR" Funktionen realisieren.In der CMOS-Schaltungstechnik sind solche Methoden allerdings explizit
verboten, z. B., weil sie zu erhöhter Leistungsaufnahme und schlechter Testbarkeit der Schaltungen
führen.
e. Memories
Es gibt tatsächlich Methoden, ein Logik über ein Memory zu realisieren.
Dazu wird aus der Logik-Funktion eine Adresse generiert, und man schaut dann nach, ob in der
entsprechenden Speicherzelle eine "0" oder "1" steht.
Dies ist eine Möglichkeit, programmierbare Logik-Bausteine zu realisieren.
Die tatsächliche Implementierung einer Logik wird stark von der verwendeten SchaltkreisTechnologie abhängen. In den meisten Technologien (z. B. CMOS) sind NAND und NOR-Gatter
einstufig zu realisieren, ANDs und ORs benötigen 2 Stufen.
Deshalb wird der Realisierung durch NANDs und NORs der Vorzug gegeben, wobei NANDs wegen
der in CMOS meist schnelleren n-Kanal-Transistoren generell günstiger sind. (Als Erinnerung: In
CMOS-Technik sind die p-Kanal-Transistoren bei gleicher Leitfähigkeit und gleicher Kanallänge
etwa dreimal breiter als die n-Kanal-Transistoren).
Ebenfalls ein Problem ist die Realisierung von Gattern mit sehr hohem Fan-in:
Bei einstufiger Realisierung würde z. B. ein 8-fach NAND durch den sogenannten "Substrateffekt" in
CMOS-Technik sehr langsam. Dann ist eine mehrstufige Realisierung aus Gattern mit niedrigem Fanin schneller. In der Regel werden deshalb den Anzahl nach mehr Gatter als "unbedingt erforderlich"
für die Realisierung der Logik-Funktion eingesetzt.
3.3.2 Verhalten und Charakterisierung realer Schaltungen
10
Informatik V-Teil 2, Kap. 3, SS 99
Reale Logik-Bausteine sind nicht allein durch ihre Wertetabelle gekennzeichnet.
Insbesondere ist von Bedeutung, in welcher Zeit sie bei welcher Belastung den Spannungspegel am
Ausgang von logisch "high" nach "low" und umgekehrt ändern können.
Logische Pegel
U/V
4
"high" ( 1 )
3
undefiniert
2
1
"low" ( 0 )
Abb. 3.4: Spannungen und "logische"Pegel
Für jede spezielle Schaltkreis-Technologie, bei der einzelne Gatter als "Bauelemente" zur
Realisierung von Logik-Schaltungen erhältlich sind (TTL, ECL, CMOS) sind "logische"
Spannungspegel definiert. So wird eine Spannung unterhalb eines bestimmten "low" - Grenzwertes
am Eingang eines Gatters von diesem als eine logische "0" interpretiert werden. Andererseits wird
eine Spannung oberhalb eines "high"-Grenzwertes stets als logische "1" angesehen werden. Für
dazwischenliegende Spannungen ist die Interpretation unsicher.
In integrierten CMOS-Schaltungen wird man Spannungen unter 1,5 V sicher als logisch "0", über 4,5
V sicher als "high" annehmen können, sofern in der Schaltung weder Entwurfsfehler noch Defekte
aus der Fertigung vorliegen.
Pegel und Schaltzeiten
Jedes logische Schaltelement benötigt eine gewisse Zeit, um auf Spannungsänderungen am Eingang
zu reagieren. Diese Reaktion ist abhängig von der Frequenz und der Form des Eingangssignals.
Zunächst muß ein Eingangssignal für eine ausreichend lange Zeit anliegen, beliebig kurze
Spannungspulse werden ggf. ohne eine Reaktion des Gatters "geschluckt". Außerdem muß das
Signal einen bestimmten Spannungpegel, die sogenannte "Schwellenspannung" Us erreichen, damit
das angesteuerte Logik-Gatter umschalten kann. Diese Schwellenspannung liegt bei symmetrisch
aufgebauten Gatterstrukturen (z. B. CMOS) etwa in der Mitte zwischen dem "high"- und dem
"low"-Spannungspegel. Dies ist kein Grundgesetz, bei unsymmetrisch aufgebauten Gattern kann sich
dieser Umschaltpegel durchaus zu höheren oder niedrigeren Spannungen verschieben.
U
Uhigh
Us
Umschaltspannung
Uh
Spannungshub
U low
t
Abb. 3.5: Form digitaler Signale
11
Informatik V-Teil 2, Kap. 3, SS 99
Digitale Schaltungen sind in hohem Maße nicht-linear. Die Transistoren eines Gatters sind in der
Lage, bereits eine relativ kleine Eingangsspannung auf den Endwert des Ausgangssignals zu
verstärken. Das darüber hinaus vorhandene Potential zur Signalverstärkung wird genutzt, um am
Schaltungsausgang möglichst steile Flanken im Signalverlauf zu erhalten.
U
Uh
0,9 Uh
tr
tf
0,1 Uh
t
Abb. 3.6: Anstiegs- und Abfallzeiten digitaler Signale
Ein Charakrteristikum von digitalen Signalen, wie sie von Gatter-Schaltungen erzeigt werden, sind
die Anstiegs- und die Abfallzeiten tr und tf. Sie sind nicht nur von den Eigenschaften des jeweiligen
Gatters selbst abhängig, sondern auch von der Belastung am Gatterausgang, dem sogenannten "FanOut".
Werden im Gatter selbst breitere Transistoren, die beim Umschalten mehr Strom führen, verwendet,
so wird der Schaltvorgang schneller, gleichzeitig steigt aber auch die Verlustleistung der Schaltung.
Im Normalfall wird ein Gatter so ausgelegt, daß es eine Belastung durch zwei normierte
Eingangslasten, d. h. zwei normale Gatter-Eingänge treiben kann, also ein sogenanntes "Fan-Out"
von 2 besitzt. Bei höherem Fan-Out vergrößern sich entweder Anstiegs- und Abfallzeiten, oder es
müssen Gatter mit höherer Treiberfähigkeit verwendet werden, die z. B. ein Fan-out von vier
zulassen.
Ein einfaches Grundgatter (z. B. NAND) belastet normalerweise seinen Treiber mit einer
"Normallast", man sagt auch, es hat ein "Fan-in" von 1. Andere Bausteine können für treibende
Gatter durchaus eine höhere Belastung darstellen, also ein "Fan-in" von 2, 3 oder 4 haben.
x
y
x
y
>1
&
out
out
fan-in 1
fan-out 3
x
y
>1
out
fan-in 1
fan-in 1
Treiber
fan-out 6
Abb. 3.7: Logik-Netzwerk mit Fan-In und Fan-Out
In jedem Fall muß bei der Auswahl der Elemente von Digitalschaltungen gewährleistet sein, daß für
jeden Verbindungspunkt zwischen Gattern die vorhandene Last, das ist die Summe der angeschlossenen Fan-in-Werte den Wert des zulässigen Fan-Outs nicht übersteigt.
12
Informatik V-Teil 2, Kap. 3, SS 99
U
Uh out
in
out
0,9 Uh
0,5 Uh
tdr
0,1 Uh
tdf
out
in
in
t
Abb. 3.7: Gatter-Verzögerungszeiten
Die durch die internen Verzögerungen hervorgerufenen Laufzeiten in Gattern beziehen sich auf die
Durchgänge der Eingangs- bzw. Ausgangspegel durch den Wert des halben Spannungshubes. Damit
gehen auch Anstiegs- und Abfallzeiten indirekt in die Gatter-Verzögerungszeiten ein.
Gatter-Laufzeiten in den heute üblichen CMOS-Technologien liegen in der Regel unter einer
Nanosekunde ( 10**-9 s). Laufzeiten um 100 ps sind mit bipolaren Logiken seit längerem erreicht
worden und werden auf ICs inzwischen auch von CMOS-Schaltungen erreicht. Dies hat den Effekt,
daß die wesentlichen Verzögerungen auf ICs (wie früher schon auf den Platinen) nicht mehr durch
die aktiven Schaltelemente, sondern durch die Signallaufzeiten auf den Verbindungsleitungen bedingt
sind.
Bisher nicht ausführlich behandelt wurde der Aspekt der Störsicherheit und der sogenannte
"Störabstand" in digitalen Schaltungen.
Spannung
Nutzsignal
Uh
"Glitch"
Uth
Störungen
Ul
t
Abb. 3.8: Nutz-und Störsignale in digitalen Schaltungen
Abb. 3.8 soll die Realität der Signals in digitalen Systemen andeuten. Dem "reinen" Nutzsignal auf
einer Leitung sind fast immer erhebliche parasitäre Störsignale überlagert. Während in analogen
Systemen die Höhe der Spannung direkt für die zu übertragende Information maßgeblich ist, hat man
in digitalen Systemen genau diese Abhängigkeit weitgehend aufgebrochen. Das Ergebnis ist die
charakteristisch hohe Festigkeit digitaler Signalverarbeitung gegenüber Störungen. Diese kann durch
fehlertolerante Übertragungsverfahren nochmals wesentlich verbessert werden.
Von wesentlicher bedeutung für die Störfestigkeit digitaler Schaltungen ist sowohl der logische
"Swing", das ist die Spannungsdifferenz zwischen High- und Low-Pegel. Bei digitalen CMOSSchaltungen mit 5 V Versorgungsspannung liegt er bei nahezu 5 V. Neuere CMOS-Schaltungen, die
mit 3,5 oder gar 1,5 V Versorgungsspannung betrieben werden, haben eine entsprechend geringere
Störfestigkeit.
13
Informatik V-Teil 2, Kap. 3, SS 99
In digitalen Schaltungen ergeben sich typischerweise auch Störungen, die aus kurzen Impulsen mit
hoher Spannung bestehen ("Glitches", "Spikes").
Sehr kurze Impulse werden teilweise von den betroffenen Gattern quasi ignoriert, wenn nämlich die
mit dem Puls verbundene elektrische Ladung nicht ausreicht, die Eingangskapazität des Gatters
aufzuladen oder zu entladen.
Typischerweise sind natürlich schnellere Gatter auch anfälliger gegen solche Störspitzen.
Den Störspannungsabstand bei digitalen Schaltungen sind für den statischen Fall durch die sensitiven
Pegel an Gatter-Eingängen und Gatter-Ausgängen bestimmt.
Gatterausgang
Gattereingang
Uout
VDD
VDD
H-Pegel
H-Pegel
Uohmin
Sh
Uihmin
Uilmax
Sl
Uolmax
L-Pegel
L-Pegel
Abb. 3.9: Statische Störabstände
Abb. 3.9 zeigt die für den statischen Störabstand, das heißt die maximal tolerierbare Höhe statischer
(langsamer) Störsignale maßgeblichen Spannungen.
Das treibende Gatter hat als obere Grenze des low-Pegels die Spannungs Uolmax.
Auch bei Überlagerung mit Störsignalen muß ein angesteuertes zweites Gatter diesen Wert noch als
eindeutig "low" erkennen. Die als noch "low" erkannte minimale Spannung des angesteuerten
Gatters Uilmax muß also höher liegen.
Der Unterschied zwischen diesen Spannungen ist der statische Störabstand Sl für den Low-Pegel.
Auf der anderen Seite muß das treibende Gatter eine minimale Spannung für den High-Pegel Uohmin
bereitstellen, die höher ist als der minimal vom angesteuerten Gatter als "high" erkannte Wert
Uihmin.
Der Abstand ist der High-Störabstand Sh.
Bei Gattern der bipolaren Logik (TTL) betragen die Abstände Sl = 0,4 V
und Sh = 0,4 V.
Der dynamische Störabstand für Spannungsspitzen ist abhängig von Amplitude und Dauer der
Störung und läßt sich ggf. graphisch aus charakteristischen Kurven ermitteln.
3.4
Logik-Minimierung
3.4.1 Übersicht
Oft wird man für eine spezielle logische Funktion die optimale Boolesche Gleichung direkt "erdenken
und hinschreiben können", z. B. ausgehend von einer Zustandstabelle.
Neben der "handgestrickten" Logik gibt es heute Methoden und Werkzeuge zur Logik-Synthese.
Ist eine formale logische Beschreibung (durch Boolesche Gleichungen oder eine Zustandstabelle)
gegeben, so kann diese in eine strukturelle Beschreibung auf der Ebene der logischen Gatter, eine
sogenannte Gatter-Netzliste, umgesetzt werden.
14
Informatik V-Teil 2, Kap. 3, SS 99
Eine wichtige Aufgabe bei dieser Umsetzung ist die Minimierung der Funktion.
Dies bedeutet in der Regel, daß eine gegebene logische Funktion so umzuformen ist, daß die
Realisierung keine Redundanzen mehr aufweist, also mit der minimal möglichen Anzahl logischer
Grundfunktionen und Bauelemente auskommt.
Diese logische Minimierung dient mehreren Zwecken:
1. Minimierung der Aufwandes an Hardware für die Realisierung einer Schaltung, was meistens auch
minimale Kosten (z. B. an Chip-Fläche und Stromverbrauch) beinhaltet.
2. Minimierung der Schaltzeiten. In der Regel ist die logisch minimale Funktion auch nahe an der
schnellsten Realsisierung.
3. Testbarkeit: Aktive Redundanzen in einer Schaltung führt zu untestbaren Teilen der Logik.
Erläuterung zu 3.:
Bei "handentworfenen" Schaltungen in TTL-Technik, also mit diskreter Realisierung, war es lange
üblich, redundante Logik einzuführen, um unerwünschte dynamische Schaltungszustände (Glitsches,
Hazards) zu vermeiden. Fällt nun ein solches "redundantes" Gatter aus, so erfüllt die Schaltung ihre
Funktion trotzdem noch. Ein Prüfverfahren für statische Fehler kann also den Ausfall nicht
entdecken. Der jetzt auftretende "Glitch" wird oft an den Ausgängen der Schaltung nicht sichtbar
sein, kann aber sehr wohl zu einem unvorhersehbaren "Ab- und -zu- Versagen" der Schaltung führen.
Man unterscheidet mehrere systematische Ansätze zur Logik-Minimierung:
1. Minimierung mittels der Booleschen Algebra.
Darunter versteht man mehr oder weniger systematische Umformungen nach den Regeln der
Boolschen Algebra zur Reduzierung der Variablen.
Dieses Verfahren eignet sich für Gleichungen mit bis zu etwa vier Variablen.
2. Algorithmische Verfahren
Verfahren dieser Art sind für die Behandlung auf dem Digitalrechner besonders geeignet. Am
bekanntesten ist das Verfahren nach Quine-McCluskey. Die Anzahl der Eingangsvariablen darf fast
beliebig groß sein. Man unterscheidet zwischen Verfahren, welche sich zur Minimierung zweistufiger
Logik eignen und solchen, welche beliebige Logik-Funktionen mimimieren können. Bekannte
algorithmische Verfahren und Werkzeuge (z. B. ESPRESSO der University f California, Berkeley)
haben dann Probleme, wenn Logik mit vielen Eingängen und mehreren Ausgängen optimiert werden
muß.
3. Graphische Verfahren
Für die Minimierung kleinerer Logiken "von Hand" haben sich graphische Verfahren als gut
brauchbar erwiesen. Beispiele sind das Venn-Diagramm und das Verfahren nach Veitch-Karnaugh.
Letzteres eignet sich für die Minimierung von Logik-Funktionen mit bis zu 5 Eingangsvariablen.
Die Minimierung komplexer Logik mit mehreren Ausgängen ist ein algorithmisch sehr komplexes
Problem. Bekannte Methoden und Verfahren liefern mehr oder weniger brauchbare
Näherungslösungen, aber kaum exakte Optimierungen. Dies gilt auch für die kommerziell
erhältlichen Werkzeuge, z. B. der Fa. SYNOPSYS.
Das zur Zeit wohl verbreitetste Programmpaket zur Logik-Optimierung ist ESPRESSO der
University of California, Berkeley.
15
Informatik V-Teil 2, Kap. 3, SS 99
Seit ca. 1993 existieren erste Arbeiten, welche Methoden und Algorithmen, die ursprünglich für die
automatische Prüfmustergenerierung entwickelt wurden, auch zur Logik-Optimierung verwenden.
Gegenüber ESPRESSO wird teilweise eine weitere Kompaktierung bis zu 20% erreicht.
3.4.2 Das Karnaugh-Diagramm
Diese graphische Methode zur Minimierung logischer Funktionen wurde zunächst von Veitch
entwickelt und dann von Karnaugh vereinfacht. Sie wird heute oft auch als "Veitch-KarnaughMethode" bezeichnet. Das dazu gehörende Diagramm wird meistens als "KV-Diagramm" bezeichnet.
Das KV-Diagramm ist im Prinzip eine graphische Darstellung der Wahrheitstabelle in Form eines
Schachbrett-artig unterteilten Rechtecks. Jedes Feld in diesem Rechteck enstpricht einem Minterm.
Die Anordnung erfolgt so, daß horizontal und vertikal benachbarte Felder sich jeweils nur in einer
Variablen unterscheiden.
Wahrheitstabelle
0
1
2
3
X1
X2
0
0
1
1
0
1
0
1
KV - Diagramm
X2
Minterm
X1
X1
X1
X1
X2
X2
X2
X2
X1
X1
X2
3
2
1
0
Abb. 3.10: Wahrheitstabelle und KV-Diagramm für 2 Eingangsvariable
Nachfolgend die Grundregeln zum Aufstellen der disjunktiven Minimalform und des KV-Diagramms:
1. Ausgehend von der Wahrheitstabelle wird die Zahl der Eingangsvariablen ermittelt und danach
das entsprechende KV-Diagramm aufgestellt. Die logischen Variablen werden am Rand des KVDiagramms in fortlaufender Reihenfolge angeordnet. Man beginnt mit der Variablen, die in der
Wahrheitstabelle rechts steht (z. B. weil sie die niedrigste Wertikeit hat) am oberen Rand und
beschriftet das KV-Diagramm entgegen dem Uhrzeigersinn.
2. Anhand der Wahrheitstabelle (oder alternativ aus logischen Gleichungen) werden die Werte der
Ausgangsvariablen für alle Kombinationen der Eingangsvariablen ermittelt und in die Felder des
KV-Diagramms eingetragen. Die logischen Werte können "0", "1" und "*" oder "X" sein.
Letztere Zeichen gelten für "beliebig", "unbestimmt" oder "redundant".
3. Benachbarte 1-Felder werden zu einem Block zusammengezogen, wobei redundante Felder
beliebig eingezogen werden dürfen. Ein Block enthält stets 2**n Felder.
4. Zwei Blöcke, die sich nur in einer Variablen unterscheiden, sind ebenfalls benachbart. Man kann
sie zu einem größeren Block zusammenfassen.
5. Ein 1-Feld oder X-Feld darf in mehrere Blöcke integriert sein.
6. Jeder Block wird durch eine konjunktive Verknüpfung (UND) der Eingangsvariablen beschrieben.
Wenn der Term für einen größtmöglichen Block gefunden wurde, so ist dieser nicht mehr zu
vereinfachen. Er wird als Prim-Implikant bezeichnet.
7. Die logische Gleichung ergibt sich als disjunktive (ODER-) Verknüpfung der konjunktiven
Terme.
16
Informatik V-Teil 2, Kap. 3, SS 99
8. Die logische Gleichung wird nur dann minimal, wenn die Blöcke so groß wie möglich sind und die
Anzahl der Blöcke minimal wird.
Man kann statt mit der positiven disjunktiven Minimalform auch mit der negativen Version arbeiten.
Man faßt dann alle Felder und Blöcke zusammen, die den Ausgangswert 0 oder "X" ergeben.
Mit der Shannon-Regel kann diese Form dann einfach in die positive konjunktive Minimalform
umgewandelt werden.
Abb. 3. 11 zeigt ein einfaches Beispiel mit 2 Variablen.
KV - Diagramm
Wahrheitstabelle
0
1
2
3
X1
X2
0
0
1
1
0
1
0
1
X2
Y
X1
1
0
1
0
X1
3
1
0
0
X2
2
1
1
0
Abb. 3.11: Beispiel: Wahrheitstabelle und KV-Diagramm für eine Logik-Funktion mit 2
Eingangsvariablen
Aus der Wahrheitstabelle läßt sich die normierte Logikfunktion direkt ableiten:
__ __
___
Y = X1 X2 + X1 X2
Die Vereinfachung mittels des KV-Diagramms liefert als Ausgangsfunktion:
__
Y = X2
Auch für einen Satz von drei Eingangsvariablen ist das Verfahren noch recht übersichtlich. Die
Wahrheitstabelle mit den Mintermen und die Struktur des KV-Diagramms zeigt Abb. 3. 12.
Wahrheitstabelle
X1 X2 X3
Minterm
0
0
0
0
X1 X2 X3
1
0
0
1
X1 X2 X3
X2
2
0
1
0
X1 X2 X3
X2
3
0
1
1
X1 X2 X3
4
1
0
0
X1 X2 X3
5
1
0
1
X1 X2 X3
6
1
1
0
X1 X2 X3
7
1
1
1
X1 X2 X3
X3
X3
3
7
6
2
1
5
4
0
X1
X1
X1
X1
Abb. 3.12: Wahrheitstabelle und KV-Diagramm (Schema) für 3 Eingangsvariable
Die Anwendung für ein Beispiel mit drei Eingangsvariablen zeigt Abb. 3.13. Hier soll eine Logik mit
zwei Ausgängen (Y1 bzw. Y2) minimiert werden.
17
Informatik V-Teil 2, Kap. 3, SS 99
KV-Diagramm für Y1
Wahrheitstabelle
X3
X1 X2 X3
Y1
Y2
X2
0
0
0
0
1
1
X2
1
0
0
1
1
1
2
0
1
0
1
1
3
0
1
1
0
0
4
1
0
0
0
*
5
1
0
1
0
*
6
1
1
0
0
0
7
1
1
1
0
0
* redundante Terme
3
1
0
1
X1
X3
0
7
0
5
0
6
X1
0
4
1
2
1
0
X1
X1
KV-Diagramm für Y2
X3
X2
X2
3
1
0
1
X1
X3
0
7
*
5
X1
6
4
0
*
X1
2
0
1
1
X1
Abb. 3.13: Logik-Minimierung für ein Netzwerk mit drei Eingangsvariablen und 2 Ausgängen
Der Wert des Ausgangs Y2 ist für die Zustände 4 und 5 nicht definiert, also beliebig.
Die Ausgangsfunktion für die erste Variable kann direkt aus der Wahrheitstabelle abgelesen werden:
__ __ __
__ __
__
__
Y1 = X1 X2 X3 + X1 X2 X3 + X1 X2 X3
Wie das KV-Diagramm für Y1 zeigt, können Zusammenfassungen zu Blöcken auch über die
Grenzen des KV-Diagramms hinaus erfolgen.
Unter Ausnutzung der Freiheiten durch die Redundanz kann gewählt werden, daß Y2 = Y1 sein soll.
Mittels des KV-Diagramms für Y1 lassen sich die Felder 0 und 2 sowie 1 und 0 zu je einem Block
zusammenfassen.
Damit erhält man:
__ __
__ __
Y1 = X1 X2 + X1 X3
Faßt man alternativ die Null-Felder zusammen, so wird:
__
__________
Y1 = X1 + X2 X3 oder Y1 = X1 + X2 X3
In diesem Fall ist also die Darstellung über die negierte Form günstiger.
Für den zweiten Ausgang wird (Abb. 3. 14) ein eigenes KV-Diagramm aufgestellt. Setzt man die
undefinierten Werte in den Feldern 4 und 5 auf "1", so läßt sich neben dem Block aus den Feldern 2
und o ein weiterer Block aus 1,5,4,0 bilden.
Damit erhält man die Ausgangsgleichung:
__
__ __
Y2 = X2 + X1 X3
Alternativ kann man auch die Null-Felder unter Berücksichtigung der Redundanzen zusammenfassen:
___________
Y2 = X1 + X2 X3
18
Informatik V-Teil 2, Kap. 3, SS 99
Für die technische Realisierung sind beide Alternativen gleich günstig.
Mit insgesamt vier Eingangsvariablen läßt sich das KV-Diagramm auch noch relativ übersichtlich
gestalten:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
X1 X2 X3 X4
Minterm
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
X1
X1
X1
X1
X1
X1
X1
X1
X1
X1
X1
X1
X1
X1
X1
X1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
X2
X2
X2
X2
X2
X2
X2
X2
X2
X2
X2
X2
X2
X2
X2
X2
X3
X3
X3
X3
X3
X3
X3
X3
X3
X3
X3
X3
X3
X3
X3
X3
X4
X4
X4
X4
X4
X4
X4
X4
X4
X4
X4
X4
X4
X4
X4
X4
X4
X4
X1
X3
X3
3
7
6
2
11
15
14
10
9
13
12
8
5
4
0
X1
X1
1
X2
X2
X2
Abb. 3.14: Struktur des KV-Diagramms für 4 Eingangsvariable
Entsprechend den 16 möglichen Mintermen enthält das KV-Diagramm 16 Felder.
Ein praktisches Beispiel ist in Abb. 3.15 gegeben.
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
X1 X2 X3 X4
Y1
Y2
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
1
1
0
0
0
0
1
1
1
*
0
0
0
0
*
*
1
1
*
0
0
*
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
K1V - Diagramm für Y1
X4
0
X3
3
0
7
1
11
9
0
0
0
1
0
0
X2
X2
X1
0
8
0
4
X1
1
10
12
5
1
2
14
13
1
0
6
15
0
X3
X4
1
X1
0
X2
Abb. 3.15: Beispiel für KV-Diagramm mit 4 Eingangsvariablen
Auch hier kann man wieder die disjunktive Normalform anhand der Wahrheitstabelle direkt
hinschreiben:
__ __ __ __
__ __ __
__ __
__
__
__
__
Y1 = X1 X2 X3 X4 + X1 X2 X3 X4 + X1 X2 X3 X4 + X1 X2 X3 X4 + X1 X2 X3 X4
Unter Ausnutzung der redundanten Terme könnte man Y2 = Y1 setzen.
Das KV-Diagramm für Y1 zeigt, daß man die 1-Felder in drei Blöcke zusammenfassen kann. Dann
wird die Minimalform:
19
Informatik V-Teil 2, Kap. 3, SS 99
___ ___
__
__ __ __
Y1 = X2 X3 X4 + X1 X2 X3 + X1 X2 X3
Alternativ zum Block aus den Feldern 2 und 10 kann man auch einen Block aus 2 und 0 bilden, die
Ergebnisse sind gleichwertig.
Durch Zusammenfassung der Null-Felder kann man eine negierte disjunktive Normalform erhalten:
____________________
__ __
Y1 = X2 + X1 X3 + X1 X3 X4
Hier liefert die negierte disjunktive Normalform die besseren Ergebnisse.
Mittels des Shannon-Theorems kann man natürlich auch hier eine Umwandlung in die konjuktive
Normalform vornehmen.
Die separat vorgenommene Minimierung für den Ausgang Y2 zeigt, daß man hier unter Ausnutzung
der "dont cares" zwei Gruppen von jeweils 8 Elementen bilden kann.
KV-Diagramm für Y2
X4
X4
*
X3
3
0
7
1
11
*
15
*
X3
9
*
X2
X1
*
8
0
4
X1
1
10
12
0
5
X2
0
0
1
1
2
14
13
1
0
6
1
X1
0
X2
Abb. 3.16: KV-Diagramm für vier Eingangsvariable
__
Damit ergibt sich als maximale Vereinfachung: Y2 = X2
Mit vier Eingangsvariablen hat das KV-Diagramm noch recht "benutzbar" ausgesehen. Definiert ist
es aber grundsätzlich auch für eine noch größere Zahl n von Eingangsvariablen, auch wenn damit die
Zahl der Zustände mit 2**n ansteigt. Die Verhältnisse für 5 Eingangsvariable sind in Abb. 3.17
dargestellt:
20
Informatik V-Teil 2, Kap. 3, SS 99
X1 X2 X3 X4 X5
0
1
2
3
0
0
0
0
0
0
0
0
0
0
0
0
u s w . bis
1
1
1
31
M in t e r m e
0
0
1
1
0
1
0
1
X1
X1
X1
X1
1
1
X1 X2 X3 X4 X5
X1
X1
X4
X3
X3
X3
X3
X5
X5
X5
X5
X5
3
7
23
19
18
22
6
2
11
15
31
27
26
30
14
10
9
13
29
25
24
28
12
8
1
5
21
17
16
20
4
0
X3
X4
X4
X4
X4
X1
X5
X4
X2
X2
X2
X2
X3
X3
X3
X2
X2
X2
X3
Abb. 3.17: Wahrheitstabelle (gekürzt) und KV-Diagramm für 5 Eingangsvariable
Entsprechend den 32 möglichen Mintermen enthält das KV-Diagramm 32 Felder. An einer Seite ist
nun die "Schachtelung" von zwei Eingangsvariablen notwendig.
4
5
6
7
16
24
X1 X2 X3 X4 X5
Y
0
0
0
0
1
1
1
1
1
1
1
1
0
0
1
0
1
0
1
0
1
0
0
1
0
Rest
X1
0
0
1
1
0
0
0
1
0
1
0
0
X1
X1
X5
X4
3
11
X4
9
1
0
0
0
0
X3
7
1
15
13
5
0
0
1
23
31
29
21
X3
X5
0
0
0
0
19
27
25
17
0
0
0
0
18
26
24
16
X3
0
0
1
1
22
30
28
20
0
0
0
0
6
14
12
4
X3
1
0
0
1
2
10
8
0
0
X2
0
X2
0
0
X2
X3
Abb. 3.18: Beispiel: Wahrheitstabelle und KV-Diagramm mit 5 Eingangsvariablen
Durch die Zusammenfassung der 1-Felder mit Hilfe des KV-Diagramms erhält man hier die
reduzierte Normalform:
___ __
__ __ __
Y = X1 X2 X3 + X1 X3 X4 X5
Auch die Zusammenfassung der Null-Felder liefert wieder eine Minimalform:
___________________________________
__ __ __
Y = X1 X3 + X1 X2 + X1 X3 + X1 X5 + X1 X4
In diesem Fall ist die aus den 1-Feldern gwonnene Minimalform die günstigere.
21
Informatik V-Teil 2, Kap. 3, SS 99
Diese Beispiele sollen zeigen, daß die Minimierung logischer Funktionen nur für kleine Schaltungen
ein "manuell" durchführbarer Vorgang ist. Für große Schaltungen sind algorithmische Methoden
unverzichtbar.
3.4.3 Das Verfahren nach Quine-McCluskey
Dieses zunächst von Quine vorgeschlagene und von Mc Cluskey verbesserte Verfahren ist auch dann
noch anwendbar, wenn graphische Methoden wie das KV-Diagramm wegen zu hoher Anzahl der
Variablen an Übersichtlichkeit verlieren und nicht mehr handhabbar sind.
Das Verfahren besteht aus 2 Teilen:
Zunächst werden in einem erschöpfenden Verfahren alle Terme, die als Kandidaten für die
vereinfachte Funktion in Betracht kommen, ausgewählt.
Diese Terme werden als Prim-Implikanten bezeichnet.
Beispiel:
Gegeben sei die folgende vereinfachte Wahrheitstabelle für vier Eingangsvariable einer logischen
Funktion F(w,x,y,z). Ausgangspunkt ist wieder die disjunktive Normalform mit der Numerierung der
Terme, wie sie auch für das KV-Diagramm verwendet wurde (entsprechend ihrem dezimalen Wert).
Es werden nur die Eingangsbelegungen dargestellt, welche eine "1" am Schaltungsausgang erzeugen
sollen:
(a)
(b)
Term No. w x y z
komb.
0
0 0 0 0
ja
1
2
0 0
0 0
ja
ja
0 1
1 0
8
1 0
0 0
ja
10
1 0
1 0
ja
11
14
1 0
1 1
1 1
1 0
ja
ja
15
1 1
1
ja
1
(c)
w x y z komb.
Terme
0,1
0,2
0
0
0 0 0 - 0 ja
0,8
-
0
2, 10
8, 10
- 0
1 0
10, 11
10, 14
1
1
11, 15
14, 15
1 - 1 1 ja
1 1 1 1 ja
0 0
ja
1 0 ja
- 0 ja
w x y z
0,2,8,10
0,8,2,10
- 0 - 0
- 0 - 0
10,11,14,15 1 - 1 10,14,11,15 1 - 1 -
0 1 - ja
0 - 1 ja
Abb. 3. 19: Quine-McCluskey-Schema zur Ermittlung der Prim-Implikanten
Zunächst werden alle Minterme danach sortiert, wie viele 1 -Stellen in ihnen vorkommen (a).
Jeweils zwei Minterme, die sich nur in einer Stelle unterscheiden, können kombiniert werden. Die
Bitstelle, an der der Unterscheid auftritt, wird mit " - " versehen. Man vergleicht dazu alle Elemente
aus einer Sektion mit allen der darunterliegenden. Diese Terme werden in einem entsprechenden
neuen Schema (b) sortiert. In unserem Fall können aus der Liste in (a) alle Terme kombiniert werden
und werden entsprechend annotiert. Das Scheme (b) ist nach demselben Gesichtpunkt "Zahl der 1Werte" sortiert wie (a).
Der Versuch, Terme mit Unterschied in nur einer Stelle zu kombinieren, wird nun mit (b) fortgesetzt.
Zunächst fällt der Term "0 0 0 - " als nicht mehr kombinierbar auf. Alle anderen Terme können
nochmals kombiniert werden und bilden das Schema (c).
22
Informatik V-Teil 2, Kap. 3, SS 99
Eine weitere Vereinfachung ist dann nicht mehr möglich. Deshalb wird das Schema für diesen Fall
mit (c) abgeschlossen.
Der eine Term aus (b) und alle Term aus (c) sind Prim-Implikanten.
Dies sind also:
000-0-0
1-1Die Terme in (c) treten zweimal auf, man wird sie bei der Bestimmung der Minimalform aber nur
einmal angeben.
Damit ist hier als Minimalform der Schaltung direkt angebbar:
F = w' x' y' + x' z' + w y
Hier haben wir den Fall, daß die Summe der gefundenen Prim-Implikanten direkt die Minimalform
ergibt.
Die wird im allemeinen Fall so nicht funktionieren, man muß sich im zweiten Schritt aus den
gefundenen Prim-Implikanten noch die Minimalform ermitteln.
Im nächsten Beispiel, das für eine andere Funktiuon mit ebenfalls vier Eingangsvariablen gilt, bringt
die erste Stufe der Minimierung eine größere Zahl von Prim-Implikanten:
Binärstellen
w x y z
- 0
0 1
0 1
- 1
11 0
0
1
1
1
-
Term
1
0
1
1
-
x' y' z
w' x z'
w' x y
xyz
wyz
w x'
Abb. 3. 20: Tabelle von Prim-Implikanten für Selektion
Eine Verknüpfung all dieser Primimplikanten würde eine korrekte Logik-Funktion ergeben, die aber
noch nicht minimal ist.
Minterme
PrimImplikanten
x' y' z 1,9
w' x z' 4,6
w' x y 6,7
xyz
7, 15
1
4
6
7
8
x
9
10
15
x
x
x
x
x
x
x
w y z 11,15
w x' 8,9,10,11
11
x
x
x
x
x
Markierte Spalten: Minterm nur durch einen Prim-Implikanten erfaßt
Unterstrichen: Essentielle Prim-Implikanten
Abb. 3.21: Schema zur Auswahl der essentiellen Prim-Implikanten
23
x
Informatik V-Teil 2, Kap. 3, SS 99
Abb. 3.21 zeigt das zur Auswahl der Prim-Implikanten für die minimale Normalform verwendete
Schema.
Horizontal aufgetragen werden die Minterme, vertikal dagegen die ermittelten Prim-Implikanten
(PIs) Im ersten Schritt wird nun markiert, wo ein Minterm durch einen Prim-Implikanten abgedeckt
wird.
Im zweiten Schritt ist dann zu ermitteln, welche Minterme durch genau einen der vorhandenen PrimImplikanten erfaßt werden. Das entspricht im Schema Spalten, die nur ein Kreuz haben. Wenn ein
Minterm nur durch genau einen Prim-Implikanten überdeckt ist, dann muß dieser Prim-Implikant
notwendigerweise in der Logikfunktion erscheinen. Man nennt solche PIs "essentielle PIs". Mit
diesem Schritt sind die essentiellen PIs ermittelt.
Minterme
PrimImplikanten
x' y' z 1,9
1
4
7
8
x
9
10
11
15
x
w' x z' 4,6
x
w' x y 6,7
xyz
6
x
x
7, 15
x
x
x
w y z 11,15
x
w x' 8,9,10,11
x
x
x
x
x
Von den essentiellen Prim-Implikanten erfaßt:
Abb. 3.22: Überdeckung durch die essentiellen Prim-Implikanten
Im vierten Schritt ist dann zu untersuchen, welche der verbleibenden Minterme, die durch mehrere
PIs abgedeckt werden können, durch die essentiellen PIs schon erfaßt sind. Im Beispiel sind nur die
Minterme 7 und 15 nicht erfaßt.
Es müssen also weitere Minterme gefunden werden.
Im vorliegenden Fall überdeckt der PI x y z gerade die Minterme 7 und 15.
Damit besteht sinnvollerweise die minimale Logikfunktion aus den essentiellen PIs plus diesem PI.
Damit steht als Ergebnis fest:
F = x' y' z + w' x z' + w x' + xyz
Man kann dieses Schema in gleicher Weise auch auf die konjunktive Normalform anwenden.
Sollen Logik-Tabellen minimiert werden, die "dont care"-Werte erhalten, so werden diese bei der
Suche nach den Primimplikanten mit verwendet und können dort direkt zur Vereinfachung beitragen.
Bei der Tabelle zu Ermittlung der essentiellen PIs erscheinen diese Werte dann nicht mehr.
3.4.4 Andere Verfahren
Sowohl das KV-Diagramm als auch das Quine-McClskey-Verfahren benötigen als Eingangs-funktion
eine konjunktive oder disjunktive Minimalform.
Diese im allgemeinen Fall aus eine Logik-Gleichung zu gewinnen, kann durchaus aufwendig sein. Für
Logiken, die mehr als zweistufig werden müssen, funktioniert das Verfahren gar nicht. Beide
Verfahren liefern als Ausgang zunächst auch nur die Minimierung für eine Ausgangsvariable. Bei
Logiken mit mehreren Ausgängen muß man das Verfahren entsprechend mehrfach ausführen.
24
Informatik V-Teil 2, Kap. 3, SS 99
Die gemeinsame Verwendung von Termen für beide Ausgänge ist dann möglich, erfordert aber
zusätzliche "Handarbeit".
Es existieren weitere Verfahren zur Logik-Minimierung auch für Funktionen mit größerer logischer
Tiefe, die allerdings nicht deterministisch zu der minimalen Logik führen (z. B. im Programmpaket
ESPRESSO der University of California, Berkeley). Trotz vieler Arbeiten in den letzten Jahren ist
die Logik-Minimierung auch heute noch ein aktuelles Forschungsgebiet.
3.5
Kombinatorische Makros
3.5.1 Übersicht
Bei Aufgaben des Schaltungs- und Systementwurfs wird man nicht immer von der Ebene der
Transistoren oder der Gatter aus beginnen, sondern mit komplexeren Bausteinen für arithmetische
und logische Grundfunktionen arbeiten wollen. Wenn diese speichernde Eigenschaften haben, wird
man sie zur sequentiellen Logik rechnen. Aber auch rein kombinatorische Makros sind sinnvoll.
Für logische Funktionen wird man einmal komplexere Verknüpfungsmöglichkeiten als Einzelgatter
haben wollen.
Darüber hinaus wird man häufig Codier- und Decodierbausteine benötigen.
Für arithmetische Operationen sind Addierer, Subtrahierer, ggf. auch Multiplizierer von Bedeutung.
Für Kontroll-Funktionen sind Multiplexer und Demultiplexer von großer Bedeutung.
3.5.2 Äquivalente Logik-Realisierungen
Der Übersichtlichkeit halber neigt ein menschlicher Logik-Entwickler dazu, seine Schaltungen aus
nicht-invertierenden Logik-Elementen auzubauen.
Die meisten Realisierungen von Logik-Funktionen beruhen aber auf Technologien, bei denen
invertierende Funktionen (NAND, NOR) mit einer einstufigen Transistorschaltung realisierbar sind,
während nicht-invertierende Funktionen (AND, OR) zusätzlich einen Inverter benötigen. Folglich
sind NAND und NOR mit weniger Transistoren und deshalb auf geringerem Raum und mit
schnelleren Schaltzeiten realisierbar. Darüber hinaus gibt es Technologien, die vorzugsweise die
Realisierung aus NANDs oder NORs unterstützen. Deshalb sind für die Implementierung von Logik
in hochintegrierten Schaltungen Techniken interessant, welche eine beliebige Konvertierung von
Logik auf unterschiedliche Basis-Funktionen zulassen. Grundlage solcher Techniken ist die Regel
nach de Morgan. (Abb. 3. 23).
>1
&
äquivalent
(de Morgan)
>1
&
entspricht
Abb. 3.23: Logische Äquivalenzen
25
Informatik V-Teil 2, Kap. 3, SS 99
Algorithmen, mit deren Hilfe eine AND - OR-Logik in eine NAND-NOR-Logik ungewandelt
werden kann, sind bekannt Vorgestellt werden soll hier eine Methode, welche auf der Basis des
logischen Netzes eine solche Umwandlung erlaubt.
Zunächst kann man an beiden Enden einer Verbindung zwischen zwei logischen Bausteinen je einen
Inverter einfügen, ohne daß sich die Logikfunktion ändert. Entsprechen ist es natürlich auch möglich,
bei einer Logik-Konvertierung zwei aneinander angrenzende Inverter zu eliminieren. Nach de
Morgan kann man dann aus einem AND mit Invertierungen an den Eingängen ein NOR erzeugen,
aus einem OR mit invertierten Eingängen ein NAND.
Bei weiterer Verfolgung dieses Prinzips kann man dann auch die Ersatzschaltungen für AND und
OR aus NOR bzw NAND mit zusätzlich invertierten Eingängen angeben (Abb. 3. 24).
&
>1
&
äquivalent
>1
äquivalent
>1
&
Abb. 3.24: Substitution von AND und OR durch NAND, NOR und Inverter
In Schaltungen ergeben sich dann zum Beispiel folgende Kompensationsmöglichkeiten (Abb. 3.25):
&
&
&
> 1
entspricht
&
&
> 1
> 1
> 1
&
entspricht
> 1
> 1
Abb. 3. 25: Konvertierung von Schaltnetzen von nicht-invertierenden zu invertierenden
Gatter-Bausteinen
Damit sind im allgmeinen die Umwandlungen von Gatter-Netzen ohne große Problem möglich. Ein
praktisches Beispiel ist in Abb. 3. 26 für die Konvertierung eines Netzwerks mit AND und R-Gattern
in eines mit NANDs angegeben. Das Verfahren gilt natürlich auch für Gatter mit mehr als zwei
Eingängen. In dieser Weise läßt es natürlich nur für kombinatorische Schaltungen, also solche ohne
interne Rückkopplung anwenden!
1. Ausgangsschaltung
C
D
E
A
B'
3. "Kürzen" der Inverter
&
>1
&
C
D
E'
A'
B
>1
2. Substitution der ANDs / ORs
AND
C
D
E
A
B'
&
OR
&
&
&
&
&
AND
&
&
OR
Abb. 3.26: Konvertierung von einer AND-OR-Realisierung zu einer NAND-NORRealisierung
26
Informatik V-Teil 2, Kap. 3, SS 99
Ein andere Problem bilden Gatter mit hohem Fan-In. Es ist in den meisten Technologien nicht
günstig, z. B. ein Gatter mit 8 Eingängen einstufig zu realisieren. Ein solches Gatter würde z. B. in
CMOS-Technik wegen des sogenannten Substrateffekts und wegen großer interner Kapazitäten nur
recht langsam umschalten.
In der Praxis wird man deshalb Gatter mit vielen Eingängen nicht einstufig aufbauen, sondern in
Form einer mehrstufigen Logik, die aus Gattern mit einer geringeren Zahl von Eingängen aufgebaut
ist, realisieren. Abb. 3.27 zeigt als Beispiel die Realisierung eines AND-Gatters mit 8 Eingängen
durch NANDs, NORs und Inverter.
langsam
schnell
schneller
&
&
>1
&
&
&
&
&
noch schneller
&
>1
&
>1
&
&
.
Abb. 3.27: Realisierung eines 8-fach AND-Gatters durch mehrstufige Logik
Welche Art der Realisierung am günstigsten ist, wird stark von der jeweiligen Technologie (bipolar,
CMOS) abhängen. Während hier eine einfache, an sich einstufig realisierbare Logik-Funktion
mehrstufig implementiert wurde, ist es durch Verwendung sogenannter Komplexgatter in CMOSTechnologie auch möglich, zwei- und sogar mehrstufige Logik-Funktionen einstufig zu realisieren. In
manchen Technologien war zeitweise auch die Verwendung von sogenannten Pass- Transistoren
oder, in CMOS-Technik, Transmission-Gates recht beliebt. Diese Technik soll im nächsten Abschnitt
kurz vorgestellt werden.
3.6.3 XOR (Exklusiv-ODER) und Äquivalenzfunktion
Die ersten logischen Makros haben wir bereits kennengelernt, es waren die Exlusiv-ODER funktion
(XOR) und deren Invertierung, die XNOR-Funktion.
Nachfolgend sei nochmals die Wahrheitstabelle für das XOR angegeben, wenn x und y die Eingäng
sind und out der Ausgang ist. Die Negierung des XOR wird auch als Aquivalenz-Funktion
bezeichnet.
x
y
xor
equiv. (xnor)
---------------------------------------------------0
0
0
1
1
0
1
0
0
1
1
0
1
1
0
1
Es gilt also: x (xor) y = x y' + x' y
27
Informatik V-Teil 2, Kap. 3, SS 99
Die dazu komplementäre Funktion ist die Äquivalenzfunktion:
x (equ) y = x y + x' y' (nachfolgend auch als XNOR bezeichnet)
Diese Funktionen sind komplementär und generell auch für mehr als nur 2 Eingänge definiert. Es
gelten zum Beispiel das kommutative und das assoziative Gesetz. Man kann dann z. B angeben, daß
gilt:
(A xor B) xor C = A xor (B xor C) = A xor B xor C
Zum Beispiel gilt auch:
(A exor B exor C)' = A exor B equ C
(A equ B equ C)' = A equ B exor C
Allgemein kann man angeben, daß bei der EXOR-Funktion der Ausgang 1 wird, wenn verschiedene
Eingagswerte anliegen, sie wird 0, wenn die Eingangswerte an allen Eingängen gleich sind. Für die
Äquivalenz-Funktion (xnor) gilt genau der inverse Fall. xor und xnor werden in der Praxis nur selten
mit mehr als 2 Eingängen realisiert und eingesetzt, weil der Schaltungsaufwand relativ hoch ist.
Die Realisierung dieser Funktion ist durch mehrstufige Gatter-Schaltungen möglich. Abb. 3.28 zeigt
die Implementierung einer XOR-Funktion durch 4 NAND-Gatter. In CMOS-Technik wird jedes
dieser NAND-Gatter aus 4 Transistoren aufgebaut, man benötigt also 16 Transistoren.
&
x
y
0101
&
1011
1110
&
0110
out
0011
&
1101
Abb. 3.28: Realisierung einer XOR-Schaltung mit vier NAND-Gattern
Die CMOS-Technik läßt es zu, bei Verwendung sogenannter "Transmission Gates" für die LogikRealisierung in erheblichem Umfang Transistoren einzusparen.
Eine solche Transistorschaltung zeigt Abb. 3.29.
VDD
x
y
out
GND
Abb. 3.29: XOR-Schaltung mit Transmission Gates
28
Informatik V-Teil 2, Kap. 3, SS 99
Solche Implementierungen in CMOS-Technologie sind sehr effizient bezüglich der benötigten
Fläche. Nachteile bestehen bezüglich der Testbarkeit solcher Schaltungen.
XOR-Funktionen lassen sich hervorragend verwenden, um in digitalen Systemen die Paritätchecks
durchzuführen.
Ein Paritätsgenerator ist eine Schaltung, die für ein Code-Wort das Paritätsbit erzeugt. Ein
Paritätschecker ist eine Schaltung, welche mit Hilfe des übertragenen Paritätsbits die Parität
überprüft.
Als Beispiel nehmen wir an, daß für einen 3-Bit-Code eine ungerade (odd) Parität gewählt wurde.
Die Anzahl der 1- Stellen im Code-Wort, erweitert um das Paritätsbit, muß immer ungerade sein.
3 -B it- C o d e
x
y
z
P a r .-B it
0
0
0
1
0
0
1
0
0
1
0
0
0
1
1
1
1
0
0
0
1
0
1
1
1
1
0
1
1
1
1
0
Abb. 3.30: Wahrheitstabelle für Parity-Bit-Generierung (3-Bit odd)
Das Paritätsbit läßt sich unter Verwendung der xor - und der xnor -Funktion recht einfach erzeugen:
P = x xor y equ z, was gleichwertig ist zu:
P = x equ y xor z
Es genügen also ein xor - und ein xnor-Gatter mit jeweils 2 Eingängen zur Realisierung.
Die Wahrheitstabelle für den Parity-Check ist etwas komplexer:
3-Bit- Code
x
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
y
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
z
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
Parity error
Par.-Bit
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Check
1
0
0
1
0
1
1
0
0
1
1
0
1
0
0
1
Abb. 3.31: Wahrheitstabelle für Parity-Check
29
Informatik V-Teil 2, Kap. 3, SS 99
Der Parity-Checker läßt sich mit xnors (equ-Funktion) realisieren: C = x xnor y xnor z xnor P
Die Realisierungen der Schaltungen zeigt Abb. 3. 32.
x
y
z
x
y
P
>>11
>>11
>>11
C
>>11
z
P
Parity-Bit-Generator
>>11
Parity-Bit-Checker
Abb. 3.32: Realisierung von Parity Generator und Parity Checker mit XOR- und XNORSchaltungen
3.5.4 Arithmetische Makros
Zu den wichtigsten Bausteinen digitaler Schaltungen gehören arithmetische Bausteine, welche die
Grundperationen Addition und Subtraktion unterstützen. Die Subtraktion wird dabei meistens auf
eine Kombination aus Addition und Komplementbildung zurückgeführt.
Wir haben das XOR schon als eine Art Addierer kennengelernt. Wir benötigen aber noch eine
Erweiterung: Das Element muß neben den beiden Eingängen x und y und dem Ausgang S, der die
Summe ausgibt, einen weiteren Ausgang C besitzen, welcher das "Carry"-Bit für den Überlauf
angibt.
Eingänge
x
Ausgänge
y
S
C
0
0
0
0
1
0
1
0
0
1
1
0
1
1
0
1
Abb. 3. 33: Wahrheitstabelle eines Halbaddierers
Die logischen Gleichungen für den Halbaddierer lauten also:
S = x' y + x y',
C=xy
Alternative Möglichkeiten zur Implementierung des Halbaddierers sind in Abb. 3.34 dargestellt.
30
Informatik V-Teil 2, Kap. 3, SS 99
x
&
y'
x
y
S
>>11
x'
y
&
x
y
&
x'
y'
&
C
S
>>11
x
y
>>11
S
&
x'
y'
>>11
x
y
&
x
y
>>11
C
x'
>>11
&
S
C
y'
&
C
x
y
S
>>11
&
C
Abb. 3.34: Implementierungen eines Halbaddierers
Natürlich kann man den Halbaddierer auch aus NANDs und NORs aufbauen, wenn diese als
Grundgatter günstig zur Verfügung stehen. Die Implementierung über das XOR ist besonders
günstig, wenn das XOR als effizient aufgebautes Komplexgatter zur Verfügung steht.
Für reale Additionsaufgaben reicht der Halbaddierer noch nicht aus, weil er in einer Rechenwerk mit
mehreren Bitstellen den Carry-Übertrag einer vorherigen Stufe nicht aufnehmen kann. Der
Volladdierer besitzt deshalb drei Eingänge: x, y, z und die Ausgänge S (sum) und C (carry).
Eingänge
Ausgänge
y
z
S
C
0
0
0
0
0
1
0
0
1
0
0
1
0
1
0
0
0
1
1
0
1
0
1
0
1
1
1
0
0
1
0
1
1
0
1
1
1
1
1
1
x
Abb. 3.35: Wahrheitstabelle des Volladdierers
Der "Summe"-Ausgang ist auf "high", wenn ein oder drei Eingänge auf high sind. Der CarryAusgang ist auf high, wenn mehr als ein Eingang auf high ist.
In diesem Fall haben wir zwei verschiedene Interpretationen für die Eingangsvariablen: Es können
einmal arithmetische Variablen sein, die addiert werden sollen, man kann sie aber zum Entwurf der
Logik auch als logische Variablen betrachten, auf welche die Regeln der Booleschen Logik
anwendbar sind.
31
Informatik V-Teil 2, Kap. 3, SS 99
Unter Verwendung der disjunktiven Normalform mit Mintermen kann man den Volladdierer wie
folgt logisch beschreiben:
S = x' y' z + x' y z' + x y' z' + x y z
C = xy + xz + yz
Entsprechend diesen Gleichungen kann die Implementierung durch Gatter erfolgen (Abb. 3.36).
x´
y'
z
&
x
&
y
x´
y
z'
&
x
y'
z'
&
x
y
z
&
S
>1
x
z
&
y
z
&
>>11
C
Abb. 3.36: Implementierung eines Volladdierers entsprechend den Booleschen Gleichungen
Eine alternative, ziemlich gebräuchliche Implementierung des Volladdierers verwendet zwei
Halbaddierer und ein OR-Gatter.
x
y
>>11
&
S
>>11
&
C
>>11
z
Abb. 3.37: Volladdierer aus zwei Halbaddierern mit XORs und OR-Gatter
Die Äquivalenz dieser Implementierung kann auch nachgewiesen werden:
S = z (xor) (x (xor) y)
= z' (x y' + x' y) + z (x y' + x' y)'
..= z' (x y' + x' y) + z (x y + x' y')
. = x y' z' + x' y z' + x y z + x' y' z
Der Carry-Ausgang wird:
C = z (x y' + x' y) + x y = x y' z + x' y z + x y
32
Informatik V-Teil 2, Kap. 3, SS 99
Für Addierwerke mit mehreren Bit-Stellen müssen stets mehrere Volladdierer kaskadiert werden. Ein
Problem dabei wird, daß bei n- Bit Tiefe ein Carry-Bit der ersten Stufe den Ausgang der n-ten Stufe
direkt beeinflussen kann, also eigentlich die n-te Stufe (das höherwertige Bit) stets auf alle
Ergebnisse niederwertiger Bit-Stufen warten muß. Reale Addierwerke wird man deshalb mit
sogenannanter "Carry-Lookadead-Logik" ausrüsten, welche die Berechnung wesentlich beschleunigen kann.
Subtrahierer kann man, alternativ zur Realisierung durch Komplementbildung und Addition, auch
direkt realisieren. Ganz äquivalent zu Halbaddierern und Volladdierern gibt es auch HalbSubtrahierer und Voll-Subtrahierer. Notwendig ist der Übertrag eines negativen Carry-Bits.
Der Minuend sei x, der Subtrahend y.
Wenn x >= y gilt, so kommen die drei Fälle in Betracht:
1-1=0
1-0=1
0-0=0
Das Ergebnis steht jeweils im Differenzbit D.
Ist dagegen x < y, so müssen von der nächsthöheren Bit-Stelle 2 geborgt werden, wovon 1
abzuziehen ist. Das Differenzbit wird auch dann 1, gleichzeitig wird ein negativer Übertrag B
eingetragen. Abb. 3.38 zeigt die Wahrheitstabelle des Halb-Subtrahierers.
Eingänge
x
Ausgänge
y
B
D
0
0
0
0
1
0
0
1
0
1
1
1
1
1
0
0
Abb. 3.38: Wahrheitstabelle eines Halb-Subtrahierers
Man kann daraus die Boolschen Gleichungen für die Ausgänge direkt ablesen:
D = x' y * x y'
B = x' y
Erstaunlicherweise ist die Funktion D dieselbe wie die für S beim Halbaddierer.
Man kann also auch dieselbe Implementierung dafür wählen.
Für den Voll-Subtrahierer muß eine dritte Eingangsvariable z berücksichtigt werden, die einen
negativen Übertrag darstellt.
33
Informatik V-Teil 2, Kap. 3, SS 99
Eingänge
x
Ausgänge
y
z
B
0
0
0
0
1
0
0
0
1
0
1
0
1
1
0
0
1
1
1
1
0
1
0
0
1
1
0
0
0
0
1
1
1
0
1
1
1
1
1
D
0
Abb. 3.39: Wahrheitstabelle des Voll-Subtrahierers
Für die Differenz erhält man in der Normalform:
D = x' y' z + x' y z' + x y' z' + x y z
B = x' y + x' z + y z
Wieder entspricht die Wahrheitstabelle für den Voll-Subtrahierer bezüglich des Differenz-Ausgangs
D genau dem S-(Summe) Ausgang des Voll-Addierers.
Der Ausgang B entspricht dem des Ausgangs C im Voll-Addierer, nur ist die Variable x invertiert.
Man kann also nur durch Invertierung eines einzigen Signals aus einem Addierer für eine Bit-Stufe
einen Subtrahierer erzeugen! Zusätzlich ist natürlich bei Addierwerken für die Propagierung des
negativen Übertrags zu sorgen.
Auch Multiplizierer und Dividierer sind als kombinatorische Schaltungen realisierbar. Dabei wird wo
immer möglich ausgenutzt, daß im binären Zahlensystem eine Multiplikation mit zwei einer Bit-ShiftOperation nach links, eine Division durch zwei einer Bit-Shift-Operation nach rechts entspricht.
Kombinatorische Multiplizierer und Dividierer für große Bit-Breiten werden zu sehr aufwendigen
Makros.
3.5.5 Mehrstufige Addierer
Wir haben bereits das Problem des Übertrages in arithmetischen Schaltungen kurz diskutiert. An
dieser Stufe soll beispielhaft ein mehrstufiger schneller Addierer vorgestellt werden.
Ai
Bi
Pi
>>11
&
Si
>>11
Gi
&
C i+1
>>11
Ci
Abb. 3.39: Addierer-Stufe
34
Informatik V-Teil 2, Kap. 3, SS 99
Wir können (Abb. 3. 39) die Signale in einer i-ten Stufe eines mehrstufigen Addieres wie folgt
beschreiben:
Pi = Ai exor Bi
Gi = Ai * Bi
Die Summen-und Carry-Bits sind wie folgt beschreibbar:
Si = Pi xor Ci
C i+1 = Gi + Pi*Ci
Gi wird das "carry generate" -Signal genannt. Es produziert ein Carry-Bit am Ausgang, wenn Ai und
Bi beide high sind, ungeachtet des einkommenden Carry-Sugnals.
Pi wird als "carry
propoagate"bezeichnet.
Bei einer Betrachtung mehrerer Stufen kann man nun substituieren:
C2 = G1 + P1*C1
C3 = G2 + P2*C2 = G2 + P2*(G1 + P1*C1) = G2 + P2G1 + P2P1C1
C4 = G3 + P3*G3 = G3 + P3*G2 + P3*P2*G1 + P3*P2*P1*C1
Der logische Ausdruck für C4 ist hier in seiner disjunktiven Normalform gegeben. Er kann damit
durch eine zweistufige Logik mit einer AND-Verknüpfung, gefolgt durch eine ODER-Verknüpfung,
realisiert werden.
Abb. 3.40 zeigt das Bild eines Netzwerkes, das in einem hier 3-stufigen parallelen Addierer die
Carry-Bits im "look ahead"-Verfahren erzeugt und damit wesentliche Beschleungungseffekte erzielen
kann. Ein solcher Addierer wird dann als "Carry-Lookahead-Addierer" bezeichnet.
&
&
P3
>1
C4
>1
C3
>1
C2
&
G3
&
P2
&
G2
P1
&
G1
C1
Abb. 3. 40: Carry-Lookahead-Netzwerk
35
Informatik V-Teil 2, Kap. 3, SS 99
Der Aufbau des mehrstufigen Carry-Lookahead-Addierers ist in Abb. 3.41 dargestellt.
B4
>1
P4
A4
C5
Lookahead-
&
G4
>1
P3
&
G3
>1
P2
&
G2
C5
P4
>1
C4
S4
Generator
B3
P3
A3
C3
>1
S3
>1
S2
>1
S1
B2
P2
A2
C2
B1
>1
P1
&
G1
P1
A1
C1
Abb. 3.41: Addierer mit Carry-Lookahead-Generator
Das in Abb. 3.40 gezeigte Netzwerk deutet bereits an, daß mit zunehmemder Zahl der Stufen der
Aufwand für das Look-Ahead-Netzwerk stark zunimmt.
Der Carry-Lookahead-Addierer wird also z. B. für ein 16 Bit- oder 32 Bit-Rechenwerk eine teure
Investition sein.
Aus diesem Grund sind im Lauf der Zeit weitere Addierer-Typen entwickelt worden (z. B. RippleCarry), die bei geringerem Implementierungsaufwand ebenfalls eine erhebliche Beschleunigung des
Carry-Übertrags bewirken.
3.5.6 Multiplexer und Demultiplexer
In größeren digitalen Schaltungen häufig verwendete Bausteine sind Multiplexer und Demultplexer.
Bausteine dieser Art werden in digitalen Systemen benötigt , um gezielt den Datenfluß durch
bestimmte Kanäle zu steuern.
Multiplexer
Demultiplexer
Ausgang
Eingänge
A
Ausgänge
Eingang
Y
Y1
Y2
X
B
Y3
Y4
C
D
S1
S2
Steuersignale
S1
S2
Steuersignale
Abb. 3.42: Multiplexer und Demultiplexer
Abb. 3.42 zeigt den prinzipiellen Aufbau:
Im Multiplexer (Mux) wird, abhängig von einem Steuersignal, wahlweise nur einer von n
Eingagskanälen logisch mit dem einzigen Ausgang verbunden. Entsprechend werden im
Demultiplexer (Demux) die Werte eines Eingangs wahlweise mit n verschiedenen Ausgängen
verbunden.
36
Informatik V-Teil 2, Kap. 3, SS 99
Dabei ist die Kopplung bzw. Entkopplung nur logisch zu verstehen. Für eine physikalische
Entkopplung (z. B. für wahlweisen Bus-Zugriff) wird man in jedem Fall eine andere Konstruktion
wie z. B. ein Transmission Gate) benötigen.
Adr.
S1 S2
S2
S1
Y
MUX
&
S1
A
0
0
0
A
S2
S1
&
0
1
B
2
1
0
C
S2
S1
&
3
1
1
D
S2
S1
&
1
out
>1
B
1
0
S2
}G03
Y
A
B
C
D
C
D
Logik - Funktion:
Y = S1' * S2' * A + S1' * S2 * B + S1 * S2' * C + S1 * S2 * D
Abb. 3.43: Multiplexer
Die Wahrheitstabelle und das Logik-Diagramm für den Multiplexer sind in Abb. 3.43 dargestellt. Für
den Beispielfall mit vier Eingängen und einem Ausgang wird ein 2-Bit-Steuersignal benötigt. Die
Schaltung ist durch eine zweistufige AND-OR-Logik entsprechend der disjunktiven Normalform
implementierbar.
Entsprechend benötigt der Demultiplexer mit einem Eingang (X) und wahlweise vier Ausgängen
ebenfalls eine 2-Bit-Adresse (Abb. 3. 44). Die Logik ist einstufig implementierbar.
X = Dateneingang
Adr.
0
S1 S2
0
Y1 Y2 Y3 Y4
0
X
0
0
0
1
0
1
0
X
0
0
2
1
0
0
0
X
0
3
1
1
0
0
0
X
Logikfunktionen
S1
S2
S1
S1
S2
S2
Y2
&
X
S1
S2
Y3
&
X
S1
S2
0
}
G
1
3
0
X
Y1 = S1' * S2' * X
Y2 = S1' * S2 * X
Y1
&
Y4
X
0
Y1
1
Y2
2
Y3
3
Y4
&
X
Y3 = S1 * S2' * X
Y4 = S1 * S2 * X
Abb. 3.44: Demultiplexer
Im deutschen Normenkatalog für Schaltzeichen existieren spezielle Symbole für Mux und Demux,
welche Daten- und Steuereingänge kennzeichnen.
3.5.7 Code-Konverter, Codierer, Decodierer
Häufig benötigte kombinatorische Schaltungen sind solche, die innerhalb des Rechners eine
Codierung in eine andere umrechnen.
37
Informatik V-Teil 2, Kap. 3, SS 99
Ein typisches Beispiel wäre die Umrechnung von Zahlenwerten im BCD-Code z. B. in den Excess-3Code. Nachfolgend ist die Wahrheitstabelle für die Umrechnung ausgeführt (Abb. 3.45).
Input BCD
A
B
0
0
0
0
0
0
0
0
1
1
Output Excess-3
C
0
0
0
0
1
1
1
1
0
0
D
0
0
1
1
0
0
1
1
0
0
w
0
1
0
1
0
1
0
1
0
1
x
0
0
0
0
0
1
1
1
1
1
y
0
1
1
1
1
0
0
0
0
1
z
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
Abb. 3.45: Wahrheitstabelle für die BCD- zu Excess-3-Wandlung
Die Schaltung besitzt entsprechend den 4 Bit-Stellen im Code jeweils vier Eingänge und Ausgänge.
Es werden aber nicht alle möglichen Kombinationen der vier Eingangsvariablen benötigt, man erhält
also "don't care"- Werte.
Für die vier Ausgangsvariablen w, x, y, z werden entsprechend vier separate KV-Diagramme
benötigt:
C
C
1
C
1
B
A
C
1
1
1
1
B
A
1
1
B
X
X
X
B
X
X
A
X
X
X
A
1
X
D
X
D
B
1
D
X
D
B
X
D
D
y = CD + C' D'
z = D'
Abb. 3.46 a: KV-Diagramme für die Ausgänge y und z des BCD zu excess-3-Konverters
C
C
C
1
1
1
B
A
C
B
A
1
1
1
1
B
B
X
X
X
1
X
X
D
x = B'C + B'D + BC'D'
X
X
1
1
X
X
A
A
D
X
X
B
D
D
D
X
B
D
W = A + BC + BD
Abb. 3.46b: KV-Diagramme für die Ausgänge w und x des BCD- zu excess-3-Konverters
38
Informatik V-Teil 2, Kap. 3, SS 99
Aus der einzelnen Minimierung der Ausgangsvariablen ergeben sich folgende Gleichungen:
z = D'
y = CD + C'D' = CD + (C + D)'
x = B'C + B' D + B C' D' = B'(C + D) + B C' D'
= B' (C + D) + B (C + D')
w = A + BC + BD = A + B(C + D)
z
D
>1
&
y
C
>1
>1
&
x
B
&
>1
&
w
A
Abb. 3. 47: Implementierung des Konverters mir ANDs, ORs und Invertern
Durch Umformungen wird man versuchen zu erreichen, daß in allen Gleichungen mehrere gleiche
Terme vorkommen. Damit können Logik-Elemente für mehrere Ausgänge gleichzeitig genutzt
werde. Hier kann man das OR-Gatter mit dem Ausgang (C + D) für drei Ausgänge nutzen.
Das Beispiel zeigt auch die Grenzen der Logik-Optimierung mittels des KV-Diagramms: Bei Netzen
mit mehreren Ausgängen wird die Minimierung unabhängig für jede Variable einzeln durchgeführt,
die nachfolgende Optimierung geschieht heuristisch "von Hand". Damit ist nicht gewährleistet, daß
die insgesamt minimale Logik gefunden wurde.
Da man in realen Technologien invertierende Gatter günstiger als nicht-invertierende Gatter
aufbauen kann, wird die reale Schaltung nochmals anders aussehen:
z
D
&
>1
y
C
>1
>1
&
x
B
&
>1
w
&
A
Abb. 3. 48a: Code-Konverter, Ersatz der ANDs durch NANDs
39
Informatik V-Teil 2, Kap. 3, SS 99
z
D
&
&
y
C
>1
&
&
x
B
&
&
w
&
A
Abb. 3.48 b: Ersatz von NORs durch NANDs und "Kürzen" der Inverter
Die Konvertierung erfolgt in 2 Schritten: Zunächst werden (Abb, 3.48a) die AND-Gatter durch
NANDs bei Einfügung weiterer Inverter ersetzt. Im zweiten Schritt erfolgt eine Wandlung von ORs
mit invertierten Eingängen in NANDs und das "Kürzen" überflüssiger Inverter. Die Komplexität der
Schaltung ändert sich hier kaum.
Ein Decoder ist eine Schaltung, welche einen binären Code von n Bits auf maximal 2**n Ausgänge
verteilt. Entsprechend ist ein Encoder eine Schaltung, die maximal 2**n Eingänge auf einen binären
Code mit n Bits umsetzt.
Beide Funktionen werden in der Digitaltechnik häufig verwendet.
2**n
2**n
n
n
Encoder
Decoder
Abb. 3.49: Encoder und Decoder
Als Beispiel sei zunächst ein BCD-zu-Dezimal-Decoder mit 3 Eingängen und 8 Ausgängen
betrachtet.
Eingänge
x
y
z
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
Ausgänge
D0
D1
D2
D3
D4
D5
D6
D7
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
Abb. 3.50: BCD-zu-Dezimal-Decoder
40
Informatik V-Teil 2, Kap. 3, SS 99
Der Decoder ist in dieser Form einfach und mittels einer relativ regulären Struktur implementierbar
(Abb. 3.51).
Allerdings wird man in den meisten Fällen mit den hier verfügbaren 8 dezimalen Werten nicht
zufrieden sein. Es wird ein weiteres Eingangsbit (w) benötigt, um die Dekodierung für die dezimalen
Ziffern 0 bis 9 zu kmplettieren.
Stellt man das zugehörige KV-Diagramm auf (Abb. 3.51), so ist festzustellen, daß nicht benötigte
Wertekombinationen am Eingang auftreten.
y
y
D0
D1
D2
D3
D4
D5
D7
D6
y
W
y
X
X
X
D9
X
X
W
D8
z
y
X
z
z
Abb. 3.51: KV-Diagramm für den BCD-zu-Dezimal-Decoder
Diese kann man entweder als "don't cares" auch zur Vereinfachung der Logik verwenden. Damit
reduziert sich die Zahl der Eingangsvariablen bei einigen Gattern erheblich (Abb. 3. 52).
&
D0 = w' x' y' z'
&
D1 = w' x' y' z
&
D2 = x' y z'
&
D3 = x' y z
&
D4 = x y' z'
&
D5 = x y' z
&
D6 = x y z'
&
D7 = x y z
&
D8 = w z'
&
D9 = w z
Abb. 3.52: Logik-Schaltbild des BCD-zu-Dezimal-Decoders in minimaler Form
Es ist aber auch sinnvoll, das in der korrekt arbeitenden Schaltung nicht auftretende Erscheinen
solcher Kombinationen als Fehlerzustand zu erkennen und abzufangen.
41
Informatik V-Teil 2, Kap. 3, SS 99
Eingänge
w x y z
1
1
1
1
1
1
0
0
1
1
1
1
1
1
0
0
1
1
0
1
0
1
0
1
Ausgänge
D0
D1
D2
D3
D4
D5
D6
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
D7 D8 D9
0
0
0
0
0
1
1
0
1
0
1
0
0
1
0
1
0
1
Abb. 3.51: Ergänzende Wahrheitstabelle für 4 Eingangsvariablen:
nicht zulässige Kombinationen
Man könnte z. B. alle Ausgangsvariablen zu null werden lassen, wenn eine dieser Eingangskombinationen auftritt. Dazu würden zusätzlich 10 4-fach AND-Gatter benötigt.
Bemerkenswert ist, daß ein Decoder stets die 2**n Minterme von n Eingangsvariablen produziert.
Da man jede logische Funktion durch eine Veroderung solcher Minterme darstellen kann, eignet sich
eine Decoder mit nachgeschalteten ODER-Gattern auch zur Implementierung von Logik-Funktionen
auf der Basis der Minterme.
So könnte man z. B. einen Voll-Addierer (mit drei Eingängen) aus einem Decodierer und zwei ORGattern aufbauen (Abb. 3.52).
Decoder werden kommerziell als integrierte MSI-Bausteine (Medium-Scale-Integration) angeboten.
Encoder sind relativ einfach aus OR-Gattern aufzubauen. Abb. 3.53 zeigt die Schaltung eines Oktalzu-binär-Encoders.
D0
D1
x = D4 + D5 + D6 + D7
>1
D2
D3
D4
y = D2 + D3 + D6 + D7
>1
D5
D6
D7
z = D1 + D3 + D5 + D7
>1
Abb. 3. 53: Oktal- zu- binär Encoder
Als MSI-Bausteine werden sogenannte "Priority-Encoder" angeboten.
Bei diesen besteht eine Gewichtung der Eingänge. Z. B. würde eine "1" bei D7 am höchsten
bewertet, eine "1" an einem anderen Eingang entsprechend niedriger. Der Priority-Encoder würde
dann den Ausgangswert erzeugen, der dem höchstwertigen auf "1" liegenden Eingang entspricht.
3.5.8 Kombinatorische Rechnerbaugruppen
Die größten in Rechnern vorkommenden kombinatorischen Baugruppen sind Addierwerke,
Arithmetisch-Logische Einheiten (ALUs) und Multiplizierer.
Wir werden sie in dieser Vorlesung an anderer Stelle behandeln.
42
Herunterladen