Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 1 / 100
Kapitel 3: Schaltnetze und ihre Verbesserung
Kapitel 3Schaltnetze und ihre Verbesserung
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 2 / 100
Kapitel 3: Schaltnetze und ihre Verbesserung
Inhaltsverzeichnis3.1 Entwurf von Schaltnetzen
3.2 Addiernetze3.3 Vereinfachung von Schaltnetzen
3.4 Fehlerdiagnose in Schaltnetzen
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 3 / 100
Entwurf von Schaltnetzen
In Kapitel 2 wurden Boolesche Funktionen aus einfachen Grundgattern für die Operatoren +,⋅ und aufgebaut.Die verschiedenen Darstellungssätze lieferten allgemeine Prinzipien zur Synthese von Schaltnetzen, diese sind aber nur theoretische Hilfsmittel.
Allgemein gibt es zwei Techniken für den Entwurf von Schaltnetzen:� Bottom-Up-Entwurf:
komplexe Schaltungen werden aus elementaren Bausteinen zusammengesetzt.
� Top-Down-Entwurf:Die Gesamtaufgabe wird in Teilaufgaben zerlegt, die Schaltnetze für diese Aufgaben werden entworfen und anschließend zusammengesetzt.Auch die Teilaufgaben können dabei weiter in kleinere Teilaufgaben zerlegt werden.
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 4 / 100
==
Bottom-Up-Entwurf von NAND und NOR
Als Bottom-Up-Entwurf entwickeln wir Schaltnetze für NAND ( ) und NOR ( ):
011
101
110
100
x ��yx
011
001
010
100
x ��yx
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 5 / 100
Beweis: (nur { }, für { } analog)Zu zeigen ist, dass jede Boolesche Funktion allein durch NAND dargestellt werden kann. Wir wissen bereits, dass {+, } funktional vollständig ist.Also reicht es, NAND-Darstellungen dieser Funktionen anzugeben:
x = x �x+y = (x ��� �� ��
Als neue Grundbausteine erhalten wir also NAND- und NOR-Gatter.Einer dieser beiden Bausteine reicht also prinzipiell aus, um jede Boolesche Funktion durch eine Schaltung zu realisieren.
NAND und NOR
Satz 3.1:
{ } und { } sind funktional vollständig.
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 6 / 100
Schaltung für den Euler-Kreis
Als nächstes sollen Bausteine zur Lösung des Euler-Kreis-Problems (Beispiel 2.9) entworfen werden.Dazu benutzen wir das Euler-Kriterium:
Wir betrachten nur Graphen mit fünf Punkten, die zusammenhängend sind.Idee: � Es kommen nur die Gradzahlen 2 und 4 in Frage.
� Eine Übersicht über alle Graphen mit fünf Punkten, die einen Euler-Kreis besitzen, ist leicht zu erstellen.
Satz 3.2: Euler-Kriterium
Ein (zusammenhängender) Graph besitzt einen Euler-Kreis genau dann, wenn jeder Punkt des Graphen einen geraden Grad hat. (Dabei ist der Grad eines Punktes gleich der Anzahl der Kanten, die an ihm zusammentreffen.)
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 7 / 100
Fall (b): Vier Punkte haben den Grad 2, einPunkt hat den Grad 4:
Fall (a): Alle Punkte haben den Grad 2Dann sieht ein dazugehöriger Graph z.B. so aus:
Euler-Kreis – mögliche Graphen
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 8 / 100
Fall (d): Zwei Punkte haben den Grad 2, drei Punkte den Grad 4:
Dieser Fall ist nicht möglich. Haben in einem Graph mit fünf Punkten drei den Grad 4, dann sind diese drei Punkte mit allen anderen verbunden. Die verbleibenden zwei Punkte hätten dann also mindestens den Grad 3:
Grad 3
Fall (c): Drei Punkte haben den Grad 2, zwei Punkte den Grad 4:
Euler-Kreis – mögliche Graphen
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 9 / 100
Fall (f): Alle Punkte haben den Grad 4:Fall (e): Ein Punkt hat den Grad 2, dreiPunkte haben den Grad 4:
Auch dieser Fall ist nicht möglich. Haben in dem Graphen vier der fünf Punkte den Grad 4, dann sind diese vier Punkte mit allen anderen verbunden. Insbesondere hat dann auch der fünfte Punkt den Grad 4.
Euler-Kreis – mögliche Graphen
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 10 / 100
Euler-Kreis – Entwurf der Schaltung
Die möglichen Gradzahlen lassen sich also in einer Tabelle zusammenfassen:
Für das Schaltnetz bedeutet das:� Es reicht, zu testen, ob der gegebene Input das Euler-Kriterium für Graphen mit
fünf Punkten erfüllt.� Die unmöglichen Fälle können in die Schaltung einbezogen werden, da sie nicht
auftreten können.� Die Hinzunahme dieser Fälle bedeutet, dass es bei einer Eingabe von zehn Bits
ausreicht, zu testen, ob jede Ecke des Graphen den Grad 2 oder 4 hat.
44444f
22244c
22224b
22222a
Typ
54321Ecke
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 11 / 100
Euler-Kreis – Baustein-Entwurf
Wir entwerfen einen neuen Baustein, der die Ausgabe 1 liefern soll, wenn der Grad des Punktes i gleich 2 oder 4 ist.
Beispiel 3.1:
Die Ecke 1 hat den Grad 2 oder 4 genau dann, wenn gilt:
G enthält die Kanten (k1 und k2 und nicht k3 … und nicht kA)
oder (k1 und k3 …) oder (k1 und k4 …) oder (k2 und k3 …) oder (k2 und k4 …) oder (k3 und k4 …) oder (k1 und k2 und k3 und k4 …).
Das ist erfüllt, wenn gilt, dass die Anzahl der Einsen im Input-Bereich x1 bis x4gerade ist, also:
die Anzahl der Einsen ist gerade es gibt mindestens eine Eins
1 2 3 4 1 2 3 4( )x x x x x x x x⊕ ⊕ ⊕ ∧ ∨ ∨ ∨
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 12 / 100
Euler-Kreis – Baustein für Ecke 1
Beispiel 3.1: SchaltungDaraus erhalten wir als Baustein für die Ecke 1:
Der Baustein heißt 1/g, weil er die Ecke 1 auf einen geraden Grad testet.
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 13 / 100
Euler-Kreis – Schaltung für XOR
Die im letzten Beispiel verwendete Schaltung für den Baustein XOR ist so zusammengesetzt:
=
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 14 / 100
Euler-Kreis - Schaltung
Aus den Bausteinen zum Test der einzelnen Ecken setzen wir die Schaltung zum Test auf einen Eulerkreis in einem Graphen mit fünf Ecken zusammen:
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 15 / 100
Multiplexer
Ein Multiplexer (MUX) ist ein häufig verwendetes Selektionsschaltnetz:� 2d Dateninputs
� d Steuersignale � Ein Output
(die Steuersignale codieren binär den Index des auszugebenden Inputs)
Allgemein heißt ein MUX mit d Steuersignalen und 2d Inputs d-MUX.
02 1,...,dx x−
1 0,...,dy y−1 0 2( ,..., )dy y
z x−
=
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 16 / 100
Beispiel: Der 2-MUX
Beispiel 3.2: MUX mit d=2
Der 2-MUX besitzt 4 Dateninputs (x3 ,…,x0),
2 Steuerleitungen (y1 ,y0) und
1 Output (z).
Realisierte Funktion: Zeichen:
DNF-Darstellung von z:
x311
x201
x110
x000
zy0y1
����� �
��
��
��
��
��
��
0 0 1 1 0 1 2 0 1 3 0 1z x y y x y y x y y x y y= + + +
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 17 / 100
Bottom-Up-Entwurf des 2-MUX
Der 2-MUX lässt sich als dreistufiges Schaltnetz realisieren:� Stufe 1: Negation
� Stufe 2: AND-Gatter
� Stufe 3: OR-Gatter
Problem: Es gehen viele Leitungen in ein Gatter (je 3 Leitungen in die AND-,
4 in das OR-Gatter)
0 0 1 1 0 1
2 0 1 3 0 1
z x y y x y y
x y y x y y
= + ++
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 18 / 100
Problem beim Bottom-Up-Entwurf
Die Anzahl der Leitungen, die in ein Gatter führen, nennt man Fan In (analog bezeichnet man die Anzahl der Inputs, mit denen der Output verbunden ist, als Fan Out).
Allgemein lässt sich jeder MUX als dreistufiges Schaltnetz realisieren.Problem: Hoher Fan In bei den Gattern:� OR-Gatter: Fan In = 2d
� AND-Gatter: Fan In = d+1
2-MUX
z
x1
x2
y1 y0
x0
x3
Fan In
Fan Out
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 19 / 100
Top-Down-Entwurf des 2-MUX
Idee: Zerlegung der Steuersignale in zwei Hälften, die mit 1-MUXen verarbeitet werden. Aus diesen 1-MUXen wird dann der 2-MUX aufgebaut.
Vorteil: Der Fan In bei allen Gattern ist 2.
1-MUX
DNF:
Schaltbild:Funktionstabelle:
x11
x00
zy
0 1z yx yx= +
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 20 / 100
2-MUX aus 1-MUXen
Aus den 1-MUXen wird nun rekursiv der 2-MUX aufgebaut:
Obere Schicht (im Bild links): enthält die „obere Hälfte“ (y1) der Steuersignale und jeweils 21 Dateninputs.
Ist z.B. y1=1, dann werden x1 und x3 an die untere Hälfte übergeben.
Untere Schicht (rechts im Bild): enthält die „untere Hälfte“ (y0) der Steuersignale und 2 Dateninputs.
Ist z.B. y0=0, dann wird x1 ausgewählt.
Vorteil: Der Fan In ist auch hier für jedes Gatter 2.
Nachteil: Das Schaltnetz hat mehr als 3 Stufen.
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 21 / 100
2d-MUX aus d-MUXEN
Analog kann jeder 2d-MUX aus 2d+1 d-MUXen zusammengesetzt werden:
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 22 / 100
2d-MUX aus d-MUXEN - Arbeitsweise
Jeder d-MUX der oberen Zeile hat 2d Dateninputs:� Der erste hat die Inputs
� Der zweite die Inputs � Der 2d-te die Inputs
� Beachte: der Index des jeweils ersten x ist ein Vielfaches von 2d.
Die Steuersignale in der oberen Reihe ( )� selektieren jeweils den k-ten Dateninput mit
� Die untere Zeile erhält also als Inputs:
Die Steuersignale am unteren MUX � selektieren den j-ten Input mit
� Der selektierte Output ist also:
Ausgewählt wurde der i-te Input mit ,das gilt weil ist:� Die Multiplikation von j mit 2d bewirkt Linksshift um d Stellen:
� Wegen folgt: .
Der 2d-MUX selektiert also den Dateninput xi mit .
02 1,...,dx x−
2 2 1 2,...,d dx x× −
22 1 (2 1)2,...,d d dx x− −
2 1,...,d dy y−2 1 2( ... )d dk y y−=
(2 1)2 2 2 2,..., , ,d d d d kk k kx x x x− + × + +
1 0( ,..., )dy y−1 0 2( ... )dj y y−=
2dj kx
+�2di j k= +� 1 0 2( ... )dj y y−=
1 0 22 ( ... 0...0)d
dj y y−=�
2 1 2( ... )d dk y y−= 1 1 2 22 ( ... ... )d
d d dj k y y y y++ =�
2 1 0 2( ... )di y y−=
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 23 / 100
Anwendung von Multiplexern
MUXe sind universell und können als Grundbausteine zur Realisierung jeder booleschen Funktion verwendet werden.
Beispiel 3.3 (a): Realisierung einer booleschen Funktion
Diese Realisierung nennt man Hardware-Lookup, da die Funktion direkt in Hardware umgesetzt wird.
Die Funktion f(x2, x1, x0) ist gegeben durch die Funktionstabelle.
Sie kann mit einem 3-MUX wie folgt realisiert werden:
1011
0111
0101
0001
1110
0010
1100
1000
fx0x1x2
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 24 / 100
Anwendung von Multiplexern
Man kann eine n-stellige Funktion auch mit einem (n-1)-MUX realisieren:
Jede Boolesche Funktion lässt sich in Abhängigkeit einer Variablen ausdrücken.
Beispiel 3.3 (b): Realisierung einer booleschen Funktion
f lässt sich jetzt durch einen
2-MUX realisieren:
Die Funktion f lässt sich auch in Abhängigkeit von x0darstellen:
x011
001
x010
100
fx1x2
1011
0111
0101
0001
1110
0010
1100
1000
fx0x1x2
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 25 / 100
Demultiplexer
Ein Demultiplexer (DeMUX) ist ein Weiterleitungsschaltnetz mit:� Einem Dateninput x� d Steuersignalen
� 2d Outputs mit für .(die Steuersignale codieren binär den Index des Outputs, an den der Input weitergeleitet werden soll)
Allgemein heißt ein DeMUX mit d Steuersignalen und 2d Outputs d-DeMUX.Der DeMUX ist nicht universell, d.h. nicht jede Boolesche Funktion ist mit einem DeMUX realisierbar.
02 1,...,dz z−
1 0,...,dy y−1 0( ,..., )i i dz x m y y−= � 1 2 1di≤ ≤ −
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 26 / 100
Realisierung eines DeMUX
Beispiel 3.4: 1-DeMUX und 2-DeMUX
0x1
x00
z0z1y
000x11
00x001
0x0010
x00000
z0z1z2z3y0y1
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 27 / 100
Spezialfall des DeMUX: Decoder
Ein Decoder ist ein DeMUX mit� Dateninput: .
x wird dann Aktivierungssignal genannt, da x als Ein-und Ausschalter fungiert.
� d Steuersignalen � 2d Outputs , der Output mit
wird auf 1 gesetzt.
Aus den DeMUXen erhält man also einen Decoder durch Vernachlässigung des Dateninputs:
Ein Decoder mit d Steuersignalen und 2d Outputs heißt d x 2d-Decoder.
000111
001001
010010
100000
Z0z1z2z3y0y1
02 1,...,dz z−
1x =
1 0,...,dy y−iz 1 0 2( ,..., )di y y−=
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 28 / 100
Encoder
Der Encoder besteht aus: � 2d Inputs
� d Outputs
Der Encoder hat die umgekehrte Funktion eines Decoders: anstatt eine Adresse zur Aktivierung eines bestimmten Outputs zu verwenden, erzeugt der Encoder die Adresse des aktuell aktiven Input-Signals:
Beim Encoder wird stets angenommen, dass genau ein Input aktiviert ist, die Schaltfunktion ist also partiell.
02 1,...,dx x−
1 0,...,dy y−
110001
010010
100100
001000
y0y1x0x1x2x3
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 29 / 100
Realisierung boolescher Funktionen
Beispiel 3.5:Als Beispiel für die Universalität von MUXen und Decodern realisieren wir vier verschiedene Schaltungen für die Funktion:
(a) Hardware-LookupAnalog zu Beispiel 3.2 (a) wird ein 4-MUX verwendet, bei dem die xi die Steuersignale sind. Als Inputs wird für m0, m5, m10 und m15 eine 1 angelegt:
0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3( , , , )f x x x x x x x x x x x x x x x x x x x x= + + +
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 30 / 100
Realisierung boolescher Funktionen
(b) 3-MUXAnalog zu Beispiel 3.2 (b) kann man f auch mit einem 3-MUX realisieren, indem man f von x0 abhängig macht:
x0010
0110
x0111
0011
x0101
0001
0100
x0000
fx1x2x3
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 31 / 100
Realisierung boolescher Funktionen
(c) Decoder und OR-Gatter:Hier wird ein Decoder mit 4 Eingängen und 16 Ausgängen verwendet, wobei die Outputs, die den Mintermen m0, m5, m10 und m15 entsprechen, durch ein OR-Gatter verknüpft werden:
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 32 / 100
Realisierung boolescher Funktionen
(d) Decoder und MUX:Die Inputs sind in Paare aufteilbar, dadurch kann man f mit einem Decoder und einem MUX realisieren:
0111
0010
1001
1100
x2x3x0x1
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 33 / 100
Addiernetze
Schaltnetze für die Addition sind zentrale Bausteine eines Rechners.
Problem: Für die Addition zweier 16-stelliger Dualzahlen entsteht eine Schaltfunktion A: B32 B17.
Das ist nicht praktikabel, denn:� Jede der 17 Funktionen hat 232 4 � 109 verschiedene Eingaben. � Wenn etwa 50% der Eingaben den Wert 1 liefern, erhält man
2 ⋅ 109 ⋅ 17 = 3,4 � 1010 einschlägige Minterme.� Pro Minterm braucht man 15 AND-Gatter mit 2 Eingängen: es wären insgesamt
5,1 � 1011 AND-Gatter nötig, um die Addition dieser beiden Dualzahlen auszuführen.
Einfachste Lösung: Stellenweise Addition wie in der Schule.
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 34 / 100
Stellenweise Addition zweier Dualzahlen
Im Dualsystem kann man genauso wie im Dezimalsystem addieren, indem man von hinten anfangend die einzelnen Stellen addiert und dabei eventuell auftretende Überträge berücksichtigt:
Diese Methode kann auch durch eine Schaltung realisiert werden.
Beispiel 3.6:
Addition von 13 und 9 imDualsystemDezimalsystem
+
Übertrag1
22
9
31
Übertrag11
01101
1001+
1011
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 35 / 100
Addition zweier Dualzahlen - Halbaddierer
Betrachten wir die letzte Stelle, so stellen wir fest:
� Sie hat als einzige Stelle keinen Übertrag zu verarbeiten, an allen anderen Stellen können Überträge in die Berechnung einfließen.
� Also erhält die letzte Stelle als Eingabe zwei Dualziffern (x und y), als Ausgabe hat sie das Resultat R und den Übertrag U für die nächste Stelle.
� Ein Übertrag U tritt nur dann auf, wenn sowohl x als auch y den Wert 1 haben, ansonsten ist der Übertrag 0.
� Das Resultat R ist genau dann 1, wenn nur eine der beiden Dualziffern den Wert 1 hat und die andere den Wert 0. Sind beide Werte gleich, ist das Resultat 0.
Dieses Verhalten ist durch eine Schaltung realisierbar, diesen Baustein nennt man Halbaddierer (HA).
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 36 / 100
Halbaddierer
Aus den Überlegungen für das Resultat R und den Übertrag U ergibt sich folgendes:
Daraus lassen sich die Schaltfunktionen für R und U ableiten:
Aus den Schaltfunktionen lässt sich die Schaltung aufbauen:
So sieht der Halbaddierer aus.
Als Funktionstabelle für R und U ergibt sich:
1011
0101
0110
0000
URyx
R x y y x x y= + = ⊕� �
U x y= �
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 37 / 100
Addition zweier Dualzahlen - Volladdierer
Für jede beliebige andere Stelle außer der letzten gilt:
� Es muss unter Umständen ein Übertrag berücksichtigt werden.
� Eingabe sind also drei Dualziffern x, y und ein Übertrag u, Ausgabe sind wieder ein Resultat R und ein Übertrag U für die nächste Stelle.
� Der Übertrag U ist genau dann 0, wenn maximal einer der drei Eingabewerte 1 ist, ansonsten erhält U den Wert 1.
� Das Resultat R ist genau dann 1, wenn eine ungerade Anzahl der Eingabeziffern 1 ist, sonst hat R den Wert 0.
Dieses Verhalten ist durch eine Schaltung realisierbar, diesen Baustein nennt man Volladdierer (VA).
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 38 / 100
Volladdierer
Aus den Überlegungen für R und U ergibt sich also:
Das ist die Schaltung für den Volladdierer:Funktionstabelle für R und U:
( )
R x y u
U x y x u y u
x y x y u
= ⊕ ⊕= + += + ⊕
� � �� �
11111
10011
10101
01001
0
0
0
0
x
1011
0101
0110
0000
URuyAus der Tabelle lassen sich die Schaltfunktionen für R und U ableiten:
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 39 / 100
Asynchrones Addiernetz: Ripple-Carry-Adder
Beispiel 3.7:Für zwei vierstellige Dualzahlen mit x=(x3x2x1x0) und y=(y3y2y1y0) sieht der Ripple-Carry-Adder so aus:
Mit einem Halbaddierer zur Berechnung der letzten Stelle und Volladdierern zur Berechnung der restlichen Stellen kann ein Addiernetz entworfen werden, das die stellenweise Addition nachvollzieht: der Ripple-Carry-Adder. Dabei „rieselt“ der endgültige Übertrag durch die komplette Schaltung.
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 40 / 100
Ripple-Carry-Adder - Eigenschaften
Der Ripple-Carry-Adder ist erweiterbar:
� Durch Hinzufügen weiterer Volladdierer kann das Addiernetz auf Dualzahlen größerer Stellenzahl erweitert werden:für die Addition zweier 16-stelliger Dualzahlen benötigt man 15 Voll- und 1 Halbaddierer.
� Der Halbaddierer ist auch durch einen Volladdierer ersetzbar, bei dessen u-Eingang stets 0 anliegen muss.
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 41 / 100
Ripple-Carry-Adder - Eigenschaften
Der Ripple-Carry-Adder ist langsam:
� Bei einer Schaltzeit von 10 psec pro Gatter liegen die Ergebnisse erst spät vor:• Beim Halbaddierer nach 30 psec,• Beim Volladdierer nach 70 psec.
� Im schlimmsten Fall liegt bei der Addition zweier vierstelliger Dualzahlen (z.B. 1111 und 0001) das Ergebnis erst nach (70+70+70+30)psec = 240psec vor.
� Problem: Der Durchlauf des Übertrags durch die gesamte Schaltung ist bei großen Wortlängen besonders störend. (Bei einer Wortlänge von 32 Bit liegt der Übertrag erst nach 2200 psec vor.)
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 42 / 100
Beschleunigung der Addition
Um die Addition zu beschleunigen, gibt es mehrere Möglichkeiten:
� Verringerung der Anzahl der Schaltebenen durch Zusammenfassen von Bit-Gruppen der Größe 4, mit denen vierstellige Dualzahlen addiert werden:Dabei steht A4 für ein Addiernetz mit 3 Volladdierern und einem Halbaddierer.Ã4 steht für ein Addiernetz aus 4 Volladdierern.
� Schnelle Bereitstellung des Übertrages für die nachfolgende Schaltung durch eine Carry-Look-Ahead-Schaltung, welche den Übertrag separat berechnet und direkt an das nächste Addiernetz weitergibt. Zusammen mit dem Ripple-Carry-Adderergibt sich daraus der sog. Carry-Bypass-Adder.
� Die Summe der „oberen Hälfte“ der Eingaben wird einmal für den Übertrag 0 und einmal für den Übertrag 1 berechnet. Steht der Übertrag der „unteren Hälfte“ der Eingaben fest, wird das entsprechende Ergebnis ausgewählt. Dieses Prinzip wird durch den Carry-Select-Adder realisiert.
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 43 / 100
Die Carry-Look-Ahead-Schaltung
Die Carry-Look-Ahead-Schaltung wird gemäß folgender Formel für Uentwickelt:
Dabei entspricht U dem R4 des Ripple-Carry-Adders Ã4.Bei einem Baustein vom Typ A4 entfällt die letzte Zeile, da A4 keinen bereits vorhandenen Übertrag zu berücksichtigen hat.
3 3 2 2 1 1 0 0( ) ( ) ( ) ( )x y x y x y x y u+ + + + + + + +3 3 2 2 1 1 0 0( ) ( ) ( )x y x y x y x y+ + + + + +
3 3U x y=
3 3 2 2( )x y x y+ +
3 3 2 2 1 1( ) ( )x y x y x y+ + + +
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 44 / 100
Das Carry-Look-Ahead-Schaltnetz
Das Carry-Look-Ahead-Schaltnetz ist dreistufig:
� Stufe 1: jeweils zwei Inputs werden additiv und multiplikativ miteinander verknüpft.
� Stufe 2: die benötigten Produkte werden gebildet.
� Stufe 3: die Summe wird gebildet.
Nimmt man pro Stufe eine Schaltzeit von 10 psec an, liegt der Übertrag nach 30 psec vor. Das ist eine Verbesserung um den Faktor 8 für den Übertrag bei einem A4-Addiernetz.
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 45 / 100
Das Carry-Bypass-Addiernetz besteht aus dem Ripple-Carry-Addiernetz Ã4 und derdreistufigen Carry-Look-Ahead-Schaltung:
Stufe 1: additive und multiplikative Verknüpfung
zweier Inputs.
Stufe 2: Bildung derProdukte.
Stufe 3: Bildung derSumme.
Carry-Bypass-Addiernetz
A4~
y0
R3U R2 R1 R0
R4
U
y1y2y3 x0x1x2x3
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 46 / 100
Carry-Select-Addiernetz
Hier wird das Resultat für den Übertrag 0 vorberechnet.
Und hier für den Übertrag 1.
Liegt der Übertrag aus dem Ripple-Carry-AdderA4 vor, wird hier das entsprechende Ergebnis ausgewählt.
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 47 / 100
Addition mehrerer Dualzahlen
Um mehr als zwei Zahlen zu addieren, verwendet man ein Carry-Save-Addiernetz:� Mehrstufiges Addiernetz
� In der ersten Stufe werden drei Summanden durch einen Carry-Save-Addierbaustein (CSA) addiert.
� Die pro Addition auftretenden Ergebnisbits bilden einen Summanden der nächsten Stufe.
� Genauso bilden auch die Carry-Bits einen weiteren solchen Summanden.
� Die drei Eingangssummanden werden also auf zwei Summanden (das Ergebnis und den Übertrag) reduziert.
� In jeder weiteren Stufe wird jeweils ein weiterer Summand mit einem CSA hinzuaddiert.
� Ist kein weiterer Summand mehr vorhanden, werden das Ergebnis und der Übertrag des letzten CSA mit einem beliebigen Addiernetz für zwei Zahlen addiert.
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 48 / 100
Beispiel 3.8:Addition von vier vierstelligen Summanden X,Y,Z und W:
Prinzip der Carry-Save-Addition
1010Übertrag
0010Summe
0100+Z
0011Y
0101X
0100neuer Übertrag
1001neue Summe
0001+W
1010Übertrag
0010Summe
1101Ergebnis
0100+neuer Übertrag
1001neue Summe
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 49 / 100
Realisierung eines Carry-Save-Adders
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 50 / 100
Optimierungsproblem und Kostenmaß
Schaltnetze lassen sich durch Verwendung zusätzlicher Hardware (z.B. der Carry-Look-Ahead-Schaltung) beschleunigen.
Will man ein Schaltnetz optimieren, entsteht eine komplementäre Aufgabe: das Entfernen von Hardware, ohne das Verhalten des Schaltnetzes zu verändern.
Dazu wird zunächst das Kostenmaß einer Funktion definiert.
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 51 / 100
Disjunktive Form
Dafür wird die disjunktive Form wie folgt definiert:
Die disjunktive Normalform einer Booleschen Funktion f: Bn B ist damit eine disjunktive Form, bei welcher jeder Term ein Minterm ist.
Definition 3.1: Disjunktive Form
Eine Boolesche Funktion f: Bn B liegt in disjunktiver Form vor, wenn f als Summe von Termen
dargestellt ist. Dabei verstehen wir unter einem Term Mi ein Produkt der Form
wobei x für ∈ B wie in Kapitel 2 definiert ist.
1
, 1,k
ii
M k=
≥∑
1
, 1,jj
l
ij
x lα
=
≥∏
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 52 / 100
Optimierungsproblem und Kostenmaß
Definition 3.2: KostenmaßDas Kostenmaß K( ) ist für Funktionen in disjunktiver Form (DF) wie folgt definiert:1. Ist , dann ist .Das entspricht der Anzahl zweistelliger AND-Gatter, um darzustellen.
2.Ist , dann ist .
(k-1) entspricht der Anzahl der zweistelligen OR-Gatter, die nötig sind, um darzustellen.
Anderes Kostenmaß:K‘( )=Zahl der Eingänge in AND- bzw. OR-Gatter (ohne Berücksichtigung von Negationen)
11
ttx xααα = ���
1 kM Mα = + +�1
( ) ( 1) ( )k
ii
K k K Mα=
= − +∑
( ) 1K tα = −
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 53 / 100
Optimierungsproblem und Resulotionsregel
Das Optimierungsproblem lautet: Sei f: Bn B in DNF gegeben. Finde eine disjunktive Form d, die f darstellt und minimale Kosten hat. Ein Hilfsmittel dazu ist die Resolutionsregel
Satz 3.3: Resolutionsregel
Kommen in einer disjunktiven Form zwei Summanden vor, welche sich in genau einer komplementären Variablen unterscheiden, so können diese beiden Summanden durch den ihnen gemeinsamen Teil ersetzt werden:
( ) + ( ) =
Beispiel 3.9: Kostenmaß
K( ) = (5-1) + 5 • (4-1) = 19OR-Gatter Maxterme AND-Gatter
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 54 / 100
Beispiel: Resolutionsregel
Beispiel 3.10: Anwendung der Resolutionsregel(a)
Damit liegen die Kosten nicht mehr bei 5, sondern bei 1.(b) Die Resolutionsregel darf auch mehrfach angewendet werden:
Damit liegen die Kosten nicht mehr bei 19, sondern bei 4.Die mehrfache Anwendung der Resolutionsregel beruht auf der Regel x+x=x.
1 2 3 1 2 3 1 2 3( , , )f x x x x x x x x x= +1 1 2 3( )x x x x= +
2 31 x x= �
2 3x x=
1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4( , , , )f x x x x x x x x x x x x x x x x x x x x x x x x= + + + +
2 3 4 1 2 4 1 3 4 1 3 4 1 2 4x x x x x x x x x x x x x x x= + + + +
2 3 4 1 4 1 4x x x x x x x= + +
2 3 4 1 4x x x x x= +
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 55 / 100
Vereinfachung nach Karnaugh
Das Verfahren nach Maurice Karnaugh ist eine grafische Darstellung, um alle möglichen Resolutionen einer maximal vierstelligen Funktion zu bestimmen:
Definition 3.3: Karnaugh-Diagramm
Ein Karnaugh-Diagramm einer booleschen Funktion f: Bn B mit n∈ {3,4}ist eine graphische Darstellung der Funktionstafel von f durch eine 0-1-Matrix der Größe 2 × 4 für n = 3 bzw. 4 × 4 für n = 4, deren Spalten mit den möglichen Belegungen der Variablen x1 und x2 und deren Zeilen mit den möglichen Belegungen der Variablen x3 und x4 beschriftet sind.
Die Reihenfolge der Beschriftung erfolgt dabei so, dass sich zwei zyklisch benachbarte Zeilen oder Spalten nur in genau einer Komponente unterscheiden.
(Zyklisch benachbart heisst, dass auch die obere und die untere Zeile bzw. die linke und die rechte Spalte als benachbart angesehen werden.)
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 56 / 100
Beispiel 3.11:
Karnaugh-Diagramm-Schema für
(b) n=4(a) n=3
Beispiel: Karnaugh-Diagramm
x1x2x3 000
01
1
11 10x1x2x3 x1x2x3 x1x2x3 x1x2x3
x1x2x3 x1x2x3 x1x2x3 x1x2x3
x1x2x3x4 00
0001
01
11
11
10
10
x1x2 x1x2 x1x2 x1x2x3x4 x3x4 x3x4 x3x4
x1x2 x1x2 x1x2 x1x2x3x4 x3x4 x3x4 x3x4
x1x2 x1x2 x1x2 x1x2x3x4 x3x4 x3x4 x3x4
x1x2 x1x2 x1x2 x1x2x3x4 x3x4 x3x4 x3x4
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 57 / 100
Verwendung des Karnaugh-Diagramms
� Die Funktionswerte von f werden an den entsprechenden Stellen eingetragen, wobei es ausreicht, nur die Einsen einzutragen.
• Jedem Minterm von f mit einschlägigem Index entspricht dann genau eine 1 im Karnaugh-Diagramm und umgekehrt.
• Zwei zyklisch benachbarte Einsen entsprechen dann zwei Mintermen, die sich in genau einer komplementären Variablen unterscheiden.
� Überdecke die Einsen mit möglichst wenigen, möglichst großen Rechtecken der Größe 2r × 2s (möglich sind also 1 × 1, 1 × 2, 1 × 4, 2 × 2, 2 × 4, 4 × 4)
• Jede 1 muss von mindestens einem Rechteck überdeckt werden
• Ein Rechteck darf nur Einsen überdecken.
• Rechtecke dürfen sich überlappen (d.h. eine 1 darf von mehr als einem Rechteck erfasst werden)
• Die Rechtecke können über die Grenzen des Diagramms hinausgreifen, da auch die erste und die letzte Spalte (bzw. Zeile) zyklisch benachbart sind.
� Fasse dann die Rechtecke zu Termen zusammen.
� Die Funktion ist dann minimiert.
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 58 / 100
Karnaugh-Diagramm: Funktionsweise
Beispiel 3.12:Die Funktion soll minimiert werden.Schritt 1: Eintragen der Einsen liefert das folgende Karnaugh-Diagramm:
1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4( , , , )f x x x x x x x x x x x x x x x x x x x x x x x x= + + + +
x1x2x3x4 00
0001
01
11
11
10
101
1 11 1
1 2 3 4x x x x1 2 3 4x x x x
1 2 3 4x x x x
1 2 3 4x x x x 1 2 3 4x x x x
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 59 / 100
Karnaugh-Diagramm: Funktionsweise
Beispiel 3.12:Schritt 2: Überdecken der Einsen mit Rechtecken der Form 2r × 2s:
20 × 21
3 Rechtecke überdecken alle Einsen, eine sogar doppelt. Ein Rechteck geht über die Grenzen des Diagramms hinaus.
20 × 20
Hier überdecken 5 Rechtecke alle Einsen.
x1x2x3x4 00
0001
01
11
11
10
101
1 11 1
x1x2x3x4 00
0001
01
11
11
10
101
1 11 1
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 60 / 100
Karnaugh-Diagramm: Funktionsweise
Beispiel 3.12:
Die restlichen Rechtecke sind nicht möglich, da sie auch Felder überdecken würden, in denen keine Einsen stehen.
21 × 21
Es gibt nur ein solches Rechteck. Es erfasst 4 Einsen:
21 × 20
4 Einsen werden durch 2 Rechtecke überdeckt. Die zu gehörende Eins wird nicht überdeckt.
x1x2x3x4 00
0001
01
11
11
10
101
1 11 1
1 2 3 4x x x x
x1x2x3x4 00
0001
01
11
11
10
101
1 11 1
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 61 / 100
Karnaugh-Diagramm: Funktionsweise
Beispiel 3.12:Schritt 3: Auswählen der Rechtecke so, dass alle Einsen überdeckt sind. Die Anzahl der Rechtecke soll dabei so gering sein, wie möglich.
Der 21 × 21-Block überdeckt 4 Einsen. Für die verbliebene Eins wird das 21 × 20-Rechteck gewählt, da es grösser ist, als das 20 × 20-Rechteck:
x1x2x3x4 00
0001
01
11
11
10
101
1 11 1
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 62 / 100
1 2 3 4 1 4 2 3 4( , , , )f x x x x x x x x x= +
Karnaugh-Diagramm: Funktionsweise
Beispiel 3.12:Schritt 3: Minimierung der Funktion.
In dem 21 × 21-Block nimmt x2 sowohl den Wert 1 als auch 0 an. Dennoch hat die Funktion f an dieser Stelle den Wert 1. x2 hat hier also keinen Einfluss auf den Wert der Funktion. Gleiches gilt für x3. Also sind nur die Werte x1=1 und x4=1 für f notwendig.
Im 21 × 20-Rechteck variiert der Wert von x1, also sind an dieser Stelle nur die Werte von x2, x3 und x4relevant.
Also lässt sich f minimieren zu:
x1x2x3x4 00
0001
01
11
11
10
101
1 11 1
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 63 / 100
Blöcke im Karnaugh-Diagramm
� Rechteckige 2r×2s-Blöcke von zyklisch benachbarten Einsen entsprechen 2r•2sMintermen, die sich in höchstens r+s Variablen unterscheiden, wobei alle Möglichkeiten des negierten bzw. nicht-negierten Auftretens dieser Variablen vorkommen.
� Die Summe dieser Minterme lässt sich durch wiederholte Resolution zu dem Term vereinfachen, welcher gemeinsamer Bestandteil aller dieser Minterme ist. Die Gestalt des Terms ist dabei aus der Randbeschriftung des Diagramms (wie im Beispiel gezeigt) ablesbar.
� Allgemein liefert ein Block mit 2k Einsen einen Term mit n-k Variablen.
� Je größer also die Blöcke, desto kleiner und kostengünstiger ist der entsprechende Term.
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 64 / 100
Blöcke im Karnaugh-Diagramm - Beispiel
Beispiel 3.13:
Es ist nicht immer sinnvoll, nur die größten möglichen Blöcke zu betrachten:
Diese ergibt:Diese Aufteilung ergibt:
x1x2x3x4 00
0001
01
11
11
10
10
11 1
11 11
1
x1x2x3x4 00
0001
01
11
11
10
10
11 1
11 11
1
1 2 3 4 2 4 1 2 3 4( , , , )f x x x x x x x x x x= +
1 2 3 4 1 2 3 4 1 2 3 4x x x x x x x x x x x x+ + +1 2 3 4 1 2 3 1 3 4( , , , )f x x x x x x x x x x= +
1 3 4 1 2 3x x x x x x+ +
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 65 / 100
Don‘t Cares im Karnaugh-Diagramm - Beispiel
Beispiel 3.14: Partiell definierte Funktion
Betrachte Funktion f.
Karnaugh-Diagramm:
Minimierte Funktion:
.....15
......
010019
000018
111107
001106
110105
000104
111003
101002
010001
000000
fx4x3x2x1x
x1x2x3x4 00
0001
01
11
11
10
10
111
1
1 2 3 4 1 2 3 1 2 4( , , , )f x x x x x x x x x x= +
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 66 / 100
Don‘t Cares im Karnaugh-Diagramm
� Bisher waren die Funktionen immer total.
� Sie können aber auch partiell sein, d.h., die Funktion ist nicht für alle möglichen Eingaben definiert.
� Das kann zur Vereinfachung einer Funktion ausgenutzt werden: wird eine Eingabe nie verwendet, kann man die Ausgabe der Funktion beliebig festsetzen. Das kann größere Blöcke im Karnaugh-Diagramm zur Folge haben.
� Die nicht definierten Ausgaben werden als Don‘t Cares bezeichnet und mit einem D im Karnaugh-Diagramm eingetragen.
� Diese D-Felder können nun ebenfalls von rechteckigen Blöcken überdeckt werden (aber sie müssen nicht).
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 67 / 100
Don‘t Cares im Karnaugh-Diagramm - Beispiel
Beispiel 3.14: Partiell definierte Funktion
Jetzt bezeichnen wir die Ausgaben für die Werte von 10 bis 15 durch D:
Karnaugh-Diagramm:
Minimierte Funktion:
Funktionstabelle:
x1x2x3x4 00
0001
01
11
11
10
10
111
1
DDDD
DD
1 2 3 4 2 3 2 4( , , , )f x x x x x x x x= +D111115
D011114
D101113
D001112
D110111
D010110
010019
000018
111107
001106
110105
000104
111003
101002
010001
000000
fx4x3x2x1x
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 68 / 100
Der Gray-Code
Im Karnaugh-Diagramm sind die Beschriftungen der Zeilen und Spalten so gewählt, dass sich zwei benachbarte Zeilen (bzw. Spalten) nur an einer Stelle unterscheiden.Dieses Prinzip ist dem Gray-Code entliehen, bei dem sich zwei aufeinander folgende Dualzahlen an nur einer Stelle unterscheiden.Der Graycode wird z.B. zur Codierung von Dezimalzahlen verwendet.
10009
11008
11107
11116
01115
01104
00103
00112
00011
00000
Gray-Codex
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 69 / 100
Weitere Anwendungen des Karnaugh-Diagramms
Aus dem Karnaugh-Diagramm einer drei- oder vierstelligen Funktion kann auf einfache Weise auch eine Ringsummendarstellung (RF) gewonnen werden:� Man wählt Blöcke aus, die auch inhomogen gefüllt sein können (d.h., sie können
Einsen und Nullen enthalten).� Es ist darauf zu achten, dass die Einsen durch eine ungerade Anzahl von Blöcken
überdeckt werden und die Nullen durch eine gerade Anzahl von Blöcken.
� Man liest die Terme wie üblich ab und verbindet sie mit einem �.
Es ist auch möglich, das Karnaugh-Diagramm zur Bestimmung einer konjunktiven Form (KF) zu benutzen:� Man wählt möglichst große Blöcke von Nullen aus.
� Man liest die Terme wie üblich ab und negiert sie.� Das Produkt der negierten Terme ist dann eine minimierte konjunktive Form.
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 70 / 100
Karnaugh-Diagramme - Ringsummendarstellung
Beispiel 3.15: Ermittlung einer Ringsummendarstellung.Für die Funktion ermitteln wir zunächst das Karnaugh-Diagramm:
1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4( , , , )f x x x x x x x x x x x x x x x x x x x x x x x x= + + + +
1 2 3 4 1 2 3 4 1 2 4 4( , , , )f x x x x x x x x x x x x= ⊕ ⊕Die Ringsummendarstellung
lässt sich ablesen als
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 71 / 100
Karnaugh-Diagramme – konjunktive Form
Beispiel 3.16: Ermittlung einer konjunktiven Form.Wir nehmen wieder die Funktion
und ermitteln zunächst wieder das Karnaugh-Diagramm:
Die konjunktive Form lautet:
1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4( , , , )f x x x x x x x x x x x x x x x x x x x x x x x x= + + + +
Daraus lassen sich jetzt die Terme
ablesen. Sie werden negiert und zu einem Produkt zusammengefasst.
3 4x x
3 4x x
1 3x x
1 2x x
1 2 3 4 3 4 1 3 1 2 3 4( , , , ) ( ) ( ) ( ) ( )f x x x x x x x x x x x x= + + + +� � �
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 72 / 100
Implikanten und Primimplikanten
Beachte:� Alle Minterme der einschlägigen Indizes von f sind Implikanten.
� Ist M ein Implikant von f, m ein Minterm von f und M ist eine Verkürzung von m, dann gilt m � M, d.h. m ist Implikant von M.
� Im Karnaugh-Diagramm entsprechen rechteckige Blöcke von Einsen den Implikanten und maximale derartige Blöcke den Primimplikanten.
Definition 3.4: Implikant und PrimimplikantSei f: Bn B in DNF gegeben.Ein Term M heißt Implikant von f, falls M � f.D.h.: wenn M(x1,…,xn )=1, dann auch f(x1,…,xn )=1 ∀ (x1,…,xn ) ∈ Bn.Ein Implikant M heißt Primimplikant, falls keine Verkürzung von M noch Implikant von f ist.
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 73 / 100
Primimplikanten
Die Umkehrung gilt im Allgemeinen nicht!
Satz 3.4:
Sei f: Bn B eine Boolesche Funktion, f � 0. Ist d = M1+…+Mk eine Darstellung von f als disjunktive Form mit minimalen Kosten, so sind die Mi , i=1,…,k, Primimplikanten von f.
Beispiel 3.17:
Die Summe aller Primimplikanten als disjunktive Form einer Funktion f ist nicht immer kostenminimal:
Für
lauten die Primimplikanten: , und .
Dann ist zwar eine disjunktive Form von f, aber nicht kostenminimal.
1 2 3 1 2 3 1 2 3 1 2 3 1 2 3( , , )f x x x x x x x x x x x x x x x= + + +
2 3x x 1 2x x 1 3x x
1 2 3 1 2 2 3 1 3( , , )d x x x x x x x x x= + +
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 74 / 100
Das Verfahren nach Quine-McCluskey
Das Verfahren nach Karnaugh stellt eine bequeme Möglichkeit dar, Funktionen zu optimieren, die eine Stellenzahl von 4 nicht überschreiten.
Funktionen höherer Stellenzahl können ebenfalls mittels des Karnaugh-Verfahrens optimiert werden, allerdings wird das sehr unübersichtlich.
Das Verfahren nach Quine-McCluskey stellt eine übersichtliche Möglichkeit zur Minimierung von Funktionen dar, es beruht auf Satz 3.4:� Zunächst werden alle Primimplikanten bestimmt.� Anschließend wird eine kostenminimale Auswahl der Primimplikanten bestimmt.
Diese stellt eine disjunktive Form der Funktion dar.
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 75 / 100
Quine-McCluskey - Primimplikanten
Beispiel 3.18: Primimplikantenbestimmung
Aufstellen einer Tabelle, die die Minterme nach der Anzahl der negiertenVariablen in Gruppen aufteilt:
Finden aller resolvierbaren Paare durch Vergleich der Minterme benachbarterGruppen.
121100
000004
401003
601102
141110
131101
1110111
Dezimaldarstellung des Index
Einschlägiger Index
MintermGruppe
1 2 3 4x x x x
1 2 3 4x x x x
1 2 3 4x x x x
1 2 3 4x x x x
1 2 3 4x x x x
1 2 3 4x x x x
1 2 3 4x x x x
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 76 / 100
Quine-McCluskey - Primimplikanten
Beispiel 3.18: Primimplikantenbestimmung
Die Resolutionsregel auf die gefundenen Paare anwenden, die weggefalleneStelle durch * markieren:
Mit der gleichen Methode weiterarbeiten.
4, 12*1002
0, 40*003
4, 601*0
6, 14*110
12, 1411*0
12, 13110*
1110111
Dezimaldarstellung des Index
Einschlägiger Index
MintermGruppe
1 2 3 4x x x x
1 2 3x x x
1 2 4x x x
2 3 4x x x
2 3 4x x x
1 2 4x x x
1 3 4x x x
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 77 / 100
Quine-McCluskey - Primimplikanten
Beispiel 3.18: Primimplikantenbestimmung
Die Resolutionsregel wieder auf die neuen Paare anwenden, bis nicht mehrresolviert werden kann:
Die Primimplikanten lauten also:
0, 40*003
4, 6, 12, 14*1*0
12, 13110*
1110111
Dezimaldarstellung des Index
Einschlägiger Index
MintermGruppe
1 2 3 4x x x x
1 2 3x x x
2 4x x
1 3 4x x x
1 2 3 4x x x x 1 2 3x x x 2 4x x 1 3 4x x x
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 78 / 100
Quine-McCluskey - Primimplikanten
1. Schritt: Bestimmung aller Primimplikanten:Die Primimplikanten lassen sich durch wiederholte Anwendung der Resolutionsregel bestimmen.� Zwei Terme, auf die diese Regel anwendbar ist, unterscheiden sich in genau einer
Variablen.� Einteilung der Minterme in Gruppen, die angeben, wie viele Negationszeichen in
dem Minterm auftreten.� Wende Resolution auf Terme in benachbarten Gruppen an.
� Markiere im Index „herausgefallene“ Variablen durch einen *.
� Übernehme die Implikanten, die an keiner Resolution beteiligt waren.� Die Gruppeneinteilung erfolgt wie anfangs.
� Iteriere das Verfahren, bis keine neue Resolvente erzeugbar.
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 79 / 100
Quine-McCluskey - kostenminimale Auswahl
Schritt 2: Auswahl der Primimplikanten mit minimalen KostenAufstellen einer Matrix A = (aik) mit� i: Primimplikant
� k: einschlägiger Index
� aik := 1, falls i � mk; 0 sonst
Besitzt ein Minterm nur einen einzigen Primimplikanten, heißt dieser Implikant Kernimplikant.
Wähle Teilmenge der Zeilen aus, so dass� In jeder Spalte der resultierenden Teilmatrix mindestens eine 1 steht� die Gesamtkosten der Summe der Primimplikanten kostenminimal ist
(Existiert nur eine solche Zerlegung, dann ist diese kostenminimal)� Der zweite Teil ist im Allgemeinen schwierig, wenn viele Möglichkeiten verglichen
werden müssen.
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 80 / 100
Quine-McCluskey - kostenminimale Auswahl
Beispiel 3.18: (Fortsetzung)
Aufstellen der Matrix:
Da die Minterme 0, 6, 11 und 14 jeweils nur einem Primimplikanten zugeordnet sind, sind diese Kernimplikanten notwendig.
Also sind alle vier Primimplikanten als kernimplikanten in der disjunktiven Form enthalten:
0000011
1010110
0110000
0001000
Primimplikant
14131211640Minterm
1 2 3 4x x x x
1 2 3x x x
2 4x x
1 3 4x x x
1 2 3 4 1 2 3 4 1 2 3 2 4 1 3 4( , , , )f x x x x x x x x x x x x x x x x= + + +
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 81 / 100
Ordered Binary Decision Diagrams (OBDDs)
Erinnerung:� Ein Binary Decision Diagram (BDD) ist eine graphische Darstellung beliebiger
boolescher Funktionen
� Bei festgelegter Ordnung der Variablen spricht man von einem Ordered BinaryDecision Diagram (OBDD).
� Ein OBDD ist ein gerichteter azyklischer Wurzelgraph, wobei gilt:• Jeder innere Knoten ist mit einer Variablen xi markiert
• Jeder Blattknoten ist mit Null oder Eins markiert
• Von jedem inneren Knoten gehen genau zwei Kanten aus, wobei eine mit 0 ( ), die andere mit 1 ( ) beschriftet ist.
• Für jede Kante von xi nach xk gilt: xi < xk.
OBDDs können auch zur Vereinfachung boolescher Funktionen verwendet werden, dazu wird das zugehörige OBDD vereinfacht.
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 82 / 100
Vereinfachung von OBDDs - Eliminationsregel
Es gibt zwei wichtige Regeln zur Vereinfachung von OBDDs:Eliminationsregel (auch 2-1-Regel)
Dabei gilt: a ∈ {0,1}, z kann eine Variable oder auch 0 oder 1 sein.Ist y die Wurzel des OBDDs, dann wird y entfernt und z wird neue Wurzel.
gegeben, dann darf y eliminiert werden:Ist eine Teilkonfiguration der Form
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 83 / 100
Vereinfachung von OBDDs - Verschmelzungsregel
Es gibt zwei wichtige Regeln zur Vereinfachung von OBDDs:Verschmelzungsregel (auch Verjüngung oder 4-3-Regel)
a, b ∈ {0,1}, y und z können Variablen oder auch 0 oder 1 sein.
gegeben, dann dürfen die beiden Knoten x zu einem verschmolzen werden:
Ist eine Teilkonfiguration der Form
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 84 / 100
Vereinfachung von OBDDs
� Die Funktionalität eines OBDDs wird durch Anwendung dieser beiden Regeln offenbar nicht verändert: jede Belegung, die vorher zu einem Blatt führte, führt auch hinterher zu diesem Blatt.
� Die Regeln überführen ein OBDD also in ein äquivalentes OBDD.
� Durch sukzessives Anwenden dieser Regeln entsteht ein reduziertes OBDD, das eindeutig bestimmt ist.
� Durch systematisches Anwenden der Regeln von unten nach oben wird garantiert, dass man niemals zurückgehen muss, um das reduzierte OBDD zu erhalten.
� Vereinfachte OBDDs lassen sich leicht auf Äquivalenz untersuchen.
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 85 / 100
Vereinfachung von OBDDs - Beispiel
Beispiel 3.19:Betrachten wir das OBDD zur Funktion
mit x1
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 86 / 100
Vereinfachung von OBDDs - Beispiel
Beispiel 3.19:Durch Anwendung der beiden Regeln erhalten wir dann dieses OBDD:
Die Eliminationsregel ist noch ein weiteres Mal anwendbar.
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 87 / 100
Vereinfachung von OBDDs - Beispiel
Beispiel 3.19:Nach einem letzten Anwenden der Eliminationsregel erhalten wir:
Dieses OBDD ist nicht weiter zu vereinfachen.
1 2 3 1 3 1 2( , , )f x x x x x x x= +
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 88 / 100
Vereinfachung von OBDDs - Beispiel
Die Vereinfachung eines OBDDs führt nicht immer zu einer minimalen Darstellung:
Beispiel 3.20:Betrachten wir die Funktion
mit x1
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 89 / 100
Beispiel 3.20:
Vereinfachung von OBDDs - Beispiel
und damit erhalten wir die vereinfachte Funktion:
Die minimale Funktion lautet dagegen:
Nach mehrmaliger Anwendung der Regeln erhalten wir:
1 2 3 1 2 3 1 3( , , )f x x x x x x x x= +
1 2 3 2 3 1 3( , , )f x x x x x x x= +
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 90 / 100
Vereinfachung von OBDDs – Beispiel
Durch Veränderung der Ordnung eines OBDDs erhält man häufig andere Vereinfachungen einer Funktion:
Beispiel 3.21:Betrachten wir wieder die Funktion
mit x2
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 91 / 100
OBDDs und die konjunktive Form
Aus einem OBDD kann man ähnlich wie beim Karnaugh-Diagramm auch die konjunktive Form ablesen:
Beispiel 3.22:Betrachten wir erneut die Funktion
mit der Ordnung x2
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 92 / 100
Fehlerdiagnose in Schaltnetzen - Problemstellung
Bei der Chip-Produktion sind ca. 90% fehlerhaft. Daher ist es wichtig, Fehler mit möglichst wenig Aufwand zu erkennen.
Schlechte Idee: Testen aller Inputs. Bei einem Addierer, der zwei 16-stellige Dualzahlen addiert, sind das 232 Inputs, also ungefähr 4⋅109 Tests.
Bessere Idee: Kann man die Art der Fehler einschränken, geht das Testen oft effizienter.
Deswegen trifft man häufig die folgende Fehlerannahme:� Es tritt im gegebenen Schaltznetz höchstens ein Fehler auf.
� Dieser Fehler ist ein gerissener Draht, es wird also nur der Wert 0 weitergegeben.(Diesen Fehler nennt man deswegen auch stuck-at-zero)
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 93 / 100
Fehlerdiagnose in Schaltnetzen - Beispiel
Beispiel 3. 23:
Unter der Ein-Fehler-Annahme betrachten wir die Schaltung der Funktion
Dazu bedienen wir uns wieder der DAG-Darstellung:
Die Knoten sind mit den Funktionen beschriftet, die Leitungen sind durchnummeriert.
1 2 3 1 2 3 1 2 3 1 2 3( , , )f x x x x x x x x x x x x= + +
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 94 / 100
Fehlerdiagnose in Schaltnetzen - Beispiel
Beispiel 3. 23: Aufstellen der FehlerfunktionenUnter der Annahme, dass der Draht i gerissen ist, ergibt sich f jeweils als fi :
1 1 2 3 2 3 1 2 3 1 2 3 2 3 1 3( , , ) 0f x x x x x x x x x x x x x x x= + + = +
2 1 2 3 2 3 1 2 3 1 2 3 1 3( , , ) 0f x x x x x x x x x x x x x= + + =
3 1 2 3 1 2 3 1 2 3 2 3( , , )f x x x x x x x x x x x= + =
4 1 2 3 1 2 3 1 2 3( , , )f x x x x x x x x x= +
5 1 2 3 1 2 3 1 2 3 1 3( , , )f x x x x x x x x x x x= + =
6 1 2 3 1 2 3 1 3( , , )f x x x x x x x x= +
7 1 2 3 2 3( , , )f x x x x x=
8 1 2 3 1 2 3 1 2 3( , , )f x x x x x x x x x= +
9 1 2 3 1 3( , , )f x x x x x=
10 1 2 3 2 3( , , )f x x x x x=
11 1 2 3 1 2 3 1 2 3( , , )f x x x x x x x x x= +
12 1 2 3 3 1 2 3 1 2 3 1 3( , , ) 0f x x x x x x x x x x x x= + + =
13 1 2 3 2 3( , , )f x x x x x=
14 1 2 3 1 2 3 1 2 3( , , )f x x x x x x x x x= +
15 1 2 3 1 3( , , )f x x x x x=
16 1 2 3 2 3( , , )f x x x x x=
17 1 2 3 1 2 3( , , )f x x x x x x=
18 1 2 3 1 2 3 1 2 3( , , )f x x x x x x x x x= +
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 95 / 100
Fehlerdiagnose in Schaltnetzen - Beispiel
Beispiel 3.23: Fehlermöglichkeiten (Ausfalltafel)Die Ausfalltafel zeigt die Ergebnisse der einzelnen fi:
Dabei stellt sich heraus, dass einige fi gleich sind:
011101101101110111111
000000000000000000011
100110110110111011101
000000000000000000001
101011011011101101110
000000000000000000010
000000000000000000100
000000000000000000000
f18f17f16f15f14f13f12f11f10f9f8f7f6f5f4f3f2f1x3x2x1
f4 = f8 = f11 = f14 = f18f2 = f5 = f9 = f12 = f15
f3 = f7 = f10 = f13 = f16f1 = f6
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 96 / 100
Fehlerdiagnose in Schaltnetzen - Beispiel
Beispiel 3.23: AusfallmatrixDie Ausfallmatrix ist die vereinfachte Version der Ausfalltafel:Da gilt:
ist das die Ausfallmatrix:
10111111
00000011
01011101
00000001
01101110
00000010
00000100
00000000
f17f4f3f2f1x3x2x1
f4 = f8 = f11 = f14 = f18f2 = f5 = f9 = f12 = f15
f3 = f7 = f10 = f13 = f16f1 = f6
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 97 / 100
Fehlerdiagnose in Schaltnetzen - Beispiel
Beispiel 3.23: FehlermatrixMit der Fehlermatrix wird festgestellt, ob es Unterschiede zwischen den fi und f gibt:
f1 ist identisch mit der Ausgangsfunktion.Da Fehler nur bei drei Werten auftreten, müssen auch nur diese Werte (also 3, 5 und 7) überprüft werden und nicht alle acht möglichen Eingaben.
7
6
5
4
3
2
1
0
Zeilen-Nr.
01000111
00000011
10100101
00000001
10010110
00000010
00000100
00000000
f17 ⊕ ff4 ⊕ ff3 ⊕ ff2 ⊕ ff1⊕ fx3x2x1
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 98 / 100
Fehlerdiagnose in Schaltnetzen
Mit dieser Methode ist nicht feststellbar, welcher Draht gerissen ist. Das ist aber akzeptabel, da die Schaltung nicht mehr repariert, sondern neu gefertigt wird.
Die im Beispiel durchgeführte Fehlerdiagnose ist eine so genannte schaltungsabhängige Fehlerdiagnose.
Es gibt noch die Möglichkeit einer schaltungsunabhängigen Fehlerdiagnose, die hier aber nicht behandelt wird.
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 99 / 100
Zusammenfassung
� Funktionale Vollständigkeit
� Bottom-Up-Entwurf
� Top-Down-Entwurf• MUXe
• DeMUXe
• Decoder
• Encoder• Realisierung boolescher Funktionen
� Fan In, Fan Out
� Addiernetze• Halb-, Volladdierer
• Ripple-Carry-Adder
• Carry-Look-Ahead Carry-Bypass-Adder• Carry-Select-Adder
• Carry-Save-Adder
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 100 / 100
Zusammenfassung
� Optimierungsproblem, Kostenmaß• Resolutionsregel (DF)
• Karnaugh-Diagramm (DF, RF, KF, Don‘t Care)
• Quine-McCluskey (DF)• OBDD (DF, KF)
• (Prim-)Implikanten
• Gray-Code
� Schaltungsabhängige Fehlerdiagnose • Fehlerfunktion
• Ausfalltafel• Ausfallmatrix
• Fehlermatrix