Probeseiten 5 PDF

Werbung
5.2 Endliche Automaten
129
5.1.6Kippstufen
Flip-Flops werden auch als bistabile Kippstufen bezeichnet. Bistabil meint, dass beide
„Kippwerte“, also 0 und 1 stabil sind. Diese Bezeichnung legt nahe, dass es auch andere
Kippstufen gibt.
5.1.6.1 Monostabile Kippstufe
Eine monostabile Kippstufe, auch als Monoflop bezeichnet, hat nur einen stabilen
Zustand; der instabile Zustand geht nach einer Verzögerungszeit in den stabilen Zustand
über. Das Monoflop reagiert auf eine positive Taktflanke am Eingang mit einem 1-Impuls
am Ausgang. Aus dieser instabilen Lage kippt es nach einer einstellbaren Zeit TD zurück
in den stabilen Zustand mit einer 0 am Ausgang. Erst wenn der Ausgang wieder in seinen
ursprünglichen Logik-Zustand zurückgekippt ist, kann ein neuer Eingangsimpuls mit seiner Flanke wirksam werden.
Als Variante sind nachtriggerbare Monoflops möglich. Falls die Impulsdauer TD noch
nicht abgelaufen ist, verlängert eine Taktflanke des Eingangssignals den Impuls bis wiederum die Zeit TD nach der Flanke abgelaufen ist.
Dieses Verhalten entspricht der Treppenhausbeleuchtung in einem Mehrfamilienhaus. Nach Schalterdruck ist das Licht für zwei Minuten an (instabiler Zustand) und geht
danach wieder aus (stabiler Zustand). Bei einer nachtriggerbaren Treppenhausbeleuchtung verlängert ein weiterer Schalterdruck die Beleuchtungsdauer.
Monostabile Kippstufen sind als diskrete Bauelemente verfügbar. Die Verzögerungszeit kann über ein RC-Glied eingestellt werden. Eingesetzt werden diese Bauelemente,
um das Zeitverhalten von Signalen zu kontrollieren. Beispielsweise kann so sichergestellt werden, dass ein Reset eine bestimmte Mindestdauer hat.
5.1.6.2 Astabile Kippstufe
Eine astabile Kippstufe hat keinen stabilen Zustand, sondern wechselt periodisch zwischen den beiden Zuständen, also 0 und 1. Sie wird auch als Oszillator bezeichnet und
als Taktgenerator eingesetzt.
Es gibt verschiedene Schaltungen, die als astabile Kippstufe eingesetzt werden können.
Einfache Schaltungen nutzen RC-Glieder, um zwischen den Zuständen umzuschalten.
Hierbei ist die Frequenz meist nicht sehr stabil, aber für einfache Anwendungen kann dies
ausreichend sein.
Für hohe Ansprüche in Hinblick auf Frequenzstabilität werden quarzgesteuerte Oszillatoren eingesetzt. Für den Einsatz in der Digitaltechnik stehen integrierte Schaltkreise zur
Verfügung, die über einen Schwingquarz auf eine bestimmte Frequenz eingestellt werden.
5.2Endliche Automaten
Eine sequenzielle Schaltung, die aus Speicherelementen und Logikgattern besteht, wird
als Automat, oder genauer als endlicher Automat bezeichnet.
130
5 Sequenzielle Schaltungen
5.2.1Automatentheorie
Ein Automat ist dadurch gekennzeichnet, dass sein Verhalten durch aktuelle Eingangsvariablen und interne Zustandsvariablen bestimmt ist. Die Zustandswerte, oder auch
Zustände, beschreiben die „Vorgeschichte“ des Automaten. Daraus ergibt sich auch die
englische Bezeichnung Finite State Machine (FSM), also frei übersetzt Automat mit endlicher Anzahl an Zuständen.
Vielleicht fragen Sie sich jetzt, ob es überhaupt Automaten mit unendlicher Anzahl an
Zuständen gibt. Als reale Implementierung ist ein unendlich großer Speicher natürlich
nicht möglich, aber in der Theorie ist dies denkbar. In der theoretischen Informatik wird
die Turingmaschine verwendet, die einen unendlich großen Speicher hat und somit ein
unendlicher Automat ist. Mit dem Gedankenmodell der Turingmaschine wird die Berechenbarkeit von mathematischen Problemen analysiert.
5.2.1.1 Mealy-Automat
Eine Grundform der endlichen Automaten ist der Mealy-Automat. Er wird durch drei
Gruppen an Variablen und zwei Funktionen definiert.
Die drei Gruppen an Variablen sind:
• Eingangsvariablen, also Eingangswerte, die in die Schaltung hineingehen. Sie werden als X(0), X(1), X(2), … sowie gemeinsam als Gruppe X bezeichnet.
• Ausgangsvariablen, also Ausgangswerte, die aus der Schaltung herausgehen. Sie
werden als Y(0), Y(1), Y(2), … sowie gemeinsam Y bezeichnet.
• Zustandsvariablen, also interne Werte der Schaltung, die den Zustand speichern. Sie
werden als Z(0), Z(1), Z(2), … sowie gemeinsam Z bezeichnet.
Die zwei Funktionen beschreiben die Zusammenhänge zwischen den Variablen:
•Die Zustandsübergangsfunktion benutzt die Eingangsvariablen X und die aktuellen
Zustandsvariablen Zn, also Z vom aktuellen Zeitschritt n. Hiermit berechnet sie die
neuen Zustandsvariablen Zn+1 für den nächsten Zeitschritt n+1. Als Funktion ausgedrückt lautet dies: Zn+1=f(X,Zn)
•Die Ausgangsfunktion benutzt ebenfalls die Eingangsvariablen X und die aktuellen
Zustandsvariablen Zn, um die Ausgangsvariablen Y zu berechnen. Die Funktion lautet:
Y=g(X,Zn)
Diese Struktur ist in Abb. 5.23 dargestellt. Eingangsvariable X und aktuelle Zustandsvariablen Zn gehen in die Zustandsübergangsfunktion. Dieser Block ist eine kombinatorische Schaltung aus UND-Gattern, ODER-Gattern und so weiter. Sie berechnet den
nächsten Zustand Zn+1. Die Speicherglieder sind D-Flip-Flops, die zurzeit noch den
aktuellen Zustand Zn speichern und bei der Taktflanke den neuen Zustand übernehmen.
5.2 Endliche Automaten
Abb. 5.23  Struktur des
Mealy-Automaten
131
X
Z
n
Zustands- Zn+1 SpeicherübergangsGlieder
funktion
(Flip-Flops)
Zn
Ausgangsfunktion
Y
Takt
Die Ausgangsfunktion ist ebenfalls eine kombinatorische Schaltung und berechnet aus X
und Zn die Ausgangsvariablen Y.
Später in diesem Kapitel sind Beispiele für Automaten angegeben, um Struktur und
Funktion des Mealy-Automaten zu verdeutlichen. Zunächst soll jedoch der andere
bedeutende Automatentyp vorgestellt werden.
5.2.1.2 Moore-Automat
Der Moore-Automat ähnelt dem Mealy-Automat, hat jedoch einen wesentlichen Unterschied. Die Ausgangsfunktion hängt nur von den aktuellen Zustandsvariablen Zn ab und
nicht von den Eingangsvariablen X. Die Funktion für die Ausgangsvariablen Y lautet
also: Y=g(Zn)
Die Informationen der Eingangsvariablen beeinflussen also zunächst den Zustand und
der Zustand bestimmt dann den Ausgang. Die Struktur ist in Abb. 5.24 zu sehen.
Verglichen mit dem Mealy-Automaten ist der Moore-Automat also etwas einfacher in
der Struktur. Grundsätzlich können für praktische Problemstellungen stets beide Automaten verwendet werden. Für manche Problemstellungen ist ein Mealy-Automat besser
geeignet, für andere ein Moore-Automat.
An den Beispielen, die später in diesem Kapitel folgen, werden die Unterschiede
sowie Vor- und Nachteile deutlich.
5.2.1.3 Medwedew-Automat
Der Medwedew-Automat ist ein Spezialfall des Moore-Automaten. Bei ihm sind die Ausgangsvariablen Y gleich den Zustandsvariablen Zn. Die Ausgangsfunktion ist also trivial
und gibt die Zustandsvariablen direkt weiter. In der Funktionsschreibweise lautet dies:
Y=Zn
Auf den Medwedew-Automat wird später in Abschn. 5.2.7 kurz eingegangen.
Abb. 5.24  Struktur des
Moore-Automaten
X
Zustands- Zn+1 SpeicherGlieder
Zn übergangsfunktion
(Flip-Flops)
Takt
n
Z
Ausgangsfunktion
Y
132
5 Sequenzielle Schaltungen
5.2.2Beispiel für einen Automaten
5.2.2.1 Schaltungsanalyse
Um die Funktionsweise eines Automaten zu verstehen, wird in diesem Abschnitt ein vorhandener Automat analysiert. Im darauffolgenden Abschnitt lernen Sie dann, wie Automaten entworfen werden.
Startpunkt der Analyse ist das Schaltbild des Automaten in Abb. 5.25. Vergleichen
Sie ihn auch mit den Grundstrukturen von Mealy- und Moore-Automat in Abb. 5.23 und
Abb. 5.24.
Im Schaltbild sind die drei Blöcke des Automaten hervorgehoben:
• Die Zustandsübergangsfunktion besteht aus fünf Logikgattern.
• Als Speicherglieder werden zwei D-Flip-Flops verwendet.
• Die Ausgangsfunktion besteht aus einem Logikgatter.
Die drei Variablengruppen des Automaten sind:
• Es gibt eine Eingangsvariable X
• Es gibt eine Ausgangsvariable Y
• Es gibt zwei Zustandsvariable Z(0), Z(1)
Außerdem ist das Taktsignal CLK vorhanden.
Eine Betrachtung der Struktur zeigt, dass es sich um einen Moore-Automaten handelt,
denn der Ausgang Y hängt nur von den Zustandsvariablen und nicht auch noch von der
Eingangsvariablen ab.
Zur weiteren Analyse werden die Funktionstabellen der beiden kombinatorischen Schaltungen für Zustandsübergangsfunktion und Ausgangsfunktion aufgestellt. Die Zustandsübergangsfunktion hat drei Eingänge, also müssen für 23 = 8
Speicherglieder
Zustandsübergangsfunktion
X
&
n+1
1 Z (0)
Zn(0)
C
&
&
D
Ausgangsfunktion
&
n+1
1 Z (1)
D
C
CLK
Abb. 5.25  Schaltbild eines Automaten
Zn(1)
Y
158
Abb. 5.60  Strukturelemente
des asynchronen Automaten
beim RS-Flip-Flop
5 Sequenzielle Schaltungen
Kombinatorische Schaltung
R
S
1
1
Q
Rückführung des Zustands ohne Flip-Flop
5.2.8.2 Beispiel eines asynchronen Automaten
Das in Abschn. 5.1.1 beschriebene RS-Flip-Flop ist ein Beispiel für einen asynchronen
Automaten. Abb. 5.60 zeigt erneut den Aufbau des RS-FFs (wie in Abb. 5.3) mit den
Strukturelementen des asynchronen Automaten. Die Rückführung des Zustands Q erfolgt
ohne Verzögerung oder Flip-Flop.
5.2.8.3 Einsatz
Der praktische Einsatz von asynchronen Automaten ist nicht einfach, denn beim Entwurf
sind wesentlich mehr Bedingungen zu beachten als bei synchronen Automaten.
• Ein asynchroner Automat ist nur stabil, wenn die Änderung einer Zustandsvariablen
nicht erneut zu immer weiteren Änderungen von Zustandsvariablen führt. Ansonsten
kann der Automat zwischen verschiedenen Zuständen schwingen.
• Die kombinatorische Schaltung darf keine kurzzeitigen Zwischenwerte ausgeben.
Ansonsten kann der Automat in einen falschen Zustand übergehen.
Aufgrund dieser Bedingungen sind asynchrone Automaten wesentlich schwieriger zu
entwerfen, denn Fehler beim Einhalten der Bedingungen lassen sich nur schwer entdecken. Das Risiko beim Entwurf eines asynchronen Automaten ist relativ hoch.
In der Praxis werden darum asynchrone Automaten so gut wie nicht entworfen. In der
Regel werden lediglich bewährte und besonders geprüfte Grundschaltungen eingesetzt,
wie zum Beispiel das RS-Flip-Flop.
5.3Entwurf sequenzieller Schaltungen mit VHDL
5.3.1Grundform des getakteten Prozesses
Der Entwurf sequenzieller Schaltungen erfolgt in VHDL mit einer besonderen Form
des bereits beschriebenen Prozesses. Der Prozess benötigt keine Sensitivity-Liste und
beginnt mit einem Wait-Statement für die steigende Taktflanke. Dieses Wait-Statement
hat die Schreibweise wait until rising_edge(clk); und sagt aus, dass die nachfolgenden
Anweisungen nur bei einer steigenden Taktflanke ausgeführt werden sollen. Nach dem
Wait-Statement steht der VHDL-Code, der bei der steigenden Taktflanke ausgeführt werden soll.
5.3 Entwurf sequenzieller Schaltungen mit VHDL
159
signal a, b : std_logic;
…
process
begin
   wait until rising_edge(clk);
   b <= a;
