3. Kombinatorische Logik 3.1 Grundfunktionen und...

42
Informatik V-Teil 2, Kap. 3, SS 99 1 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 gekenn- zeichnet. 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

Transcript of 3. Kombinatorische Logik 3.1 Grundfunktionen und...

Informatik V-Teil 2, Kap. 3, SS 99

1

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 Algebraund die entsprechende Logik beschränken.Hier sollen die Regeln und Gesetze vorgestellt werden, welche technisch von direkter Bedeutungsind.

In der Digitaltechnik wird bis auf wenige, relativ unbedeutende Ausnahmen fast nur zweiwertigeLogik verwendet. Eine Variable kann also nur die logischen Werte "0" und "1" einnehmen. DieseZustä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 interpretiertwird. 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 wirdhier 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 gekenn-

zeichnet.

Die Zeichen "+" für das logische ODER und "*" für das logische UND führen oft zuVerwechslungen, wenn man nicht genau weiß, ob eine binäre Variable als binäre Zahl oder alsBoolesche Variable zu sehen ist. Wir wollen uns hier deshalb eine möglichst eindeutige Schreibweiseangewö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, nurentweder AND oder OR in Kombination mit der Negation zu verwenden.

Da die Boolesche Algebra die Grundlage technischer Prozesse der Digitaltechnik ist, die mittelseinfacher Schalter aufgebaut werden, bezeichnet man sie auch als "Schaltalgebra".

Natürlich kann man zwischen 2 oder mehr zweiwertigen Variablen noch weitere Relationendefinieren. Man kann nämlich zwischen zwei Booleschen Variablen tatsächlich 16 Verknüpfungendefinieren, die allerdings in der technischen Praxis dann fast ausschließlich aus den logischenGrundfunktionen abgeleitet werden.

Diese Grundfunktionen kann man zunächst über entsprechende Wertetabellen, sogenanntenWahrheitstabellen definieren. Für die Funktionen mit zwei Eingangsvariablen x und y und derAusgangsvariablen 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

Informatik V-Teil 2, Kap. 3, SS 99

2

x y z = x ∧ y0 0 00 1 01 0 01 1 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 praktischmeistens einfacher realisieren läßt:

Eingänge Ausgang ______x y z = ¬ (x ∧ y) = (x ∧ y)0 0 11 0 10 1 11 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 Ausgängex y z = x ∨ y0 0 00 1 11 0 11 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 Ausgänge _____x y z = ¬ (x ∨ y) = (x ∨ y)0 0 10 1 01 0 01 1 0

Aus den Tafeln kann man folgende Grundregeln ableiten:

0 ∨ 0 = 0 0 ∨ 1 = 1 ∨ 0 = 11 ∧ 1 = 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 ∨ aDas assoziative Gesetz bestimmt die Zusammenfassung der Operanden bei mehr als zweiEingangsvariablen (X1, X2, X3):

Informatik V-Teil 2, Kap. 3, SS 99

3

Konjunktion: X1 ∧ X2 ∧ X3 = X1 ∧ (X2 ∧ X3) = (X1 ∧ X2) ∧ X3Disjunktion: X1 ∨ X2 ∨ X3 = X1 ∨ (X2 ∨ X3) = (X1 ∨ X2) ∨ X3Auch die Gültigkeit des aus der "gewöhnlichen" Algebra bekannten distributiven Gesetzes kannnachgewiesen 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 aeine Boolesche Variable ist, so gilt:

a ∧ 1 = aa ∨ 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 DeMorgan:

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 Funktionenvereinfachen 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 __

Informatik V-Teil 2, Kap. 3, SS 99

4

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 verschiedeneVerknüpfungen zwischen 2 logischen Variablen definieren kann.Wie in der Digitaltechnik oft üblich, bezeichnen wir die Eingangsvariablen mit a und b und dieAusgangsvariable mit Y und einem Index i.

Verknüpfung Funktionswert für Bezeichnunga 0 1 0 1

b 0 0 1 1

Y0 = 0 0 0 0 0 Nullfunktion / Null

Y1 = a ∧ b 0 0 0 1 Konjunktion, UND-Verknüpfung _Y2 = a ∧ b 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 0 1 1 1 Disjunktion, ODER-Verknüpfung

____ _ _Y8 = a ∨ b = a ∧ b 1 0 0 0 Peirce-Verknüpfung, NOR _ _Y9 = (a ∧ b) ∨ (a ∧ b) 1 0 0 1 a ↔ b Äquivalenz

_Y10 = a 1 0 1 0 ¬ a, a' Negation _Y11 = a ∨ b = a → b 1 0 1 1 Implikation, wenn - dann

_Y12 = b 1 1 0 0 ¬ b, b' Negation _Y13 = b ∨ a = b → a 1 1 0 1 Implikation _____ _ _Y14 = a ∧ b = a ∨ b 1 1 1 0 Sheffer-Funktion, NAND-Verknüpfung

Y15 = 1 1 1 1 1 Eins-Funktion, EinheitTechnisch wird man mit vorhandenen Grundbauelementen alle diese Funktion mehr oder weniger gutdarstellen können. Wir haben zunächst die AND und die OR-Funktion sowie die Negationeingeführt. Mit AND oder OR jeweils plus der Negierung lassen sich alle anderen Funktionen

Informatik V-Teil 2, Kap. 3, SS 99

5

darstellen. Günstig ist auch, dass für AND und OR das kommutative, das assiozative und dasdistributive 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. Peirce-Operator. 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 dasAssoziativgesetz.Beide sind auch mehrstellig definiert:Das Ergebnis einer Äquivalenzfunktion (XNOR) ist genau dann 1, wenn die Anzahl der Nullen imArgument gerade ist.Das Ergebis der Antivalenzfunktion (XOR) ist genau dann 1, wenn die Anzahl der Einsen imArgument ungerade ist.

3.1.2 Normalformen Boolescher Gleichungen

Will man mit logischen Schaltungen solch halbwegs sinnvolle Objekte wie Computer bauen, so isteine einfache und übersichtliche Darstellung logischer Funktionen notwendig.Für die Darstellung logischer Funktionen in der Praxis benutzt man vorwiegend die AND- und dieOR-Funktion in einer besonderen Verknüpfung.Als Normalform einer Booleschen Funktion gilt eine Darstellung, bei der nur Negation, konjunktiveund 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 Eingangsvariablein negierter oder nicht-negierter Form vorkommen muß.

Für eine Boolesche Funktion mit den Eingangswerten A, B, C gibt es insgesamt 8 möglicheMinterme:

__ __ _ _ _ _ _ __ __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 jedeEingangsvariable 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 ∨ CDie sogenannte Normalform einer Booleschen Gleichung erhält man entweder durch die disjunktiveVerknüpfung von Mintermen als sogenannte "disjunktive Normalform" oder als konjunktiveVerknüpfung von Maxtermen als sogenannte "konjuktive Normalform".

Informatik V-Teil 2, Kap. 3, SS 99

6

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 ineinanderumwandeln.

Zur Aufstellung der Normalform geht man von der Wahrheitstabelle aus.

Beispiel:

X1 X2 X3 Y0 0 0 0 01 0 0 1 12 0 1 0 13 0 1 1 04 1 0 0 15 1 0 1 06 1 1 0 07 1 1 1 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 = 0wird, 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 Normalformtechnisch verwendet, um bei einer vorgegebenen Wertetabelle die Logik-Schaltung zu finden, welchediese 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. Diesbedeutet auch, daß (bis auf unvermeidbare Rückwirkungen der Grundelemente wie Transistoren)keine Rückkopplungen vorkommen. Eine Zustandsänderung am Eingang eines kombinatorischenBlocks wird also, so die logische Funktion dies zuläßt, stets in eine Zustandsänderung am Ausgangumgesetzt.

