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