JavaFSM<SUP>©</SUP>

von Karola Krönert und Ulrich Dallmann

JavaFSM als Applikation
Auswahl zwischen Mealy- und Moore-Schaltwerken
Speichern und Laden von entworfenen Automaten
Laden von Beispielautomaten
Festlegen des Automaten-Namen
Festlegen der Ein-/ und Ausgänge
Entwurf des zugrundeliegenden Automaten mit Hilfe des Editors
Zwischen Editier- und Simulationsmodus hin- und herschalten
Definition der logischen Übergangsbedingungen und Ausgabefunktionen
Überprüfung des Automaten auf Korrektheit
Simulation durch Verändern der Eingangswerte und Taktgebung
Ausgabe des Simulationsergebnisses im Impulsdiagramm
Export des Automaten im VHDL/ KISS-Format

JavaFSM als Applikation

Zum Ausführen von JavaFSM benötigen Sie das JDK von Sun. Laden Sie sich die Datei JavaFSM.zip herunter und entpacken Sie diese. Sie enthält neben dem Programm JavaFSM auch einige Beispielautomaten, sowie Dokumentation. Wechseln Sie in das Verzeichnis JavaFSM und starten Sie den Interpreter wie folgt:
"java -classpath PFAD DE.uni_hamburg.informatik.tech.JavaFSM.JavaFSM", wobei der Pfad auf das Verzeichnis JavaFSM zeigen muß.

Sie können unter Windows 95 / NT auch die mitgelieferte Batch-Datei "JavaFSM.bat" anpassen. Sofern sich das Verzeichnis JavaFSM nicht direkt auf dem Laufwerk C: befindet,mssen Sie hier den Pfad angeben. Außerdem muß der Pfad auf das JDK gesetzt sein

Auswahl zwischen Mealy- und Moore-Schaltwerken

Beim Starten des JavaFSM erscheint ein Dialogfenster zur Auswahl des Schaltwerk-Typs. Bei Moore-Schaltwerken hängen die Ausgabewerte nur von der Berechnung des Automaten ab. Bei Mealy hingegen werden die Eingabewerte mit in das Lambda-Schaltnetz geführt, sodaß die Ausgabewerte auch direkt von den Eingabewerten abhängen können und sich somit auch zwischen den Takten ändern können.
Über den Menüpunkt "Automat-Moore" bzw "Automat-Mealy" kann der Schaltwerktyp geändert werden. Dies ist jedoch nur im Editiermodus möglich, da der Automat während der Simulation nicht verändert werden darf. Beim Wechsel vom Mealy-Schaltwerk zum Moore-Schaltwerk gehen dabei komplexe Ausgabefunktionen verloren und werden durch "0" ersetzt.

Speichern und Laden von entworfenen Automaten

JavaFSM bietet die Möglichkeit, selbst entworfene Automaten zu speichern und wieder zu laden.

In der Applikation läßt sich dabei über die Menüpunkte Laden und Speichern ein Dateiname auswählen. Zur einheitlichen Kennzeichnung sollten diese die Endung ".fsm" tragen. Hierbei ist zu beachten, daß der CLASSPATH gesetzt sein muß! Applets sind aus Sicherheitsgründen jegliche Zugriffe auf den Client-Rechner verboten und es ist daher nicht möglich, Daten direkt beim Anwender zu speichern.

Bei Auswahl des Menüs "Datei-Laden" / "Datei-Speichern" im Applet öffnet sich ein Dialogfenster. Dateien erhalten einen Namen unter dem sie gespeichert werden und ein Paßwort, das ein versehentliches Überspeichern verhindern soll und Daten vor anderen Anwendern schützt. Dabei ist zu beachten, daß auf dem Server alle Automaten im gleichen Verzeichnis abgelegt werden. Daher sollte ein Automat einen eindeutigen Namen erhalten (username_automatenname). Nach Eingabe des Filenamens und des Paßwortes und Bestätigung werden die Daten zum Server übertragen. Eventuell auftretende Fehler werden in der Statuszeile ausgegeben. Wurde der Automat ordnungsgemäß geladen / gespeichert, schließt sich das Dialogfenster. Wird beim Speichern ein bereits vorhandener Filename gewählt, muß das zugehörige Paßwort angegeben werden. Sonst erscheint die Fehlermeldung "Dateiname vergeben / Paßwortfehler". Wählen Sie dann bitte einen anderen Filenamen.

