Informatik V-Teil 2,Kap. 4, SS 99 4. Sequentielle Logik 4.1 Einführung In Rechnern und Rechnerstrukturen verwendete Schaltungen lassen sich grob in kombinatorische und sequentielle Schaltungen unterscheiden. Sequentielle Schaltungen enthalten Schaltelemente, die einen logischen Zustand speichern können. Dies können, wie bei einfachen Flip-Flops, kombinatorische Gatterschaltungen sein, welche zusätzliche Rückkopplungen enthalten. Sequentielle Schaltungen lassen sich generell partitionieren in kombinatorische Schaltungsteile, speichernde Elemente und Rückkopplungen. Während der Ausgang und die internen logischen Werte kombinatorischer Schaltungen nur von den Belegungen der Schaltungseingänge abhängen, sind sequentielle Schaltungen zusätzlich von vorherigen Schaltungszuständen abhängig. Eingangssignale Kombinat. X Ausg. Logik Ausgangssignale Logik g (Z,X) Y Z f Ausgabefunktion: Z* Y = f(Z,X) RK-Netz (z. B. FFs) Übergangsfunktion: Z* = g (Z,X) Z Abb. 4.1 a: Sequentielle Schaltung (Schaltwerk) als Mealy-Automat Eine allgemein gültige Repräsentation von Schaltwerken ist durch die Darstellung als Automat möglich, der neben Eingangssignalen auch interne logische Zustände und definierte Zustandsübergänge aufweist. Bei der Repräsentation als mealy-Automat sind ist der Schaltungsausgang von Eingängen und durch Rückkopplung gespeicherten Zuständen abhängig (Abb. 4.1a). In der spezielleren Darstellung als Moore-Automat (Abb. 4.1b) besteht am Ausgang nur eine direkte Abhängigkeit von den inneren Zuständen. Ausgabefunktion: Eingangssignale Kombinat. X Z Y = f (Z) Logik Übergangsfunktion: g (Z,X) Z* = g(Z, X) Z * RK-Netz (z. B. FFs) Ausg. L o g ik Y = f (Z) f (Z) Abb. 4.1 b: Schaltwerk-Darstellung als Moore-Automat 1 Informatik V-Teil 2,Kap. 4, SS 99 Sequentielle Schaltungen allgemeiner Art sind asynchron. Zustandsübergänge erfolgen dann nur in Abhängigkeit von internen Schaltungsparametern. Beispielsweise wird der Zustand eines gewöhnlichen Master-Slave-Flip-Flops nur durch die Belegung seine Eingänge und den vorher gespeicherten Zustand bestimmt. Eine wichtige spezielle Sorte sequentieller digitaler Schaltungen sind synchrone Schaltungen. Bei ihnen ist eine Zustandsänderung nur möglich, wenn ein steuernder, spezieller Takt-Eingang (Clock) diesen Übergang erlaubt. Bezogen auf die Automatendarstellung wird dort die Rückkopplung nur zu bestimmten kontrollierten Zeitpunkten aktiv. Voll synchrone Schaltungen, also solche, die durch ein einziges gemeinsames globales Takt-Signal gesteuert werden, haben praktisch eine überragende Bedeutung. Synchrone Schaltungen sind in der Regel aufwendiger und langsamer als asynchrone Schaltungen (durch den zusätzlichen Aufwand für die Clock). Sie haben wegen der Clock in der Tendenz auch einen höheren Leistungsverbrauch, zu dem insbesondere das auf aufwendige und weit verzweigte Clock-Netz wesentlich beiträgt. Bei herkömmlichen voll synchronen Schaltungen werden alle Clock-Leitungen regelmäßig "aktiviert", d. h. umgeladen, selbst wenn ein bestimmter Schaltungsteil gerade inaktiv sein sollte. Asynchrone Schaltungen benötigen ein aufwendiges Clock-Netzwerk nicht. Eine Signalverarbeitung durch einen Baustein geschieht, sobald die Eingangsdaten "anliegen". Damit existiert aber auch keine zentrale Steuerung des Zeitverhaltens der Schaltung, es wird, wenn nicht spezielle Arten der Kommunikation eingebaut sind, ein "wildes" Umschalten erfolgen. Asynchrone Schaltungen sind schwer zu entwerfen und noch schwerer zu testen, da sich die internen Zustandsübergänge in Abhängigkeit von Schaltungsparametern (Signallaufzeiten, Anstiegszeiten, Abfallzeiten, Halte-zeiten) quasi-zufällig ergeben. Um sicher zu sein, daß gewünschte Zustandsübergänge auch tatsächlich erfolgt sind, müssen bei größeren asynchronen Schaltungen sogenannte "Handshaking-Prozeduren" eingeführt werden. Beispiele asynchroner Schaltungen "im Kleinen" sind Monoflops, auch als "monostabile Kippglieder" bekannt. Bereits auf ICs bekommt man heute Probleme mit voll synchronen Schaltungen: Bei Clock-Leitungen mit Längen von einigen cm und Schaltzeiten der aktiven Elemente unter 1 ns beeinflussen die Laufzeiten von Signalen auf Leitungen das Schaltverhalten großer Digitalschaltungen insgesamt massiv. Es ist also zunehmend immer schwerer, Systeme voll synchron zu bauen. Neuere Systeme für die Datenkommunikation (z. B. ATM) sind selbstverständlich asynchron, weil man solche großen, verteilten Systeme insgesamt nicht synchron bauen kann. In dieser Vorlesung wird im wesentlichen nur voll synchrone Logik behandelt, wie sie in Digitalrechnern fast ausschließlich vorkommt. Sequentielle Schaltungen werden auch als "Schaltwerke" , kombinatorische Schaltungen als "Schaltnetze" bezeichnet. 4.2 Sequentielle Grundschaltungen Die wichtigsten sequentiellen Grundschaltungen sind Flop-Flops. Das sind logische Elemente mit lokaler Rückkopplung, die geeignet sind, einen digitalen Zustand zu speichern. Die einfachsten FlipFlops sind aus nur 2 kreizweise rückgekoppelten NAND- oder NOR-Gattern aufgebaut. 2 Informatik V-Teil 2,Kap. 4, SS 99 R & S & Q Q Abb. 4.2a: RS Flip-Flop mit NAND -Gattern Wahrheitstabelle: _ S R Q Q --------------------------------------1 0 0 1 1 1 0 1 0 1 1 0 1 1 1 0 0 0 1 1 (nach S = 1, R = 0) (nach S = 0, R = 1) verbotener Zustand !! Man kann S als "Setzeingang" und R als "Rücksetzeingang" ansehen. Für ein RS-Flip-Flop aus NOR-Gattern gilt eine äquivalente Wahrheitstabelle: R >1 S >1 Q Q Abb. 4.2 b: RS-Flip-Flop aus NORs Wahrheitstabelle: _ S R Q Q --------------------------------------1 0 1 0 0 0 1 0 (nach S = 1, R = 0) 0 1 0 1 1 1 0 0 (verbotener Zustand !!) 0 0 0 1 (nach S = 0, R = 1) Diese Flip-Flops besitzen zunächst die Zustände "Setzen (S=1, R = 0) bzw "Rücksetzen" (S = 0, R = 1). Als dritter Zustand existiert "Speichern" mit R=S=0 beim NOR-Typ, entsprechend mit R = S = 1 beim NAND-Typ. Bezüglich der Eingangsbelegungen ist jeweils ein weiterer Zustand möglich. Wie die Wahrheitstabelle zeigt, ist dieser vierte Zustand (R = S = 0 beim NAND-Typ, R = S = 1 beim NORTyp) irregulär, da die Ausgangsknoten nicht mehr komplementär sind. 3 Informatik V-Teil 2,Kap. 4, SS 99 Bei einem Übergang von diesem "irregulären" Zustand auf den Speicherzustand ist der Folgezustand nicht vorhersagbar. Praktisch kann man deshalb einfache R-S-Flip-Flops nur verwenden, wenn durch sonstige Eigenschaften der Schaltung der "verbotene" Zustand ausgeschlossen werden kann. Die einfachsten, RS Flip-Flops, besitzen keinen Takt-Eingang und sind deshalb praktisch von untergeordneter Bedeutung. Getaktete, mit zusätzlichen Clock-Eingängen versehene RS Flip-Flops sind ebenfalls praktisch noch nicht sehr gebräuchlich. Bei Ihnen allen existiert das Problem, daß bei einem "1" Wert an beiden Eingängen der sich am Ausgang einstellende Wert unbestimmt ist. R & >1 & >1 Q CL S Q Abb. 4. 3: RS-Flip-Flop aus NORs mit Takteingang Von großer praktischer Bedeutung sind dagegen D-Flip-Flops. Sie ergeben sich daraus, daß der SEingang eines RS-Flip-Flops über einen Inverter mit dem R-Eingang verbunden ist. Damit ist der "verbotene" Eingangszustand nicht mehr möglich. Allerdings hat man nur einen Eingang zur Verfügung. & D & Q CL Q & & Abb. 4.4: D-Flip-Flop mit Takteingang Ein Flip-Flop mit 2 Eingängen, bei dem alle Eingangswerte zulässig sind, ist das JK - Flip-Flop. K & > 1 Q CL J & > 1 Abb. 4.5: JK-Flip-Flop mit Takteingang 4 Q Informatik V-Teil 2,Kap. 4, SS 99 Q J K Q(t + 1) _______________________________ 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 0 1 1 0 1 1 1 1 0 Das Zustandsgesteuerte JK-Flip-Flop hat den Nachteil, daß Instabilitäten möglich sind. Mit J = K = 1 und einem Takt-Signal, das auf "high" bleibt, wenn das Flip-Flop umgeschaltet hat, erfolgt ein weiteres Umschalten. Ein solches Flip-Flop ist nur dann stabil, wenn die Laufzeit eines Signals durch das Flop-Flop länger ist als die Dauer der "high" - Phase des Takts. Das ist für die Praxis eine wesentliche Einschränkung, weshalb solche einstufigen zustandsgetriggerten Flip-Flops praktisch kaum ausgeführt werden. (Einstufige zustandsgesteuerte Flip-Flops werden in der englischen Literatur oft als "Latches" bezeichnet, also z. B D-Latch.) Das Problem der Instabilitäten durch mehrfache Zustandsübergänge läßt sich dann lösen, wenn mehrstufige oder flankengesteuerte Flip-Flops verwendet werden. Wichtige Typen von Flip-Flops sind zweistufig und weisen eine sogenannte "Master-Slave"-Struktur auf. Y S S R R Q S Y Q R CL Abb. 4.6: Struktur eines Master- Slave-Flip-Flops Das linke Flip-Flop ist der Master, das rechte der Slave. Als Ausgangspunkt sei der Fall Y = 0 und Q = 0 angenommen. Die Eingangsbedingung sei S = 1, R = 0. Als nächster Zustand soll nun das Flip-Flip in den Zustand Q = 1 gebracht, also quasi "gesetzt" werden. Beim nächsten Clock-Pulse wird das Master-Flip-Flop gesetzt, also Y = 1. Das Slave-FlipFlop wird davon zunächst nicht berührt, da am takt-Eingang eine Null anliegt. Damit tritt auch an Q und Q' keine Zustandsänderung auf. Erst wenn der Übergang des Taktsignals von 1 auf 0 erfolgt, wird das Slave-Flip-Flop aktiv und übernimmt den Ausgangszustand des Master-Flip-Flops. Das Master-Flip-Flop seinerseits ist dabei wegen CL=0 desaktiviert und hält den vorherigen Zustand. In einem Master-Slave-Flip-Flop kann man also Eingang und Ausgang mit demselben Clock-Impuls umschalten. Das Signal S kann sogar von einem anderen MS-Flip-Flop kommen, das mit demselben Clock-Impuls geschaltet wurde. Natürlich ist es auch möglich, statt eines positiven Takt-Impulses auch einen negativen zu verwenden. Dazu muß in die Clock-Leitung vor der Verzeigung ein weiterer Inverter eingefügt werden. Dann schaltet der Master den Eingangswert mit der negativen Takt-Flanke durch, der Slave übernimmt bei der positiven Flanke. 5 Informatik V-Teil 2,Kap. 4, SS 99 J & & 1 Y & 3 5 & Q 7 K & CL & 2 & 4 & 6 8 Q Y 9 Abb. 4.7: JK Master-Slave-Flip-Flop Als weiteres Beispiel ist vorstehend ein JK-MS-Flip-Flop dargestellt. Der Gaster (Gatter 1,2,3,4) ist ein einstufiges JK-FF, der Slave (Gatter 5,6,7,8) ist ein RS-FF mit Clock-Eingang. Bei CL=1 wird der Eingangswert von J nach Y übernommen. Dabei kann Y nur 1 werden, wenn Q = 0 ist, also Q' = 1. Bei J = K = 0 bleibt der vorhergehende Zustand erhalten, bei J = K = 1 entscheidet der im Slave abgespeicherte vorherige Zustand, es wird ein Wechsel auftreten. Wenn CL auf 0 zurückfällt, wird der Zustand von Y nach Q übernommen. In einem digitalen System, das mit solchen MS-FFs ausgerüstet ist, werden sich jeweils bei steigender Taktflanke einige Master-FFs intern ändern. Alle FF-Ausgänge bleiben stabil. Bei fallender Flanke erst werden die Ausgänge der Slaves davon beeinflußt und werden ihrerseits wiederum Eingänge anderer FFs beeinflussen. Diese Eingänge werden aber erst bei der nächsten positiven Taktflanke wirksam. Ein anderer Typ von praktisch verwendeten Flip-Flops sind flankengetriggerte Flip-Flops. Bei ihnen wird ein Zustandswechsel am Ausgang wirksam, sobald die steigende oder fallende Spannung am Eingang einen bestimmten Schwellenwert über- bzw. unterschritten hat. &1 CL &2 &3 D S &5 Q R &6 Q & 4 Abb. 4.8: Flankengesteuertes D-Flip-Flop Das flankengesteuerte D-FF enthält drei einfache RS-FFs, die jeweils durch die Gatter 1 und 2, 3 und 4 , 5 und 6 gebildet werden. Wenn die Knoten S und R beide auf logisch high gehalten werden, so bleibt der Ausgang im vorherigen Zustand. Bei S = 0 und R = 1 geht der Ausgang auf Q = 1. Bei S = 1 und R = O setzt sich der Ausgang auf Q = 0. Die Werte von S und R werden durch die anderen beiden FFs bestimmt. 6 Informatik V-Teil 2,Kap. 4, SS 99 &1 CL &2 &3 D S R & 4 Abb. 4.9: Flankengesteuertes D-FF, Teilschaltung Es sei zunächst CL = 0. Der Eingang D kann o oder 1 sein. Dann werden in jedem Fall die Ausgänge der Gatter 2 und 3 auf 1 liegen, also R = S = 1. Der Zustand wird also gehalten. Bei D = 0 hat Gatter 4 den Ausgang auf logisch 1. Damit geht über die Rückkopplung der Ausgang des Gatter 1 auf logisch 0. Bei D = 1 geht dagegen der Ausgang von G4 auf logisch 0, entsprechend wird der Ausgang von G1 auf logisch 1 gesetzt. Dies sind die beiden Zustaände, welche die Schaltung bei gesperrtem Ausgang durch CL = 0 haben kann. Es gibt eine bestimmte Zeit, für welche der logische Wert 1 am D-Eingang anliegen muß, die sogenannte "setup-Zeit". Diese ist bestimmt durch die Laufzeit von Zustandsänderungen durch die Gatter 1 und 4, einschließlich natürlich der Verbindungsleitungen. Wir nehmen jetzt an, daß sich D = 0 während dieser Zeit nicht ändert und gleichzeitig der ClockEingang CL von 0 auf 1 wechselt. Dann bleibt R auf logisch 1, aber R ändert sich auf logisch 0. Damit geht dann auch der Ausgang Q auf den logischen Wert 0. Wenn sich jetzt, während Cl auf 1 ist, der Wert von D von 0 auf 1 ändert, bleibt der Ausgang von G4 auf 1, da sich G4 über die Rückkopplung von R stabilisiert oder selbst hält. Nur dann, wenn Cl auf 0 wechselt, kann sich der Ausgang von G4 ändern. Aber dann werden R und S logisch 1 und verhindern jeden Zustandswechsel am Ausgang. Es gibt aber eine sogenannte "hold time" (Haltezeit), für die D nach dem Übergang von CL auf 1 stabil bleiben muß. Diese haltezeit entspricht der Verzögerung von Gatter 3. Wenn D = 1 ist und CL = 1 wird, dann ändert sich S auf logisch 0, aber R bleibt auf logisch 1, wodurch der Ausgang des FF auf 1 geht. Eine Änderung von D während CL = 1 ist ändert S und R nicht, weil der Ausgang von G1 durch das 0-Signal von S gehalten wird. Wenn CL auf 0 geht, sperren R = S = 1 wieder eine Zustandsänderung am Ausgang. Damit ist ein praktisch wertvolles Verhalten erreicht: Steuernd auf den Ausgang des Flip-Flops wirkt sich nur der Eingangswert aus, der bei steigender Flanke der Clock anliegt. Weder Zustandsänderungen des Eingangssignals beim high-Zustand der Clock noch die negative Flanke bewirken Zustandsänderungen. Werden die notwendigen Set-up- und Haltezeiten beachtet, sind solche Flip-Flops genau so gut wie MS-FFs in sequentiellen Schaltungen einsetzbar. Für manche Anwendungen ist es nützlich bis notwendig, wenn Flip-Flops durch zusätzliche Leitungen mittels eines Signals definiert gesetzt oder zurückgesetzt werden können. 7 Informatik V-Teil 2,Kap. 4, SS 99 Man sieht dann entsprechende zusätzliche SET- oder RESET- Eingänge vor. In großen sequentiellen Schaltungen sind solche Maßnahmen zur gezielten Initialisierung notwendig. Nicht initialisierbare Schaltungen sind in der Regel auch fast nicht testbar. 4.3 Beschreibung und Analyse sequentieller Schaltungen Die von kombinatorischen Schaltungen bekannten Wahrheitstabellen reichen für sequentielle Schaltungen in dieser Form nicht mehr aus. Ihr Ausgangszustand hängt nämlich von der Vorgeschichte, also von vorherigen gespeicherten Zuständen ab. Anhand eines einfachen Beispiels sollen deshalb die gebräuchlichsten Arten den Beschreibung einer sequentiellen Schaltung dargestellt werden. CL x' & R Q' B' S Q B R Q' A' S Q A x x & & & A B' & y Abb. 4.10: Sequentielle Beispielschaltung Im Beispiel nicht dargestellt sind die globalen Rückkopplungen, d. h. vom Ausgang A zum Eingang A etc.. Die Schaltung hat eine Eingangsvariable x und eine Ausgangsvariable y. Die verwendeten Flip-Flops sollen negativ flankengetriggert sein. Es wird ebenfalls angenommen, daß sich der Eingang x ebenso verhält, also wenn, dann nach der fallenden Flanke des Taktes seinen Zustand ändert. Das Eingangssignal an x steht also nach einem Takt bis zur negativen Flanke des nächsten Taktes stabil an. Zur Beschreibung des Verhaltens der Schaltung kann man eine tabellarische Aufstellung verwenden. Statt der Zustandstabellen bei kombinatorischer Logik sind dies aber Übergangs-tabellen, die sich auf Zustände und Übergänge beziehen. Beispiel: nächster Zustand Ausgang -------------------------------------------------------------------Letzter Zustand x=0 x=1 x=0 x=1 ---------------------------------------------------------------------------------------------A B A B A B y y ---------------------------------------------------------------------------------------------0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 1 0 1 0 0 0 0 1 1 1 1 0 1 1 0 0 Wir sind hier davon ausgegangen, daß als Anfangszustand A = 0 und B = 0 galt, also von einer impliziten Annahme über einen erfolgten "reset". 8 Informatik V-Teil 2,Kap. 4, SS 99 Ist eine solche Annahme nicht möglich, so muß mit "X" - Zuständen (für "unbekannt", was aber nicht "beliebig" bedeutet) zunächst eine Initialisierung herbeigeführt werden. Die einzelnen Zustände für diesen Beispielfall kann man mit Kenntnis des Verhaltens der Flip-Flops ableiten: 1 am S - Eingang setzt das FF, 1 am R-Eingang setzt es zurück, 0 an beiden Eingängen speichert den vorherigen Zustand, beide Eingänge auf 1 ist nicht zulässig und würde einen Entwurfsfehler der Schaltung zeigen. Die Übergangstabellen komplexerer seuqntieller Schaltungen sind entsprechend aufzubauen. Allgemein hat eine Schaltung mit m Flop-Flops und n Eingängen dann 2**m Reihen im Diagramm, eine für jeden Zustand. Für die Darstellung der folgenden Werte und des Ausgangs benötigt man dann noch 2**n Spalten. Die spezielle Aufstellung der Ausgangswerte ist nur notwendig, wenn den Flip-Flops noch kombinatorische Logik-Elemente nachgeschaltet sind. Ist der Ausgang der Gesamtschaltung der eines FFs, so entfällt diese Spalte. Man kann sich anhand des einfachen vorstehend gezeigten Beispiels schon überlegen, daß solche Tabellen für große, sequentiell tiefe Schaltungen sozusagen "explodieren" und sehr unübersichtlich werden. In der Praxis haben sich auch andere Arten der Darstellung als effizienter und übersichtlicher erwiesen. 0/0 00 00 1/1 1/0 1/0 10 01 0/1 0/0 0/0 11 1/0 Abb. 4.11: Darstellung einer sequentiellen Schaltungen als Zustandsdiagramm Eine sehr gebräuchliche und beliebte Darstellung des Verhaltens einer sequentiellen Schaltung ist das Zustandsdiagramm. Die Kreise bezeichnen Zustände, die Zustandsübergänge sind als gerichtete gerade Linien zwischen den Kreisen dargestellt. Die binären Zahlen in den Kreisen bezeichnen den Zustand, für den der Kreis steht. Die gerichteten Linien für die Zustandsübegänge werden durch eine a / b - Kombination annotiert. Dabei bezeichnet "a" den Eingangszustand der Schaltung, die den Zustandsübergang bewirkt, "b" bezeichnet den gegenwärtigen Zustand am Schaltungsausgang. Beispiel: Der Pfeil vom Zustand 0 0 zum Zustand 0 1 ist mit 1/ 0 annotiert. Dies bedeutet, daß die Schaltung im gegenwärtigen Zustand mit dem "Namen" 0 0 beim Eingangswert x = 1 der Ausgang den Zustand y = 0 hat. Bei Beendigung des nächsten Clock-Impulses geht die Schaltung in den Zustand 0 1 über. Eine gerichtete Linie, die im selben Kreis mündet, zeigt an, daß bei der abgegebenen Eingangs- / Ausgangskombination sich der Zustand der Schaltung nicht ändert. Das Zustandsdiagramm enthält keine andere Information als die Zustandstabelle. 9 Informatik V-Teil 2,Kap. 4, SS 99 Normalerweise läßt sich die Zustandstabelle einfacher aus der Schaltung entwicken, aus der wiederum direkt das Zustandsdiagramm entsteht. Dagegen läßt sich das globale Verhalten eines sequentiellen Systems mit Hilfe des Zustandsdiagramms einfacher überblicken. Auch die Spezifikation sequentieller Schaltungen über Zustandsdiagramme ist gebräuchlich. Eine algebraische Art der Darstellung sind die Zustandsgleichungen. Dabei bezeichnet die linke Seite der Gleichung den nächsten Zustand eines Flip-Flops und die rechte Seite einen Boolsche Funktion, welche die Bedingungen für den gegenwärtigen Zustand angibt, für welche der nächste Zustand des Flip-Flops logisch 1 wird. Beispiel: Aus der Zustandstabelle kann abgelesen werden, daß das Flip-Flop A für vier verschiedene Fälle auf den Ausgangswert 1 geht: Wenn x = 0 und AB = 01 oder 10 oder 11 sind, oder wenn x = 1 und AB = 11 sind. Agebraisch kann man das wie folgt ausdrücken: A (t + 1) = (A'B + AB' + AB)x' + ABx. Die rechte Seite der Gleichung bezeichnet den gegenwärtigen Zustand der Schaltung. Wenn diese Funktion 1 ist, so erzeugt die Clock als nächsten Ausgangswerte eine 1, wenn sie 0 ist, so erzeugt die Clock eine 0. Die linke Seite bezeichnet nur das Flip-Flop für den nächsten Zeittakt. Natürlich ist es oft möglich, die algebraische Gleichung weiter zu reduzieren. Zum Beispiel kann man hier auch schreiben: A (t + 1) = Bx' + (B' x)'A Mit Bx' = S und B'x = R kann man schreiben: A (t + 1) = S + R'A Das entspricht der sogenannten charakteristischen Gleichung eines RS-Flip-Flops. Für die Zustände des Flip-Flops B kann man äquivalent schreiben: B(t + 1) = A' x + (Ax')B Aus dem Schaltbild kann man ablesen, daß der Eingang S des Flip-Flops durch die Funktion A' x und das Signal für den Eingang R durch die Funktion A x' bestimmt ist. Wenn man S = A'x und R = A x' substituiert, dann gilt: B (t + 1) = S + R' B Die Übergangsfunktion der Flip-Flop, in Kombination mit den Ausgangsfunktionen, spezifizieren eine sequentielle Schaltung vollständig. Dabei sind die Darstellungen in Tabellenform und das Zustandsdiagramm äquivalent. 10 Informatik V-Teil 2,Kap. 4, SS 99 4.4 Reduzierung von Zuständen und Zustandsäquivalenten Die Minimierung logischer Funktionen ist nicht nur für kombinatorische Schaltungen eine wichtige Aufgabe. Sie tritt ganz äquivalent auch bei sequentiellen Schaltungen auf. Ob man beispielsweise für eine Ampelsteuerung eine "finite state machine" mit 500 oder mit 17 Zuständen realisiert, wird den Aufwand bei der Implementierung der Schaltung wesentlich beeinflussen. So ist es von erheblichem Interesse herauszufinden, ob 2 Zustände äquivalent sind. Dabei kann man von folgender Grundregel ausgehen: 2 Zustände eines endlichen Automaten sind dann äquivalent, wenn sie für jeden aus der Menge der zulässigen Eingangszustände denselben Ausgangswert liefern und dabei in gleiche oder äquivalente Ausgangszustände übergehen. 4.5 Zähler 4.5.1 Klassifizierung Eine sequentielle Schaltung, die beim Einlesen von Eingagspulsen durch eine festgelegte Folge von Zuständen geht, wird als Zähler bezeichnet. Die Eingangssignale können sowohl Clock-Pulse als auch Signalimpulse sein. Zähler bzw. Teiler kommen in digitalen Systemen mit ganz verschiedenen Eigenschaften vor. Man unterscheidet Zählet nach der funktionalen Arbeitsweise in − asynchrone Zähler − synchrone Zähler. Der asynchrone Zähler wird z. B. die auf einer Leitung auftretenden 0 / 1 Übergänge, die zu beliebigen Zeiten auftreten können, aufsummieren. Der synchrone Zähler wird dagegen die Anzahl der Pulse eines regelmäßigen Taktsignals aufsummieren. Bezüglich der Kodierung kann man Zähler unterteilen in: − Dualzähler, beruhend auf dem Binärcode − Dezimale Zähler, beruhend auf z. B. dem BCD-Code − Zähler die mit anderen Codes arbeiten. Weiterhin wird man Vorwärts- und Rückwärtszähler in vielen Anwendungen benötigen sowie programmierbare Zähler, denen ein Anfangswert sowie die Zählrichtung vorgegeben sind. Gezählt wird die Anzahl der Ereignisse eines bestimmten Zustandes. Mit dem Ergebnis dieses Zählvorganges können dann andere Ereignisse in einem digitalen System angestoßen werden. 4.5.2 Binärer Zähler Die einfachste Form eines Zählers ist ein binärer Zähler, weil er der binären Zahlenfolge folgt. Ein nBit-Counter besteht aus n Flip-Flops und kann von 0 bis 2**n zählen. 11 Informatik V-Teil 2,Kap. 4, SS 99 000 001 111 010 110 011 101 100 Abb. 4.12: Zustandsdiagramm eines 3-Bit-Counters A2 A1 A0 Q Q Q T T T Zählimpulse & 1 Abb. 4.13: Logikdiagramm eines 3-Bit-Zählers mit T-Flip-Flops Die Übergangstabelle eines 3-Bit-Zählers ist nachfolgend dargestellt. Die Ausgänge (A1, A2, A3) des 3-Bit-Zählers stellen in der Folge der eingehenden Zählimpulse die Folge der binären Zahlen dar. Die Rückkopplung sorgt dafür, daß auf den Zustand 111 der Zustand 000 folgt. Der Aufbau erfolgt hier mit T-Flip-Flops. Das sind JK-Flip-Flops, bei denen jeweils die J- und KEingänge verbunden sind. ---------------------------------------------------------------------------------Zählsequenz Eingänge der FFs ------------------------------------------------------------------------------------------------A2 A1 A0 TA2 TA1 TA0 ------------------------------------------------------------------------------------------------0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 0 1 0 1 1 1 1 1 1 0 0 0 0 1 1 0 1 0 1 1 1 1 0 0 0 1 1 1 1 1 1 1 12 Informatik V-Teil 2,Kap. 4, SS 99 Ein binärer Zähler mit n Bits kann durchaus eine binäre Sequenz haben, die kleiner als 2**n ist. Ein BCD-Zähler würde z. B. von 0000 bis 1001 zählen und dann nach 0000 zurückkehren, um die Sequenz zu wiederholen. 4.5.3 Asynchroner Binärzähler / Frequenzteiler Den Aufbau eines asynchronen Zählers mit J-K-Flip-Flops zeigt Abb. 4.14. Der Signaleingang der Schaltung ist der Takteingang des ersten Flip-Flops. Durch die Verbindung der J- und K-Eingänge kippt das Flip-Flop bei jedem Taktimpuls in die jeweils andere Lage um. Q1 C 1J C1 1K R Q2 Q 1 Q3 1J C1 1K R 1J C1 1K R Q Q 1 1 reset Abb. 4.14a: Asynchroner 3-Bit-Dualzähler mit JK-Flip-Flops Bezüglich der Qusgänge Q2, Q1 und Q0 wird die Anzahl der gezählten Impulse im Dualsystem ausgegeben (Abb. 4.14 b). Z Q2 Q1 Q0 0 1 2 3 4 5 6 7 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 Abb. 4.14 b: Zustände des asynchronen Dualzählers Der Zähler wird jeweils eine gewisse Zeit benötigen, bestimmt durch die Verzögerungszeiten der einzelnen Flip-Flops tv. Bei einer Anzahl von n Stufen ergibt sich eine Gesamt-Verzögerungszeit von n*tv oder eine maximale Zählfrequenz von ftmax = 1 / n*tv. Da durch die Wirkungsweise der master-Slave-Flip-Flops die Anzahl der weitergegebenen Pulse von Stufe zu Stufe jeweils halbiert wird, kann man eine solche Schaltung als Frequenzteiler einsetzen. Dies ist eine bevorzugte Anwendung. Q0 R & C Q1 & 1J C1 1K =1 & =1 1J C1 1K =1 & 1 Q2 & & R = 1 : vorwärts R = 0: rückwärts Abb. 4.15: Asynchroner Vorwärts- Rückwärts-Zähler 13 1J C1 1K & & Informatik V-Teil 2,Kap. 4, SS 99 Für viele Anwendungen wird man einen Rückwärtszähler benötigen, z. B. in Zeitschaltungen. Einen asynchronen Vorwärts- / Rückwärtszähler erhält man, wenn neben dem Q-Ausgang auch der invertierte Q' -Ausgang wahlweise verwendet wird (Abb. 4. 15). Entweder verwendet man dann zwei Eingänge, von denen jeweils einer zum Aufwärts- bzw. Abwärtszählen dient, oder man verwendet nur einen Eingang und eine zusätzliche Logik zum Umschalten. 4.5.4 Zähler mit nicht-binärer Modulus-Zahl Grundsätzlich ist der Entwurf eines nicht-binären Zählers natürlich aufwendiger als der eines Dualzählers. Durch eine geringe Modifukation kann aber aus einem 2**n - Zähler einer mit weniger Zuständen erzeugt werden. Betrachtet sei ein Zähler Modulo-m mit n =3 Stufen und m = 6. Die generelle Realisierungsbedingung ist m < 2**n. Q0 C 1J C1 1K R Q1 Q 1 Q2 1J C1 1K R 1J C1 1K R Q Q 1 1 & Abb. 4. 16: Modulo-6-Zähler Beim Durchlauf der Zustände muß der Zähler, sobald m = 6 erreicht ist, ein Clear- oder Rücksetzsignal abgeben, damit als nächster Zustand " 0 0 0 " auftritt. Der m = 6 entsprechende Zustand ist also nicht stabil und wird sofort in den Anfangszustand zurückgeführt. Dazu wird aus dem Zustand (6) = 1 1 0 ein Signal zum Rücksetzen abgeleitet. Zur Realisierung verknüpft man die Q-Ausgänge der binären 3-stufigen Zählers nach Abb. 4. 14 über ein NAND-Gatter und steuert damit den RESET-Eingang der Flip-Flops (Abb. 4.16). natürlich hat der Modulo-6-Zähler im Vergleich zum binären Zähler auch ein abgekürztes Zustandsdiagramm (Abb. 4.17). Q2 Q1 Q0 000 Z0 111 temporärer Zustand 001 Z1 "makroskopischer" für R Übergang 110 101 010 011 Z5 100 Abb. 4.17: Zustandsdiagramm des Modulo-6-Zählers 14 Z2 Informatik V-Teil 2,Kap. 4, SS 99 Grundsätzlich gilt folgende Entwurfsregel für einen Modulo-m-Asynchronzähler: 1. Man entwerfe einen Asynchronzähler mit einem Modulo gleich der kleinsten Binärzahl 2 **n <= m (für m = 2**n entfallen die Folgeschritte). 2. Man verbinde den Ausgang eines NAND-Gatters mit allen R- (RESET)- Eingängen der FlipFlops 3. Man bestimme aus der Zustandstabelle, welche der Flip-Flops beim Zählerstand "m" ausgangsseitig "1" - Signale führen und verbinde diese Ausgänge mit den Eingängen des NANDGatters. Typische Eigenschaften solcher asynchroner Zähler sind: − geringer Aufwand für die Steuerlogik − geringe Zählgeschwindigkeit, bestimmt durch die addierten Verzögerungszeiten der Flip-Flops − Empfindlichkeit gegen eine Verletzung von Zeitbedingungen während der Taktumschaltung 4.5.5 Synchrone Zähler Synchronzähler sind dadurch gekennzeichnet, daß der Zählimpuls allen Flip-Flops gleichzeitig und parallel zugeführt wird. Dadurch wirken sich die Schaltzeiten der einzelnen Stufen viel geringer aus, allerdings steigt auch der Verknüpfungsaufwand im Vergleich zum asynchronen Zähler. Damit nicht alle Stufen, sondern nur die gewünschten umschalten, werden mit zusätzlicher Logik alle nicht benötigten Flip-Flops blockiert. Dann kippen entsprechend nur die Flip-Flops, die dem Zählerstand entsprechend umkippen sollen. Man muß durch eine entsprechende Logik-Schaltung einen Übertrag der vorherigen Stufe auf die nächste erfolgen, entweder durch eine serielle oder parallele Übertragung. Takt Schaltnetz E A Q0 1J Q C1 1K Q Q1 1J Q C1 1K Q Q2 1J Q C1 1K Q Abb. 4.18: Aufbau eines synchronen Zählers Ein synchroner Zähler ist so zu entwerfen, daß bei n Eingangsvariablen (Qi) und 2n Ausgangsvariablen an den FF-Eingängen (Ji, Ki) die gewünschte Zustandsfolge erscheint. Die Ausgangsfunktionen der Logik, welche die FFs ansteuert, heißt auch die Anregungsfunktion. 15 Informatik V-Teil 2,Kap. 4, SS 99 Die Vorgehensweise für den Entwurf sieht wie folgt aus: 1. Man beginnt mit dem gewünschten Code und stellt daraus die Tabelle aller Zustände und den Zustandsgraphen auf. Dabei können Pseudo-Zustände auftreten, die in den Zyklus des Zählers einbezogen werden müssen. 2. In Abhängigkeit vom Typ des verwendeten Flip-Flops und seiner Zustandstabelle wird die anfängliche Zustandstabelle in in eine Wahrheitstabelle für die Logik des Zählers umgewandelt. Sie enthält den Zählerzustand, den jeweiligen Folgezustand und, über die FF-Synthesetabelle, die neu benötigten Eingangsfunktionender FFs. 3. Aus dem jeweiligen Zählerzustand (Eingang der Logik) und der FF-Eingangsbelegung (= Ausgangsfunktion der Logik) wird die Logikfunktion bzw. die Logik-Tabelle gewonnen. 4. Die so erhaltene Logiktabelle ist ggf. für die Realisierung zu vereinfachen (z. Diagramm). B. mit dem KV- Als Beispiel sei ein 3-Bit-Binärzähler mit den Ausgängen Q2, Q1, Q0 zu entwerfen. Die Zustandsfolge zeigt Abb. 4.19. Zustand 1 2 3 4 5 6 7 8 Zahl 0 1 2 3 4 5 Zustd. tm Zustd. tm+1 Y2 Y1 Y0 Y2 Y1 Y0 J2 K2 J1 K1 J0 K0 0 0 0 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 1 X X X X 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 0 0 FF-Ansteuerung 1 0 1 0 0 0 0 0 X X X X 1 1 1 1 Abb. 4.19: Zustandsfolge des 3-Bit-Synchronzählers Z7 1 1 0 Z6 1 0 1 1 1 1 Z8 0 0 0 1 0 0 Z1 0 0 1 Z5 Z2 0 1 1 Z4 0 1 0 Z3 Abb. 4.20: Zustandsgraph des 3-Bit-Synchronzählers 16 0 X 1 X X 0 X 1 0 X 0 X X 1 X 1 1 X X 1 1 X X 1 0 X X 1 0 X X 1 Informatik V-Teil 2,Kap. 4, SS 99 Der Zähler soll von 1 bis 5 zählen (Modulo-5-Zähler). Die Zustände 101, 110, 111 sind deshalb Pseudo-Zustände, die nicht durchlaufen werden sollen. Sie sollen, falls auftretend (z. B. beim Einschalten der Spannung) in den Ausgangszustand zurückfallen. Damit kann man jetzt eine Tabelle der Folgezustände angeben. Wichtig ist, daß in der Zustandstafel alle Zustände vorkommen. Als FF-Typ wird ein JK-FF gewählt, damit ist auch eine Anregungstafel (Abb. 4.21) gegeben. Übergang Qm Qm+1 J K 0 => 0 0 0 0 X 0 => 1 0 1 1 X 1 => 0 1 0 X 1 1 => 1 1 1 X 0 Abb. 4.21: Anregungstabelle des JK-Flip-Flops Damit ist die Eingangsbelegung der Flip-Flops für die notwendigen Zustandsänderungen festgelegt. Um z. B. vom Ausgangszustand 0 zum Folgzustand 0 zu wechseln, muß der FF-Eingang J = 0, K beliebig (X) sein. Für einen Wechsel 1 nach 0 kann J beliebig sein, es muß K = 1 gelten. Um alle Ansteuerbedingungen für die FFs zu erhalten, wird in die Tabelle nach Abb. 4. 20 6 Spalten rechts angefügt und die Ansteuerbedingungen der Flip-Flops eingetragen. Will man beispielsweise in der ersten Zeile vom Zustand Z1 (000) auf den Zustand Z2 (001) übergehen, so der Ausgang des Flip-Flops Q2 von 0 zu 0 übergehen, dies bedingt J2 = 0, K2 = X. Dasselbe gilt für Q1, dagegen muß der Ausgang Q0 von 0 auf 1 übergehen, dies bedingt J0 = 1, K0 = X. Im letzten Schritt wird dann die Ansteuerlogik entwickelt. Sie hat als Eingänge die rückgekoppelten Flip-Flop-Ausgänge Q2, Q1, Q0 und als Ausgänge die Flip-Flop-Eingänge J0, K0, ......J2, K2. Damit sind insgesamt 6 Schaltfunktionen herzuleiten, für welche die in Abb. 4.22 gezeigten Gleichungen gelten. J0 = Y2 K0 = 1 J1 = Y0 Y2 = Y0 * Y2 K1 = Y0 + Y2 J2 = Y0 Y1 = Y0 * Y1 K2 = 1 Abb. 4.22: Gleichungen für das kombinatorische Netzwerk des synchronen Modulo-5-Zählers Bei Verwendung anderer Flip-Flip-Typen, z. B. D-Flip-Flops, müßten aus der Übergangstabelle des FFs andere logische Gleichungen abgeleitet werden. Abb. 4.23 zeigt die resultierende Schaltung. 17 Informatik V-Teil 2,Kap. 4, SS 99 & & J2 Q2 C1 K2 Q2 J1 Q1 C1 K1 Q1 >1 1 J0 Q0 C1 K0 Q0 1 C Abb. 4.23: Synchroner Modulo5-Synchronzähler Am Beispiel eines 4-Bit-Binärzählers sei das Problem des Übetrages dargestellt. Q0 Q2 Q1 & Q3 & E 1T Q 1T Q C 1T Q C 1T Q C C Abb. 4.24: 4-stufiger synchroner Binärzähler mit Serienübertragung In der Schaltung nach Abb. 4.24 kippt das FF0 (mit dem Ausgang Q0) bei jedem Taktimpuls (J = K = T0). Dagegen kippt FF1 nur dann, wenn Q0 = 1 ist und FF2 nur dann, wenn Q0 = 1 und Q1 = 1 usw. Die entsprechende Information über diesen speziellen Zustand kann man entweder seriell oder parallel weitergeben. Für den Serienübertrag wird man realisieren: T0 = 1, T1 = Q0, T2 = T1 Q1, T3 = T2 Q2 Für den Parallelübertrag wird realisiert: T0 = 1, T1 = Q0, T2 = Q0 Q1, T3 = Q0 Q1 Q2 Q0 Q1 Q2 & Q3 & E 1T Q C 1T Q C 1T Q C 1T Q C Abb. 4.25: 4-stufiger synchroner Binärzähler mit Parallelübetragung 18 Informatik V-Teil 2,Kap. 4, SS 99 Die Konfiguration mit Parallel-Übertrag wird zwar schneller sein, aber auch einen durch die notwendigen Gatter mit mehreren Eingängen auch einen höheren Implementierungsaufwand erfordern. Praktisch wird man Zähler nach dem vorstehend gezeigten Verfahren entwerfen können. Für viele Anwendungen ist es notwendig, Zähler programmierbar zu gestalten. Als MSI-ICs angebotene Zähler haben deshalb oft noch folgende Eigenschaften: − − − − einen Löscheingang CLR zum Rücksetzen des ganzen Zählers, einen synchronen Ladeeingang LOAD, mit dem der ganze Zähler parallel geladen werden kann einen Übertragungsausgang RCO zum parallelen Auslesen des Zählerstandes einen ENABLE-Eingang ENT zum Blockieren oder Freigeben des ganzen Zählers. Mittels eines solchen Grundbausteins kann man dann recht einfach einen Modulo-n-Zähler nach Bedarf gestalten. 4.6 Register 4.6.1 Klassifizierung Register sind neben Zählern die zweite große Gruppe praktisch vorkommender sequentieller Schaltungs-Makros. Ein Register ist der Art nach ein schneller Speicher begrenzter Kapazität zur Zwischenspeicherung oder Verarbeitung kleiner Informationsmengen. Die Speicherkapazität entspricht oft der Wortbereite des jeweiligen digitalen Systems. Ein Register ist jeweils eine Gruppe von Flip-Flops, die dazu eingsetzt wird, binäre Information für eine kürzere Zeit zwischenzuspeichern. In dieser Zeit kann die Informationsquelle bereits wieder neu Information erzeugen. Register sind abhängig von der Betriebsspannung, werden also nach Abschalten gelöscht. Sie sind in der Regel taktgesteuert und auf kurze Lese- / Schreibzeiten optimiert. Ein n-Bit-Register beinhaltet n Flip-Flops und ist damit in der Lage, Information der Länge n Bits zu speichern. Daneben werden Register noch kombinatorische Logik beinhalten, welche der Verknüpfung der Bit-Stellen dient. Allgemein kann man sogar einen Zähler als ein Register bezeichen, das durch eine feste Folge logischer Zustände geht. Register Parallel-Register Schieberegister S / S , Schieberichtung ein- / zweiseitig P/P S / P - Umsetzer stat. FF-Speicher P / S - Umsetzer Abb. 4.26: Kategorisierung von Registern 19 Informatik V-Teil 2,Kap. 4, SS 99 Speicherregister sind parallel schreib- und lesbare Register. Alle Bits werden gleichzeitig gelesen bzw. geschrieben. Sie werden auch als PIPO (parallel in, parallel out) Register bezeichnet. Schieberegister (Abb. 4. 27) sind dagegen Register mit seriellem Lese- / und / oder Schreibzugriff. Die Information wird durch Taktimpulse nach links oder nach rechts verschoben. Register mit Zählfunktion sind im wesentlichen Zähler wie vorstehend behandelt. Von Registern zu unterscheiden sind in der englischen Literatur "Latches". Eine Gruppe von FlipFlops, deren Zustand abhängig von der Länge eines Clock-Impulses ist, wird oft als "Latch" (Riegel) bezeichnet, dagegen sind Register im engeren Sinne in der Regel flankengesteuert oder aus MasterSlave-Elementen aufgebaut. In deutschen Büchern wird dagegen oft auch ein transparanter Speicher als "Register" bezeichnet. Am Rande sei bemerkt daß insbesondere in CMOS-Technik auch Konstruktionen von Latches möglich sind, bei denen eine dynamische Ladungsspeicherung ausgenutzt wird. Wichtige Typen von Registern sind z. B. Schieberegister. SI SI D Q D Q D Q D Q CL Abb. 4. 27: Schieberegister aus D-Flip-Flops In solchen Registern wird der Inhalt bei jeder Clock-Flanke jeweils um eine Bit-Stelle nach rechts verschoben. Im einfachsten Fall wird die Bit-Folge seriell ein- und ausgelesen. Für manche Anwendungen sind aber auch Schieberegister günstig, die ein parallelel Laden und ein serielles Auslesen oder ein serielles Laden und ein paralleles Auslesen erlauben. Von großer praktischer Bedeutung sind auch sogenannte "stacks" oder "Stapelregister". Hier wird beim Einlesen die Information von links nach rechts weitergeschoben, also gestapelt. Beim Auslesen erfolgt dagegen ein Verschieben von rechts nach links. Ein solches Stapelregister hat also die Reihenfolge "first-in last-out", während gewöhnliche Register nach dem "first- in first-out" - Prinzip funktionieren. 4.6.2 Speicherregister Beim Speicherregister (auch Buffer, Latch-, Auffang-, Parallel-Register) genannt wird die Eingangsinformation für alle Bits gleichzeitig geschrieben, gespeichert und parallel wieder ausgelesen. Die verwendeten Einzelelemente sind dann Speicher-FFs oder auch dynamische FFs, die einstufige D-FFs bilden. Man kann solche Speicher "transparent" im Sinne von Latches aufbauen, in den meisten digitalen Systemen werden aber Master-Slave-Flip-Flops verwendet werden. Damit kann im Takt n gleichzeitig gespeicherte Information ausgelesen werden und neue Information in den Eingang aufgenommen werden. Diese wird aber erst im Takt (n+1) am Ausgang verfügbar. 20 Informatik V-Teil 2,Kap. 4, SS 99 Reset Q3 1D R C1 Q1 Q2 1D R C1 1D R C1 Q0 1D R C1 CL E3 E2 E1 E0 Abb. 4.28: Paralleles Register mit D-Flip-Flops Register dieser Art werden in großem Umfang in hochintegrierten Prozessoren verwendet. Eine solche Anordnung ist in Abb. 4.29 dargestellt. Variable x Variable y Register 1 Funktionssteuerung Register 2 Eingang ALU Register 3 Ausgang Ergebnis Abb. 4.29: ALU mit Registern Im Takt n werden die Eingänge der Register 1 und 2 mit Variablen, z. B. aus dem Speicher oder auch aus dem Ergebnisregister 3 geladen. Mit der fallenden Taktflanke von n liegen diese Daten an den Ausgängen der Register 1 und 2 an und werden durch die ALU verarbeitet. Mit der steigenden Flanke von Takt (n+1) werden sie ins Register 3 eingelesen und stehen nach der fallenden Flanke von (n+1) am Ausgang zur Verfügung. 4.6.3 Schieberegister Schieberegister sind n-Bit-Register oder Ketten von Speicherzellen mit taktgesteuerter serieller Ein-/Ausgabe von Information. Auch parallele Ausgabe kann vorkommen. Für die einzelnen Speicherzellen können unterschiedliche Typen von FFs verwendet werden. Die Information wird taktgesteuert von links nach rechts oder umgekehrt weitergegeben. Abb. 4.30 zeigt die prinzipielle Arbeitsweise. 21 Informatik V-Teil 2,Kap. 4, SS 99 Takt (shift-right) 1 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 1 1 1 Takt 1 Takt 2 0 0 Takt 3 1 0 Takt 4 Zeit Q1 Q2 Q3 Q4 1 T D0 - - - 2 2T D1 D0 - - 3 3T D2 D1 D0 - 4 4T D3 D2 D1 D0 5 5T - D3 D2 D1 Abb. 4.30a: Schieberegister mit "shift right"-Operation Die Information wird taktgesteuert von links nach rechts oder umgekehrt weitergegeben. Ein n-BitDatenwort , das seriell eingespeichert wird, steht damit nach n Taktzyklen an den Ausgängen der einzelnen FFs parallel zur Verfügung. Anders herum bedingt dies aber auch eine Verzögerung zwischen Anliegen des ersten Bits in der ersten Zelle und Lesbarkeit des n-ten Bits in der n-ten Zelle um n Taktoperationen. Takt Zeit Q1 Q2 Q3 Q4 1 T D0 - - - 2 2T D1 D0 - - 3 3T D2 D1 D0 - 4 4T D3 D2 D1 D0 5 5T - D3 D2 D1 Abb. 4.30b: Informationsverschiebung im Schieberegister Wenn die Shift-Operation bei z. B. steigender Taktflanke erfolgt, dann muß zu für jedes Flip-Flop zu diesem Zeitpunkt gleichzeitig eine Lese- und Schreib-Operation erfolgen. Dies ist nur möglich, wenn die einzelnen Speicherzellen aus Master-Slave-FFS aufgebaut sind oder eine entsprechende zeitgerechte Übernahme der Information gewährleistet ist. Q0 Q1 Q2 Q3 SE 1D 1D 1D RESET CL Abb. 4.31: 4-Bit-Schieberegister aus D-Flip-Flops 22 1D Informatik V-Teil 2,Kap. 4, SS 99 Man benötigt also für jede Teilzelle des Schieberegisters eine Speicher- und Verzögerungseinheit, die in Abb. 4.31 durch Master-Slave-Flip-Flops realisiert ist. Es gibt weitere Alternativen: − Verwendung einfacher D-Latches und Steuerung durch 2 Takt-Signale C und C' − Verwendung von D-Latches und zusätzlichen Verzögerungselementen Die Realisierung aus einzelnen D-Latches kann als simple Auftrennung der D-MS-FFs verstanden werden (Abb. 4.32). 1D SE Q0 1D C1 Q1 Ausgang C1 1D 1D 1D C1 C1 C1 C C Abb. 4.32: Schieberegister aus D-Latches mit invertiertem Takt In manchen Technologien kann eine dynamische Zwischenspeicherung auf dem Verbindungsweg zwischen zwei D-Latches vom Aufwand her günstiger sein (Abb. 4.33). V Eingang V Ausgang 1D 1D 1D C1 C1 C1 C Abb. 4.33: Schieberegister aus D-Latches und Verzögerungsgliedern Bei inaktivem Takt steht hier das Ausgangssignal eines Latches am Eingang des folgenden an, wird aber dort nicht eingelesen. Wird der Takt aktiv, so wird der Eingangswert übernommen und tritt wegen der Transparenz des Latches auch gleich an dessen Ausgang auf. Nun muß aber die Laufzeit des Signals über das Verzögerungselement so lang sein, daß diese Zustandsänderung während "Clock high" nicht mehr beim folgenden Latch ankommt. Schieberegister dieser einfachen Bauart genügen nicht allen Anforderungen der Praxis. Oft benötigt man eine Umkehr der Schieberichtung oder ein wahlweise paralleles / serielles Ein- und Auslesen von Information. E0 E2 E1 & & >1 & >1 & Q 1D C1 1D C1 1D C1 Clock X Abb. 4.34: Schieberegister mit wahlweise parallelem Einlesen 23 Informatik V-Teil 2,Kap. 4, SS 99 In der in Abb. 4.34 gezeigten Schaltung wird das wahlweise parallele oder serielle Einlesen über das Steuersignal X und Multiplexer-Elemente bestimmt. Mit weiterer Zusatzlogik wird dieses Register auch noch wahlweise nach rechts der nach links schiebbar (Abb. 4.35). Li Re & & & & & & Eli Ere & 1D C1 & & 1D C1 1D C1 Q Clock Abb. 4.35: Schieberegister mit umschaltbarer Schieberichtung Schieberegister werden in großem Umfang als Umsetzer zwischen serieller und paralleler Datenkommunikation benötigt und eingesetzt. Dabei unterscheidet man folgende Grundtypen: − − − − SISO: seriell ein / seriell aus PISO: parallel ein / seriell aus SIPO: seriell ein / parallel aus PIPO: parallel ein / parallel aus Solche Schieberegister werden als MSI-Bausteine in TTL- oder CMOS-Logik in einer großen Typenvielfalt angeboten. Bis zu 64 Bit Breite sind üblich. Sie werden natürlich auch auf hochintegrierten Schaltungen in großem Umfang benötigt. In der CMOS-Technologie kann man mittels dynamischer Speicherung und Pass-Transistoren zu sehr flächengünstigen Realisierungen kommen (Abb. 4. 36). FFO C2 C1 SE FF2 FF1 Ta Tb Ca C1 Cb C2 Ta ca SA Abb. 4.36: MOS-Schieberegister mit 2-Phasen-Takt Am Eingang E der Schaltung liege ein Signal an. Für den Fall C1 = 0 bleibt der Transistor Ta gesperrt. Wenn C1 = 1 ist, so gelangt das Signal auf die Kapazität Ca und wird dort gespeichert. Der invertierte Wert erscheint am Ausgang der ersten Stufe. Dort wird der Eingang der Zelle durch C2 = 0 noch gesperrt sein. Wenn C2 = 1 wird, so wird, so wird das Signal weitergegeben. Da gleichzeitig mit C1 = 0 der Transistor Ta sperrt, wird der Eingang abgekoppelt. Auf diese Art entsteht ein sehr flächensparend implementiertes Schieberegister. 24 Informatik V-Teil 2,Kap. 4, SS 99 Bei der Betrachtung von Schieberegistern haben wir uns noch nicht mit dem Problem beschäftigt, daß ein "Überlauf" auftreten kann. Hat man bei einem n-stufigen Schieberegister mit n Takten geschoben, so tritt beim n+1-ten Schiebeschritt eine Überlaufbedingung auf. Das am weitesten rechts stehende Bit geht verloren (Abb. 4.37). SE Dateneingang & D Qn 1 1 n-Bit-Schieberegister & Datenausgang Takt Rückführung Steuereingang X Abb. 4.37: Umlauf-Schieberegister mit wahlweiser Rückführung Eine wahlweise aktivierbare Rückführung des Ausgangs auf den Eingang verhindert den Verlust von Information und macht die Schaltung zu einem Ringspeicher. Bei der Schaltung nach Abb. 4.37 ist bei X = 0 die Bedingung D = Qn erfüllt, die Schaltung wirkt als Ringspeicher. Bei X = 1 ist die Rückführung unterbrochen, die Schaltung wirkt als normales Schieberegister. Nur am Rande sei hier erwähnt, daß über EXOR-Bausteine rückgekoppelte Schieberegister sich hervorragend als Generatoren von (vorherberechenbaren) Quasi-Zufallsbitmustern eignen. Strukturen dieser Art werden für den eingebauten Selbsttest von Schaltungen und Systemen verwendet. 4.6.4 FIFO- und LIFO-Speicher In zwei weitern Sonderbauarten haben Register in der Rechnertechnik eine große Bedeutung erfahren. A. Im FIFO (first-in first-out) Speicher können Daten nur in der Reihenfolge ihrer Eingabe ausgelesen werden. B. Im LIFO-Speicher (last-in first-out) Speicher können Daten nur in der umgekehrten Reihenfolge ihrer Eingabe ausgelesen werden. Dieser Speicher wird auch als "Stack" oder Stapelspeicher bezeichnet. FIFO-Speicher schreiben LIFO-Speicher (Stack) sch reiben lesen lesen Abb. 4.38: FIFO- und LIFO-Prinzip 25 Informatik V-Teil 2,Kap. 4, SS 99 FIFO-Speicher werden oft verwendet, um asynchron ankommende Daten zwischenzuspeichern und synchron wieder auszulesen. Sie spielen damit eine wichtige Rolle in Rechnernetzen, bei denen die einzelnen Komponenten asynchron zueinander laufen. Sie werden, wenn es kleine Speicher sind, mit asynchronen Schieberegistern oder, bei großen Speichern, mit RAM-Bausteinen realisiert. Im letzteren Fall verschiebt man nicht die Daten, sondern die Adresse. Es wird dann für das FIFO stets eine aktuelle Adresse bezüglich des Auslesens geführt. In ähnlicher Weise werden LIFOs (Stapelregister) organisiert. Auch sie können physikalisch als Register bzw. ganze Registerbänke mit physikalischer Verschiebung der Daten realisiert werden. Bei Realisierung durch einen RAM-Speicher wird wiederum nur die Adresse verschoben. Die aktuelle Speicheradresse wird dann auch als "Stack-Pointer" bezeichnet. Stacks spielen bei der Organisation von Rechnern eine ganz wesentliche Rolle. 4.7 Makros in praktischen Schaltungen In der Praxis sind rein größere kombinatorische Schaltungen auf bestimmte Funktionsblöcke beschränkt. Das sind einfache arithmetische Einheiten, z. B. Addierer und Schaltungen zur Codierung und Decodierung. Zur Zwischenspeicherung von logischen und arithmetischen Werten werden Register verwendet, die ihrerseits aus Flip-Flops aufgebaut sind. Bei vielen digitalen Systemen unterscheidet man auch zwischen Kontroll-Logik (control path) und Datenpfad (data path). Kontroll-Logik besteht oft aus relativ "krausen" Strukuren, also relativ irregulären Kombinationen aus kombinatorischen Schaltungsteilen und Flip-Flops. Solche Schaltungen weisen eine Serie von inneren Zuständen auf, die eindeutig vom vorherigen Zustand und einer (selten mehrerer) Eingangsvariablen abhängig sind. Solche Kontroll-Logiken sind generell als endliche Automaten (finite state machines) darstellbar. Für den Entwurf hat sich die Darstellung als endlicher Automat mit Angaben von Zuständen und Zustandsübergängen eingeführt. Eine wesentliche Entwurfs-aufgabe ist dann die Sicherung, daß ein solcher Automat nicht in unerwünschte Zustände gerät, insbesondere nicht solche, die er nicht mehr verlassen kann. In komplexen digitalen Systemen für Steuerungsaufgaben, z. B. Ampelsteuerungen und Aufzugssteuerungen, ergeben sich entsprechend komplexe Automatendarstellungen. Typischerweise steuert die Kontrollogik eines endlichen Automaten bei vielen Anwendungen, angefangen vom Rechner bis zu Signalprozessoren, die Verarbeitung von Daten und Signalen. Kontrollpfad data in in (steuerung FSM muxer) reg. mux alu cl regmux 26 reg. mux add reg. Informatik V-Teil 2,Kap. 4, SS 99 Die Steuerung des Daten-und Signalflußes geschieht z. B. über Multiplexer und Demultiplexer. Wenn Bus-Strukturen verwendet werden, so erfolgt die Steuerung des Zugriffs über tristate-fähige Treiberbausteine. Solche Tristate-Bauelemente lassen sich sehr gut in CMOS-Technik, viel weniger in bipolarer Logik realisieren. In der Regel wird man also folgende Funktionseinheiten finden: Kontrollogik mit "wildem" Aufbau und großer sequentieller Tiefe, aber ohne komplexe arithmetische Einheiten Datenpfade mit großer Bit-Breite (16, 32, 64 Bit), komplexen arithmetischen Einheiten, aber nur kleiner bis mittlerer sequentieller Tiefe. Während bei "handgefertigten" Scgaltungsentwürfen auch beliebig komplexe Mischungen von Kontroll- und Datenpfad an der Tagesordnung sind, ergeben sich bei Benutzung von Werkzeugen der Entwurfsautomatisierung meistens einfachere Strukturen. Typische Werkzeuge sind Programme zur: − Logik-Synthese (kombinatorisch) − FSM- Synthese (sequentiell) − Struktursynthese aus Verhaltensbeschreibungen (High-Level-Synthese) Auf die Methodik und die Werkzeuge des Schaltungsentwurfs wird in einer speziellen Vorlesung eingegangen werden. 27