08.10.2013 Aufrufe

Zustandsautomaten - Lehrstuhl Technische Informatik, Universität ...

Zustandsautomaten - Lehrstuhl Technische Informatik, Universität ...

Zustandsautomaten - Lehrstuhl Technische Informatik, Universität ...

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.

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!