In Rechnern heutiger Generation wird fast ausschließlich 2-wertige Logik verwendet, obwohlLogiken beliebig hoher Ordnung mathematisch darstellbar sind.

Beschrieben werden kombinatorische Schaltungen z. B. durch 2-wertige Boolesche Logik. Diezulässigen Zustände sind "0" oder "low" und "1" oder "high".Bemerkung:

Informatik V-Teil 2, Kap. 3, SS 99

7

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 UND-Verknü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 denGrundfunktionen kombinieren.

Logik-Elemente spielen in Rechnern natürlich die dominierende Rolle:

Einmal sind komplexere arithmetische Einheiten (Addierer, Subtrahierer) und andereFunktionsblöcke (Coder, Decoder, Multiplexer, Demultiplexer), die in Rechnern als Makro-Bausteine verwendet werden, oft aus Logik-Bausteinen aufgebaut. Auch sequentielle Schaltungs-elemente enthalten logische Bausteine, dann aber mit Rückkopplungen.Die Beschreibung von Logik geschieht für Grundelemente und oft auch für komplexeFunktionsblöcke oft durch logische Wertetabellen, meistens als Wahrheitstabellen bezeichnet..

Beispiele:

Eingänge Ausgang Eingänge AusgangAND-Gatter x y out OR-Gatter x y out

&x

yout

0 0 0

> 1x

yout

0 0 01 0 0 1 0 1

0 1 0 0 1 11 1 1 1 1 1

Aus technologischen Gründen werden die Grundgatter in realen Schaltungen oft als invertierendeGatter realisiert , d. h. als NAND und NOR.

Eingänge Ausgang Eingänge Ausgang

Informatik V-Teil 2, Kap. 3, SS 99

8

NAND-Gatter x y out NOR-Gatter x y out

&x

yout

0 0 1

> 1x

yout

0 0 1 1 0 1 1 0 0 0 1 1 0 1 0

1 1 0 1 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 fachAND, OR, NAND, NOR sind durchaus üblich) sein, sind logisch äquivalent. Man kann sie alsobeliebig 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 amGatter-Ausgang durchaus unterschiedliche Verzögerungszeiten erhalten, je nachdem, über welchender 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:

Eingänge Ausgang Eingänge AusgangGatter XOR x y out XNOR x y out

= 1x

yout

0 0 0

= 1x

yout

0 0 1 1 0 1 1 0 0 0 1 1 0 1 0 1 1 0 1 1 1

Es ist anzumerken, daß XOR und XNOR eigentlich nur für 2 Eingänge definiert sind, während dieGrundfunktionen 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 beiBit-Vergleichsoperationen als auch in Addierern vorzüglich einsetzbar. Mit dem XOR hat man, bisauf 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. Eineandere Art der Beschreibung sind die Booleschen Gleichungen.3.3 Realisierung von Logik und Eigenschaften realer Bauelemente

Informatik V-Teil 2, Kap. 3, SS 99

9

3.3.1 Realisierungen

Logische and arithmetische Schaltungen werden in Rechnern in unterschiedlichsten Ausführungenbenötigt.

Man unterscheidet zunächst einstufige und mehrstufige Logik. Für komplexe Logik-Funktionenwerden mehrere Stufen benötigt.

In der graphischen Darstellung komplexerer logischer Funktionen werden Invertierungen oft nicht alsseparate Elmente dargestellt, sondern als Kreise an den Logik-Funktionen. Die nachfolgendeAbbildung zeigt also die Funktion

__out = x * y

&x

yout

Abb. 3.1: Logik-Symbol mit Invertierung am Eingang

&

&

&

&

> 1Y

x1x2x3x4x5x6x7x8

Abb. 3.2: Zweistufige kombinatorische Logik-Schaltung aubauend auf die disjunktivenNormalform

& Y

x1x2x3x4x5x6x7x8

> 1

> 1

> 1

> 1

Abb. 3.3: Zweistufige kombinatorische Logikschaltung aufbauend auf die konjunktiveNormalform

Auch die Darstellung noch komplexerer Logik-Funktionen, z. B. in zweistufiger Darstellungaufgrund disjunktiver oder konjunktiver Normalfomen ist möglich.Die Realisierung kann ganz unterschiedlich erfolgen:

Informatik V-Teil 2, Kap. 3, SS 99

10

a. Aufbau aus logischen Grundgattern

Dies ist zweifellos die "einfachste" und allgemeinste Methode, da man Logik-Beschreibungen quasidirekt und ohne wesentliche Einschränkungen umsetzen kann. Sie ist jedoch nicht unbedingt auch dieeffektivste. Sie eignet sich besonders dann, wenn logische Netze mit vielen Eingängen und nur einembis 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 ausEinzelgattern.

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, aberdabei fast gleich viele Ausgänge wie Eingänge.PLAs und vergleichbare Methoden eignen sich also dann, wenn eine Logik geringer Tiefe, abergroßer Breite (viele Ein-und Ausgänge) benötigt wird.

d. Leitungsstrukturen

