Im Verdrahten-Modus kann man die Komponenten (Gatter, Buttons etc.) bewegen, Drahtverbindungen erzeugen und trennen, sowie Gatterein- und ausgänge invertieren.
Um Drahtverbindungen zu erzeugen, gibt es mehrere Möglichkeiten
Man geht mit dem Mauszeiger über einen beliebigen Anschluss einer Komponente, klickt dort und zieht. Dann wird automatisch ein Draht erzeugt, der über ein Ende mit dem Anschluss verbunden ist und dessen anderes Ende mit der Maus bewegt wird, bis ein passender Anschluss gefunden wird oder man klickt.
Man geht mit dem Mauszeiger über ein Drahtende und klickt dort, während man die STRG-Taste gedrückt hält. Das weitere Verhalten wie oben.
Man geht mit dem Mauszeiger über einen Draht und klickt dort, während man die STRG-Taste gedrückt hält. Lässt man direkt los, wird nur ein neuer Knoten erzeugt (d.h. aus einem Draht werden zwei), zieht man die Maus stattdessen vom Draht weg, wird zudem ein neuer Draht erzeugt.
Um eine Komponente an einen Draht anzuschließen kann man entweder
auf ein vorhandenes Drahtende klicken, es zu einem Anschluss der Komponente ziehen und dort loslassen,
oder die Komponente anklicken und mit gedrückter STRG-Taste in die Nähe schon vorhandener Drähte ziehen. Befinden sich in der Nähe der Komponentenanschlüsse Drahtenden, so werden diese mit den Anschlüssen verbunden (falls zulässig).
Um Drahtverbindungen zu trennen geht man mit dem Mauszeiger auf ein Drahtende und klickt mit gedrückter SHIFT-Taste. Um die Verbindung eines Drahtes mit einem Anschluss zu trennen klickt man auf den entsprechenden Anschluss und zieht das Drahtende weg. Durch Drücken der SHIFT-Taste beim Bewegen eines Drahtendes können Sie verhindern, dass ungewollte Verbindungen entstehen.
Um Gatteranschlüsse zu invertieren klickt man diese mit gedrückter ALT-Taste an.
Schalter, Oszillatoren und Lampen haben jeweils vier Anschlüsse (oben, unten, rechts und links), es kann aber nur maximal einer mit einem Draht verbunden werden.
Es ist nicht möglich, die Drähte zu geschlossenen Wegen zu verbinden, d.h. jede Zusammenhangskomponente von Drähten bildet einen Baum. Dieser Baum kann an maximal einer Signalquelle (Gatterausgang, Schalter oder Oszillator) angeschlossen sein.
Im Löschen-Modus kann man beliebige Komponenten löschen. Dazu klickt man diese an.
Im Drehen-Modus kann man Gatter, Flipflops und Register um jeweils 90 Grad drehen. Dazu klickt man diese an.
Mit On / Off kann man die Simulation der Schaltung aktivieren bzw. deaktivieren.
Im Stepmodus kann man die Simulation schrittweise ablaufen lassen. Beim Einschalten des Stepmodus erscheint eine Schaltfläche "NEXT", die durch Betätigen die Simulation einen Zeitschritt weiterfahren lässt. Eine Besonderheit des Stepmodus ist, dass die Gatter, die im letzten Zeitschritt ein Eingangssignal erhalten haben, rot eingefärbt werden. Dadurch kann man zum einen den Signalfluss besser verfolgen, zum anderen haben diese Gatter ja noch keine neuen Ausgangssignale weitergegeben, d.h. die Werte an den Ein- und Ausgängen sind unter Umständen nicht konsistent. Laufzeitglieder bleiben so lange rot, bis sie die verzögerten Signaländerungen weitergegeben haben.
Auf der linken Seite befindet sich das Komponentenmenü. Klickt man einen Komponentenbutton an und lässt los, so kann man danach durch Klicken auf der Konstruktionsfläche beliebig viele entsprechende Komponenten erzeugen. Klickt man einen Komponentenbutton an und lässt erst auf der Konstruktionsfläche los, so wird an dieser Stelle eine entsprechende Komponente erzeugt und danach sofort in den Verdrahten-Modus gewechselt.
An den Komponentenbuttons befinden sich noch kleine, dreieckige Unterbuttons. Mit diesen gelangt man in die Auswahlmenüs der jeweiligen Komponente(n). Nachfolgend eine Aufzählung der Einstellmöglichkeiten:
Text: Einstellbar sind Kursivschrift und Fettdruck, Über- und Unterstreichung, Sub- und Superscripts sowie die Schriftgröße (die einzutippen ist). Bei Überstreichung, Sub- und Superscripts ist der Text nur einzeilig. Man kann für Signalquellen (Button, Calliper, Oszillator) und Signalsenken (Lampe und Siebensegmentanzeige) auch Labels vergeben. Hierzu klickt man den Text-Button, und klickt oder zieht dann auf die entsprechende Komponente. Der jeweilige Text wird dann mitgezogen, wenn man die Komponente bewegt. Labels sind immer nur einzeilig.
Button: Hier kann man den normalen Button (Kippschalter) wählen, den Calliper (Tastschalter), den Oszillator und die konstanten Signalquellen HI und LO. Zudem kann man noch eine Größe (Size) eintippen.
Lamp: Man kann statt der Lampe noch die Siebensegmentanzeige (7-Seg) und die Siebensegmentanzeige mit integriertem 4-Bit Hexadezimal-dekodierer (7-Hex) auswählen, sowie die Größe eintippen.
And / Or: Auswählbar ist die Anzahl der Eingänge und die Nand/Nor-Variante.
Xor: Hier ist noch das Xnor auswählbar.
Thresh: Die Threshold-Gatter sind Schwellenwertgatter, die genau dann eine Eins ausgeben, wenn an mindestens so vielen Eingängen, wie durch den Schwellenwert (engl. Threshold) angegeben, eine Eins anliegt. Die Threshhold-State-Gatter behalten die Eins am Ausgang solange bei, bis an allen Eingängen wieder eine Null anliegt. Logischerweise kann der Schwellenwert die Anzahl der Eingänge nicht überschreiten.
Adder: Dies ist das Addierer-Auswahlmenü. Man kann zwischen dem Halb- und Volladdierer und dem Carry-Lookahead fähigen Volladdierer wählen.
Mux: Hier sind Multiplexer und Demultiplexer auswählbar. Beim Multiplexer ist die Anzahl der Eingänge wählbar, beim Demultiplexer die Anzahl der Ausgänge sowie der Wert, den die nicht selektierten Ausgänge annehmen sollen.
RS-FF: Dies ist das Flipflop-Auswahlmenü. Man kann zwischen dem RS-, JK-, D- und T-Flipflop wählen, und je nach Flipflop noch eine Clock, Taktflankensteuerung oder die Master-Slave-Variante einstellen. Ist bei einem Flipfloptyp eine oder mehrere dieser drei Varianten ohnehin obligatorisch, so werden diese automatisch ausgewählt. Zusätzlich kann man (außer beim einfachen RS-Flipflop) noch asynchrone set- und reset-Eingänge hinzufügen.
Register: Hier gibt es ein Schieberegister und einen Zähler: Es ist jeweils einstellbar, aus wie vielen Flipflops sie bestehen sollen, und ob diese Master-Slave-Flipflops sind. Der Rest-Eingang (R) ist aber davon nie betroffen!
Delay: Hier kann man zwischen einem idealen Laufzeitglied (ideal), einem trägen Laufzeitglied (absorb) wählen. Wählt man zusätzlich "two-way", so gibt es eine Verzögerungszeit für den Wechsel von Null nach Eins (links), und einen für den Wechsel von Ein nach Null (rechts). Diese Verzögerungszeiten sind direkt auf dem Laufzeitglied durch Eintippen einstellbar.
Misc: Hier gibt es den Inverter und den
Logic-Analyzer: Dieser ist sozusagen ein digitales Oszilloskop und kann man zum einen als gewöhnliche Signalsenke verwenden. Hierzu befinden sich links Anschlüsse, die man wie bei den anderen Komponenten benutzen kann. Das Oszilloskop kann aber auch als Analysehilfsmittel verwendet werden. Hierzu befindet sich rechts von jedem Anschluss ein nummerierter Messpunkt, den man auf einen beliebigen Draht in der Schaltung ziehen kann. Evtl. muss man den Messpunkt etwas herumschieben, doch wenn er Kontakt hat, wird der Messpunkt und das entsprechende Token auf dem Oszilloskop grün, und die Signale, die der entsprechende Draht überträgt, werden an den entsprechenden Kanal des Oszilloskops geschickt. Das Oszilloskop hat verschiedene Einstellmöglichkeiten:
ON/OFF: Ein- und Ausschalten.
GRID: Zum Anzeigen vertikaler Linien mit einem Abstand von einem Zeitschritt, um die Signale besser vergleichen zu können.
CLEAR: Die Oszilloskop-Anzeige wird gelöscht.
SIZE: Analog zu den anderen Signalsenken (und Quellen) kann man das Oszilloskop vergrößern, allerdings nur am Oszilloskop selbst und nicht im Auswahlmenü. Man kann die Größen nur ändern, wenn alle Messpunkte am Gerät angedockt sind, ansonsten verschwinden die entsprechenden Schaltflächen.
CHANNELS: Zum Hinzufügen oder Entfernen von Kanälen. Bis zu 16 Kanäle sind möglich.
SCROLL: Dieser Slider erscheint nur, wenn entweder die Simulation oder das Oszilloskop ausgeschaltet wurde. Dann kann man sich die eingegangenen Signale der letzten 200 Zeitschritte ansehen.
SCALE: Hier kann man die Y-Skalierung der Oszilloskop-Anzeige verändern.
Custom: Hier können Sie Eigene Komponenten auswählen, wenn Sie bereits solche erstellt haben
Während ein Auswahlmenü geöffnet ist, kann man durch Klicken auf der Konstruktionsfläche eine Komponente gemäß der Auswahl erzeugen. Klicken auf einen Button im Auswahlmenü und Ziehen auf die Konstruktionsfläche erzeugt eine entsprechende Komponente und bewirkt danach das sofortige Wechseln in den Verdrahten-Modus.
Eine Demonstration aller Komponenten finden Sie hier.
Im Modifizieren-Modus kann man die Eigenschaften bestimmter Komponenten ändern. Hierzu wählt man nach Betätigen des Modifizieren-Buttons aus dem Komponentenmenü eine Einstellung, genauso wie beim Hinzufügen neuer Komponenten. Anschließend klickt (oder zieht) man auf eine schon vorhandene Komponente. Diese wird dann durch eine Komponente gemäß der gewählten Einstellung ersetzt, und auch schon angeschlossene Drähte (soweit Möglich) an die Ein- und Ausgänge angeschlossen. Man kann eine Komponente nur durch eine verwandte Komponente ersetzen, also etwa ein And- durch ein Or-Gatter (oder auch ein Flipflop), oder eine Lampe durch eine Siebensegmentanzeige, aber z.B. nicht einen Button durch ein Halbaddierer.
Im Auswahl-Modus kann man ganze Schaltungsteile auswählen, kopieren und löschen. Das Auswählen geschieht entweder durch direktes anklicken einer Komponente (Additiv mit gleichzeitig gedrückter SHIFT-Taste) oder mit einem Auswahlrahmen (ebenfalls Additiv falls SHIFT gedrückt wird), wobei eine Komponente ausgewählt wird, falls sie den Auswahlrahmen nur berührt, sie muss nicht vollständig im Rahmen sein. Klicken und ziehen einer ausgewählten Komponente bewegt die gesamte Auswahl. Hält man dabei die STRG-Taste gedrückt wird versucht (ähnlich wie beim Bewegen einzelner Komponenten, siehe oben), die Drahtenden und Komponentenanschlüsse in der Auswahl mit anderen Drahtenden und Anschlüssen zu verbinden.
Wenn man in den Auswahl-Modus wechselt verschwindet das Komponentenmenü, und es erscheint ein Untermenü mit folgenden Punkten:
Copy: Die Auswahl wird kopiert.
Paste: Eine (durch "Copy" erstellte) Kopie der Auswahl erscheint etwas versetzt neben der Auswahl, und wird gleichzeitig die neue Auswahl, so dass man sie umherbewegen kann.
Erase: Die Auswahl wird gelöscht.
Relsel.: (Reselect) Die vorige Auswahl wird zur aktuellen Auswahl (Falls man sich mal verklickt, was besonders nach dem Pasten eines größeren Schaltungsabschnitts ärgerlich wäre).
Im Task-Modus kann man Übungsaufgaben der Form "Verbinden sie die vorhandenen Bauteile zu einem Volladdierer" oder "korrigieren sie diese Schaltung" vorbereiten. Dies funktioniert wie folgt:
Konstruieren sie eine korrekte Version der Schaltung (sozusagen die Musterlösung) wie oben beschrieben (also noch nicht im Task-Modus).
Als Signalquellen dürfen Sie hierbei nur Schalter (Button oder Calliper) verwenden. Signalquellen und Signalsenken müssen mit Labels versehen sein.
Wenn die Schaltung fertig ist und die Ein- und Ausgaben mit Labels versehen wurden, wechseln Sie in den Task-Modus.
Hier können sie nun ein Testmuster definieren. Es gibt dazu mehrere Möglichkeiten:
Klick auf Full: Es werden automatisch alle möglichen Eingangswerte an die Schalter angelegt.
Klick auf Start: Eine blinkende Schrift "Testaufnahme" erscheint, und Sie können ein Testmuster eingeben, d.h. Sie klicken auf die Schalter und legen so nacheinander all jene Eingangskonfigurationen an, von denen Sie der Meinung sind, dass diese zum Nachweis der Korrektheit der Schaltung ausreichen. Danach klicken Sie auf "Stopp".
In beiden Fällen werden die zugehörigen Ausgaben automatisch aufgezeichnet.
Es gibt noch die Varianten FullRt und StartRt. Diese funktionieren genauso wie oben beschrieben, es wird jedoch jeweils ein initialer Reset durchgeführt (An alle Signalquellen wird Null gelegt, Flipflops und Register werden zurückgesetzt.
Wenn Sie nun zur Probe auf "Test" klicken, werden die eingegebenen Testmuster nacheinander angelegt und (wenn Sie in der Zwischenzeit nichts geändert haben) die Schaltung als korrekt erkannt. Verlassen Sie nun den Task-Modus.
Speichern Sie diese Schaltung am Besten als Musterlösung ab (die Testmuster werden mitgespeichert).
Modifizieren Sie die Schaltung nun zu einer Aufgabe, indem Sie etwa Drähte löschen, die Verdrahtung oder die Anordnung der Bauteile verändern. Wenn Sie möchten, können Sie noch erläuternden Text hinzufügen.
Die so modifizierte Schaltung speichern Sie nun als die Übungsaufgabe.
Wenn die Schaltung nun mit dem LogiFlash-Viewer geladen wird, wird das Vorhandensein eines Testmusters automatisch erkannt und entsprechend ein Auswert-Button und eine Hilfefunktion mit einer Bedienungsanleitung bereitgestellt. Wie man Schaltungen im LogiFlashViewer anzeigt, lesen sie hier.
Im Eigene Komponenten-Modus kann man eine Eigene Komponente erstellen lassen, basierend auf einer bereits konstruierten Schaltung. Aus beliebigen Schaltnetzen können man eigene Gatter, und aus synchronen sequentiellen Schaltungen (mit genau einem Taktsignal) eigene zustandsbehaftete Komponenten erzeugen. Dies funktioniert wie folgt:
Konstruieren sie ihre Schaltung
Bei der Konstruktion müssen sie einge Sachen beachten:
Die Anschlussrichtung der Signalquellen und -senken entscheidet, wo sich später bei der fertigen Komponente die Ein- und Ausgänge befinden.
Als Signalquellen dürfen Sie hierbei nur Schalter (Button oder Calliper) und als Signalsenken nur Lampen verwenden.
Sind die Signalquellen und Signalsenken mit Labels versehen, übernimmt LogiFlash diese Beschriftung für die Ein- und Ausgänge der neuen Komponente. Diese kann dann nachträglich noch geändert oder gelöscht werden.
Werden FlipFlops in der Schaltung verwendet, sollten diese alle vom gleichen Typ sein. Sollte dies nicht der Fall sein, also normale FlipFlops und MasterSlave-FlipFlops gemischt, wählt LogiFlash per Mehrheitsentscheid einen FlipFlop-Typ aus, der für alle FlipFlops verwendet wird. Werden genauso viele normale FlipFlops wie MasterSlave-FlipFlops verwendet, werden die normalen FlipFlops bevorzugt.
Werden zustandsgesteuerte FlipFlops in der Schaltung verwendet, entspricht das Verhalten der Komponente nach dem Erstellen, als wären flankengesteuerte FlipFlops verwendet worden.
Beim Erstellen der neuen Komponente werden sämtliche Hazards aufgelöst. Die neue Komponente verhält sich Hazard frei.
Es darf nur ein Taktsignal verwendet werden, mehrere Taktsignale sind nicht möglich.
Wechseln Sie mittels des Eigene Komponenten-Buttons in den Eigene Komponenten-Modus. Es erscheint das Eigene Komponenten-Untermenü statt des Komponentenmenüs.
Starten Sie das Erstellen der neuen Komponente mittels des Startknopfs.
Ist die Verhaltensextraktion beendet, können Sie anschließend noch das Aussehen der neuen Komponente editieren.
Beenden Sie das Erstellen mit dem Finish-Button. Sie müssen nun der neuen Komponente einen Namen geben, unter dem sie dann anschließend im Komponentenmenü unter Custom aufgeführt wird.
Wenn Sie über die rechte untere Ecke der fertigen eigene Komponente fahren, erscheint, im Gegensatz zu den vorgefertigten Komponenten, eine kleine Lupe. Wenn Sie auf diese klicken, dann wird Ihnen die zugrunde liegende Schaltung der Komponente angezeigt. Verlassen können Sie diese Darstellung wieder, in dem sie auf die Lupe mit dem Minus, in der oberen linken Ecke des Bildschirms klicken.
Hier kann man die Farbe der Eins-tragenden Kanten festlegen. Diese Farbe wird als Eigenschaft der Schaltung mitgespeichert.
Zum Zoomen der Schaltung den Zoom-Button drücken und bei gedrückter Maustaste den Mauszeiger nach oben zum Hineinzoomen, und nach unten zum Herauszoomen bewegen. Zum Verschieben der Schaltung den Pan-Button drücken, anschließend auf die Konstruktionsfläche klicken und die Schaltung in die gewünschte Position ziehen. Danach wieder auf den Pan-Button klicken.
Alles Löschen löscht die gesamte Schaltung.
Hier erscheint ein Fenster mit einem Textfeld, dessen Inhalt (idealerweise) schon markiert ist. Sollte er nicht markiert sein, bitte den vollständigen Inhalt markieren, indem Sie rechtsklicken und danach im Kontextmenü "Alles markieren" auswählen. Dann kopieren Sie den markierten Inhalt und fügen ihn in einen beliebigen Editor ein. Von diesem speichern Sie die Datei in das Unterverzeichnis "circuits" mit der Dateiendung ".xml".
Nach Eingabe eines Dateinamens (ohne Endung!) wird die Datei aus dem Unterverzeichnis "circuits" geladen.
Flash-Animationen können aus Sicherheitsgründen keine beliebigen Dateien in das Dateisystem Ihres Computers schreiben. Es ist aber möglich, so genannte SharedObjects in ein bestimmtes Verzeichnis (welches u.a. vom Ort der Animation abhängt) innerhalb von Dateien mit der Endung ".sol " abzulegen. Diese Möglichkeit wurde hier verwendet, um sozusagen ein eigenes LogiFlash-Dateisystem zu realisieren, so dass Sie nicht für jede Sicherheitskopie die umständlichere Copy&Paste Lösung verwenden müssen.
Nach Klicken auf einen der beiden Buttons öffnet sich ein Fenster, dass sich im Großen und Ganzen so verwenden lässt wie Dateidialoge, die Sie aus anderen Anwendungen kennen. Sie müssen allerdings immer mit "Save" bzw. "Load" bestätigen, da Flash keine Doppelklicks kennt. Mit "Delete" können Sie Dateien aus dem Filesystem entfernen, und mit "Cancel" brechen Sie die Operation ab. Ansonsten ist folgendes zu beachten:
Wenn Sie LogiFlash aus zwei verschiedenen Verzeichnissen oder Internetseiten heraus verwenden, werden auch jeweils zwei verschiedene Dateisysteme angelegt, die sich leider nicht untereinander austauschen können. Ordner können im Moment noch nicht angelegt werden.
In einzelnen Fällen kam es zu Instabilitäten derart, dass Dateien ungewollt gelöscht wurden. Wichtige Dateien sollten Sie also unbedingt auch mit der oben beschriebenen Copy&Paste-Lösung sichern.
Auch zum Exportieren der Schaltungen, um Sie später mit dem LogiFlashViewer anzuzeigen, kommen Sie leider nicht um die obige Copy&Paste-Lösung herum. Wie man Schaltungen im LogiFlashViewer anzeigt, lesen sie hier.
Tipp: Wenn Sie genau wissen möchten, wo die Dateien abgelegt werden, suchen Sie nach der Datei "directory.sol".
Beispiele von LogiFlash Pfaden für den User Gast an der TU-Dresden:
1. Windows Vista
C:\Users\Gast\AppData\Roaming\Macromedia\Flash Player\#SharedObjects\E4P5ZJ7F\mr.inf.tu-dresden.de\studium\winter\infet1\logiflash\LogiFlash.swf
2. Linux
/home/gast/.macromedia/Flash_Player/#SharedObjects/G9AAKLYU/mr.inf.tu-dresden.de/studium/winter/infet1/logiflash/LogiFlash.swf
Nach dem Kopieren einer Datei wird diese beim Versuch sie zu laden nicht mit angezeigt. Nach dem Eintippen des Namen ohne .sol wird die Schaltung aber geöffnet. Tippt man den Namen auch noch einmal beim Save ein, dann wird die Schaltung beim nächsten Öffnen auch mit angezeigt.Hier erscheint wieder ein Fenster mit einem Textfeld, dessen Inhalt sie wie beim Export als XML-Datei per Copy&Paste übernehmen müssen. Alle Feinheiten des VHDL-Exports können hier nicht erläutert werden, aber auf einige Punkte sei hingewiesen:
Die Labels der Signalquellen und -senken werden als Signalnamen übernommen. Sind keine Labels vergeben, werden generische Namen erzeugt.
Durch Ticken der Box "Delay" bekommen alle Gattern, Flipflops und Registern eine ideale Verzögerungszeit von einer Nanosekunde. Ist diese Box nicht angetickt, sind diese Komponenten verzögerungsfrei.
Durch Klicken auf die Box "Stimuli-Rumpf" wird zusätzlich eine Stimuli mit Configuration angehängt, in der Sie nur noch die Wertzuweisungen der Signale zur Simulation der Schaltung mit einem VHDL-Compiler ergänzen müssen.
...bitte aufschreiben und mir zukommen lassen.
Markus Damm
Professur für Technische Informatik
FB 15, Institut für
Informatik
Johann-Wolfgang-Goethe-Universität Frankfurt am
Main
Robert-Mayer-Straße 11-15
D-60054 Frankfurt
Tel:
069-798-28365 [+49-69-798-28365]
Fax: 069-798-22351
[+49-69-798-22351]
Stand: 20.9.2004