Allgemeiner Mooreautomat

Aus einem kleinen Projekt an der FH Leipzig im Labor Digitale Systeme ist der folgende kleine, programmierbare Mooreautomat hervorgegangen. Diese Webseite spiegelt nicht das Projekt als solches, wohl aber ein paar Ideen und Anregungen wieder, die im Zuge des Projektes entstanden sind.

Eigenschaften der Implementierung

Der Mooreautomat in der folgenden Implementierung hat die Eigenschaften:

Aufbau des Mooreautomaten

Übersichtsplan des Allgemeinen Mooreautomaten (PNG)

Programmierung des Mooreautomaten

Zuerst ist die Zustandsübergangstabelle aufzuschreiben. Dadurch, daß der 8 Bit breite Bus des 8fach D-Flipflops zurückgekoppelt wird, muss man bei der Programmierung der Eingangsflipflops höllisch aufpassen. Die Ausgänge Q0 bis Q7 des 8fach D-Flipflops werden also auf die Adresseingänge des Eingangseproms A7 bis A15 gelegt (hätten theoretisch auch auf A0 bis A7 gelegt werden können, aber wir/ich hatten uns für erstere Variante entschieden).

Die Programmierung des Mooreautomaten in der alten Version bietet eine Tücke, da bei einem Automaten, der in einem Zustand bleibt bis sich A0, A1..., oder A6 geändert hat (also die Eingänge des Mooreautomaten sich geändert haben), dann ist es uU. notwendig alle 32K mit Werten zu programmieren. Ausserdem ist die Programmierung deswegen so schwer, weil der (Hex)wert, der in den D-FF bzw. im EPROM an einer bestimmten Adresse gespeichert wird, muehselig berechnet werden muss

Diese Tücke tritt nicht auf, wenn nur ein Zähler implementiert wird, wo also nur (was heisst nur... Ist auch schon aufwendig) die Rückkopplung programmiert werden muss.

Bei der neuen Version (sh. oben) wird die Rueckkopplung der D-FF auf den Anfang des EingangsEPROMs gelegt (also Q0 des D-FF entspricht A0 des EPROM, etc.). Den Vorteil sieht man ganz deutlich, wenn man die Adresse und den gespeicherten Wert im 8er-D-FF vergleicht. Richtig, der gespeicherte Wert im D-FF ist gleich der unteren Adresse. Dies macht die Programmierung und das Verstehen des Automaten um groessenordnung leichter.

Ich habe ein Perl-Script geschrieben, dem man nur die Wahrheitstabellen/Funktionen der DNF der Folgezustände via CSV-Datei (comma separated value, sollte jedes Tabellenkalkulationsprogramm im-/exportieren können) eingeben muss und daß dann die fehlenden Adressen des Automaten in denen er verharren soll automagisch ergänzt. Die Dokumentation ist ebenso vorhanden.

Das Script ist noch nicht ganz fertig, aber es hat Potential ;-) Achja, perl bekommt man ua. vom www.perl.com, auch für Windows

Für die Vereinfachung der Zustandsfolgetabellen kann in nächster Zeit auch der von mir fehlerkorrigierte qmc (Quine-McCluskey-Compiler) benutzt werden. Das Originalprogramm ist von Thomas Pollack und steht unter der GPL und ist unter der Originalseite erreichbar.

Die Seite war 2014-10-29 nicht mehr erreichbar, ist noch bei Internet Archive unter https://web.archive.org/web/20070205202816/http://qmc.pollaknet.at/ zu finden

Wenn man was über die Programmierung sagt, dann muss man auch ein paar Worte zum Thema Dateiformat für den Eprombrenner sagen. Nun, es gibt dutzende verschiedene Formate (IntelHex, MotorolaHex, tektronix etc.), die einfachste Variante ist sicherlich die, daß man einfach mit einem HexEditor die Bytewerte pro Adresse hintereinander wegschreibt und binär speichert. Den Eprommer, den wir benutzt haben, konnte das genauso lesen. Probleme sind mit Maschinen zu erwarten, die ein anderes Endian-Format haben. Für die Programmierung des 27256 braucht man also nur ein 32kByte großes File zu schreiben... :)

Beispiele

Zustandsdiagramm 2Bit Vor-/Rückwärtszähler. Das CSV-File für das EingangsEPROM und das Binary des 27256. Bei der Erstellung der Zustandstabelle muss man beachten, daß die Adressleitungen A7-A15 von den Flipflops D0-D7 zurückgekoppelt werden, A1-A6 sind auf LOW gezogen. A0 ist der Umschalter für vor- oder rückwärts Zählen. Das AusgangsEPROM braucht nur gelöscht zu werden, dadurch wird der rückgekoppelte 8Bit-Bus oder besser die Ausgänge der Flipflops eins zu eins durchgeschliffen

(Zur Erinnerung: Wenn ein EPROM gelöscht wird, so werden alle Speicherzellen auf den Wert "0xF" gesetzt)

Tja. Weitere werden noch folgen, spätestens im Juli sind sie verfügbar ;-)

Wenn noch Zeit und Muße sein sollte, dann werde ich den Mooreautomaten auch als Simulation zur Verfügung stellen.

Valid HTML 4.01!

Valid CSS!