TU Ilmenau Fakultät IA Institut TTI Fachgebiet Rechnerarchitekturen Praktikum zu MLDesigner und POLIS überarbeitet von Daniel Koch Dieses Praktikum gehört zu der Lehrveranstaltung Rechnerentwurf Das Praktikum besteht aus drei Teilen: I Einarbeitung mit MLDesigner (ohne Polis): Ausprobieren mit Demo-Beispielen, Eingabe und Erprobung eines kleinen Systems II Entwurf und Simulation mit MLDesigner und Polis Entwicklung und simulative Untersuchung einer steuerungstechnischen Anwendung für die Ablaufsteuerung bei einer Modelleisenbahn III Implementierung und Erprobung Übersetzung der im I entwickelten Anwendung in ein ablauffähiges Programm und Erprobung auf einem Zielsystem mit angeschlossener Modelleisenbahn Literaturhinweis: Benötigte und weiterführende Informationen sind referiert auf: http://www.theoinf.tu-ilmenau.de/ra/skripte/re/
: Einarbeitung mit MLDesigner 1. Einleitung Im Rahmen dieses Teils soll ein Einblick in das Arbeiten mit MLDesigner gegeben werden. Es werden die grundlegenden Vorgehensweisen vorgestellt, die später in einer Aufgabe umgesetzt werden sollen. Dabei werden in MLDesigner enthaltene Beispiele und Elemente, aber auch eigene Elemente, eingesetzt. Das System Polis wird in diesen Teil nicht mit einbezogen. MLDesigner ist ein grafisches Entwicklungstool, mit dem komplexe Systeme durch eine hierarchische Strukturierung erstellt und simuliert werden können. Es läuft auf einem LINUX- System mit X-Windows. Im folgenden seien kurz die wichtigsten Begriffe der Hierarchie im MLDesigner erläutert: Primitive, FSM Module System Domain Library Dies sind die kleinsten Funktionseinheiten in MLDesigner. Sie bestehen in der Regel aus C++ - Codefragmenten oder im Falle einer FSM aus einer grafischen Darstellung einer Zustandsmaschine. Ein Modul kann Primitive, FSM (Finite State Machine), Ein- und Ausgangsports und andere Module enthalten. Das heißt, es ist möglich, Elemente (auch Module) zu größeren Modulen zusammenzufassen. Ein System kann Primitive, FSM und Module enthalten. Ein komplettes System kann ausgeführt bzw. simuliert werden und stellt in der Regel die oberste Ebene des Entwurfs dar. Eine bestimmte Implementierung eines Berechnungsmodells. Enthält eine Sammlung von Primitiven oder FSM, die in eigenen Simulationen verwendet werden können. Hierbei ist allerdings darauf zu achten, dass kompatible Domains verwendet werden. 2. Start von MLDesigner und Arbeit mit Demo-Beispielen Um sich einen Überblick über die grundlegenden Zusammenhänge zu verschaffen, probieren Sie zunächst einige Demos von MLDesigner aus. Dabei sollen Sie sich auch mit einigen grundlegenden Befehlen zum Navigieren in einem MLDesigner-Modell vertraut machen. Zum Starten von MLDesigner öffnen Sie einfach eine Konsole und geben mld2 ein. Nach einer Weile sollte dieses Fenster (mit leerem Anzeigefenster) erscheinen. Die wichtigsten Elemente werden hier erläutert. - 2 -
Werkzeugleisten zum Editieren von Modellen Liste der Libraries, Primitive, FSM und Module Statusfeld, enthält Informationen zu Elementen Konsole, enthält Informationen und Fehlermeldungen beim Simulieren Anzeigefenster Nach dem Start können Sie nun einige im MLDesigner enthaltene Demos starten. Dazu wählen Sie links in der Liste z.b. unter MLD Libraries FSM Demo reflexgame das System ReflexGame und öffnen es mit einem Doppelklick. Nun sollte die Anzeige so aussehen wie oben. Durch Drücken auf den Button, in der unteren der beiden Werkzeugleisten, wird das Simulationskontrollfenster (siehe links) aufgerufen. Hier wird nun durch Drücken auf GO die Simulation gestartet und es werden einige Skripte aufgerufen, die für Ein- und Ausgaben (Tasten und Anzeigen) verantwortlich sind. Die Simulation wird automatisch beendet, wenn die Simulationszeit abgelaufen ist (schwarzer Balken). Es ist auch möglich, die Simulation mit Early end vorzeitig zu beenden oder durch ABORT abzubrechen. Beim vorzeitigen Beenden mit Early End werden in einigen Systemen noch Auswertungen angezeigt, bei ABORT ist dies nicht der Fall. WICHTIG! 1. Soll eine Simulation vor Ablauf der Simulationszeit abgebrochen werden, IMMER zuerst auf ABORT und DANN auf CLOSE klicken. Wird die Simulation durch Klicken auf beendet, kann das Programm MLDesigner unter Umständen abstürzen. 2. Sollten Fehler auftreten, wie z.b. Ports cannot connected, dann sollten Sie Ihre aktuelle Arbeit sofort speichern und das Programm neu starten. - 3 -
3. Analyse vorhandener Systeme Wenn Sie ein System aufgerufen und simuliert haben, nehmen Sie sich etwas Zeit und schauen sich die Systeme genauer an, bevor Sie ein eigenes System erstellen und simulieren (Abschnitt 4.). Der Aufbau ist meist so, dass Elemente zur Ein- und Ausgabe vorhanden sind (Man soll ja auch etwas eingeben und etwas sehen können.), und dazwischen befinden sich die Elemente, welche das Verhalten des Systems beschreiben. Um sich den inneren Aufbau der Elemente anzusehen, wählen Sie ein Element mittels Doppelklick aus. Bei einem Modul oder System sehen Sie daraufhin die innere Struktur, welche aus anderen Elementen und Verbindungsleitungen besteht. Die Beschreibung der Primitiven erfolgt entweder durch eine Programmiersprache (Keine Angst, Sie brauchen diese nicht zu analysieren!) oder durch eine Finite State Machine (FSM) in grafischer Form. Bei solchen Elementen sehen Sie, nach dem Doppelklick, zuerst die äußere Struktur, d.h. die Primitive als Block mit seinen Ein- und Ausgängen. Drücken Sie nun die Taste F (bei FSM-Primitiven) bzw. S (bei anderen Primitiven), um sich die Implementierung anzusehen. Schauen Sie sich vor allem FSM-Primitive an. Gewinnen Sie dadurch einen Einblick in die Funktionsweise von MLDesigner und die Gestaltung von Simulationen. Eine andere Variante wie Sie sich die Implementierung von Primitiven ansehen können ist, diese Elemente mittels Einfachklick anzuwählen und die Taste S zu drücken. Weitere Informationen finden Sie in den Online-Dokumentationen der jeweiligen Elemente. Wählen Sie dazu ein Element aus und drücken Sie die Taste D oder den Button in der Werkzeugleiste. 4. Eigene Modelle erstellen Bevor Sie mit diesem Punkt fortfahren, sollten Sie erst einmal alle bisher geöffneten Anzeigefenster im MLDesigner schließen. Im diesem Abschnitt wird erläutert, wie Sie eigene Modelle erstellen und ausführen können. Zu diesem Zweck sollen Sie nun ein Beispielsystem nach Anleitung erstellen. Als erstes erstellen Sie eine eigene Library, damit Sie Ihre Module, Systeme und Primitive in dieser speichern können. In die Standard-Libraries von MLDesigner können Sie nicht schreiben, da diese schreibgeschützt sind. Das Erstellen von Libraries und Systemen wird im Unterpunkt 4.1 und 4.2 beschrieben. Das Beispielsystem soll mit dem Element SinGenTbl Sinussignale erzeugen. Während der Simulation soll es möglich sein die Signale mit einem Schieberegler in der Amplitude zu verändern. Das Sinussignal wird dazu mit dem Einstellwert des Schiebereglers multipliziert (Mpy) und anschließend mit einem Anzeigescript (TkXYPlot) dargestellt. Ein Schieberegler kann durch das Element Tkslider erzeugt werden. Die Ein- und Ausgabefenster werden erst dargestellt, wenn die Simulation gestartet wird. Wie Sie die entsprechenden Elemente finden und einfügen, erfahren Sie im Unterpunkt 4.3. Hinweis: Selbst eingegebene Modelle sollten Sie des Öfteren speichern, da ab und zu Programmfehler auftreten, die zum Absturz von MLDesigner führen können und somit nicht gespeicherte Daten verloren gehen. - 4 -
4.1 Library erstellen Wählen Sie File vom Menü und klicken Sie auf New oder klicken Sie auf in der oberen Werkzeugleiste. Es erscheint daraufhin der Create New Model Dialog. Führen Sie dann folgende Schritte aus: 1. Library im Scroll-Down-Menü Type of Model wählen. 2. Geben Sie einen Namen für die Library bei Logical Name ein, z.b.: praktikum. 3. Das Feld Library lassen Sie frei, sonst wird ihre Library als Untermenge einer bestehenden Library angelegt. 4. Das Feld Physical Name wird automatisch ausgefüllt. 5. Wenn Sie möchten, können Sie im Feld Description auch eine Beschreibung der Library eingeben. 6. Klicken Sie auf OK. Die neu angelegte Library erscheint nun in der Libraryliste unter My Libraries. Achten Sie darauf, dass unterhalb der Libraryliste die Registermarke File ausgewählt ist. 4.2 Ein System erstellen Um eine Simulation durchführen zu können, benötigen Sie ein System. Dieses enthält dann alle notwendigen Elemente, Verbindungen ( Verdrahtung ), Ein- und Ausgabeelemente. Wählen Sie, wie bereits zuvor, New Model aus dem Menü FILE bzw. drücken Sie den Button. 1. Im Scroll-Down-Menü System wählen. 2. Geben Sie einen Namen für das System bei Logical Name ein, z.b.: sinussim 3. Im Feld Library wählen Sie die im vorherigen Schritt erstellte Library (hier: praktikum). 4. Als Domain wählen Sie bitte SDF (synchroner Datenfluss); dies ist wichtig für das nachfolgende Beispiel. 5. Das Feld Physical Name wird automatisch ausgefüllt. 7. Wenn Sie möchten, können Sie im Feld Description auch eine Beschreibung des Systems eingeben. 6. Klicken Sie auf OK. - 5 -
4.3 Elemente hinzufügen und simulieren Fügen Sie nun dem gerade erstellten System die nachfolgend aufgeführten Elemente hinzu, indem Sie diese in der Library-Liste auswählen und mit gedrückter linker Maustaste in das geöffnete System im Anzeigefenster ziehen. 2x TkSlider (aus MLD Libraries SDF TclTk); Bei diesem Element öffnet sich nach dem Ziehen in das System noch eine Dialogbox. Bei dieser wählen Sie TkSlider.output=1. 2x SinGenTbl (aus MLD Libraries SDF Sources) 2x Mpy (aus MLD Libraries SDF Arithmetic); Bei der sich hier öffnenden Dialogbox wählen Sie Mpy.input=2. 1x TkXYPlot (aus MLD Libraries SDF TclTk); Auch hier öffnet sich noch eine Dialogbox, bei der Sie TkXYPlot.X=1.Y=1 wählen. Anschließend verbinden Sie die Ports der Elemente. Dazu machen Sie einen Doppelklick auf einen Port und zeichnen dann die Linie bis zum entsprechenden Ziel. Das System sollte dann prinzipiell so aussehen wie auf der Abbildung. Ändern Sie nun noch einige Parameter der Elemente. Wählen Sie dazu nacheinander die Elemente aus und ändern Sie im Statusfeld (im MLDesigner unten links) die entsprechenden Werte. Bei einem Sinusgenerator stellen Sie die numberofperiods auf 3. Bei dem anderen Sinusgenerator stellen Sie die numberofperiods auf 2. Bei TkXYPlot ändern Sie den Wert persistence auf 300 und den style von dot auf connect. Starten Sie nun die Simulation durch Drücken auf. Ändern Sie aber vor dem Drücken auf GO im Simulationskontrollfenster noch die Run Length von 100 auf 100000, da die Simulation sonst zu schnell beendet ist. Während die Simulation läuft, können Sie durch Ändern der Schieberegler (in einem der Simulationsfenster) die Simulation beeinflussen. Die zwei Sinusgeneratoren generieren jeweils ein Sinussignal mit der eingestellten Periodenzahl. Durch die Schieberegler können die Amplituden der Signale beeinflusst werden, dazu wird der Wert des Schiebereglers mit dem des Sinussignals multipliziert. Die beiden Sinussignale werden auf das Anzeigeelement gegeben, wobei ein Signal die x- Koordinate und das anderes Signal die y-koordinate bestimmt. Nach erfolgreicher Simulation können Sie nun noch mit dem Programm MLDesigner experimentieren. Sie könnten zum Beispiel die Periodenzahlen variieren. Oder verwenden Sie andere Elemente zum Erzeugen oder Verknüpfen der Signale. Sie können natürlich auch andere Elemente zur Anzeige verwenden. Hinweis: Wenn Sie Anzeigeelemente aus dem Bereich Sinks der Domain SDF verwenden, werden die Resultate erst am Ende der Simulationszeit oder nach dem Drücken von Early end angezeigt. Nach dem Erproben und Simulieren beenden Sie MLDesigner. - 6 -
ANHANG: Die wichtigsten Buttons der Werkzeugleisten im MLDesigner: Allgemeine Funktionen: Neues Element, System oder Library erstellen Vorhandenes Modell öffnen Aktives Modell speichern Alle geöffneten Modelle speichern Online Dokumentation des gewählten Modells oder Elements aufrufen Bearbeiten Löschen Ausschneiden Kopieren Einfügen Zoom Zoom in Zoom out passend zoomen Fenster Fenster mit den Libraries ein-/ausblenden Statusfenster ein-/ausblenden Konsole ein-/ausblenden DataType-Fenster ein-/ausblenden vorheriges Fenster anzeigen nächstes Fenster anzeigen Modelle im Anzeigefenster hintereinander anordnen Modelle im Anzeigefenster nebeneinander anordnen Vollbildmodus Untere Werkzeugleiste Auswahltool Zoomtool Tool zum Navigieren im Modell Eingangsport hinzufügen Ausgangsport hinzufügen Zustand zu einer FSM hinzufügen (wird nur angezeigt beim Bearbeiten einer FSM) Transition hinzufügen (wird nur angezeigt beim Bearbeiten einer FSM) Simulation starten Modell auf Fehler überprüfen - 7 -