Firewall / Proxy

Ein Java Applet darf aus Sicherheitsgründen eine Netzwerkverbindung nur zu dem Server herstellen, von dem es geladen wurde. Liegt zwischen dieser Verbindung ein Proxy-Server (Firewall), können leider keine Automaten geladen bzw. gespeichert werden, da der Proxy selbst nicht kontaktiert werden kann! Wer dennoch mit JavaFSM arbeiten möchte, kann es sich downloaden und als Applikation starten.

Laden von Beispielautomaten

Unter dem Menüpunkt "Datei-Beispiele" befinden sich einige Beispielautomaten, die bei Auswahl vom Webserver geladen werden. Sollten beim Laden irgendwelche Fehler auftreten, werden diese in der Statuszeile ausgegeben. Diese Auswahl ist in der Applikation nicht möglich. Hier können die Beispiele direkt aus dem Unterverzeichnis Beipiele geladen werden.

Festlegen des Automaten-Namen

Über das Menü Automat - Automaten-Name läßt sich ein Name für den Automaten festlegen. Dieser erscheint dann in den Titelleisten der Fenster.

Festlegen der Ein-/ und Ausgänge

Über die Buttons bzw. das Menü Signal können die Eingänge und Ausgänge eingegeben, geändert bzw. gelöscht werden.
Neu: Es öffnet sich ein Dialogfenster, indem man den Namen des Inputs / Outputs und bei Inputs den Initialwert festlegen können. Ein Name darf Buchstaben, Ziffern und die Zeichen "/" und "_" enthalten, wobei das erste Zeichen keine Ziffer sein darf.
Ändern: Nach der Auswahl des Ändern-Buttons oder der Menüs Ändern klickt man den zu ändernden Input / Output an. Es erscheint das Dialogfenster, indem man die Änderungen vornehmen können.
Löschen: Nach der Auswahl des Löschen-Buttons oder der Menüs Löschen klickt man den zu löschenden Input / Output an. Dieser wird dann gelöscht.

Entwurf des zugrundeliegenden Automaten mit Hilfe des Editors

Über das Menu Automat-Editor gelangt man in den Automaten-Editor. Der linken Bereich enthält die Buttons und darunter das Eingabefeld. Rechts befindet sich die Zeichenfläche.

Der Editor arbeitet Modus-orientiert. Die Buttons haben dabei folgende Bedeutung:
Zustände: Durch Anklicken des Buttons "Zustand" gelangt man in den Modus zum Einfügen der Zustände. Es können nun beliebig viele Zustände durch Klicken in die rechte Zeichenfläche eingegeben werden.
Transitionen: Durch Anklicken des Buttons "Transition" gelangt man in den Modus zum Einfügen der Transitionen. Zum Eingeben einer Transition werden die beiden zu verbindenden Zustände nacheinander ausgewählt. Beim Anklicken des ersten Zustandes färbt sich dieser rot. Danach wird der Folgezustand angeklickt. Die Transition wird eingefügt. Der Folgezustand bleibt zunächst ausgewählt (rot), so daß er schon der Ausgangszustand für die nächste Transition ist. Durch Klicken ins "Leere" wird er wieder deselektiert und ein anderer Ausgangszustand kann angeklickt werden.
Löschen: Durch Anklicken des Buttons "Löschen" gelangt man in den Löschmodus. Alles, was im Löschmodus angeklickt wird, wird gelöscht. Bei Zuständen werden auch die zugehörigen Transitionen gelöscht.
Startzustand: In diesem Modus kann man durch Anklicken den Startzustand festlegen. Es muß in jedem Automaten ein Startzustand festgelegt werden.
Bewegen: Im Bewegen-Modus können Zustände und Kommentare verschoben werden. Bei Zuständen verschieben sich die Transitionen dabei mit. Außerdem können Transitionen und Zustände ausgewählt werden, um im Eigenschaftsfeld die Übergangsbedingungen, die Ausgabefunktionen, sowie die Namen der Zustände festzulegen. Für einen Kommentar kann im Eigenschaftsfeld der Text festgelegt werden.

