Zustandsautomaten - Lehrstuhl Technische Informatik, Universität ...
Zustandsautomaten - Lehrstuhl Technische Informatik, Universität ...
Zustandsautomaten - Lehrstuhl Technische Informatik, Universität ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Proseminar <strong>Technische</strong> <strong>Informatik</strong> - SS 2002<br />
Wilhelm-Schickard-Institut<br />
<strong>Universität</strong> Tübingen<br />
<strong>Technische</strong> <strong>Informatik</strong><br />
Thema: <strong>Zustandsautomaten</strong><br />
Autor: Anna Kress <br />
Betreuer: Walter Lange
Motivation...3<br />
Inhaltsverzeichnis<br />
1 Einführung: Getränkeautomat...3<br />
2 Theorie...6<br />
2.1 Definition eines endlichen <strong>Zustandsautomaten</strong>...6<br />
2.2 Schaltwerke...6<br />
2.2.1 Kurze Definition eines Schaltwerkes...6<br />
2.2.2 Moore-Schaltwerk...7<br />
2.2.3 Mealy-Schaltwerk...7<br />
2.2.4 Zusammenfassung Moore und Mealy...8<br />
2.3 Zwei-Prozess-Form: Hufmann-Normalform...8<br />
2.4 Komposition und Dekomposition von FSMs...8<br />
3 Anwendungen: Beispiel Impulsfolgenerkennung...10<br />
3.1 Impulsfolgenerkennung: Moore-Schaltwerk...10<br />
3.2 Impulsfolgenerkennung: Mealy-Schaltwerk...11<br />
4 VHDL: VeryHighSpeed IC HardwareDescriptionLanguage...12<br />
4.1 Prozess zur Berechnung des Wertes am Ausgang...12<br />
(Ausgangsschaltnetz)<br />
4.2 Prozess zur Berechnung des Folgezustandes...13<br />
(Übergangsschaltnetz)<br />
5 Zusammenfassung und Ausblick...15<br />
5.1 Zusammenfassung...15<br />
5.2 Ausblick...15<br />
Literatur...16<br />
2
Motivation<br />
Das Thema der vorliegenden Arbeit sind sogenannte endliche <strong>Zustandsautomaten</strong>, die auf<br />
englisch als Finite State Machines (FSMs) bezeichnet werden. Zuerst ist zu klären, aus<br />
welchen Gründen <strong>Zustandsautomaten</strong> in der <strong>Technische</strong>n <strong>Informatik</strong> überhaupt von Interesse<br />
sind. Nach einer vorerst kurz gehaltenen Antwort auf diese Frage im folgenden Abschnitt<br />
wird anschließend die Vorgehensweise der Arbeit als Ganzes erläutert.<br />
Dabei läßt sich zusammenfassen, daß <strong>Zustandsautomaten</strong> ein abstraktes Modell darstellen,<br />
das eine wesentliche Grundlage für den Entwurf und die Beschreibung von digitalen<br />
Systemen bildet. <strong>Technische</strong> Realisierungen dieses Modells wiederum finden sich praktisch<br />
überall, wo es darum geht, zyklische Funktionsabläufe zu realisieren, andere<br />
Logikschaltungen zu steuern, oder - in komplexen digitalen Systemen - mehrere<br />
Komponenten zu synchronisieren.<br />
Tatsächlich sind realisierte <strong>Zustandsautomaten</strong> sequentiell arbeitende Logikschaltungen, die -<br />
gesteuert durch ein periodisches Taktsignal - eine Abfolge von Zuständen zyklisch<br />
durchlaufen. Die Einsatzorte sind sehr vielfältig: <strong>Zustandsautomaten</strong> findet man<br />
beispielsweise in Waschmaschinen, Smart Cards, oder als Steuerwerke für Prozessoren eines<br />
modernen Computers.<br />
Die nachfolgenden Kapitel machen den Leser mit dem Modell des <strong>Zustandsautomaten</strong><br />
bekannt, zeigen verschiedene Darstellungsmöglichkeiten auf und behandeln ebenfalls die<br />
technische Realisierung desselben in Schaltwerken.<br />
1 Einführung: Getränkeautomat<br />
Jeder hat ihn sicherlich schon einmal bedient, ohne sich tatsächlich dessen bewußt zu sein,<br />
daß dahinter ein endlicher Zustandsautomat steckt: Die Rede ist von einem<br />
Getränkeautomaten. Er soll dann auch als ein noch recht formlos gehaltenes<br />
Einführungsbeispiel in das Thema dienen, die formale Definition des <strong>Zustandsautomaten</strong><br />
findet sich im nächsten Kapitel. Das folgende Beispiel ist [Gersting] entnommen:<br />
Bevor Roe Bott sich in die <strong>Informatik</strong>-Vorlesung begibt, steuert er einen Getränkeautomaten<br />
an, um sich seinen morgendlichen Kaffee zu genehmigen. Abbildung 1 stellt ein stark<br />
vereinfachtes Modell davon dar. Roe wirft seine Geldmünze ein, drückt die entsprechenden<br />
Knöpfe für Kaffee und Zucker und erhält das gewünschte Getränk. Wenig ahnt er davon, daß<br />
er gerade einen endlichen <strong>Zustandsautomaten</strong> bedient hat. Nichtsdestotrotz hat er schon<br />
Bekanntschaft mit einigen seiner Eigenschaften gemacht:<br />
Roe's Einwurf des Geldes und drücken der Knöpfe stellt eine Eingabe für die Maschine dar.<br />
Diese Eingabe erfolgt an diskreten Zeitpunkten, die wir mit t0, t1, t2 usw. bezeichnen werden.<br />
Auf die Eingabe reagiert die Maschine mit bestimmten Antworten. Diese Antworten auf eine<br />
bestimmte Eingabe können irgendwann zwischen dieser Eingabe und der nächsten erfolgen,<br />
aber um die Operation zu synchronisieren, betrachten wir die Maschine nur zu festgesetzten<br />
Zeitpunkten - oder Taktsignalen - t0, t1, t2 usw. So erscheinen die Antworten der Maschine<br />
auf eine Eingabe zum Zeitpunkt ti zum Zeitpunkt ti+1 (vgl. Abb. 2).<br />
3
Zeitpunkt t0 t1 t2 t3 t4<br />
Eingabe Münze Kaffee-Knopf Zucker-Knopf - -<br />
Zustand bereit warten Kaffee Kaffee-Zucker bereit<br />
Ausgabe nichts nichts nichts Kaffee mit<br />
Zucker<br />
Abb. 2: Tabelle Getränkeautomat<br />
nichts<br />
Die Maschine besitzt zwei unterschiedliche Arten von Antworten: Die eine Art ist die<br />
sichtbare Ausgabe der Maschine (ein bestimmtes Getränk z.B. und manchmal auch nichts),<br />
die andere Art kann nicht als "sichtbar" bezeichnet werden - es ist der innere Zustand, in den<br />
die Maschine dabei übergeht.<br />
So geht die Maschine beispielsweise nach dem Einwurf des Geldes durch Roe in den hier als<br />
"Warte-Zustand" bezeichneten Folgezustand über. Nachdem Roe den Knopf für Kaffee<br />
gedrückt hat, wechselt die Maschine aus dem "Warte-Zustand" in den "Kaffee-Zustand".<br />
Sowohl hier als auch zum vorherigen Zeitpunkt wird nichts ausgegeben. Nach dem Drücken<br />
des Zuckerknopfes endlich erhält Roe den gewünschten Kaffee mit Zucker. Schließlich geht<br />
die Maschine in den "Bereitschafts-Zustand" über und wartet auf den nächsten Kunden.<br />
Wie wir bemerkt haben, erfolgt die Reaktion der Maschine auf eine Eingabe jeweils zum<br />
nächsten Taktsignal. Die Ausgabe des Kaffees mit Zucker ist dabei ein direktes Ergebnis der<br />
Tatsache, daß die Maschine sich im "Kaffee-Zucker-Zustand" befindet. Jedoch ist das<br />
Erreichen dieses Zustandes zum Zeitpunkt t3 sowohl von der Eingabe zum Zeitpunkt t2<br />
abhängig (Zucker-Knopf), als auch vom inneren Zustand zu diesem Zeitpunkt ("Kaffee-<br />
Zustand"). Entsprechend ist der Zustand zum Zeitpunkt t2 eine Funktion der Eingabe und des<br />
Zustandes zum Zeitpunkt t1. So ermöglicht der "Kaffee-Zustand" der Maschine, sich das<br />
Drücken der Kaffee-Taste zu "merken" und läßt diese Eingabe länger als nur ein Taktsignal<br />
lang wirken. Etwas allgemeiner formuliert stellen die inneren Zustände der Maschine eine<br />
Möglichkeit dar, früher erfolgte Eingaben zu speichern, sie fungieren also als eine Art<br />
"Gedächtnis".<br />
Etwas allgemeiner formuliert:<br />
Kaffee Münze<br />
Tee<br />
Zucker<br />
Milch<br />
Abb. 1: Getränkeautomat<br />
1. Die Operationen der Maschine werden durch diskrete Taktsignale synchronisiert.<br />
2. Das Verhalten der Maschine ist deterministisch, d.h. ihr Verhalten, das auf eine gegebene<br />
Folge von Eingaben erfolgt, ist komplett vorhersagbar.<br />
3. Die Maschine antwortet auf Eingaben.<br />
4
4. Es gibt eine endliche Anzahl von Zuständen, die die Maschine einnehmen kann. Zu jedem<br />
gegebenen Zeitpunkt befindet sich die Maschine in einem dieser Zustände. Welchen<br />
Zustand sie als nächstes einnehmen wird, ist sowohl von der Eingabe als auch vom<br />
jetzigen Zustand abhängig.<br />
5. Die Maschine kann Ausgaben produzieren. Die Ausgabe ist vom augenblicklichen<br />
Zustand abhängig - das bedeutet, daß sie über das "Gedächtnis", welches die Maschine in<br />
Form von Zuständen besitzt, auch von früheren Eingaben abhängt.<br />
Die formale Definition eines <strong>Zustandsautomaten</strong> erfolgt im nächsten Kapitel.<br />
5
2 Theorie<br />
2.1 Definition eines endlichen <strong>Zustandsautomaten</strong><br />
Nach der ersten noch sehr intuitiv gehaltenen Vorstellung eines <strong>Zustandsautomaten</strong> erfolgt<br />
nun die formale Definition.<br />
Ein endlicher Zustandsautomat (FSM) ist danach durch ein 6-Tupel charakterisiert:<br />
Dabei sind E, A und Z endliche Mengen, z0 ist ein Element aus Z, und δ und ω sind<br />
Funktionen. Die Eingabemenge E aus dem Getränkeautomat-Beispiel des vorigen Kapitels<br />
beispielsweise enthält als Elemente den Münzeinwurf, die "Kaffee-Taste" usw. Die<br />
Ausgabemenge A hingegen beinhaltet die Ausgabe der jeweiligen Getränke, aber auch<br />
"nichts". Z wiederum besteht unter anderem aus dem "Kaffee-Zustand", dem "Warte-<br />
Zustand" usw., z0 (der Startzustand) ist in diesem Fall der "Bereitschafts-Zustand". Die<br />
beiden Funktionen δ und ω schließlich sind Abbildungen zwischen diesen drei Mengen.<br />
Jeder auf diese Weise beschriebene Zustandsautomat läßt sich in einem sogenannten<br />
Schaltwerk implementieren. Dabei handelt es sich um eine technische Realisierung des FSM<br />
mithilfe von Logikbausteinen. Die grundlegenden Merkmale eines Schaltwerkes und zwei<br />
verschiedene Schaltwerkstypen (Moore und Mealy) werden im nächsten Unterkapitel<br />
vorgestellt.<br />
2.2 Schaltwerke<br />
FSM = ( E, A, Z, z0, ω, δ )<br />
E: Eingabemenge (endlich)<br />
A: Ausgabemenge (endlich)<br />
Z: Zustandsmenge (endlich)<br />
z0: Startzustand<br />
ω: Funktion zur Berechnung der aktuellen Ausgabe<br />
δ: Funktion zur Berechnung des Folgezustandes<br />
Wie in dem vorigen Abschnitt angedeutet, lassen sich endliche <strong>Zustandsautomaten</strong> in<br />
Schaltwerken technisch realisieren.<br />
2.2.1 Kurze Definition eines Schaltwerkes<br />
Ein Schaltwerk setzt sich aus zwei Bestandteilen zusammen:<br />
- aus Schaltnetzen: diese bestehen aus logischen Verknüpfungen. In den folgenden<br />
Beispielen für ein Moore- und ein Mealy-Schaltwerk realisieren die Schaltnetze jeweils<br />
die δ- und die ω-Funktion (s. Abb. 3 und 4).<br />
- aus einem Speicher. Dieser ermöglicht uns in den vorliegenden Fällen den jeweiligen<br />
augenblicklichen Zustand abzuspeichern und auf die beiden Schaltnetze, die die beiden<br />
Funktionen darstellen, rückzukoppeln (s. Abb. 3 und 4).<br />
6
Dabei entspricht bei Schaltwerken die Eingabemenge E der Menge aller Eingangsbelegungen,<br />
die Ausgabemenge A der Menge aller möglichen Belegungen der Ausgangsvariablen, und die<br />
Zustandsmenge Z versetzt das Schaltwerk in die Lage, sich auch schon früher erfolgte<br />
Eingangsbelegungen zu "merken" (vgl. Kap. 1, Abschnitt 6).<br />
2.2.2 Moore-Schaltwerk<br />
Nach der kurzen vorangegangenen Charakterisierung eines Schaltwerkes wenden wir uns nun<br />
der schematischen Darstellung eines bestimmten Schaltwerkstyps zu, der es uns ermöglicht,<br />
FSMs zu realisieren: dem Moore-Schaltwerk (Abb 3).<br />
clock reset<br />
Das besondere Kennzeichen dieses Schaltwerktyps ist die Tatsache, daß der Ausgabewert des<br />
Moore-Schaltwerkes nur vom augenblicklichen Zustand abhängig ist, wie man es aus der<br />
schematischen Darstellung in Abb. 3 ablesen kann. Das bedeutet, daß die Ausgabe sich nur<br />
dann ändern kann, wenn sich auch der Zustand ändert. Das ist der grundlegende Unterschied<br />
im Vergleich zum Mealy-Schaltwerk, das im folgenden Unterkapitel vorgestellt wird.<br />
In Abbildung 3 und 4 entspricht "e" dabei einem Element der Eingabemenge, "a" einem<br />
Element der Ausgabemenge, "z" ist der augenblickliche Zustand, "z+" der mithilfe der δ-<br />
Funktion bestimmte Folgezustand.<br />
2.2.3 Mealy-Schaltwerk<br />
e<br />
e<br />
z<br />
Abb. 3: Schematische Darstellung eines Moore-Schaltwerks<br />
z<br />
ω<br />
δ<br />
Speicher<br />
clock reset<br />
Abb. 4: Schematische Darstellung eines Mealy-Schaltwerks<br />
ω<br />
δ<br />
Speicher<br />
Ausgangsschaltnetz<br />
a<br />
Übergangsschaltnetz<br />
z+<br />
a<br />
z+<br />
7
Der wesentliche Unterschied zum vorher vorgestellten Moore-Schaltwerk besteht darin, daß<br />
hier die Ausgabe nicht nur vom augenblicklichen Zustand abhängig ist, sondern auch von der<br />
Eingabe (s. gestrichelter Pfeil in Abb. 4). Das bedeutet, daß es zum Ändern der Ausgabe zwei<br />
Möglichkeiten gibt: entweder muß sich die Eingabe ändern oder der innere Zustand.<br />
2.2.4 Zusammenfassung Moore und Mealy<br />
Tatsächlich sind das Moore- und Mealy-Schaltwerk äquivalent: Sie lassen sich ohne Einbußen<br />
an Funktionalität ineinander überführen. Das einzige, was sich unter Umständen ändern kann,<br />
ist das Zeitverhalten. Oft ist das entsprechende funktionsgleiche Mealy-Schaltwerk tatsächlich<br />
einfacher (besitzt weniger Zustände) als das Moore-Schaltwerk. Im Kapitel 3, das eine<br />
Anwendungmöglichkeit eines <strong>Zustandsautomaten</strong> vorstellt (nämlich Impulsfolgeerkennung),<br />
wird darauf noch einmal eingegangen. Kurz läßt sich allgemein feststellen, daß das<br />
äquivalente Moore-Schaltwerk soviele Zustände besitzt, wie das entsprechende Mealy-<br />
Schaltwerk verschiedene Paare aus Folgezuständen und Ausgaben.<br />
2.3 Huffman-Normalform<br />
e<br />
z<br />
Abb. 5 : Huffman-Normalform<br />
clock reset<br />
In den beiden vorigen Unterkapiteln erfolgte die Darstellung der beiden vorgestellten<br />
Schaltwerkstypen in drei Blöcken, mit jeweils einem Block für das Übergangsschaltnetz,<br />
einem für das Ausgangsschaltnetz und einem für den Speicher. Diese Blöcke können in der<br />
Hardware-Beschreibungssprache VHDL in sogenannten Prozessen dargestellt werden (vgl.<br />
Kap. 4). Dabei entspricht je einem Block ein entsprechender Prozess in VHDL. Dies wird<br />
auch als die Drei-Prozess-Form bezeichnet.<br />
Eine andere Möglichkeit ist die Zusammenfassung des Übergangs- und des<br />
Ausgangsschaltnetzes zu einem einzigen Prozess, so daß die Darstellung in der Zwei-Prozess-<br />
Form erfolgen kann. Diese in der Abbildung 5 vorgestellte Form wird auch als Huffman-<br />
Normalform bezeichnet. Dabei existiert nur beim Mealy-Schaltwerk die Kopplung, die durch<br />
den gestrichelten Pfeil aufgezeigt ist, beim Moore-Schaltwerk entfällt sie.<br />
2.4 Komposition und Dekomposition von FSMs<br />
Das letzte Unterkapitel zur Theorie der <strong>Zustandsautomaten</strong> greift ein Thema auf, dem sogar<br />
ein neuer Forschungszweig gewidmet wurde: Es geht um die Komposition und<br />
Dekomposition von endlichen <strong>Zustandsautomaten</strong>. Dahinter steckt die Idee, daß man einen<br />
ω<br />
δ<br />
Speicher<br />
a<br />
z+<br />
8
(recht komplexen) <strong>Zustandsautomaten</strong> durch ein Schaltwerk aus mehreren, viel einfacheren<br />
(d.h. mit weniger Zuständen) FSMs ersetzen kann. Dies geschieht durch Parallel- bzw.<br />
Seriell-Schaltungen, die aus der Elektronik entlehnt sind (s. Abb. 6). Dabei ist die<br />
Funktionsweise des ursprünglichen Automaten gleich der Funktionsweise des entsprechenden<br />
Schaltwerks aus einfacheren FSMs.<br />
M 1<br />
M 2<br />
M 2 M 1<br />
Abb. 6: Parallelschaltung und Seriellschaltung von FSMs (M1, M2 sind jeweils<br />
endliche <strong>Zustandsautomaten</strong>.)<br />
Der durch die Zusammenschaltung von FSMs entstehende Automat wird als<br />
Kreuzproduktautomat bezeichnet. Ein Beispiel zur Veranschaulichung, welcher Art die<br />
Vereinfachung ist, die man damit erzielt: Schaltet man nämlich zwei FSMs parallel, die<br />
jeweils nur 10 innere Zustände besitzen, erhält man einen Automaten mit insgesamt<br />
10*10=100 Zuständen!<br />
Die Fähigkeit, eine solche Zerlegung eines <strong>Zustandsautomaten</strong> in mehrere FSMs<br />
durchzuführen, könnte es erlauben, eine Art "Vorratslager" von einfachen Standard-<br />
<strong>Zustandsautomaten</strong> anzulegen. Durch zahlreiche Neukombinationen dieser Standard-<br />
Automaten könnten, nach dem Prinzip eines Baukastensystems, neue komplexere Automaten<br />
entstehen. Diese Vorgehensweise ist vergleichbar mit dem Schreiben von Unterprogrammen<br />
bzw. Standardprozeduren in einem Computerprogramm, die immer wieder auch von anderen<br />
Programmierern benutzt werden können.<br />
Wie verlockend diese Idee jedoch klingt, hat man bis heute keine wirklich effizienten<br />
Algorithmen gefunden, um solche Zerlegungen durchführen zu können, so daß die Forschung<br />
in dieser Richtung etwas eingeschlafen ist. Für weiter Informationen zum Thema sei auf<br />
[Gersting] verwiesen.<br />
9
3 Anwendungen: Beispiel Impulsfolgenerkennung<br />
In der Einführung sind schon einige Anwendungsmöglichkeiten von <strong>Zustandsautomaten</strong><br />
angedeutet worden. Hier sei nun als ein mögliches Anwendungsbeispiel unter vielen ein<br />
Automat zur Impulsfolgenerkennung vorgestellt (entnommen aus: [Reichardt]). Die<br />
Anwendungen solcher Automaten liegen z.B. im Bereich der Protokollüberprüfung bei<br />
Datenübertragungssystemen.<br />
Der folgende Automat (in 3.1 als Moore-, in 3.2 als Mealy-Schaltwerk realisiert) erhält als<br />
Eingabe jeweils eine 2-Bit-Kombination, z.B. (11) oder (00). Dabei erkennt er eine ganz<br />
bestimmte Abfolge von drei aufeinanderfolgenden 2-Bit-Kombinationen, nämlich in diesem<br />
Fall (01, 11, 10). Das Erkennen wird dadurch nach außen signalisiert, daß der Automat bei<br />
erfolgter Eingabe dieser Folge eine 1 ausgibt, bei anderen Folgen - bzw. solange die Folge<br />
noch nicht vollständig ist - wird stets eine 0 ausgegeben.<br />
Durch die Realisierung sowohl durch Moore- als auch durch das dazu äquivalente Mealy-<br />
Schaltwerk in den beiden folgenden Unterkapiteln soll noch einmal der Unterschied zwischen<br />
diesen beiden Schaltwerkstypen verdeutlicht werden. In Kapitel 4 schließlich wird die<br />
Möglichkeit vorgestellt, wie das Moore-Schaltwerk mithilfe der Hardware-<br />
Beschreibungssprache VHDL dargestellt werden kann.<br />
3.1 Impulsfolgenerkennung: Moore-Schaltwerk<br />
Der im folgenden vorgestellte Impulsfolgeerkennungs-Automat für die Folge (01, 11, 10) ist<br />
hier als Moore-Schaltwerk realisiert. Das Zustandsdiagramm (s. Abb. 7) ist neben der Tabelle<br />
(wie sie in Abb. 2 angedeutet ist) eine weitere Möglichkeit, einen bestimmten<br />
<strong>Zustandsautomaten</strong> grafisch darzustellen.<br />
Startzustand<br />
X0<br />
Z0<br />
X0<br />
Z1<br />
0<br />
01<br />
0<br />
X0<br />
11<br />
11<br />
00<br />
01<br />
01<br />
Z3<br />
1<br />
11<br />
Abb. 7: Zustandsdiagramm des Moore-Automaten zur Erkennung der Folge E=(01,11,10)<br />
Dabei markieren die Kreise die jeweiligen Zustände, die der Automat einnehmen kann; hier<br />
sind es insgesamt vier: Z0, Z1, Z2 und Z3. Der Startzustand, also der Zustand, in dem sich der<br />
Automat zu Beginn jeder Inbetriebnahme befindet, ist durch einen Pfeil markiert (hier: Z0).<br />
Unterhalb der Zustände lassen sich die Ausgaben ablesen, die der Automat nach außen<br />
signalisiert, wenn er in den jeweiligen Zustand wechselt: z.B. wird im Zustand Z0 eine "0"<br />
ausgegeben, im Zustand Z3 eine "1". Die Pfeile, die von einem Zustand zum anderen<br />
10<br />
01<br />
Z2<br />
0<br />
11<br />
10
gerichtet sind, bzw. auch von einem Zustand auf ihn selbst (s. Z0 und Z1) nennt man<br />
Zustandsübergänge. Sie beschreiben, durch welche Eingaben der Automat in welchen<br />
Zustand wechselt. Das entspricht der schon vorgestellten δ-Funktion. Beispielsweise geht der<br />
Automat, wenn er sich im Zustand Z0 befindet, durch die Eingabe von (01) in den Zustand Z1<br />
über und gibt eine "0" aus. Befindet er sich im Zustand Z2 und liest eine (10), geht er in den<br />
Zustand Z3 über und gibt eine "1" aus. Das "X" im Zustandsdiagramm dient dabei als<br />
Platzhalter. Es kann gedanklich sowohl durch "0" als auch "1" ersetzt werden. Durch das<br />
Durchspielen verschiedener Eingaben macht man sich klar, daß der Automat tatsächlich<br />
genau die gewünschte Folge erkennt. In Kapitel 4 wird das hier dargestellte Schaltwerk (zum<br />
Teil, also nicht komplett) in VHDL beschrieben.<br />
3.2 Impulsfolgenerkennung: Mealy-Schaltwerk<br />
In 2.2.4 ist bereits dargelegt worden, daß Moore- und Mealy-Schaltwerke sich ohne Einbußen<br />
an Funktionalität ineinander überführen lassen. Hier soll anhand des gewählten Beispieles zur<br />
Impulsfolgenerkennung das zum in 3.1 beschrieben Moore-Schaltwerk äquivalente Mealy-<br />
Schaltwerk vorgestellt werden (Abb. 8). Zur beispielhaften Umwandlung (von Mealy nach<br />
Moore) siehe [Rosenstiel].<br />
X0/0<br />
Z0<br />
11/0 01/0<br />
X0/0<br />
01/0<br />
11/0<br />
00/0 01/0<br />
Abb. 8: Zustandsdiagramm des Mealy-Automaten zur Erkennung der Folge E=(01,11,10)<br />
10/1<br />
Schon auf den ersten Blick sieht man, daß der Automat etwas einfacher gestaltet ist: Er besitzt<br />
nur noch drei Zustände anstatt der vier wie in 3.1. Dadurch läßt er sich auch mit weniger<br />
Aufwand technisch realsieren.<br />
Ein weiterer Unterschied ist, daß die Ausgaben nicht mehr unterhalb der jeweiligen Zustände<br />
angegeben werden, sondern nach bestimmten Eingaben (duch "/" getrennt) erscheinen, z.B. in<br />
"11/0". Der Grund dafür liegt darin, daß sich beim Mealy-Schaltwerk die Eingabe direkt auf<br />
die Ausgabe auswirkt (vgl. Abb. 4), was beim Moore nicht der Fall ist.<br />
Z1<br />
Z2<br />
11/0<br />
11
4 VHDL - Very High Speed IC Hardware Description Language<br />
Das letzte Kapitel zum Thema <strong>Zustandsautomaten</strong> soll einen kurzen Einblick in die<br />
Grundlagen von VHDL bieten. Dabei handelt es sich um eine Hardware-<br />
Beschreibungssprache, mit deren Hilfe <strong>Zustandsautomaten</strong> dargestellt werden können.<br />
Die Anfänge von VHDL liegen in den 90er Jahren. Ursprünglich wurde die Sprache im<br />
Auftrag des amerikanischen Militärs zur Dokumentation und Simulation von Hardware<br />
entwickelt. Der Grund dafür war der Wunsch nach einer eindeutigen Sprache; diese sollte<br />
dabei helfen, die damals hohe Fehlerrate in elektronischen Steuer- und Regelsystemen (z.B. in<br />
Flugzeugen) zu senken.<br />
Heute ist VHDL eine standardisierte Sprache, die vor allem in Europa verbreitet ist. Eine<br />
Untermenge der Sprache kann nun auch zur Synthese von Schaltnetzen und Schaltwerken<br />
genutzt werden.<br />
Die beiden folgenden Unterkapitel stellen jeweils einen kurzen Ausschnitt aus dem<br />
Sourcecode eines zu realisierenden <strong>Zustandsautomaten</strong> vor. Dabei handelt es sich um das<br />
Moore-Schaltwerk zur Impulsfolgeerkennung aus Kapitel 3.<br />
Die Einheiten, in denen der VHDL-Code präsentiert wird, sind sogenannte "Prozesse". Für<br />
den Beispiel-Automaten aus Kapitel 3 werden insgesamt drei Prozesse benötigt: einen für die<br />
Berechnung des Nachfolgezustandes, einen für die Berechnung des Wertes am Ausgang und<br />
einen für die Zustandaktualisierung. Das Kapitel beschränkt sich auf die beispielhafte<br />
Vorstellung der ersten zwei genannten Prozesse, die jeweiligen Schaltnetze sind in der<br />
folgenden Abbildung durch Beschriftung hervorgehoben. Für die komplette Beschreibung sei<br />
auf [Reichardt] verwiesen.<br />
e<br />
z<br />
Abb. 9: Moore-Schaltwerk<br />
Ausgangsschaltnetz<br />
clock reset<br />
4.1 Prozess zur Bestimmung des Wertes am Ausgang (Ausgangsschaltnetz)<br />
Der nachfolgende Ausschnitt aus dem Sourcecode in VHDL realisiert das Ausgangsschaltnetz<br />
des Impulsfolgeerkennungs-Automaten aus dem vorigen Kapitel. Der Sourcecode (aus<br />
[Reichardt]) ist vor allem bei Vorkenntnissen in C bzw. C++ leicht erschließbar.<br />
Vorher eine kurze Erläuterung der Variablen (diese werden außerhalb des Prozesses<br />
deklariert):<br />
ω<br />
Übergangsschaltnetz<br />
δ<br />
Speicher<br />
a<br />
z+<br />
12
Die Marke "AUS_SN" (es handelt sich dabei nicht um eine Variable) gibt an, daß es sich um<br />
den Prozess für das Ausgangsschaltnetz handelt; an diesen Prozess wird die sich selbst<br />
erklärende Variable "ZUSTAND" übergeben. "Begin" und "end process" umklammern dabei<br />
die auszuführenden Anweisungen. Diese Anweisungen umfassen in diesem Fall einzig und<br />
allein die Abfrage des Wertes, auf den ZUSTAND gesetzt ist ("case"): Wir erinnern uns, daß<br />
der Automat nur im Zustand drei (Z3) eine 1 ausgab (das entsprach dem Erkennen der<br />
gefragten Sequenz, s. Abb. 7), ansonsten wurde immer eine 0 ausgegeben. Entsprechend wird<br />
der Ausgang "A" auf "0" gesetzt, wenn ZUSTAND die Werte Z0, Z1 oder Z2 enthält, und auf<br />
"1" bei Z3. Mit "end process AUS_SN;" wird der Prozess abgeschlossen.<br />
Prozess für die Ausgangsberechnung:<br />
AUS_SN: process (ZUSTAND)<br />
begin<br />
case ZUSTAND is<br />
when Z0 => A A A A
Prozess für die Folgezustandsberechnung:<br />
UE_SN: process (E, ZUSTAND)<br />
begin<br />
case ZUSTAND is<br />
when Z0 => if E =„01“ then FOLGE_Z
5 Zusammenfassung und Ausblick<br />
5.1 Zusammenfassung<br />
Folgendermaßen sah die Vorgehensweise der vorliegenden Arbeit aus:<br />
Nach einer eher intuitiv gehaltenen Einführung in das Thema am Beispiel des<br />
Getränkeautomaten erfolgte die formale Definition eines endlichen <strong>Zustandsautomaten</strong>. Es<br />
wurden zwei verschiedene Schaltwerkstypen vorgestellt, mit denen sich <strong>Zustandsautomaten</strong><br />
technisch realisieren lassen: das Moore- und das Mealy-Schaltwerk. Als Anwendungsbeispiel<br />
wurde ein Automat zur Impulsfolgeerkennung vorgestellt, und daran noch einmal die<br />
Unterschiede zwischen den oben erwähnten Schaltwerkstypen verdeutlicht. Schließlich<br />
erfolgte eine kurze Einführung in die Darstellung des oben erwähnten Automaten-Beispieles<br />
mit Hilfe der Hardware-Beschreibungssprache VHDL.<br />
Das Ziel der Arbeit war es, den Leser in das Modell des endlichen <strong>Zustandsautomaten</strong><br />
einzuführen und die Bedeutung des Automatenmodells in der <strong>Technische</strong>n <strong>Informatik</strong><br />
herauszuarbeiten. Diese sollte nun klar geworden sein: Schließlich kann auch ein moderner<br />
Computer als realisierter endlicher Zustandsautomat aufgefaßt werden, obwohl er unglaublich<br />
viele innere Zustände besitzt.<br />
5.2 Ausblick<br />
Als Abschluß dieser Arbeit zum Thema <strong>Zustandsautomaten</strong> soll hier noch ein Ausblick in die<br />
Zukunft des Automatenmodells vorgenommen bzw. ein kleines Kuriosum vorgestellt werden:<br />
Der wahrscheinlich kleinste realisierte Zustandsautomat der Welt!<br />
Das Weizmann-Institut in Israel stellte Ende 2001 einen aus biologischen Molekülen<br />
zusammengesetzten programmierbaren <strong>Zustandsautomaten</strong> vor, der insgesamt zwei innere<br />
Zustände besitzt und mit zwei Symbolen operieren kann. Dabei ist er so klein, daß eine<br />
Billion (1. 000. 000. 000. 000) dieser Nanocomputer in einen Tropfen Wasser passen und dort<br />
parallel rechnen. Gemeinsam vollführen die Computer eine Milliarde Operationen pro<br />
Sekunde, mit einer Genauigkeit von mehr als 98,8%, und verbrauchen dabei weniger als ein<br />
Milliardstel Watt Energie.<br />
Die Eingabe, die Ausgabe und die Software (die Programme beschreibt) des Nanocomputers<br />
bestehen aus DNS-Molekülen, die Hardware aus zwei Enzymen, die in der Lage sind, DNS-<br />
Stränge zu manipulieren. Es existierten zum Zeitpunkt der Veröffentlichung 765<br />
unterschiedliche Programme, die der Automat abarbeiten kann. Beispielsweise ist er in der<br />
Lage zu berechnen, ob eine eingegebene Sequenz von Nullen und Einsen eine gerade Anzahl<br />
von Einsen enthält. Das Sichtbarmachen des Ergebnisses für das menschliche Auge erfolgt<br />
schließlich durch Gel-Elektrophorese.<br />
Der Nanocomputer ist noch zu einfach gestaltet, um für sofortige Anwendungen in Frage zu<br />
kommen. Aber in der Zukunft wäre es vorstellbar, daß solche Nanocomputer ihren Einsatzort<br />
in der Medizin finden: Sie könnten aufgrund ihrer winzigen Größe im menschlichen Körper<br />
biochemische Prozesse beeinflussen, indem sie bei entdeckten Störungen direkt in der<br />
betroffenen Zelle Medikamente synthetisieren.<br />
15
Weitere Einzelheiten können auf folgender Website nachgelesen werden: http://wiswander.weizmann.ac.il/<br />
Literatur<br />
[Gersting] Gersting, Judith: Mathematical Structures for Computer Science; W. H.<br />
Freeman and Co; New York 1987<br />
[Reichardt] Reichardt/Schwarz: VHDL-Synthese; Oldenbourg Verlag; 2000<br />
[Rosenstiel] B. Rothmund, M. Kretschmar, D. König, J. Wedek, W. Rosenstiel: Skriptum<br />
<strong>Technische</strong> <strong>Informatik</strong> II, Fakultät für <strong>Informatik</strong>, <strong>Universität</strong> Tübingen, 1992<br />
16