29.06.2013 Aufrufe

2.4 Sequentielle Logik

2.4 Sequentielle Logik

2.4 Sequentielle Logik

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!