Rechnerstrukturen Michael Engel und Peter Marwedel TU Dortmund, Fakultät für Informatik Sommer 2014 Folien a. d. Basis von Materialien von Gernot Fink und Thomas Jansen 15. Mai 2014 1/50
1 Boolesche Funktionen und Schaltnetze 2 Programmierbare Bausteine Einleitung Einsatz von PLAs 3 Sequenzielle Schaltungen Einleitung Modellierung mit Automaten 4 Synchrone Schaltwerke Einleitung Flip-Flops 2/50
Realisierung von Schaltnetzen Gedanken zur Anwendung 1. Problem 2. boolesche Funktion 3. Schaltnetz-Entwurf 4. Schaltnetz-Realisierung Realisierungen hoch-integrierte Schaltung teuer Lohnt sich nur bei großen Stückzahlen. direkte Umsetzung mit Gattern umständlich 3/50
Realisierung mit Gattern Datenblatt von Texas Instruments (www.ti.com) 4/50
Alternative Realisierung massenhaft produzierte darum preisgünstige nach der Fertigstellung in ihrer Funktion noch beeinflussbare funktional vollständige also universelle Standardbausteine Programmable Logic Array (PLA) Varianten PAL, PROM, FPGA,... (zum Teil eingeschränkte Funktionalität) 5/50
Programmable Logic Array (PLA) Datenblatt von Lattice (www.latticesemi.com) 6/50
PLA Grundbausteine x y t f 1 (x,y) f 2 (x,y) Name Typ f 1 (x,y) f 2 (x,y) Identer 0 y x Addierer 1 x y x Multiplizierer 2 y x y Negat-Multiplizierer 3 y x y klar funktional vollständig 7/50
PLA t 0,0 t 0,1 t 0,2 t 0,3 t 0,4 t 0,5 t 0,6 t 1,0 t 1,1 t 1,2 t 1,3 t 1,4 t 1,5 t 1,6 t 2,0 t 2,1 t 2,2 t 2,3 t 2,4 t 2,5 t 2,6 t 3,0 t 3,1 t 3,2 t 3,3 t 3,4 t 3,5 t 3,6 t 4,0 t 4,1 t 4,2 t 4,3 t 4,4 t 4,5 t 4,6 8/50
PLA für f : {0,1} 3 {0,1} 1 1 1 1 1 1 x 1 t 0,0 t 0,1 t 0,2 t 0,3 t 0,4 t 0,5 x 2 t 1,0 t 1,1 t 1,2 t 1,3 t 1,4 t 1,5 x 3 t 2,0 t 2,1 t 2,2 t 2,3 t 2,4 t 2,5 0 t 3,0 t 3,1 t 3,2 t 3,3 t 3,4 t 3,5 f(x 1,x 2,x 3 ) Wie wählt man die Bausteintypen? 9/50
PLA: Bausteinwahl klar jede Funktion als Polynom darstellbar Erinnerung Polynom = Disjunktion einiger Monome erster Schritt Wie realisieren wir Monome? exemplarisch am Beispiel x 1 x 2 x 4 10/50
PLA: Monomrealisierung Beispiel Monom x 1 x 2 x 4 Erinnerung 1 x Name Typ f r (o,l) f u (o,l) 1 2 x 1 1 x Identer 0 l o 1 = x 1 x 2 3 x 2 Addierer 1 o l o x 1 x 2 Multiplizierer 2 l o l x 3 0 x 3 Negat-Multiplizierer 3 l o l x 1 x 2 x 4 2 x 4 x 1 x 2 x 4 also jedes Monom leicht realisierbar falls Variable fehlt Typ 0 falls x i vorkommt Typ 2 falls x i vorkommt Typ 3 11/50
PLA: Polynomrealisierung gesehen für f : {0,1} n {0,1} k verschiedene Monome m 1, m 2,..., m k in n Zeilen und k Spalten realisierbar Wie können wir f realisieren, z.b. f = m 1 m 2 m 4? m 1 m 2 m 3 m 4 0 1 m 1 1 m1 m2 0 m1 m2 1 m 1 m 2 m 4 Erinnerung Name Typ f r (o,l) f u (o,l) Ist das sinnvoll? Identer 0 l o klar: nicht für f : {0,1} n {0,1} Addierer 1 o l o aber für Multiplizierer 2 l o l f : {0,1} n {0,1} m Negat-Multiplizierer 3 l o l 12/50
PLA: Ein konkretes Beispiel Beispiel f(x 1,x 2,x 3,x 4 ) = x 1 x 2 x 4 x 2 x 3 x 4 x 1 x 3 x 4 x 2 x 3 x 1 3 0 3 0 1 1 1 1 x 2 2 2 0 3 Und-Teil x 3 0 2 2 2 x 4 2 2 2 0 Oder-Teil 0 1 1 1 1 f(x 1,...,x 4 ) 13/50
Fazit zur PLA-Nutzung also Wir können jede Funktion f : {0,1} n {0,1} m, für deren Polynom insgesamt k Implikanten ausreichen, mit einem PLA mit n+m Zeilen und k Spalten realisieren. klar Wir wünschen uns k klein. dafür Minimalpolynome Wie findet man Minimalpolynome für Funktionen f : {0,1} n {0,1} m? 14/50
Minimalpolynome für f : {0,1} n {0,1} m Notation statt f : {0,1} n {0,1} m (f 1,f 2,...,f m ) mit f i : {0,1} n {0,1} für i {1,2,...,m} Definition Ein Minimalpolynom für f : {0,1} n {0,1} m ist (p 1,p 2,...,p m ) mit minimalen Kosten, dabei ist p i Polynom für f i. Bei den Kosten zählen mehrfach vorkommende Monome nur einmal. Also suchen wir Minimalpolynome p i für f i? Nein! Beispiel p 1 (x 1,x 2,x 3 ) = x 1 x 3 x 2 x 3 ist Minimalpolynom p 2 (x 1,x 2,x 3 ) = x 1 x 2 x 2 x 3 ist Minimalpolynom p 1 (x 1,x 2,x 3 ) = x 1 x 2 x 3 x 2 x 3 stellt auch p 1 dar p 2 (x 1,x 2,x 3 ) = x 1 x 2 x 1 x 2 x 3 stellt auch p 2 dar Gesamtkosten (p 1,p 2 ) = (n+m) k = (3+2) 4 Gesamtkosten (p 1,p 2 ) = (n+m) k = (3+2) 3 15/50
Monome für Minimalpolynome für f : {0,1} n {0,1} k Welche Monome übernehmen die Rolle der Primimplikanten? Definition Ein Monom m ist ein multipler Primimplikant von f = (f 1,f 2,...,f k ) mit f i : {0,1} n {0,1}, wenn m Primimplikant von f i ist für eine i I nicht-leere Menge I {1,2,...,k}. Theorem Minimalpolynome für f : {0,1} n {0,1} k enthalten nur multiple Primimplikanten von f. Beweis und Algorithmus zur Berechnung Skript 16/50
Multiple Primimplikanten berechnen Wie finden wir alle ( multiplen ) Primimplikanten? Theorem m PI f i i I: m i PI(f i ): m = i I Beweis und Algorithmus zur Berechnung Skript m i i I 17/50
Minimalpolynomberechnung für f : {0,1} n {0,1} m Algorithmus 1. Für alle f i berechne alle Primimplikanten. 2. Berechne alle multiplen Primimplikanten. (ergeben sich potentiell als paarweise Verknüpfung normaler Primimplikanten) 3. Berechne eine möglichst günstige Überdeckung. also günstigste Darstellung für PLA-Realisierungen mit uns bekannten Mitteln berechenbar allerdings sehr aufwendig 18/50
PLA als ROM Aufgabe Speichere 2 n Wörter der Länge m. w 0 = w 0,0 w 0,1 w 0,2 w 0,m 1 {0,1} m w 1 = w 1,0 w 1,1 w 1,2 w 1,m 1 {0,1} m w 2 = w 2,0 w 2,1 w 2,2 w 2,m 1 {0,1} m.. w 2 n 1 = w 2 n 1,0w 2 n 1,1w 2 n 1,2 w 2 n 1,m 1 {0,1} m Benutze PLA mit n+m Zeilen, 2 n Spalten Beobachtung m 2 n Zellen für m 2 n zu speichernde Bits mindestens erforderlich Adressierung mit jeweils n Bits in n zusätzlichen Zeilen 19/50
x 2 x 1 1 1 1 1 1 1 1 1 3 3 3 3 2 2 2 2 3 3 2 2 3 3 2 2 Beispiel n = 3, m = 6 2 3 = 8 Wörter jeweils 6 Bits x 0 3 2 3 2 3 2 3 2 Beobachtung Und-Teil fest 0 w 0,0 w 1,0 w 2,0 w 3,0 w 4,0 w 5,0 w 6,0 w 7,0 nur von Größe abhängig 0 w 0,1 w 1,1 w 2,1 w 3,1 w 4,1 w 5,1 w 6,1 w 7,1 Anmerkung 0 w 0,2 w 1,2 w 2,2 w 3,2 w 4,2 w 5,2 w 6,2 w 7,2 PLAs mit festem Und-Teil werden 0 w 0,3 w 1,3 w 2,3 w 3,3 w 4,3 w 5,3 w 6,3 w 7,3 als PROM verkauft. 0 w 0,4 w 1,4 w 2,4 w 3,4 w 4,4 w 5,4 w 6,4 w 7,4 0 w 0,5 w 1,5 w 2,5 w 3,5 w 4,5 w 5,5 w 6,5 w 7,5 20/50
Zwischen-Fazit PLAs PLAs sind preiswerte, universelle Bausteine, die beliebige boolesche Funktionen leicht realisierbar machen, Minimalpolynomdarstellungen motivieren, Speicherung von 2 n Wörtern der Länge m in einem (n+m) 2 n -PLA erlauben. Nachteil nur einmal programmierbar Wie kann man PLAs beliebig neu programmierbar machen? 21/50
Software -PLAs x y Typ f 1 (x,y) Typ s t f 1 (x,y) f 2 (x,y) 0 0 0 y x 1 0 1 x y x 2 1 0 y x y f 2 (x,y) 3 1 1 y x y klar vier verschiedene Typen, mit zwei Bits codierbar Idee erweitere PLA-Baustein um zwei zusätzliche Eingaben, die den Baustein-Typ codieren jetzt f 1 und f 2 als Funktionen von (s,t,x,y) darstellen f 1 (s,t,x,y) = y stx f 2 (s,t,x,y) = sx sx(t y) 22/50
Bemerkung zum Einsatz klar für ein n m-pla werden zur Programmierung 2nm Bits gebraucht. Beobachtung Man kann diese 2nm Bits gut in einem PROM speichern. Fazit einfache und günstige Realisierung von booleschen Funktionen besonders geeignet für kleine Stückzahlen besonders geeignet bei nur temporärem Gebrauch 23/50
Sequenzielle Schaltungen x 1 1 klar Das ist kein Schaltnetz. allerdings Es ist eine baubare Schaltung. Was passiert in dieser Schaltung? 24/50
Eine konkrete sequenzielle Schaltung x y 1 1 Was passiert in dieser Schaltung? x y x y 0 0 1 0 1 0 1 0 1 1 1 1 klar und immer so weiter... natürlich in der Realität viel schneller darum heißt die Schaltung Flimmerschaltung 25/50
Bewertung des Effekts klar Unkontrolliertes Flimmern ist sehr unschön. Also Kreise konsequent verbieten? Wozu können Kreise gut sein? Beobachtung Ausgänge werden zu Eingaben... etwas anders Man kann schon Berechnetes noch einmal sehen. Einsicht Das realisiert so etwas wie Speicher. 26/50
Ein zweites Beispiel R S & & schneller P Q langsamer x y x y 0 0 1 0 1 1 1 0 1 1 1 0 R t S t P t+ Q t+ P t+2 Q t+2 0 0 1 1 1 1 0 1 1 0 1 0 1 0 Q t 1 0 1 1 1 Q t Q t Q t Q t 27/50
Ein zweites Beispiel R S & & langsamer P Q schneller x y x y 0 0 1 0 1 1 1 0 1 1 1 0 R t S t P t+ Q t+ P t+2 Q t+2 0 0 1 1 1 1 0 1 1 P t 1 0 1 0 0 1 0 1 1 1 P t P t P t P t 28/50
Bi-stabile NAND-Kippstufe R & P Anmerkung heißt auch Latch S & Q positiv kippt, flimmert nicht negativ Verhalten hängt von Schaltzeiten der beiden Gatter ab genauer beobachtet Verhalten hängt manchmal von Schaltzeiten der beiden Gatter ab 29/50
Analyse der bi-stabilen NAND-Kippstufe 1. Fall oberes NAND-Gatter schneller R R t S t P t+ Q t+ P t+2 Q t+2 0 0 1 1 1 1 0 1 1 0 1 0 1 0 Q t 1 0 1 1 1 Q t Q t Q t Q t S & & P Q P t+2 = RQ t+ = R Q t+ = R S P t+ = R S P t+ = R S R Q t = R S ( R Q t ) = R S R S Q t = R S Q t 30/50
Analyse der bi-stabilen NAND-Kippstufe 2. Fall unteres NAND-Gatter schneller R R t S t P t+ Q t+ P t+2 Q t+2 0 0 1 1 1 1 0 1 1 P t 1 0 1 0 0 1 0 1 1 1 P t P t P t P t S & & P Q P t+2 = RQ t+2 = R Q t+2 = R S P t+ = R S P t+ = R S R Q t+ = R S ( R Q t+ ) = R S R S Q t+ = R S Q t+ = R S S P t = R S S P t = R S P t 31/50
Fazit zum Ausgang P der bi-stabilen NAND-Kippstufe 1. Fall oberes NAND-Gatter schneller P t+2 = R S Q t 2. Fall unteres NAND-Gatter schneller P t+2 = R S P t Beobachtung Wenn P t = Q t, ist das Verhalten an P t stabil, also von den Schaltzeiten der Gatter unabhängig. Was ist mit dem anderen Ausgang? 32/50
Analyse der bi-stabilen NAND-Kippstufe 1. Fall oberes NAND-Gatter schneller R R t S t P t+ Q t+ P t+2 Q t+2 0 0 1 1 1 1 0 1 1 0 1 0 1 0 Q t 1 0 0 1 1 Q t Q t Q t Q t S & & P Q Q t+2 = S P t+2 = S P t+2 = S R Q t+ = S RQ t+ = S RSP t+ = S R ( S P t+ ) = S RS RP t+ = S RP t+ = S RRQ t = S RRQ t = S R Q t 33/50
Analyse der bi-stabilen NAND-Kippstufe 2. Fall unteres NAND-Gatter schneller R R t S t P t+ Q t+ P t+2 Q t+2 0 0 1 1 1 1 0 1 1 P t 1 0 1 0 0 1 0 1 1 1 P t P t P t P t S & & P Q Q t+2 = S P t+ = S P t+ = S RQ t+ = S RQ t+ = S RSP t = S R ( S P t ) = S RS RP t = S R P t 34/50
Fazit der Analyse der bi-stabilen NAND-Kippstufe 1. Fall oberes NAND-Gatter schneller P t+2 = R S Q t Q t+2 = S R Q t 2. Fall unteres NAND-Gatter schneller P t+2 = R S P t Q t+2 = S R P t also Wenn Q t = P t, so ist das Verhalten stabil, von den Schaltzeiten der Gatter unabhängig. also Forderung P t Q t 35/50
Wertetabelle bi-stabile NAND-Kippstufe oberes Gatter schneller unteres Gatter schneller R t S t P t+2 Q t+2 P t+2 Q t+2 0 0 1 1 1 1 0 1 1 0 1 0 1 0 0 1 0 1 1 1 Q t Q t P t P t Beobachtung Wir müssen nur R = S = 0 ausschließen. R t S t P t+2 Q t+2 0 1 1 0 1 0 0 1 1 1 P t P t (R,S) = (0,1) setzt P = 1 (R,S) = (1,0) setzt P = 0 (R,S) = (1,1) lässt P unverändert Fazit Bi-stabile NAND-Kippstufe realisiert 1-Bit-Speicher! 36/50
Erstes Fazit zu sequenziellen Schaltungen Bi-stabile NAND-Kippstufe realisiert 1-Bit-Speicher. also Kreise in Schaltnetzen manchmal sinnvoll neue Funktionalität Analyse schwierig Wunsch strukturierter Entwurf 37/50
Automaten Wunsch formales Modell eines Automaten Was ist überhaupt ein Automat? Beispiele Getränke-Automat einfache Ampelsteuerung Steuerung einer Waschmaschine Gegenbeispiele Geldspielautomat wegen der Zufalls-Komponente Computer zu komplex Mensch für uns nicht formal beschreibbar 38/50
Automatenmodell Grobbeschreibung verarbeitet eine Eingabe erzeugt eine Ausgabe ist in einem Zustand arbeitet in Takten arbeitet deterministisch (exakt vorhersagbar) jetzt exakte, formale Beschreibung 39/50
Definition Mealy-Automat Definiton 19 Ein Mealy-Automat M = (Q,q 0,Σ,,δ,λ) ist definiert durch: endliche Zustandsmenge Q Startzustand q 0 Q endliches Eingabealphabet Σ endliches Ausgabealphabet Zustandsüberführungsfunktion δ: Q Σ Q Ausgabefunktion λ: Q Σ {ε} In einem Takt mit aktuellem Zustand q und Eingabesymbol w schreibt der Automat λ(q,w), wechselt der Automat in den Zustand δ(q,w). 40/50
Beispiel Mealy-Automat Q = {q 0,q 1,q 2 }, Σ = {0,1}, = {a,b,c} 0/c q 1 0/a q 0 1/b 0/a 1/c 1/b q 2 Eingabe 0 1 0 0 Ausgabe a b a c 41/50
Äquivalenz von Automaten Definition Zwei Mealy-Automaten heißen äquivalent, wenn sie für jede Eingabe w Σ die gleiche Ausgabe a erzeugen. klar Äquivalente Automaten können unterschiedlich groß sein. klar Man wünscht sich möglichst kleine Automaten. Anmerkung Komplexer Problemkreis, umfasst auch effiziente Minimierung von Automaten Näher i.d. Theoretischen Informatik (GTI/TIfAI) Hier: noch ein anderes (ähnliches!) Automaten-Modell 42/50
Definition Moore-Automat Definiton 20 Ein Moore-Automat M = (Q,q 0,Σ,,δ,λ) ist definiert durch: endliche Zustandsmenge Q Startzustand q 0 Q endliches Eingabealphabet Σ endliches Ausgabealphabet Zustandsüberführungsfunktion δ: Q Σ Q Ausgabefunktion λ: Q {ε} In einem Takt mit aktuellem Zustand q und Eingabesymbol w schreibt der Automat λ(δ(q,w)), wechselt der Automat in den Zustand δ(q,w). Unterschied zum Mealy-Automaten: Ausgabe Zustand 43/50
Mealy- und Moore-Automaten Beobachtung Zu jedem Moore-Automaten gibt es einen äquivalenten Mealy-Automaten. denn zu Moore-Automat A = (Q,q 0,Σ,,δ,λ) ist Mealy-Automat A = (Q,q 0,Σ,,δ,λ ) mit λ (q,w) := λ(δ(q,w)) offensichtlich äquivalent Beobachtung Zu jedem Mealy-Automaten gibt es eine äquivalenten Moore-Automaten. denn zu Mealy-Automaten A = (Q,q 0,Σ,,δ,λ) ist Moore-Automat A = (Q,q 0,Σ,,δ,λ ) mit Q := Q ( {ε}), q 0 := (q 0,ε), δ (q,w) = δ ((q,v),w) := (δ(q,w),λ(q,w)), λ(δ(q,w)) = λ ((q,v)) := v offensichtlich äquivalent 44/50
Einfacher Beispiel-Automat Aufgabe einfache Datenglättung Filtere isolierte Bits aus Datenstrom aus. klar Σ := {0,1}, := {0,1} Mealy-Automat 1/0 1/1 0/0 0? 1 1/1 0/0 0/1 übrigens Q := {0,1,?}, q 0 := 0 45/50
Äquivalente Automaten Bit-Filter Mealy-Automat 1/0 1/1 0/0 0? 1 1/1 Moore-Automat 0/0 0 0? 0 1 0/1 0 0 0 0 1 1 0? 1 1 1 1 1 46/50
Automaten & Schaltungen: Synchr. Schaltwerke Erinnerung bi-stabile NAND-Kippstufe R S & P R t S t P t+2 Q t+2 0 1 1 0 1 0 0 1 1 1 P t P t & Q 11/0 10/0 01/1 0 1 10/0 11/1 01/1 Q = {0,1}, q 0 = 0 Σ = {01,10,11} = {0,1} 47/50
Vergleich Automat und NAND-Kippstufe nicht getaktet R S & P R t S t P t+2 Q t+2 0 1 1 0 1 0 0 1 1 1 P t P t & Q 11/0 10/0 getaktet 01/1 0 1 10/0 11/1 01/1 Q = {0,1}, q 0 = 0 Σ = {01,10,11} = {0,1} 48/50
Synchrone Schaltwerke ab jetzt getaktete Schaltwerke also Führe Taktsignal T ein verschiedene technische Möglichkeiten Pegelsteuerung: aktiv, wenn 1 anliegt positive Flankensteuerung: aktiv, wenn Wechsel von 0 nach 1 negative Flankensteuerung: aktiv, wenn Wechsel von 1 nach 0 digital-logische Ebene technisches Detail ignorieren 49/50
RS-Flip-Flop R T & & P R S Q 0 0 Q 0 1 1 1 0 0 1 1 nicht erlaubt S & & Zustandstabelle NAND-Kippstufe R t S t P t+2 Q t+2 0 0 nicht erlaubt 0 1 1 0 1 0 0 1 1 1 Q t Q t Q Wertetabelle NAND x y x y 0 0 1 0 1 1 1 0 1 1 1 0 50/50