Hier kommt die logische Beschreibung der Schaltung hinein. Es gibt zwei Elemente, die beliebig durch ; getrennt hintereinander stehen können.
JK j k q erzeugt ein JK-Flipflop. j gibt dabei die Variable an, mit der der J-Eingang des Flipflops verbunden ist. Ditto für den K-Eingang und den Q-Ausgang.
x = <Formel> gibt an, wie die Variable x berechnet wird.
<Formel> kann dabei bestehen aus
anderen Variablen (Variablen fangen mit einem Buchstaben oder _ an, können auch Ziffern beinhalten und unterscheiden Groß- und Kleinschreibung),
Oder-Verknüpfungen mit + oder |,
Und-Verknüpfungen mit *, & oder einfach Weglassen des Operators, d.h. Aneinanderhängen von Ausdrücken, getrennt nur durch Leerzeichen,
Verneinung mit - oder !,
Klammerung mit ( und ), wobei in den Klammern wieder eine <Formel> stehen kann, und
logischen Konstanten in Form von zyklisch durchlaufenen Bit-Strings (z.B. 100110).
Dieser Zähler repräsentiert seinen Zustand durch zwei Bits q1, q0. Eine zusätzliche Steuerleitung d bestimmt, ob hinauf (d=0) oder hinunter (d=1) gezählt wird.
d = 000000111111; JK j0 k0 q0; JK j1 k1 q1; j0 = 1; k0 = 1; j1 = -d q0 + d -q0; k1 = j1;
In der ersten Zeile wird die Richtungssteuerleitung d so definiert, dass sie zu den Zeitpunkten t=1,2,...6 den Wert 0 hat, für t=7,8,...,12 den Wert 1 und dann wieder von vorn beginnt. In der zweiten Zeile werden zwei JK-Flipflops angelegt mit den Eingängen j0 ... k1 und den Ausgängen q0 und q1. Letztere stellen die 2 Bits des Zählers dar. In der dritten Zeile wird festgelegt, dass die Eingänge des ersten Flipflops auf 1 gelegt sind. Und in der letzten Zeile wird der J-Eingang des zweiten Flipflops mit der Formel ¬d ∧ q0 ∨ d ∧ ¬q0 berechnet. Der K-Eingang wird mit dem J-Eingang gleichgesetzt.
Gibt an, wieviele Zeitschritte simuliert werden.
Hier kann man (muss aber nicht) die Reihenfolge der Variablen in der Simulations-Ausgabe festlegen. Einfach Variablennamen in der gewünschten Reihenfolge durch Leerzeichen (oder ander Zeichen) getrennt angeben.
Die Ausgabe der Simulation erfolgt mit einer Zeile für jeden Zeitpunkt (Simulationsschritt). Für jede Variable wird der Zustande (1 oder 0) ausgegeben. Für JK-Flipflops bestimmt der Zustand der Eingänge zum Zeitpunkt t den Zustand des Ausgangs zum Zeitpunkt t+1, also eine Zeile darunter. Logische Berechnungen erfolgen aber unmittelbar noch in der selben Zeile.
Wenn der Simulator einen Fehler ausgibt, kann das mehrere Ursachen haben. Es könnte eine Variable nicht berechnet werden. Jede Variable muss irgendwo links von einem = stehen oder als Q-Ausgang eines Flipflops. Es könnte eine Variable doppelt berechnet werden, was natürlich nicht zulässig ist. Es könnte einen Syntax-Fehler geben. Sind die Ausdrücke durch ; getrennt? Wurde ein ungültiges Zeichen verwendet? Stimmen die Klammern?