In der "normalen" (z. B. CMOS-) Schaltungstechnik ist es verboten, Gatterausgänge direktzusammenzuschalten. 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 Ausgangsstromeines auf "high" liegenden, angeschlossenen anderen Ausgangs aufnehmen. Der Ausgang wirdlogisch "low". Er bekommt nur dann den Spannungwert "high", wenn beide treibenden Gatter amAusgang auf "high" sind. Dies wäre dann ein "wired-AND". Entsprechend kann man auch "wired-OR" Funktionen realisieren.In der CMOS-Schaltungstechnik sind solche Methoden allerdings explizitverboten, z. B., weil sie zu erhöhter Leistungsaufnahme und schlechter Testbarkeit der Schaltungenfü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 derentsprechenden 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 Schaltkreis-Technologie abhängen. In den meisten Technologien (z. B. CMOS) sind NAND und NOR-Gattereinstufig zu realisieren, ANDs und ORs benötigen 2 Stufen.Deshalb wird der Realisierung durch NANDs und NORs der Vorzug gegeben, wobei NANDs wegender in CMOS meist schnelleren n-Kanal-Transistoren generell günstiger sind. (Als Erinnerung: InCMOS-Technik sind die p-Kanal-Transistoren bei gleicher Leitfähigkeit und gleicher Kanallängeetwa 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" inCMOS-Technik sehr langsam. Dann ist eine mehrstufige Realisierung aus Gattern mit niedrigem Fan-in 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

Informatik V-Teil 2, Kap. 3, SS 99

11

Reale Logik-Bausteine sind nicht allein durch ihre Wertetabelle gekennzeichnet.Insbesondere ist von Bedeutung, in welcher Zeit sie bei welcher Belastung den Spannungspegel amAusgang von logisch "high" nach "low" und umgekehrt ändern können.

Logische Pegel

U / V

1

2

3

4

"low" ( 0 )

"high" ( 1 )

undefiniert

Abb. 3.4: Spannungen und "logische"Pegel

Für jede spezielle Schaltkreis-Technologie, bei der einzelne Gatter als "Bauelemente" zurRealisierung von Logik-Schaltungen erhältlich sind (TTL, ECL, CMOS) sind "logische"Spannungspegel definiert. So wird eine Spannung unterhalb eines bestimmten "low" - Grenzwertesam Eingang eines Gatters von diesem als eine logische "0" interpretiert werden. Andererseits wirdeine Spannung oberhalb eines "high"-Grenzwertes stets als logische "1" angesehen werden. Fürdazwischenliegende Spannungen ist die Interpretation unsicher.In integrierten CMOS-Schaltungen wird man Spannungen unter 1,5 V sicher als logisch "0", über 4,5V sicher als "high" annehmen können, sofern in der Schaltung weder Entwurfsfehler noch Defekteaus der Fertigung vorliegen.

Pegel und Schaltzeiten

Jedes logische Schaltelement benötigt eine gewisse Zeit, um auf Spannungsänderungen am Eingangzu 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 kurzeSpannungspulse werden ggf. ohne eine Reaktion des Gatters "geschluckt". Außerdem muß dasSignal einen bestimmten Spannungpegel, die sogenannte "Schwellenspannung" Us erreichen, damitdas angesteuerte Logik-Gatter umschalten kann. Diese Schwellenspannung liegt bei symmetrischaufgebauten Gatterstrukturen (z. B. CMOS) etwa in der Mitte zwischen dem "high"- und dem"low"-Spannungspegel. Dies ist kein Grundgesetz, bei unsymmetrisch aufgebauten Gattern kann sichdieser Umschaltpegel durchaus zu höheren oder niedrigeren Spannungen verschieben.

U low

Uhigh

U hSpannungshub

U

t

U sUmschaltspannung

Abb. 3.5: Form digitaler Signale

Informatik V-Teil 2, Kap. 3, SS 99

12

Digitale Schaltungen sind in hohem Maße nicht-linear. Die Transistoren eines Gatters sind in derLage, bereits eine relativ kleine Eingangsspannung auf den Endwert des Ausgangssignals zuverstärken. Das darüber hinaus vorhandene Potential zur Signalverstärkung wird genutzt, um amSchaltungsausgang möglichst steile Flanken im Signalverlauf zu erhalten.

0,9 Uh

0,1 Uhtr

U

t

tf

Uh

Abb. 3.6: Anstiegs- und Abfallzeiten digitaler Signale

Ein Charakrteristikum von digitalen Signalen, wie sie von Gatter-Schaltungen erzeigt werden, sinddie Anstiegs- und die Abfallzeiten tr und tf. Sie sind nicht nur von den Eigenschaften des jeweiligenGatters selbst abhängig, sondern auch von der Belastung am Gatterausgang, dem sogenannten "Fan-Out".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 normierteEingangslasten, 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 esmüssen Gatter mit höherer Treiberfähigkeit verwendet werden, die z. B. ein Fan-out von vierzulassen.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 treibendeGatter durchaus eine höhere Belastung darstellen, also ein "Fan-in" von 2, 3 oder 4 haben.

fan-out 3

fan-in 1

fan-in 1

fan-in 1

Treiberfan-out 6

> 1x

yout

&x

yout

> 1x

yout

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ürjeden Verbindungspunkt zwischen Gattern die vorhandene Last, das ist die Summe der angeschlos-senen Fan-in-Werte den Wert des zulässigen Fan-Outs nicht übersteigt.

Informatik V-Teil 2, Kap. 3, SS 99

13

0,9 Uh

0,1 Uh

U

t

Uh

0,5 Uh

tdf

inout out

outin in

tdr

Abb. 3.7: Gatter-Verzögerungszeiten

Die durch die internen Verzögerungen hervorgerufenen Laufzeiten in Gattern beziehen sich auf dieDurchgänge der Eingangs- bzw. Ausgangspegel durch den Wert des halben Spannungshubes. Damitgehen auch Anstiegs- und Abfallzeiten indirekt in die Gatter-Verzögerungszeiten ein.

Gatter-Laufzeiten in den heute üblichen CMOS-Technologien liegen in der Regel unter einerNanosekunde ( 10**-9 s). Laufzeiten um 100 ps sind mit bipolaren Logiken seit längerem erreichtworden 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 durchdie aktiven Schaltelemente, sondern durch die Signallaufzeiten auf den Verbindungsleitungen bedingtsind.

Bisher nicht ausführlich behandelt wurde der Aspekt der Störsicherheit und der sogenannte"Störabstand" in digitalen Schaltungen.

Nutzsignal

Störungen

"Glitch"

t

Spannung

Uth

Uh

Ul

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 aufeiner Leitung sind fast immer erhebliche parasitäre Störsignale überlagert. Während in analogenSystemen die Höhe der Spannung direkt für die zu übertragende Information maßgeblich ist, hat manin digitalen Systemen genau diese Abhängigkeit weitgehend aufgebrochen. Das Ergebnis ist diecharakteristisch hohe Festigkeit digitaler Signalverarbeitung gegenüber Störungen. Diese kann durchfehlertolerante Ü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 CMOS-Schaltungen mit 5 V Versorgungsspannung liegt er bei nahezu 5 V. Neuere CMOS-Schaltungen, diemit 3,5 oder gar 1,5 V Versorgungsspannung betrieben werden, haben eine entsprechend geringereStörfestigkeit.

Informatik V-Teil 2, Kap. 3, SS 99

14

In digitalen Schaltungen ergeben sich typischerweise auch Störungen, die aus kurzen Impulsen mithoher Spannung bestehen ("Glitches", "Spikes").Sehr kurze Impulse werden teilweise von den betroffenen Gattern quasi ignoriert, wenn nämlich diemit dem Puls verbundene elektrische Ladung nicht ausreicht, die Eingangskapazität des Gattersaufzuladen 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 sensitivenPegel an Gatter-Eingängen und Gatter-Ausgängen bestimmt.

Uout

Gatterausgang Gattereingang

Uolmax

Uilmax

Uohmin

VDD VDD

Uihmin

H-PegelH-Pegel

L-PegelL-Pegel

Sh

Sl

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 alseindeutig "low" erkennen. Die als noch "low" erkannte minimale Spannung des angesteuertenGatters 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 Uohminbereitstellen, die höher ist als der minimal vom angesteuerten Gatter als "high" erkannte WertUihmin.Der Abstand ist der High-Störabstand Sh.

Bei Gattern der bipolaren Logik (TTL) betragen die Abstände Sl = 0,4 Vund Sh = 0,4 V.Der dynamische Störabstand für Spannungsspitzen ist abhängig von Amplitude und Dauer derStö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 "erdenkenund 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, einesogenannte Gatter-Netzliste, umgesetzt werden.

Informatik V-Teil 2, Kap. 3, SS 99

15

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ß dieRealisierung keine Redundanzen mehr aufweist, also mit der minimal möglichen Anzahl logischerGrundfunktionen und Bauelemente auskommt.

Diese logische Minimierung dient mehreren Zwecken:

1. Minimierung der Aufwandes an Hardware für die Realisierung einer Schaltung, was meistens auchminimale 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 ihreFunktion trotzdem noch. Ein Prüfverfahren für statische Fehler kann also den Ausfall nichtentdecken. Der jetzt auftretende "Glitch" wird oft an den Ausgängen der Schaltung nicht sichtbarsein, 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 derBoolschen Algebra zur Reduzierung der Variablen.Dieses Verfahren eignet sich für Gleichungen mit bis zu etwa vier Variablen.

2. Algorithmische VerfahrenVerfahren dieser Art sind für die Behandlung auf dem Digitalrechner besonders geeignet. Ambekanntesten ist das Verfahren nach Quine-McCluskey. Die Anzahl der Eingangsvariablen darf fastbeliebig groß sein. Man unterscheidet zwischen Verfahren, welche sich zur Minimierung zweistufigerLogik eignen und solchen, welche beliebige Logik-Funktionen mimimieren können. Bekanntealgorithmische 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 werdenmuß.

3. Graphische VerfahrenFür die Minimierung kleinerer Logiken "von Hand" haben sich graphische Verfahren als gutbrauchbar 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 komplexesProblem. Bekannte Methoden und Verfahren liefern mehr oder weniger brauchbareNäherungslösungen, aber kaum exakte Optimierungen. Dies gilt auch für die kommerziellerhältlichen Werkzeuge, z. B. der Fa. SYNOPSYS.

Das zur Zeit wohl verbreitetste Programmpaket zur Logik-Optimierung ist ESPRESSO derUniversity of California, Berkeley.

Informatik V-Teil 2, Kap. 3, SS 99

16

Seit ca. 1993 existieren erste Arbeiten, welche Methoden und Algorithmen, die ursprünglich für dieautomatische 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 Veitchentwickelt und dann von Karnaugh vereinfacht. Sie wird heute oft auch als "Veitch-Karnaugh-Methode" 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 einesSchachbrett-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 einerVariablen unterscheiden.

X1 X2 Minterm

0 0 0 X1 X2

Wahrheitstabelle

1 0 1 X1 X22 1 0 X1 X23 1 1 X1 X2

01

23

X1

X1

X2 X2

KV - Diagramm

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 danachdas entsprechende KV-Diagramm aufgestellt. Die logischen Variablen werden am Rand des KV-Diagramms in fortlaufender Reihenfolge angeordnet. Man beginnt mit der Variablen, die in derWahrheitstabelle rechts steht (z. B. weil sie die niedrigste Wertikeit hat) am oberen Rand undbeschriftet 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 desKV-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 zuvereinfachen. Er wird als Prim-Implikant bezeichnet.

7. Die logische Gleichung ergibt sich als disjunktive (ODER-) Verknüpfung der konjunktivenTerme.

Informatik V-Teil 2, Kap. 3, SS 99

17

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 Minimalformumgewandelt werden.Abb. 3. 11 zeigt ein einfaches Beispiel mit 2 Variablen.

X1 X2 Y

0 0 0

Wahrheitstabelle

1 0 1 2 1 0 3 1 1

01

23

X1

X1

X2 X2

KV - Diagramm

1010

0

0

1

1

Abb. 3.11: Beispiel: Wahrheitstabelle und KV-Diagramm für eine Logik-Funktion mit 2Eingangsvariablen

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. DieWahrheitstabelle mit den Mintermen und die Struktur des KV-Diagramms zeigt Abb. 3. 12.

X1 X2 X3 Minterm

0 0 0 0 X1 X2 X3

1 0 0 1 X1 X2 X3

2 0 1 0 X1 X2 X3

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

Wahrheitstabelle

01 45

2673

X1X1X1X1

X2

X2

X3 X3

Abb. 3.12: Wahrheitstabelle und KV-Diagramm (Schema) für 3 EingangsvariableDie Anwendung für ein Beispiel mit drei Eingangsvariablen zeigt Abb. 3.13. Hier soll eine Logik mitzwei Ausgängen (Y1 bzw. Y2) minimiert werden.

Informatik V-Teil 2, Kap. 3, SS 99

18

X1 X2 X3 Y1

0 0 0 0 1 1

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

Wahrheitstabelle

01 45

2673

X1X1X1X1

X2

X2

X3 X3

Y2

1

2673

X1X1X1X1

X2

X2

X3 X3

KV-Diagramm für Y1

KV-Diagramm für Y2

* redundante Terme

000

001

1

1

000

5 4 0

1

11 * *

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 dieGrenzen 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 Blockzusammenfassen.

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 dieundefinierten Werte in den Feldern 4 und 5 auf "1", so läßt sich neben dem Block aus den Feldern 2und 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 zusammen-fassen:

___________Y2 = X1 + X2 X3

Informatik V-Teil 2, Kap. 3, SS 99

19

Für die technische Realisierung sind beide Alternativen gleich günstig.

Mit insgesamt vier Eingangsvariablen läßt sich das KV-Diagramm auch noch relativ übersichtlichgestalten:

0 0 0 0 0

X1 X2 X3 X4 Minterm

X1 X2 X3 X4X1 X2 X3 X4

1 0 0 0 1X1 X2 X3 X42 0 0 1 0

3 0 0 1 14 0 1 0 05 0 1 0 16 0 1 1 07 0 1 1 1

X1 X2 X3 X4X1 X2 X3 X4

8 1 0 0 09 1 0 0 1

10 1 0 1 011 1 0 1 112 1 1 0 013 1 1 0 114 1 1 1 015 1 1 1 1

X1 X2 X3 X4X1 X2 X3 X4X1 X2 X3 X4X1 X2 X3 X4X1 X2 X3 X4X1 X2 X3 X4X1 X2 X3 X4X1 X2 X3 X4X1 X2 X3 X4X1 X2 X3 X4X1 X2 X3 X4

X4 X4

X3

X3

X2 X2 X2

X1

X1

X1

3 7 6 2

11 15 14 10

9 13 12 8

1 5 4 0

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 0 0 0 0 1 1

X1 X2 X3 X4 Y1 Y2

1 0 0 0 1 1 12 0 0 1 0 1 13 0 0 1 1 0 *4 0 1 0 0 0 05 0 1 0 1 0 06 0 1 1 0 0 07 0 1 1 1 0 08 1 0 0 0 0 *9 1 0 0 1 0 *

10 1 0 1 0 1 111 1 0 1 1 1 112 1 1 0 0 0 *13 1 1 0 1 0 014 1 1 1 0 0 015 1 1 1 1 0 *

X4 X4

X3

X3

X2 X2 X2

X1

X1

X1

3 7 6 2

11 15 14 10

9 13 12 8

1 5 4 0

K1V - Diagramm für Y1

0 0 0 1

1 0 0 1

0 0 0 0

1 0 0 1

Abb. 3.15: Beispiel für KV-Diagramm mit 4 Eingangsvariablen

Auch hier kann man wieder die disjunktive Normalform anhand der Wahrheitstabelle direkthinschreiben: __ __ __ __ __ __ __ __ __ __ __ __ __Y1 = X1 X2 X3 X4 + X1 X2 X3 X4 + X1 X2 X3 X4 + X1 X2 X3 X4 + X1 X2 X3 X4Unter 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. Dannwird die Minimalform:

Informatik V-Teil 2, Kap. 3, SS 99

20

___ ___ __ __ __ __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, dieErgebnisse 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 konjuktiveNormalform vornehmen.

Die separat vorgenommene Minimierung für den Ausgang Y2 zeigt, daß man hier unter Ausnutzungder "dont cares" zwei Gruppen von jeweils 8 Elementen bilden kann.

X4 X4

X3

X3

X2 X2 X2

X1

X1

X1

3 7 6 2

11 15 14 10

9 13 12 8

1 5 4 0

KV-Diagramm für Y2

100*

1 * 0 1

* 0 * *

1 0 0 1

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 istes aber grundsätzlich auch für eine noch größere Zahl n von Eingangsvariablen, auch wenn damit dieZahl der Zustände mit 2**n ansteigt. Die Verhältnisse für 5 Eingangsvariable sind in Abb. 3.17dargestellt:

Informatik V-Teil 2, Kap. 3, SS 99

21

X 1 X 2 X 3 X 4 X 5 M in term e

0 0 0 0 0 0 X 1 X 2 X 3 X 4 X 51 0 0 0 0 1 X 1 X 2 X 3 X 4 X 52 0 0 0 1 0 X 1 X 2 X 3 X 4 X 53 0 0 0 1 1 X 1 X 2 X 3 X 4 X 5

3 1 1 1 1 1 1u s w . bis

X 1 X 2 X 3 X 4 X 5

X 2

X 2

X 2

X 4

X 4

X 3 X 3 X 3 X 3 X 3

X 5 X 5X 1 X 1 X 1

262218192373

1014302627311511

81228242529139

042016172151

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 istnun die "Schachtelung" von zwei Eingangsvariablen notwendig.

X1 X2 X3 X4 X5

4 0 0 1 0 0 15 0 0 1 0 1 16 0 0 1 1 0 17 0 0 1 1 1 1

X2

X2

X2

X4

X4

X5 X5X1 X1 X1

262218192373

1014302627311511

81228242529139

042016172151

Y

16 1 0 0 0 0 124 1 1 0 0 0 1

Rest 0

0

0

0

0

1

0

0

1

0

0

0

0

0

0

1

1

0

0

0

0

X3 X3 X3X3 X3

0

0

0

0

1

0

0

1

0

0

0

0

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 diereduzierte 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 X4In diesem Fall ist die aus den 1-Feldern gwonnene Minimalform die günstigere.

Informatik V-Teil 2, Kap. 3, SS 99

22

Diese Beispiele sollen zeigen, daß die Minimierung logischer Funktionen nur für kleine Schaltungenein "manuell" durchführbarer Vorgang ist. Für große Schaltungen sind algorithmische Methodenunverzichtbar.

3.4.3 Das Verfahren nach Quine-McCluskey

Dieses zunächst von Quine vorgeschlagene und von Mc Cluskey verbesserte Verfahren ist auch dannnoch anwendbar, wenn graphische Methoden wie das KV-Diagramm wegen zu hoher Anzahl derVariablen 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 dievereinfachte 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 logischenFunktion F(w,x,y,z). Ausgangspunkt ist wieder die disjunktive Normalform mit der Numerierung derTerme, 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 erzeugensollen:

w x y z komb.Term No.

0 0 0 0 0 ja

1 0 0 0 1 ja2 0 0 1 0 ja

8 1 0 0 0 ja

10 1 0 1 0 ja

11 1 0 1 1 ja14 1 1 1 0 ja

15 1 1 1 1 ja

(a)

Terme

0,1 0 0 0 -0,2 0 0 - 0

0,8 - 0 0 0 ja

(b)

2, 10 - 0 1 08, 10 1 0 - 0

10, 11 1 0 1 - ja10, 14 1 0 - 1

11, 15 1 - 1 114, 15 1 1 1 1

ja

jaja

ja

jaja

w x y z komb. w x y z

0,2,8,10 - 0 - 00,8,2,10 - 0 - 0

10,11,14,15 1 - 1 -10,14,11,15 1 - 1 -

(c)

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. DieBitstelle, an der der Unterscheid auftritt, wird mit " - " versehen. Man vergleicht dazu alle Elementeaus einer Sektion mit allen der darunterliegenden. Diese Terme werden in einem entsprechendenneuen Schema (b) sortiert. In unserem Fall können aus der Liste in (a) alle Terme kombiniert werdenund werden entsprechend annotiert. Das Scheme (b) ist nach demselben Gesichtpunkt "Zahl der 1-Werte" 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önnennochmals kombiniert werden und bilden das Schema (c).

Informatik V-Teil 2, Kap. 3, SS 99

23

Eine weitere Vereinfachung ist dann nicht mehr möglich. Deshalb wird das Schema für diesen Fallmit (c) abgeschlossen.Der eine Term aus (b) und alle Term aus (c) sind Prim-Implikanten.Dies sind also:

0 0 0 -- 0 - 01 - 1 -

Die Terme in (c) treten zweimal auf, man wird sie bei der Bestimmung der Minimalform aber nureinmal 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 Minimalformergibt.

Die wird im allemeinen Fall so nicht funktionieren, man muß sich im zweiten Schritt aus dengefundenen Prim-Implikanten noch die Minimalform ermitteln.

Im nächsten Beispiel, das für eine andere Funktiuon mit ebenfalls vier Eingangsvariablen gilt, bringtdie erste Stufe der Minimierung eine größere Zahl von Prim-Implikanten:

Binärstellen Termw x y z

- 0 0 1 x' y' z 0 1 - 0 w' x z'0 1 1 - w' x y- 1 1 1 x y z1 - 1 1 w y z

1 0 - - 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 abernoch nicht minimal ist.

Minterme

1 4 6 7 8 9 10 11 15Prim-Implikanten

x' y' z 1,9 x x

w' x z' 4,6 x x

w' x y 6,7 x x

x y z 7, 15 x x

w y z 11,15 x x

w x' 8,9,10,11 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

Informatik V-Teil 2, Kap. 3, SS 99

24

Abb. 3.21 zeigt das zur Auswahl der Prim-Implikanten für die minimale Normalform verwendeteSchema.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 abgedecktwird.Im zweiten Schritt ist dann zu ermitteln, welche Minterme durch genau einen der vorhandenen Prim-Implikanten erfaßt werden. Das entspricht im Schema Spalten, die nur ein Kreuz haben. Wenn einMinterm nur durch genau einen Prim-Implikanten überdeckt ist, dann muß dieser Prim-Implikantnotwendigerweise in der Logikfunktion erscheinen. Man nennt solche PIs "essentielle PIs". Mitdiesem Schritt sind die essentiellen PIs ermittelt.

Minterme

1 4 6 7 8 9 10 11 15Prim-Implikanten

x' y' z 1,9 x x

w' x z' 4,6 x x

w' x y 6,7 x x

x y z 7, 15 x x

w y z 11,15 x x

w x' 8,9,10,11 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 mehrerePIs abgedeckt werden können, durch die essentiellen PIs schon erfaßt sind. Im Beispiel sind nur dieMinterme 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 derSuche 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-funktioneine konjunktive oder disjunktive Minimalform.Diese im allgemeinen Fall aus eine Logik-Gleichung zu gewinnen, kann durchaus aufwendig sein. FürLogiken, die mehr als zweistufig werden müssen, funktioniert das Verfahren gar nicht. BeideVerfahren liefern als Ausgang zunächst auch nur die Minimierung für eine Ausgangsvariable. BeiLogiken mit mehreren Ausgängen muß man das Verfahren entsprechend mehrfach ausführen.

Informatik V-Teil 2, Kap. 3, SS 99

25

Die gemeinsame Verwendung von Termen für beide Ausgänge ist dann möglich, erfordert aberzusätzliche "Handarbeit".Es existieren weitere Verfahren zur Logik-Minimierung auch für Funktionen mit größerer logischerTiefe, die allerdings nicht deterministisch zu der minimalen Logik führen (z. B. im ProgrammpaketESPRESSO der University of California, Berkeley). Trotz vieler Arbeiten in den letzten Jahren istdie 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 derTransistoren oder der Gatter aus beginnen, sondern mit komplexeren Bausteinen für arithmetischeund logische Grundfunktionen arbeiten wollen. Wenn diese speichernde Eigenschaften haben, wirdman sie zur sequentiellen Logik rechnen. Aber auch rein kombinatorische Makros sind sinnvoll.

Für logische Funktionen wird man einmal komplexere Verknüpfungsmöglichkeiten als Einzelgatterhaben 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 ausnicht-invertierenden Logik-Elementen auzubauen.Die meisten Realisierungen von Logik-Funktionen beruhen aber auf Technologien, bei deneninvertierende Funktionen (NAND, NOR) mit einer einstufigen Transistorschaltung realisierbar sind,während nicht-invertierende Funktionen (AND, OR) zusätzlich einen Inverter benötigen. Folglichsind NAND und NOR mit weniger Transistoren und deshalb auf geringerem Raum und mitschnelleren Schaltzeiten realisierbar. Darüber hinaus gibt es Technologien, die vorzugsweise dieRealisierung aus NANDs oder NORs unterstützen. Deshalb sind für die Implementierung von Logikin hochintegrierten Schaltungen Techniken interessant, welche eine beliebige Konvertierung vonLogik auf unterschiedliche Basis-Funktionen zulassen. Grundlage solcher Techniken ist die Regelnach de Morgan. (Abb. 3. 23).

&> 1

äquivalent

(de Morgan)> 1 &

entspricht

Abb. 3.23: Logische Äquivalenzen

Informatik V-Teil 2, Kap. 3, SS 99

26

Algorithmen, mit deren Hilfe eine AND - OR-Logik in eine NAND-NOR-Logik ungewandeltwerden kann, sind bekannt Vorgestellt werden soll hier eine Methode, welche auf der Basis deslogischen Netzes eine solche Umwandlung erlaubt.Zunächst kann man an beiden Enden einer Verbindung zwischen zwei logischen Bausteinen je einenInverter 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 deMorgan 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 undOR aus NOR bzw NAND mit zusätzlich invertierten Eingängen angeben (Abb. 3. 24).

&> 1

&

> 1 > 1 &

äquivalent äquivalent

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):