end process;
Im VHDL-Code sind nur die Definition von a und b sowie der Prozess gezeigt. Entity
und Architecture-Definition werden zur besseren Übersicht zunächst weggelassen. Ein
vollständiges Beispiel folgt später. Das Taktsignal clk ist ein normales Signal in VHDL;
oft ist es direkt ein Eingangssignal der Schaltung.
Das Beispiel beschreibt ein einfaches D-Flip-Flop. Mit der steigenden Taktflanke wird
der Wert des Signals a im Signal b gespeichert. Diese Beschreibung entspricht einem
D-Flip-Flop entsprechend Abb. 5.61.
Die Schreibweise rising_edge() ist für die Beschreibung sequenzieller Schaltungen
sehr wichtig. Syntheseprogramme erkennen diese Funktion und generieren eine Schaltung mit D-Flip-Flops. Es gibt außerdem die Variante falling_edge(). Hiermit wird eine
Funktion beschrieben, die bei einer fallenden Taktflanke aktiv ist. Entsprechend werden
D-Flip-Flops generiert, die mit der fallenden Taktflanke aktiv sind.
5.3.2Erweiterte Funktion des getakteten Prozesses
Die Grundform des Prozesses erscheint zunächst relativ aufwendig, denn für ein einzelnes Flip-Flop werden vier Zeilen VHDL-Code benötigt. Die Stärke von VHDL liegt
darin, dass nach dem Wait-Statement weitere Funktionen beschrieben werden können.
Es sind If-Abfragen, Case-Bedingungen und logische Verknüpfungen, auch ineinander
geschachtelt, möglich. Die Optimierung der Schaltung wird von einem Synthese-Programm übernommen.
Als immer noch kleines Beispiel wird eine Überlauferkennung betrachtet. count ist
eine Zahl mit dem Wertebereich von 0 bis 15 und in VHDL als unsigned-Signal mit 4 bit
Wortbreite definiert. Eine Schaltung soll überprüfen, ob der Zahlenwert größer als zehn
ist und das Ergebnis in einem Flip-Flop speichern. Dies könnte zum Beispiel anzeigen,
dass ein Speicher überläuft.
Abb. 5.61  Schaltung des in
VHDL beschriebenen D-FlipFlops
a
clk
D
C
b
http://www.springer.com/978-3-662-49730-2
Herunterladen