Kommentar: Hier lassen sich auf der Zeichenfläche Kommentare einfügen. Diese sind umrandet und dürfen mehrere Zeilen umfassen. Durch Anklicken des "Übernehmen"-Buttons wird der Text in den Kommentar übernommen.

Definition der logischen Übergangsbedingungen und Ausgabefunktionen und Ändern der Zustandsnamen

Beim Anklicken einer Transition (im Bewegen-Modus) erscheint unter den Buttons ein Textfeld, das die logische Übergangsfunktion enthält. Dabei gilt folgende Syntax:

& : logisches AND

| : logisches OR

! : logisches NOT

Bei von einem Zustand ausgehenden Transitionen kann eine der Übergangsfunktion auch nur den "*" enthalten. Der "*" steht für alle anderen Belegungen, d.h. diese Transition ist aktiviert, wenn keine andere von diesem Zustand ausgehende Transition aktiviert ist.

Überprüfung des Automaten auf Korrektheit

Durch Anklicken von "FSM testen" (im Editor) wird der aktuelle Automat auf Korrektheit überprüft. Eventuelle Fehler werden in einem Fenster ausgegeben. Bei komplexeren Automaten kann dies einige Minuten dauern (neben der größe des Automaten ist die Anzahl der Inputs entscheident für den Zeitbedarf). Dabei wird zunächst überprüft, ob überhaupt Zustände und Transitionen vorhanden sind, und ob einer der Zustände als Startzustand definiert wurde. Danach werden alle möglichen Belegungen durchgegangen und festgestellt, ob jeweils genau eine Transition aktiviert ist. In einem Dialogfenster werden dabei Statusmeldungen und gegebenenfalls Fehler ausgegeben

Zwischen Editier- und Simulationsmodus hin- und herschalten

Das Programm unterscheidet zwischen Editier- und Simulationsmodus. Im Editiermodus können Inputs / Outputs festgelegt und der Automat eingegeben werden. Im Simulationsmodus können Inputwerte verändert, Takte generiert und das Impulsdiagramm angezeigt werden. Den Modus wechselt man über das Menü Simulation-Simulieren bzw. Simulation-Editieren. Beim Wechsel vom Simulations- in den Editiermodus gehen alle bisherigen Simulationsdaten verloren.

Simulation durch Verändern der Eingangswerte und Taktgebung

Nachdem in den Simulationsmodus gewechselt wurde, können die Werte der Inputs durch Anklicken verändert werden. Durch Anklicken des Takt-Buttons oder über das Menü Simulation-Takt kann ein Takt generiert werden. Der Automat berechnet dabei den Folgezustand und wechselt in diesen. An den Ausgängen (Outputs) liegen nun die Werte der Ausgabefunktionen dieses Zustandes an. Durch Anklicken von Reset (oder Menü Simulation-Reset) geht der Automat in den Ursprungszustand zurück (Startzustand, Initialwerte der Inputs, Outputwerte der Ausgabefunktion des Startzustandes). Das Impulsdiagramm wird ebenfalls zurückgesetzt.

Ausgabe des Simulationsergebnisses im Impulsdiagramm

Über das Menü Impulsdiagramm-Anzeigen (nur im Simulationsmodus aktiv) öffnet sich das Impulsdiagramm.

Export des Automaten im VHDL/ KISS-Format

Über das Menü Datei-Konvertieren-VHDL bzw. Datei-Konvertieren-KISS läßt sich der Automat im VHDL bzw. KISS-Format ausgeben. Da ein Applet aus Sicherheitsgründen weder Drucken noch speichern kann, wird der Text in einem Textfeld ausgegeben, von wo er mit Copy und Paste in einem normalen Editor gespeichert werden kann.


JavaFSM TECH Ulrich Dallmann Karola Krönert