JavaFSM

von Karola Krönert und Ulrich Dallmann

Beispielautomat

Um die Funktionsweise von JavaFSM zu erläutern, soll nun ein 2-bit-Auf- / Abwärtszähler konstruiert werden. Dieser ist unter dem Namen "Counter" in den Beispielen enthalten.

Da wir keine asynchronen Ausgaben benötigen, reicht ein Moore-Automat. Entweder wählen wir diesen schon beim Start von JavaFSM aus, oder wir stellen dies danach im Menü "Automat" ein.

Nun benötigen wir zwei Eingänge (Inputs) mit den Namen "auf" und "stop". Der erste bestimmt die Zählrichtung und der zweite hält den Zähler an. Außerdem benötigen wir die zwei Ausgänge (Outputs) mit Namen "d0" und "d1".

Über das Menü Automat - Automaten-Name können wir dem Automaten einen Namen geben. Dieser erscheint dann auch in der Titelleiste der Fenster.

Über den Punkt "Editor" im Menü "Automat" gelangen wir in den Editor und geben dort den Automaten ein.

Zuerst wechseln wir mit dem "Zustand"-Button in den Einfügemodus für Zustände. Mit jedem Mausklick in die Zeichenfläche wird dort ein neuer Zustand eingefügt. Im "Bewegen"-Modus können die Zustände anschließend beliebig angeordnet werden.
Generieren Sie so 4 Zustände.

Nun bilden wir zwei gegenläufige Kreise von Transitionen, indem wir zunächst mit dem "Transitionen"-Button in den entsprechenden Modus wechseln und dann von Zustand zu Zustand klicken. Dabei wird von einem vorher selektierten Zustand (rot markiert) eine Transition zu dem neu angeklickten Zustand eingefügt. War noch kein Zustand rot markiert, dann wird der Zustand lediglich selektiert.

Um stoppen zu können, braucht jeder Zustand noch eine Transition auf sich selbst (Schleife). Dazu klicken wir jeden Zustand zweimal an.

Um den Zuständen sinnvolle Namen zu geben, klicken wir diese im "Bewegen"-Modus an. Daraufhin werden unten links im Fenster die Eigenschaften des Zustandes eingeblendet. Im Eingabefeld kann der Name geändert werden. Mit einem "Return" wird diese Änderung übernommen. In unserem Beispiel nennen wir die Zustände "00", "01", "10" und "11".

Außerdem können in dem Eigenschaftsfeld die Ausgabewerte des Zustandes (für d0 und d1) festgelegt werden. Dazu werden die entsprechenden Outputs in der Liste ausgewählt und der Wert eingestellt:

Da es sich in diesem Beispiel um einen Moore-Automaten handelt, kann hier nur "0" oder "1" angegeben werden. Bei Mealy-Automaten ist es an dieser Stelle auch möglich, komplexere Funktionen anzugeben.

Anschließend werden die Übergangsbedingungen der Transitionen festgelegt. Durch Anklicken der Transitionen (im "Bewegen"-Modus) erscheint im Eigenschaftsfeld ein entsprechendes Eingabefeld.
Auch hier werden Änderungen erst nach einem "Return" übernommen.
Für Transitionen, die im Uhrzeigersinn verlaufen, geben wir "auf&!stop" ein, für Transitionen, die entgegen des Uhrzeigersinns verlaufen, geben wir "!auf&!stop" ein. Für Schleifen lautet die Übergangsbedingung "stop".

Jetzt wählen wir noch einen Zustand als Startzustand aus, indem wir zuerst den "Startzustand"-Button und danach den Zustand "00" anklicken.

Zusätzlich besteht die Möglichkeit, den Automaten mit Kommentaren zu versehen. Dabei wechselt man in den Kommentar-Modus und fügt den Kommentar ein. Im Eigenschaftsfeld kann dann der Text für den Kommentar eingegeben und durch Anklicken des Buttons übernommen werden.

Abschließend können wir den Automaten noch mit "FSM testen" auf Korrektheit überprüfen. Dabei sollte es zu folgender Ausgabe kommen:

Wir wechseln jetzt in den Simulationsmodus, indem wir im Hauptfenster den Menüpunkt "Simulieren" im Menü "Simulation" anwählen. Im Delta-Schaltnetz ist nun der Automat zu sehen. Der aktuelle Zustand und die momentan aktive Transition sind rot markiert. Durch Anklicken können wir die Werte der Inputs ändern. Mit einem Klick auf den "Takt"-Button wird der Folgezustand berechnet und der Automat wechselt in diesen über. Die Outputs nehmen die in diesem Zustand festgelegten Werte an.

Über "Anzeigen" im Menü "Impulsdiagramm" kann man sich das Impulsdiagramm anzeigen lassen.

Zum Speichern des Automaten im ruft man im Menü Datei den Punkt Speichern auf.

In der Applikation öffnet sich ein Datei-Fenster, in dem man die zu speichernde Datei angeben kann.

Im Applet gibt man in einem Dialogfenster für den Automaten einen Filenamen an. Dabei ist zu beachten, daß alle Automaten im gleichen Verzeichnis auf dem Server gespeichert werden. Daher sollte bei der Namensgebung eine eindeutige Bezeichnung gewählt werden (username_automatenname). Zusätzlich wird ein Paßwort vergeben. Dies schützt vor Überschreiben durch andere Anwender. Nur mit dem richtigen Paßwort kann eine bestehende Datei überschrieben werden. Wird ein bereits verwendeter Dateiname mit einem falschen Paßwort gewählt, so kommt es zu der Fehlermeldung "Datei vorhanden / falsches Paßwort".

Eine gespeicherte Datei kann später über das Menü Datei - Laden und Angabe von Dateiname und Paßwort wieder geladen werden.

In JavaFSM besteht die Möglichkeit, entworfene Automaten nach VHDL und KISS zu exportieren. Dazu wählt man im Menü Datei / Export das gewünschte Format. Leider haben Applets keine Möglichkeit, auf lokale Dateien zuzugreifen. Die Ausgabe erfolgt daher in einem seperaten Fenster, von wo sie mittels "Copy und Paste" weiterverarbeitet werden kann.


JavaFSM TECH Ulrich Dallmann Karola Krönert