entspricht

entspricht

&

&

&

&

&

> 1

> 1

> 1

> 1

> 1

> 1&

Abb. 3. 25: Konvertierung von Schaltnetzen von nicht-invertierenden zu invertierendenGatter-Bausteinen

Damit sind im allgmeinen die Umwandlungen von Gatter-Netzen ohne große Problem möglich. Einpraktisches Beispiel ist in Abb. 3. 26 für die Konvertierung eines Netzwerks mit AND und R-Gatternin eines mit NANDs angegeben. Das Verfahren gilt natürlich auch für Gatter mit mehr als zweiEingängen. In dieser Weise läßt es natürlich nur für kombinatorische Schaltungen, also solche ohneinterne Rückkopplung anwenden!

&&

> 1

> 1A

B'

CDE

&&

AB'

CDE

&

ANDOR

&

OR

AND

&

&A'B

CDE'

&

&

1. Ausgangsschaltung

2. Substitution der ANDs / ORs

3. "Kürzen" der Inverter

Abb. 3.26: Konvertierung von einer AND-OR-Realisierung zu einer NAND-NOR-Realisierung

Informatik V-Teil 2, Kap. 3, SS 99

27

Ein andere Problem bilden Gatter mit hohem Fan-In. Es ist in den meisten Technologien nichtgünstig, z. B. ein Gatter mit 8 Eingängen einstufig zu realisieren. Ein solches Gatter würde z. B. inCMOS-Technik wegen des sogenannten Substrateffekts und wegen großer interner Kapazitäten nurrecht langsam umschalten.In der Praxis wird man deshalb Gatter mit vielen Eingängen nicht einstufig aufbauen, sondern inForm einer mehrstufigen Logik, die aus Gattern mit einer geringeren Zahl von Eingängen aufgebautist, realisieren. Abb. 3.27 zeigt als Beispiel die Realisierung eines AND-Gatters mit 8 Eingängendurch NANDs, NORs und Inverter.

