LogicSim - Logic-Simulator |
(c) 2002 by A. Tofahrn |
www.tofahrn.de |
![]() |
Die Idee bei diesem einfachen Logik-Simulator lag darin, eine möglichst realitätsnahe Simulation von Logik-Schaltungen zu implementieren. Zwar gibt es einige ähnliche Simulatoren, aber diese simulieren entweder falsch, sind zu teuer zum Spielen oder einfach zu komplex in der Anwendung.
Folglich habe ich beim Entwickeln dieses Simulators einmal versucht, ein möglichs intuitives Erstellen auch umfangreicher Schaltungen zu ermöglichen und auf der anderen Seite die erstellte Schaltung möglichst realitätsnah zu simulieren.
Hier die wesentlichen Merkmale des Simulators:
Die folgende Kurzanleitung soll die wesentlichen Schritte beim Aufbau einer neuen Schaltung vermitteln. Tiefer gehende Tips folgen weiter hinten.
Nach dem Start des Logik-Simulators hat man zunächst eine leere Schaltung vor sich. Am linken Rand findet sich eine Bauteil-Palette mit verschiedenen Kategorien:
Wählen Sie im Register Eingabe das Bauelement TasterHiLo und schieben es mit der Maus in den rechten Bereich, Ihre noch leere Schaltung. Schieben Sie bitte gleich noch einen Taster hinein, plazieren Sie ihn etwas weiter rechts.
Klicken Sie den rechten Taster mit der rechten Maustaste an. Im aufklappenden Kontext-Menü können je nach selektiertem Bauteil verschiedene Einstellungen vorgenommen werden. Bei Gattern können Sie z.B. die Anzahl der Eingänge festlegen, bei komplexeren Bauteilen auch detailiertere Eigenschaften. Aber dazu kommen wir später genauer.
Mit den Zoom-Einstellungen können Sie den sichtbaren Ausschnitt vergrößern bzw. verkleinern. Besitzer einer Maus mit Rad verwenden zum Zoomen allerdings besser das Maus-Rad!
Wir möchten allerdings mit dem Kontext-Menü den rechten Taster einfach umklappen:
Nun können wir zwei Anzeigen hinzufügen. In der Palette findet man eine groß Auswahl von Leuchtdioden. Übrigens: Das Zoomen mit dem Maus-Rad funktioniert auch in der Bauteil-Palette. Ziehen Sie zwei Leuchtdioden in die Schaltung und plazieren Sie diese ungefähr so (denken Sie an das horizontale Umklappen!):
Wie man erkennen kann, leuchten die Dioden bereits. Eigentlich sind es auch keine echten Leucht-Dioden, denn diese hätten ja zwei Anschlüsse! Vielmehr zeigen diese Bauteile den Zustand an ihrem Eingang an und leuchten, wenn dort der sogenannte High-Pegel anliegt.
Um definierte Zustände zu schaffen, simulieren wir TTL-Logik. Diese hat die Eigenschaft, daß offene Eingänge wie High-Pegel interpretiert werden. Das ist der Grund dafür, daß viele reale Logik-Bauteile invertierende Eingänge besitzen und unsere Anzeigen eben leuchten.
Versuchen Sie nun einmal, eine Anzeige mit dem Taster daneben zu verbinden. Bewegen Sie dazu die Maus über den Anschluss-Pin und klicken Sie einmal darauf. Sie werden feststellen, daß Sie nun eine Verbindung aus dem Pin "herausziehen". Wenn Sie nun auf einen weiteren Anschlußpin klicken, haben Sie ihre erste Verbindung erstellt. Wenn Sie eine Anzeige dadurch mit einem der Taster verbunden haben, sollte diese verlöschen.
Klicken Sie einmal auf den Taster und beobachten, was mit der Anzeige passiert!
>Bei komplexeren Verbindungen beginnen Sie wie eben und ziehen Sie eine Verbindung aus dem Pin heraus. Wenn Sie eine Ecke einzeichnen möchten, ziehen Sie die Maus einfach in die grobe Richtung und justieren die Ecke an die gewünschte Position. Durch einen Klick wird das erste Teilstück bestätigt. Verfahren Sie so weiter, bis Sie am gewünschten Ende angekommen sind. Ein weiterer Klick beendet den Verbindungs-Modus wieder:
Sie können den Verbindungs-Modus aber auch jederzeit durch Klicken mit der rechten Maustaste abbrechen. Bereits bestätigte Teilstrecken bleiben bestehen.
Verbindungen können Sie nicht nur an Pins beginnen. Sie können neue Teilstücke auch an einer beliebigen Stelle einer bestehenden Verbindung beginnen. Versuchen Sie doch einmal, die beiden existierenden Verbindungen miteinander zu verbinden.
Wenn Sie das geschafft haben, werden Sie sich sicherlich fragen, was nun bei einem Druck auf einen der Taster passiert. Nun, es ist ein Simulator! Nichts kann kaputt gehen! Also einfach einmal ausprobieren:
Sobald sich durch die unterschiedlich eingestellten Taster verschiedene Pegel ergeben, werden die Probleme durch Rotfärbung der jeweiligen Bauteile signalisiert. Da es nicht möglich ist, mit einer Maus zwei Tasten zu drücken, versuchen wir einmal etwas Anderes!
Verschieben Sie die beiden Taster ein wenig zur Seite. Sie werden feststellen, daß die Verbindungen nicht mitbewegt werden, wie man es eigentlich erwarten würde. Für unseren Simulator ist das aber eine recht angenehme Eigenschaft, denn nun können wir einfach an die Stelle der Taster aus dem Kategorie Eingabe zwei Schalter einsetzen (wir werden später sehen, daß man auch Bauelemente mit den Verbindungen verschieben kann):
Nun können Sie verschiedene Kurzschluß-Szenarien gefahrlos ausprobieren und feststellen, was passiert. Solange beide Schalter den gleichen Pegel liefern, reagieren die Anzeigen entsprechen. Wenn die Schalter unterschiedlichen Pegel liefern, sind die Anzeigen immer aus.
Auch das ist eine Konvention, welche von der TTL-Familie abgeschaut wurde. Die Transistoren, welche den Ausgang nach Masse (Low-Pegel) ziehen, sind stärker als jene, welche versuchen einen High-Pegel zu etablieren. Folglich ist im Kurzschluß-Fall der Pegel immer Low.
Nun ist es Zeit einen neuen Begriff einzuführen. Das was wir gerade gebaut haben, ist eine kleine Schaltung. Alle Elemente, mit Ausnahme der beiden verwaisten Taster sind miteinander verbunden. Eine solche Verbindung nennen wir Netzwerk.
Kurzschlüsse werden immer pro Netzwerk erkannt und alle beteiligten Signal-Quellen entsprechend rot markiert. Dabei dauert die Signalisierung immer etwas länger, als der eigentliche Kurzschluß, aber das haben Sie wahrscheinlich schon gemerkt. Der Sinn liegt darin, auch sehr kurze Kurzschlüsse feststellen zu können, also auch sogenannte Transienten oder Spikes.
So, nun aber zurück zur Einführung. Löschen Sie die beiden eingebauten Schalter und die zuletzt eingeführte Verbindung. Verwenden Sie dazu das jeweilige Kontext-Menü. Beachten Sie bitte, daß im Kontext-Menü der Verbindung zwei Lösch-Optionen existieren. Sie können einmal das gesamte Netzwerk oder nur die kurze Verbindung (Link) löschen:
Beim Auftrennen der Verbindung wird das Netzwerk automatisch in zwei Netzwerke aufgeteilt. Beim vorherigen Zusammenführen wurden beide Netzwerke automatisch vereinigt. Beides sind Funktionen, um die Sie sich nicht kümmern müssen!
Nun werden wir unsere Schaltung um etwas Logik erweitern. Fügen Sie bitte aus dem Palette der Gatter zwei NOR-Gatter hinzu. Stellen Sie über das Kontext-Menü die Anzahl der Gatter jeweils auf zwei, also zwar ungefähr so:
Arrangieren Sie die Bauteile so, daß jeweils ein Taster an einem Eingang eines NOR-Gatters und eine Anzeige jeweils an dem Ausgang angeschlossen ist. Den freien Eingang verbinden Sie nun mit dem Ausgang des anderen NOR-Gatters:
Bravo: Sie haben soeben ein R/S-FlipFlop gebaut! Mit den beiden Tastern können Sie nun die beiden Anzeigen umschalten. Versuchen Sie einmal zu verstehen, warum das so funktioniert. Wenn Sie noch wenig Ahnung von Gattern haben, dann gebe ich einen Tip:
Ein NOR-Gatter ist ein OR-Gatter mit einem invertierenden Ausgang. Der Ausgang ist dann High, wenn keiner der beiden Eingänge High ist. Oder umgekehrt: Der Ausgang ist Low, wenn mindestens einer der Eingäge High ist (hat nix mit Kiffen zu tun...).
Busse werden einmal zum Verbinden entfernter Baugruppen verwenden, sie können aber auch Ein-/Ausgabe-Elemente direkt ansteuern.
Busse werden über das Bus-Objekt eingerichtet, welches sich in der BauteilPalette unter Sonstiges befindet. Damit ein Bus funktioniert muß man ihm einen Namen geben. Nach dem Einsetzen eines Bus-Bausteines hat dieser 4 Anschlüsse. Diese kann man im Konfigurations-Dialog ebenfalls korrekt einstellen:
Ist alles korrekt eingerichtet, verhalten sich über Busse verbundene Bauteile genau so, als ob sie direkt miteinander verbunden sind. Aber beim Anschluß von z.B, Tastern über einen Bus fällt auf, daß dies viel Platz belegt.
Aus diesem Grund können alle Ein- und Ausgabe-Bauteile auch direkt von einem Bus angesteuert werden. Durch Benennung dieser Bauteile über das Konfigurations-Menü bekommen sie sozusagen ein unsichtbares Bus-Interface:
So, wenn die grundlegenden Dinge bekannt sind, sollen wir uns nun den spezielleren Bedienungs-Schritten zuwenden.
Im Schaltungs-Editor kann man fast wie unter Windows gewohnt Bauteile und Verbinungen selektieren und verschieben. Durch Aufziehen eines Rechteckes selektiert man alle enthaltenen Elemente. Durch Anklicken mit gehaltener Shift-Taste (die "Großmachtaste") kann man Elemente der Auswahl hinzufügen, durch Anklicken mit gehaltener Strg-Taste den Auswahl-Status Ein- bzw. Ausschalten:
Wurde ein Bauteil auf diese Weise zusammen mit den Pins selektiert, so bewegen sich die Anschlußleitungen beim Verschieben des Bauteiles mit. Problematisch dabei ist, daß dadurch Leitungen auch übereinander geschoben werden können. Also immer etwas Vorsicht walten lassen!
Wird das Verschieben bei gehaltener Shift-Taste begonnen, fertigt der Simulator eine Kopie aller selektierten Bauteile an. Auf diese Weise können recht schnell vorhandene Bauteile und Baugruppen dupliziert werden.
Über das Menü Bearbeiten lassen sich weitere Seiten zu einem Schaltplan hinzufügen. So kann man z.B. die Schaltung von der Bedien-Einheit trennen. Busse und Bus-Bauteile unterstützen dieses Vorgehen zusätzlich.
Erzeugen Sie zunächst eine neue Seite über das Menü Bearbeiten. Sie können dort der Seite auch einen passenden Titel vergeben.
Löschen Sie nun die beiden Taster und eine der Leuchtdioden von der Schaltung und fügen Sie entsprechende Bauteile auf der neuen Seite ein. Geben Sie diesen passende Namen wie R und S für die Taster und LED für die Anzeige.
Das Ergebnis kann dann ungefähr so aussehen:
Andreas Tofahrn
Software-Entwicklung und Beratung
Hessenring 107
D-61184 Karben
e-mail: andreas@tofahrn.de
Web-Site: http://www.tofahrn.de
Copyright (c) 2002 by A. Tofahrn