kapitel 3 schaltnetze und ihre verbesserungkapitel 3: schaltnetze und ihre verbesserung seite 3 /...

100
Kapitel 3: Schaltnetze und ihre Verbesserung Seite 1 / 100 Kapitel 3: Schaltnetze und ihre Verbesserung Kapitel 3 Schaltnetze und ihre Verbesserung

Upload: others

Post on 01-Feb-2021

5 views

Category:

Documents


0 download

TRANSCRIPT

  • 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