&

&

&

&

&

&

> 1

&

&

> 1

&

&

> 1

&

langsam schneller

noch schneller

schnell

.

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-Funktionmehrstufig implementiert wurde, ist es durch Verwendung sogenannter Komplexgatter in CMOS-Technologie auch möglich, zwei- und sogar mehrstufige Logik-Funktionen einstufig zu realisieren. Inmanchen Technologien war zeitweise auch die Verwendung von sogenannten Pass- Transistorenoder, in CMOS-Technik, Transmission-Gates recht beliebt. Diese Technik soll im nächsten Abschnittkurz 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ängsind und out der Ausgang ist. Die Negierung des XOR wird auch als Aquivalenz-Funktionbezeichnet.

x y xor equiv. (xnor)----------------------------------------------------

0 0 0 11 0 1 00 1 1 01 1 0 1

Es gilt also: x (xor) y = x y' + x' y

Informatik V-Teil 2, Kap. 3, SS 99

28

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. Esgelten 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 verschiedeneEingagswerte 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 seltenmit 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 zeigtdie Implementierung einer XOR-Funktion durch 4 NAND-Gatter. In CMOS-Technik wird jedesdieser NAND-Gatter aus 4 Transistoren aufgebaut, man benötigt also 16 Transistoren.

&

&

