Digitaltechnik Kombinatorische Schaltungen A Revision.
Boole sche Algebra Gatter Rechenregeln Minimierung kombinatorischer Schaltungen Kombinatorische Schaltungen in Verilog
Kombinatorische Schaltungen Kombinatorische Schaltungen haben Eingänge und Ausgänge, und sind zyklusfrei Abstraktion: Die Werte der Ausgänge sind durch eine Boole sche Funktion der Eingänge gegeben Wirklichkeit: Schaltverzögerung! (später) Digitaltechnik Kapitel : Kombinatorische Schaltungen 3
Boole sche Algebra George Boole (85 864) Zwei Wahrheitswerte: {, } (Konstanten) Variablen: V = {x, y, z,...} Boolesche Operatoren:,,,, (absteigende Priorität) Rechenregeln (später) Digitaltechnik Kapitel : Kombinatorische Schaltungen 4
Semantik der Boole schen Algebra Semantik der Operatoren: x y x x y x y x y x y Digitaltechnik Kapitel : Kombinatorische Schaltungen 5
Semantik der Boole schen Algebra eine Belegung β ist eine Abbildung β : V {, } eine Belegung wird rekursiv über die Formel-Struktur ausgewertet eine Belegung β erfüllt eine Formel f gdw. β(f) = Digitaltechnik Kapitel : Kombinatorische Schaltungen 6
Semantik der Boole schen Algebra eine Belegung β ist eine Abbildung β : V {, } eine Belegung wird rekursiv über die Formel-Struktur ausgewertet eine Belegung β erfüllt eine Formel f gdw. β(f) = eine Formel heißt erfüllbar gdw. es eine erfüllende Belegung gibt (engl. satisfiable SAT) eine Formel heißt Tautologie gdw. alle Belegungen erfüllend sind Formel g wird von Formel f impliziert (f g) gdw. f g Tautologie Formeln f und g sind äquivalent (f g) gdw. f g Tautologie Digitaltechnik Kapitel : Kombinatorische Schaltungen 6
Basis nicht alle Operatoren sind notwendig eine Basis B ist eine funktionale minimale Anzahl von Operatoren funktional, heißt alle anderen lassen sich damit darstellen Digitaltechnik Kapitel : Kombinatorische Schaltungen 7
Basis nicht alle Operatoren sind notwendig eine Basis B ist eine funktionale minimale Anzahl von Operatoren funktional, heißt alle anderen lassen sich damit darstellen Beispiel: x y (x x) (y y) wenn nur NAND vorhanden technologisch bedingt ist das NAND sehr beliebt Software Repräsentation von Schaltkreisen mit B = {, } Signed-And-Graphs Digitaltechnik Kapitel : Kombinatorische Schaltungen 7
Gatter Teil I Bezeichnung Boolesche Algebraische Traditionelles IEEE (Verilog) Logik Schreibweise Schaltbild Schaltbild Disjunktion ( ) Negierte Disjunktion (nicht in Verilog) x y x + y (x y) x + y Konjunktion (&&) x y x y (oder x.y, xy,...) & Negierte Konjunktion (nicht in Verilog) (x y) x y & Digitaltechnik Kapitel : Kombinatorische Schaltungen 8
Gatter Teil II Bezeichnung Boolesche Algebraische Traditionelles IEEE (Verilog) Logik Schreibweise Schaltbild Schaltbild Exklusiv-Oder (ˆ) Äquivalenz (==) x y (oder x y) x y (oder x = y) x y x y Implikation (nicht in Verilog) x y Negation (!) x x (oder x ) Digitaltechnik Kapitel : Kombinatorische Schaltungen 9
Einfache Rechenregeln der Booleschen Algebra Konjunktive Disjunktive Formulierung Formulierung Kommutativität x y y x x y y x Assoziativität x (y z) (x y) z x (y z) (x y) z Distributivität x (y z) (x y) (x z) x (y z) (x y) (x z) De Morgan (x y) x y (x y) x y Idempotenz x x x x x x Controlling Value x x Neutraler Wert x x x x Doppelte Negation ( x) x Digitaltechnik Kapitel : Kombinatorische Schaltungen
De Morgan in Action Und-Oder Schaltung lässt sich einfach als NAND-Schaltung darstellen! Digitaltechnik Kapitel : Kombinatorische Schaltungen
Komplexe Rechenregeln Teil I Shannonsches Expansionstheorem (Fallunterscheidung) e x e[/x] x e[/x] mit e, f Boolesche Ausdrücke, x Variable, e[f/x] Substitution von x durch f in e. Digitaltechnik Kapitel : Kombinatorische Schaltungen 2
Beispiel Shannonsches Expansionstheorem Beispiel: (zwei Darstellungen für Exklusiv-Oder) (x y) ( x y) x ( y) ( y) x ( y) ( y) x ( y) x y ( y) x y x y x y x y Algebraische Schreibweise: (= statt ist auch erlaubt) (x + y) (x + y) x y + x y Digitaltechnik Kapitel : Kombinatorische Schaltungen 3
Komplexe Rechenregeln Teil II Abschwächung x y x, falls x y (y schwächer als x). Digitaltechnik Kapitel : Kombinatorische Schaltungen 4
Komplexe Rechenregeln Teil II Abschwächung x y x, falls x y (y schwächer als x). Verstärkung x + y x, falls y x (y stärker als x). Digitaltechnik Kapitel : Kombinatorische Schaltungen 4
Komplexe Rechenregeln Teil II Abschwächung x y x, falls x y (y schwächer als x). Verstärkung x + y x, falls y x (y stärker als x). Konsensus (Fallunterscheidung und Abschwächung) x y + x z + y z x y + x z Intuition: If-Then-Else schwächer als Konjunktion von Then und Else. Digitaltechnik Kapitel : Kombinatorische Schaltungen 4
Beweis Konsensus-Regel mit Funktionstabelle x y z x y + x z x y + x z + y z Mühsam für viele Variablen (exponentielle Laufzeit)! Digitaltechnik Kapitel : Kombinatorische Schaltungen 5
Regelbasierter Beweis Konsensus-Regel (x y + x z + y z)[/x] y + z + y z Substitution + z + y z Controlling Value + z + y z Non-Controlling Value z + y z Non-Controlling Value + z + y z Non-Controlling Value ( + y) z Distributivität z Controlling Value + Digitaltechnik Kapitel : Kombinatorische Schaltungen 6
Regelbasierter Beweis Konsensus-Regel (x y + x z + y z)[/x] y + z + y z Substitution + z + y z Controlling Value + z + y z Non-Controlling Value z + y z Non-Controlling Value + z + y z Non-Controlling Value ( + y) z Distributivität z Controlling Value + Analog erhält man (x y + x z + y z)[/x] y Digitaltechnik Kapitel : Kombinatorische Schaltungen 6
Regelbasierter Beweis Konsensus-Regel (x y + x z + y z)[/x] y + z + y z Substitution + z + y z Controlling Value + z + y z Non-Controlling Value z + y z Non-Controlling Value + z + y z Non-Controlling Value ( + y) z Distributivität z Controlling Value + Analog erhält man (x y + x z + y z)[/x] y Mit Shannonschem Expansionstheorem: x y + x z + y z x (x y + x z + y z)[/x] + x (x y + x z + y z)[/x] x y + x z Digitaltechnik Kapitel : Kombinatorische Schaltungen 6
Disjunktive Normalform (DNF) gegeben eine feste Menge von Variablen ein Literal ist eine negierte oder unnegierte Variable, z.b. x, x, a, z,... ein Produktterm ist eine Konjunktion von Literalen, z.b x y, b c,... ein Minterm ist ein maximaler Produktterm (enthält alle Variablen) eine DNF ist eine Disjunktion von Produkttermen (wie im Beispiel) Digitaltechnik Kapitel : Kombinatorische Schaltungen 7
DNF-Beispiel Literal a c + c b + a b d DNF Produktterm man bezeichnet eine DNF auch als ein Polynom die Produktterme heißen dann Monome Digitaltechnik Kapitel : Kombinatorische Schaltungen 8
PLA in 2 in in out out Digitaltechnik Kapitel : Kombinatorische Schaltungen 9
PLA in 2 in in out out PLAs implementieren DNF Digitaltechnik Kapitel : Kombinatorische Schaltungen 9
Regelbasierte Minimierung Annahme: Chipgröße in etwa linear in der Größe der Formel Gegeben: Zu implementierende Funktion f dargestellt als Formel Gesucht: (möglichst) minimal große Formel g mit f g Digitaltechnik Kapitel : Kombinatorische Schaltungen 2
Regelbasierte Minimierung Annahme: Chipgröße in etwa linear in der Größe der Formel Gegeben: Zu implementierende Funktion f dargestellt als Formel Gesucht: (möglichst) minimal große Formel g mit f g Beispiel: ac cb abd Minimierung: ac cb abd ac cb ab abd Konsenus über c ac cb ab Verstärkung ac cb Konsensus über c Digitaltechnik Kapitel : Kombinatorische Schaltungen 2
Zweistufige Logik a c b a c b d. Stufe 2. Stufe. Stufe 2. Stufe (gleiches Beispiel wie bei der Minimierung) Digitaltechnik Kapitel : Kombinatorische Schaltungen 2
Karnaugh-Diagramme auch Karnaugh-Veitch-Diagramme, KV-Diagramme, Karnaugh-Maps, etc. praktikabel bis zu 5 Variablen 2-Dimensionale Anordnung einer Funktionstabelle benachbarte Zellen unterscheiden sich in einem Bit c d 2 3 2 Variablen MinTerm Index 2 3 c d c d Digitaltechnik Kapitel : Kombinatorische Schaltungen 22
Erzeugung des Gitters von Karnaugh-Diagrammen d d d Variable 2 Variablen c 5 4 5 4 2 3 7 c 2 3 2 3 7 b 3 Variablen 6 c 8 9 d 6 5 4 3 b 4 Variablen 2 a Digitaltechnik Kapitel : Kombinatorische Schaltungen 23
Lesen von Karnaugh-Diagrammen 8er und 4er Blöcke d d d c c c a a a c b cd b ac b Digitaltechnik Kapitel : Kombinatorische Schaltungen 24
Lesen von Karnaugh-Diagrammen 2er und er Blöcke d d d c a c a c a b b b abd acd abcd Digitaltechnik Kapitel : Kombinatorische Schaltungen 25
Minimierung mit Karnaugh-Diagrammen ➀ Hinreichend großes Gitternetz erstellen ➁ Positive Literale markieren ➂ Zu maximalen Blöcken zusammenfassen ➃ Minimale Überdeckung ablesen Zur Übung: http: //tech-www.informatik.uni-hamburg.de/applets/kvd/ Digitaltechnik Kapitel : Kombinatorische Schaltungen 26
Karnaugh-Diagramme Beispiel Minterm Index a b c d ac + cb + abd c 5 4 2 3 8 9 d 7 5 6 4 3 2 b a 2 3 4 5 6 7 8 9 2 3 4 5 Digitaltechnik Kapitel : Kombinatorische Schaltungen 27
Karnaugh Maps mit Don t Cares c 2 3 d d d c 2 3 c 2 3 MinTerm Index cd + cd c + d c + d 3 2 c d f Don t Cares können zur Vergrößerung von Blöcken verwendet werden (müssen aber nicht abgedeckt werden) Digitaltechnik Kapitel : Kombinatorische Schaltungen 28
Implikanten und Primimplikanten ein Implikant einer DNF ist ein implizierender Produktterm z.b. ein Monom oder der Konsensus zweier Monome Block im Karnaugh-Diagramm ein Primimplikant ist ein maximaler Implikant entspricht maximalen Block, der in keine Richtung erweitert werden kann ein Kernimplikant überdeckt einen sonst nicht überdeckten Minterm ein redundanter Primimplikant wird von Kernimplikanten überdeckt z.b. der Konsens von zwei Primimplikanten Digitaltechnik Kapitel : Kombinatorische Schaltungen 29
Abstrakte Minimierungsmethode Einfache Konsensusregel x y + x y y (Beweis im Buch) Auch für mehr als zwei Variablen: a b c d + a b c d b c d. Generiere alle Primimplikanten durch einfache Konsensusregel 2. Gib Kernimplikanten aus, da in jeder minimalen DNF enthalten 3. Entferne redundante Primimplikanten 4. Wähle minimale Überdeckung aus restlichen Primimplikanten Digitaltechnik Kapitel : Kombinatorische Schaltungen 3
Quine-McCluskey-Verfahren Gegeben Funktionstabelle Minterm Index a b c d Minterm Index a b c d Funktionswert Funktionswert 8 9 2 3 4 2 5 3 6 4 7 5 (Achtung: anderes Beispiel als beim Karnaugh-Diagramm) Digitaltechnik Kapitel : Kombinatorische Schaltungen 3
Quine-McCluskey-Verfahren: Generierung der Primimplikanten Generierung aller Primimplikanten Schritt Minterm Indizes a b c d Anzahl Einsen 2 8 5 2 2 2 2 3 3 5 4 Primimplikant (Gruppeneinteilung nach Anzahl Einsen reduziert Konsensusversuche) Digitaltechnik Kapitel : Kombinatorische Schaltungen 32
Quine-McCluskey-Verfahren: Generierung der Primimplikanten Generierung aller Primimplikanten Schritt Minterm Indizes a b c d Anzahl Einsen nein 2 nein 8 nein 5 2 nein 2 nein 2 2 nein 3 3 nein 5 4 nein Primimplikant (Gruppeneinteilung nach Anzahl Einsen reduziert Konsensusversuche) Digitaltechnik Kapitel : Kombinatorische Schaltungen 32
Quine-McCluskey-Verfahren Generierung aller Primimplikanten Schritt 2 Minterm Indizes a b c d Anzahl Einsen, 2, 8 2, 8, 8,2 5,3 2 2,3 2 3,5 3 Primimplikant Digitaltechnik Kapitel : Kombinatorische Schaltungen 33
Quine-McCluskey-Verfahren Generierung aller Primimplikanten Schritt 2 Minterm Indizes a b c d Anzahl Einsen, 2 nein, 8 nein 2, nein 8, nein 8,2 ja 5,3 2 ja 2,3 2 ja 3,5 3 ja Primimplikant Digitaltechnik Kapitel : Kombinatorische Schaltungen 33
Quine-McCluskey-Verfahren Generierung aller Primimplikanten Schritt 3 Minterm Indizes a b c d Anzahl Einsen Primimplikant,2,8,,8,2, Digitaltechnik Kapitel : Kombinatorische Schaltungen 34
Quine-McCluskey-Verfahren Generierung aller Primimplikanten Schritt 3 Minterm Indizes a b c d Anzahl Einsen Primimplikant,2,8, ja,8,2, redundant Digitaltechnik Kapitel : Kombinatorische Schaltungen 34
Quine-McCluskey-Verfahren Generierung aller Primimplikanten Schritt 3 Minterm Indizes a b c d Anzahl Einsen Primimplikant,2,8, ja,8,2, redundant Alle nicht weiter vereinfachbaren Implikanten sind Primimplikanten: 8,2 5,3 2,3 3,5,2,8, a c d b c d a b c a b d b d Digitaltechnik Kapitel : Kombinatorische Schaltungen 34
Quine-McCluskey-Verfahren Finde minimale Überdeckung mit Primimplikantentafel 2 5 8 2 3 5 8,2 5,3 2,3 3,5,2,8, Digitaltechnik Kapitel : Kombinatorische Schaltungen 35
Quine-McCluskey-Verfahren Finde minimale Überdeckung mit Primimplikantentafel 8,2 5,3 2,3 3,5,2,8, 2 5 8 2 3 5 = Minterme in Primimplikanten = Minterme in Kernimplikanten = Minterme überdeckt von Kernimplikanten Digitaltechnik Kapitel : Kombinatorische Schaltungen 35
Quine-McCluskey-Verfahren Finde minimale Überdeckung mit Primimplikantentafel 8,2 5,3 2,3 3,5,2,8, 2 5 8 2 3 5 = Minterme in Primimplikanten = Minterme in Kernimplikanten = Minterme überdeckt von Kernimplikanten Minimalpolynom enthält alle Kernprimimplikanten, aber nur entweder 8,2 oder 2,3 Digitaltechnik Kapitel : Kombinatorische Schaltungen 35
Quine-McCluskey-Verfahren: Zusammenfassung ➀ Alle Wahrheitsbelegungen mit Wahrheitswert aus der Funktionstabelle auswählen ➁ Mit der einfachen Konsensusregel alle Primimplikanten generieren ➂ Kernimplikanten suchen, redundante Primimplikanten entfernen und Überdeckung aller Primimplikanten bestimmen ➃ Die Disjunktion der Primimplikanten der Überdeckung ergibt die gewünschte minimierte Formel Digitaltechnik Kapitel : Kombinatorische Schaltungen 36
Quine-McCluskey mit Don t Cares Generierung Primimplikanten Schritt MinTerm Index 2 3 c d f Minterm Indizes c d Anzahl Einsen 3 2 Primimplikant Der Don t Care Minterm wird zunächst normal als Minterm behandelt Digitaltechnik Kapitel : Kombinatorische Schaltungen 37
Quine-McCluskey mit Don t Cares Generierung Primimplikanten Schritt MinTerm Index 2 3 c d f Minterm Indizes c d Anzahl Einsen nein nein 3 2 nein Primimplikant Der Don t Care Minterm wird zunächst normal als Minterm behandelt Digitaltechnik Kapitel : Kombinatorische Schaltungen 37
Quine-McCluskey mit Don t Cares Generierung Primimplikanten Schritt 2 Minterm Indizes c d Anzahl Einsen Primimplikant, ja,3 ja Primimplikanten werden wie gewohnt bestimmt Digitaltechnik Kapitel : Kombinatorische Schaltungen 38
Quine-McCluskey mit Don t Cares Minimale Überdeckung mit Primimplikantentafel,,3 3 Ignoriere alle Don t Care Spalten! Digitaltechnik Kapitel : Kombinatorische Schaltungen 39
Zusammenfassung zweitstufiger Minimierung Quine-McCluskey ist exponentiell in der Anzahl Minterme da exponentiell viele Primimplikanten und Überdeckungsproblem NP-vollständig Heuristiken! Espresso von Berkeley als Standardverfahren: Komplementierung: Berechnung der Negation einer DNF als DNF Expansion: Erweitern von Implikanten zu Primimplikanten Reduktion: Entfernen von redundanten Primimplikanten Wiederholung: solange Kosten (z.b. Anzahl Gatter) sich verringern Digitaltechnik Kapitel : Kombinatorische Schaltungen 4
Mehrstufige Logik Kürzere Schaltzeit Weniger Gatter a c b d a b c d e e Beide Schaltkreise sind äquivalent! Digitaltechnik Kapitel : Kombinatorische Schaltungen 4
Minimierung Mehrstufige Logik Faktorisieren: a c + a d e + b c + b d e hat mehr Gatter als (a + b) (c + d e) führt zu mehrstufiger Logik (multi-level logic) Tradeoff zwischen Laufzeit und Platz (siehe später Addierer) keine exakten Verfahren vorhanden! SIS Synthese Werkzeug http://www-cad.eecs.berkeley.edu Digitaltechnik Kapitel : Kombinatorische Schaltungen 42
Verilog Sprache zur Beschreibung von Schaltungen Übersetzung in Schaltung: Synthese Digitaltechnik Kapitel : Kombinatorische Schaltungen 43
Verilog Sprache zur Beschreibung von Schaltungen Übersetzung in Schaltung: Synthese Mehrere Stufen:. Netzliste (Graph aus Gattern) 2. Größendimensionierung der Gatter 3. Gatter werden platziert und verdrahtet (place and route) Vor nicht allzu langer Zeit: CAD Zeichnungen einzelner Transistoren! Digitaltechnik Kapitel : Kombinatorische Schaltungen 43
Verilog Module Verilog Modelle bestehen aus mehreren Modulen jedes Modul hat ein Interface, das die Inputs und Outputs definiert Digitaltechnik Kapitel : Kombinatorische Schaltungen 44
Einfaches Beispiel module main(input clk, schalter, output lampe); wire x; assign x=!schalter; 5 assign lampe=x; endmodule Verbindungsmöglichkeiten werden in der Klammer beschrieben (Semikolon nach der Klammer nicht vergessen) Rumpf des Moduls enthält Implementierung Digitaltechnik Kapitel : Kombinatorische Schaltungen 45
Fortsetzung zum einfachen Beispiel input Eingang, output Ausgang, inout bidirektionale Ports wire generiert ein Kabel mit assign x=!schalter; wird x das Resultat von!schalter zugewiesen (assigned)! ist (wie C/C++, Java,... ) Digitaltechnik Kapitel : Kombinatorische Schaltungen 46
Bezeichner, Spaces und Kommentare Verilog unterscheidet Groß- und Kleinschreibung (wie C, JAVA) Bezeichner bestehen aus Buchstaben, Zahlen und (underscore) Escape-Mechanismus: \$ein+fancy%bezeichner zeilenweise Kommentare beginnen mit Prefix // ähnlich den // Kommentaren in C++ Mehrfachzeilen-Kommentare mit /*... */ wie in C Spaces, Zeilenumschaltung, Tabulator trennen Tokens Semikolon definiert das Ende von Befehlen Digitaltechnik Kapitel : Kombinatorische Schaltungen 47
Kombinatorische Schaltungen in Verilog a b c z b c a module combinational function(input a, b, c, output z); assign z = (!a && b) (a && c); 5 endmodule Digitaltechnik Kapitel : Kombinatorische Schaltungen 48
Netzlisten-Implementierung module combinational function(input a, b, c, output z); assign z = (!a && b) (a && c); 5 endmodule Digitaltechnik Kapitel : Kombinatorische Schaltungen 49
Netzlisten-Implementierung module combinational function(input a, b, c, output z); assign z = (!a && b) (a && c); 5 endmodule a INV z AND2 OR2 c b AND2 Synthese des Verilog Codes mit Xilinx ISE generiert strukturelle Netzliste Noch nicht technologieabhängig Digitaltechnik Kapitel : Kombinatorische Schaltungen 49
Netzlisten-Implementierung module add (input a, b, ci, output s, co); assign s = a ˆ b ˆ ci ; assign co = (a && b) (b && ci) (a && ci); endmodule a a co co b b ci ci s XOR3 Digitaltechnik Kapitel : Kombinatorische Schaltungen 5
Kombinatorisches mit dem FPGA-Board (I) 2 2 2 3 2 5 2 4 2 2 FPGA von Xilinx 2 2 Stromversorgung 2 3 Leuchtdioden (LEDs) 2 4 Schiebeschalter 2 5 Taster Digitaltechnik Kapitel : Kombinatorische Schaltungen 5
Kombinatorisches mit dem FPGA-Board (II) Der Prozess Assign Package Pins weist einem Input/Output ein Beinchen des FPGAs zu Die Beinchen sind fest mit den LEDs, Tastern/Schaltern verbunden siehe erste Rechnerübung Digitaltechnik Kapitel : Kombinatorische Schaltungen 52
Kombinatorisches mit dem FPGA-Board (III) Digitaltechnik Kapitel : Kombinatorische Schaltungen 53
Modulhierarchie Module können zu größeren Modulen kombiniert werden: module add2 (input a, b, a, b, ci, output s, s, co); wire c; add A(a, b, ci, s, c); 5 add A2(a, b, c, s, co); endmodule a b module add2 a b a b a wire c ci ci add co ci add s s b co co s s Digitaltechnik Kapitel : Kombinatorische Schaltungen 54
Behavioral Modeling Es gibt eine Alternative zu wire und assign: module also comb(input a, b, ci, output s, co); reg s, co; 5 always @(a, b, ci) begin s = a ˆ b ˆ ci ; co = (a && b) (b && ci) (a && ci); end endmodule Ählich wie sequentielle Programmierspache, aber kombinatorisch! Digitaltechnik Kapitel : Kombinatorische Schaltungen 55
Beispiel module ifthen example(input a, b, c, output x); reg x; 5 always @(a, b, c) begin x=; if (a b c) x=; end endmodule Digitaltechnik Kapitel : Kombinatorische Schaltungen 56
Achtung! Mehrfachzuweisungen möglich Jedes Ausgangssignal muss auf allen Pfaden zugewiesen werden! Die Sensitivitätsliste @(...) muss vollständig sein! Digitaltechnik Kapitel : Kombinatorische Schaltungen 57
Mini-Quiz module thing(input [4:] in, in2, input s, output reg [4:] out); integer i ; 5 reg [4:] t2, t; always @(in, in2, s) begin i=4; while ( i>=) begin t[ i ] = s && in[i ]; t2[ i ] =!s && in2[i ]; i = i ; end out = t t2; 5 end endmodule Welches Bauteil stellt thing dar? (Klausur Frühling 28) Digitaltechnik Kapitel : Kombinatorische Schaltungen 58