&

&0 1 0 1

0 0 1 1

1 1 1 0

1 0 1 1

1 1 0 1

0 1 1 0x

y out

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 Logik-Realisierung in erheblichem Umfang Transistoren einzusparen.Eine solche Transistorschaltung zeigt Abb. 3.29.

V D D

G N D

o u t

x

y

Abb. 3.29: XOR-Schaltung mit Transmission Gates

Informatik V-Teil 2, Kap. 3, SS 99

29

Solche Implementierungen in CMOS-Technologie sind sehr effizient bezüglich der benötigtenFläche. Nachteile bestehen bezüglich der Testbarkeit solcher Schaltungen.

XOR-Funktionen lassen sich hervorragend verwenden, um in digitalen Systemen die Paritätchecksdurchzuführen.Ein Paritätsgenerator ist eine Schaltung, die für ein Code-Wort das Paritätsbit erzeugt. EinParitä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.

x y z P a r . -B i t

3 -B i t - C o d e

0 0 0 1

0 0 1 0

0 1 0 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 0

0 1 1 1

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:

x y z P a r . - B i t C h e c k

3 - B i t - C o d e

0 0 0 0 1

0 0 1 0 0

0 1 0 0 0

1 0 0 0 0

1 0 1 0 1

1 1 0 0 1

1 1 1 0 01 1 1 1 1

P a r i t y e r r o r

1 1 0 1 0

1 0 1 1 0

1 0 0 1 1

0 1 0 1 1

0 0 1 1 1

0 0 0 1 0

0 1 1 0 10 1 1 1 0

Abb. 3.31: Wahrheitstabelle für Parity-Check

Informatik V-Teil 2, Kap. 3, SS 99

30

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.

> 1> 1> 1> 1

xyz

P > 1> 1

> 1> 1

> 1> 1C

xy

zP

Parity-Bit-Generator Parity-Bit-Checker

Abb. 3.32: Realisierung von Parity Generator und Parity Checker mit XOR- und XNOR-Schaltungen

3.5.4 Arithmetische Makros

Zu den wichtigsten Bausteinen digitaler Schaltungen gehören arithmetische Bausteine, welche dieGrundperationen Addition und Subtraktion unterstützen. Die Subtraktion wird dabei meistens aufeine Kombination aus Addition und Komplementbildung zurückgeführt.

Wir haben das XOR schon als eine Art Addierer kennengelernt. Wir benötigen aber noch eineErweiterung: Das Element muß neben den beiden Eingängen x und y und dem Ausgang S, der dieSumme ausgibt, einen weiteren Ausgang C besitzen, welcher das "Carry"-Bit für den Überlaufangibt.

x y S C

0 0 0 0

1 0 1 0

0 1 1 0

1 1 0 1

Eingänge Ausgänge

Abb. 3. 33: Wahrheitstabelle eines Halbaddierers

Die logischen Gleichungen für den Halbaddierer lauten also:

S = x' y + x y', C = x y

Alternative Möglichkeiten zur Implementierung des Halbaddierers sind in Abb. 3.34 dargestellt.

Informatik V-Teil 2, Kap. 3, SS 99

31

&

&

&

&

&

&

&

&

> 1> 1

> 1> 1

> 1> 1

> 1> 1

> 1> 1

> 1> 1

&C

x

y'

x'y

xy

Sxy

x'y'

S

xy

C

x'y'

xy

S

C

xy

x'

y'

S

C

> 1> 1Sx

y

C

Abb. 3.34: Implementierungen eines Halbaddierers

Natürlich kann man den Halbaddierer auch aus NANDs und NORs aufbauen, wenn diese alsGrundgatter günstig zur Verfügung stehen. Die Implementierung über das XOR ist besondersgü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 mitmehreren Bitstellen den Carry-Übertrag einer vorherigen Stufe nicht aufnehmen kann. DerVolladdierer besitzt deshalb drei Eingänge: x, y, z und die Ausgänge S (sum) und C (carry).

x y S C

0 0 0 0

1 0 0 1 0

0 1 0 1 0

0 0 1 1 0

Eingänge Ausgänge

z

0

1 1 0 0 1

1 0 1 0 1

0 1 1 0 1

1 1 1 1 1

Abb. 3.35: Wahrheitstabelle des Volladdierers

Der "Summe"-Ausgang ist auf "high", wenn ein oder drei Eingänge auf high sind. Der Carry-Ausgang 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önneneinmal arithmetische Variablen sein, die addiert werden sollen, man kann sie aber zum Entwurf derLogik auch als logische Variablen betrachten, auf welche die Regeln der Booleschen Logikanwendbar sind.

Informatik V-Teil 2, Kap. 3, SS 99

32

Unter Verwendung der disjunktiven Normalform mit Mintermen kann man den Volladdierer wiefolgt 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).

&

&

&

&

yx´

y'

z'

z

y'x

z'

yx

z

> 1S

&

&

&

> 1> 1 C

x

y

xz

yz

Abb. 3.36: Implementierung eines Volladdierers entsprechend den Booleschen Gleichungen

Eine alternative, ziemlich gebräuchliche Implementierung des Volladdierers verwendet zweiHalbaddierer und ein OR-Gatter.

> 1> 1> 1> 1

&&

> 1> 1

Sxy

z

C

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

Informatik V-Teil 2, Kap. 3, SS 99

33

Für Addierwerke mit mehreren Bit-Stellen müssen stets mehrere Volladdierer kaskadiert werden. EinProblem dabei wird, daß bei n- Bit Tiefe ein Carry-Bit der ersten Stufe den Ausgang der n-ten Stufedirekt beeinflussen kann, also eigentlich die n-te Stufe (das höherwertige Bit) stets auf alleErgebnisse niederwertiger Bit-Stufen warten muß. Reale Addierwerke wird man deshalb mitsogenannanter "Carry-Lookadead-Logik" ausrüsten, welche die Berechnung wesentlich beschleu-nigen kann.

Subtrahierer kann man, alternativ zur Realisierung durch Komplementbildung und Addition, auchdirekt realisieren. Ganz äquivalent zu Halbaddierern und Volladdierern gibt es auch Halb-Subtrahierer 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 = 01 - 0 = 10 - 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 1abzuziehen ist. Das Differenzbit wird auch dann 1, gleichzeitig wird ein negativer Übertrag Beingetragen. Abb. 3.38 zeigt die Wahrheitstabelle des Halb-Subtrahierers.

x y B D

0 0 0 0

1 0 0 1

0 1 1 1

1 1 0 0

Eingänge Ausgänge

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 einennegativen Übertrag darstellt.

Informatik V-Teil 2, Kap. 3, SS 99

34

x y B D

0 0 0 0

1 0 0 0 1

0 1 0 1 1

0 0 1 1 1

Eingänge Ausgänge

z

0

1 1 0 0 0

1 0 1 0 0

0 1 1 1 0

1 1 1 1 1

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-AusgangsD 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-Stufeeinen Subtrahierer erzeugen! Zusätzlich ist natürlich bei Addierwerken für die Propagierung desnegativen Übertrags zu sorgen.Auch Multiplizierer und Dividierer sind als kombinatorische Schaltungen realisierbar. Dabei wird woimmer möglich ausgenutzt, daß im binären Zahlensystem eine Multiplikation mit zwei einer Bit-Shift-Operation 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 aufwendigenMakros.

3.5.5 Mehrstufige Addierer

Wir haben bereits das Problem des Übertrages in arithmetischen Schaltungen kurz diskutiert. Andieser Stufe soll beispielhaft ein mehrstufiger schneller Addierer vorgestellt werden.

> 1> 1> 1> 1

&&

> 1> 1

Si

C i+1

AiBi

Ci

Pi

Gi

Abb. 3.39: Addierer-Stufe

Informatik V-Teil 2, Kap. 3, SS 99

35

Wir können (Abb. 3. 39) die Signale in einer i-ten Stufe eines mehrstufigen Addieres wie folgtbeschreiben:

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 undBi beide high sind, ungeachtet des einkommenden Carry-Sugnals. Pi wird als "carrypropoagate"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 damitdurch 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 dieCarry-Bits im "look ahead"-Verfahren erzeugt und damit wesentliche Beschleungungseffekte erzielenkann. Ein solcher Addierer wird dann als "Carry-Lookahead-Addierer" bezeichnet.

&> 1

&

&

> 1

&

&

&

> 1

C1

P1

G2

G1

P2

G3

P3

C2

C3

C4

Abb. 3. 40: Carry-Lookahead-Netzwerk

Informatik V-Teil 2, Kap. 3, SS 99

36

Der Aufbau des mehrstufigen Carry-Lookahead-Addierers ist in Abb. 3.41 dargestellt.

> 1

> 1

> 1

> 1

&

> 1

&

> 1

&

> 1

&

> 1

C5

C4S4

C3

C2

C1

P4

G4

P3

G3

P2

G2

P1

G1

Lookahead-

Generator

C5

S3

S2

S1

P4

P3

P2

P1

B4

A4

B3

A3

B2

A2

B1

A1

Abb. 3.41: Addierer mit Carry-Lookahead-Generator

Das in Abb. 3.40 gezeigte Netzwerk deutet bereits an, daß mit zunehmemder Zahl der Stufen derAufwand 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 teureInvestition sein.Aus diesem Grund sind im Lauf der Zeit weitere Addierer-Typen entwickelt worden (z. B. Ripple-Carry), die bei geringerem Implementierungsaufwand ebenfalls eine erhebliche Beschleunigung desCarry-Ü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ß durchbestimmte Kanäle zu steuern.

Eingänge

Steuersignale

Ausgang

Steuersignale

EingangAusgänge

Multiplexer Demultiplexer

A

B

CD

S1 S2 S1 S2

Y1

Y2

Y3Y4

X

Y

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 nEingagskanälen logisch mit dem einzigen Ausgang verbunden. Entsprechend werden imDemultiplexer (Demux) die Werte eines Eingangs wahlweise mit n verschiedenen Ausgängenverbunden.

Informatik V-Teil 2, Kap. 3, SS 99

37

Dabei ist die Kopplung bzw. Entkopplung nur logisch zu verstehen. Für eine physikalischeEntkopplung (z. B. für wahlweisen Bus-Zugriff) wird man in jedem Fall eine andere Konstruktionwie z. B. ein Transmission Gate) benötigen.

Adr. S1 S2 Y

0 0 0 A

1 0 1 B

2 1 0 C

3 1 1 D

Logik - Funktion:

Y = S1' * S2' * A + S1' * S2 * B + S1 * S2' * C + S1 * S2 * D

&

&

&

&

S2S1

AS2S1

BS2S1

S2S1

C

D

> 1out

MUXS1

S20

1}G

03

ABCD

Y

Abb. 3.43: Multiplexer

Die Wahrheitstabelle und das Logik-Diagramm für den Multiplexer sind in Abb. 3.43 dargestellt. Fürden Beispielfall mit vier Eingängen und einem Ausgang wird ein 2-Bit-Steuersignal benötigt. DieSchaltung ist durch eine zweistufige AND-OR-Logik entsprechend der disjunktiven Normalformimplementierbar.

Entsprechend benötigt der Demultiplexer mit einem Eingang (X) und wahlweise vier Ausgängenebenfalls eine 2-Bit-Adresse (Abb. 3. 44). Die Logik ist einstufig implementierbar.

Adr.

0

1 0 1 0 X 0 0

2 1 0 0 0 X 0

3 1 1 0 0 0 X

S1 S2 Y1 Y2 Y3 Y4

0 0 X 0 0 0

X = Dateneingang

Y1 = S1' * S2' * X

Y2 = S1' * S2 * X

Y3 = S1 * S2' * X

Y4 = S1 * S2 * X

Logikfunktionen

&

&

&

&

S1S2

XS1S2

XS1S2

XS1S2

X

Y1

Y2

Y3

Y4 X

S1

S20

1} G

0

3

Y1

Y2

Y3

Y4

0

1

2

3

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 eineCodierung in eine andere umrechnen.

Informatik V-Teil 2, Kap. 3, SS 99

38

Ein typisches Beispiel wäre die Umrechnung von Zahlenwerten im BCD-Code z. B. in den Excess-3-Code. Nachfolgend ist die Wahrheitstabelle für die Umrechnung ausgeführt (Abb. 3.45).

Input BCD Output Excess-3

A B C D w x y z

0 0 0 0 0 0 1 10 0 0 1 0 1 0 0

0 0 1 0 0 1 0 10 0 1 1 0 1 1 00 1 0 0 0 1 1 10 1 0 1 1 0 0 00 1 1 0 1 0 0 10 1 1 1 1 0 1 01 0 0 0 1 0 1 1 1 0 0 1 1 1 0 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ältalso "don't care"- Werte.Für die vier Ausgangsvariablen w, x, y, z werden entsprechend vier separate KV-Diagrammebenötigt:

C C

A

A

D D D

B

B

B

z = D '

1

1

X

X

1

1

X

1

X X

C C

A

A

D D D

B

B

B

1

1

X

X

1

1

X

1

X X

y = C D + C ' D '

X X

Abb. 3.46 a: KV-Diagramme für die Ausgänge y und z des BCD zu excess-3-Konverters

C C

A

A

D D D

B

B

B

1

X

X

1

1

X

1

X X

1

X

x = B'C + B'D + BC'D'

C C

A

A

D D D

B

B

B

1 1

X

X

1

1

X

1

X X

X

W = A + BC + BD

Abb. 3.46b: KV-Diagramme für die Ausgänge w und x des BCD- zu excess-3-Konverters

Informatik V-Teil 2, Kap. 3, SS 99

39

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)

&

> 1

> 1

> 1

> 1&

&

&

A

B

C

D

w

x

y

z

Abb. 3. 47: Implementierung des Konverters mir ANDs, ORs und Invertern

Durch Umformungen wird man versuchen zu erreichen, daß in allen Gleichungen mehrere gleicheTerme vorkommen. Damit können Logik-Elemente für mehrere Ausgänge gleichzeitig genutztwerde. 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 Netzenmit 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 Gatteraufbauen kann, wird die reale Schaltung nochmals anders aussehen:

&

> 1

> 1

> 1

> 1&

&

&

A

B

C

D

w

x

y

z

Abb. 3. 48a: Code-Konverter, Ersatz der ANDs durch NANDs

Informatik V-Teil 2, Kap. 3, SS 99

40

&

> 1

&

&

&

A

B

C

D

w

x

y

z

&

&

&

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 durchNANDs bei Einfügung weiterer Inverter ersetzt. Im zweiten Schritt erfolgt eine Wandlung von ORsmit invertierten Eingängen in NANDs und das "Kürzen" überflüssiger Inverter. Die Komplexität derSchaltung ändert sich hier kaum.

Ein Decoder ist eine Schaltung, welche einen binären Code von n Bits auf maximal 2**n Ausgängeverteilt. Entsprechend ist ein Encoder eine Schaltung, die maximal 2**n Eingänge auf einen binärenCode mit n Bits umsetzt.Beide Funktionen werden in der Digitaltechnik häufig verwendet.

2**n

n

2**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ängenbetrachtet.

Eingänge

x y z

Ausgänge

D0 D1 D2 D3 D4 D5 D6 D7

0 0 0 1 0 0 0 0 0 0 00 0 1 0 1 0 0 0 0 0 00 1 0 0 0 1 0 0 0 0 00 1 1 0 0 0 1 0 0 0 01 0 0 0 0 0 0 1 0 0 01 0 1 0 0 0 0 0 1 0 01 1 0 0 0 0 0 0 0 1 01 1 1 0 0 0 0 0 0 0 1

Abb. 3.50: BCD-zu-Dezimal-Decoder

Informatik V-Teil 2, Kap. 3, SS 99

41

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 nichtzufrieden sein. Es wird ein weiteres Eingangsbit (w) benötigt, um die Dekodierung für die dezimalenZiffern 0 bis 9 zu kmplettieren.Stellt man das zugehörige KV-Diagramm auf (Abb. 3.51), so ist festzustellen, daß nicht benötigteWertekombinationen am Eingang auftreten.

y

z z z

y

y

y

D 3

D 6

X

X

D 0

D 4

X

D 8

X X

X

y

W

W

D 1 D 2

D 5 D 7

D 9

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. Damitreduziert 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 Erscheinensolcher Kombinationen als Fehlerzustand zu erkennen und abzufangen.

Informatik V-Teil 2, Kap. 3, SS 99

42

Eingänge

w x y z

Ausgänge

D0 D1 D2 D3 D4 D5 D6 D7 D8 D9

1 0 1 0 0 0 1 0 0 0 0 0 1 01 0 1 1 0 0 0 1 0 0 0 0 0 11 1 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 0 1 0 0 0 11 1 1 0 0 0 0 0 0 0 1 0 1 01 1 1 1 0 0 0 0 0 0 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 Eingangs-kombinationen 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 sicheine Decoder mit nachgeschalteten ODER-Gattern auch zur Implementierung von Logik-Funktionenauf der Basis der Minterme.

So könnte man z. B. einen Voll-Addierer (mit drei Eingängen) aus einem Decodierer und zwei OR-Gattern 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 Oktal-zu-binär-Encoders.

> 1

> 1

> 1

x = D4 + D5 + D6 + D7

y = D2 + D3 + D6 + D7

z = D1 + D3 + D5 + D7

D0

D1

D2

D3

D4

D5

D6

D7

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öchstenbewertet, eine "1" an einem anderen Eingang entsprechend niedriger. Der Priority-Encoder würdedann 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.