Forum: Projekte & Code CH32V003: LogicMachine


von Ralph S. (jjflash)



Lesenswert?

Jetzt habe ich mir überlegt, dieses Projekt hier einzustellen, weil es 
vllt. doch "spezielle" Zielgruppe (Schüler, Auzubildende, Lehrende), 
aber ich glaube, davon sind hier auch welche vertreten. Im übrigen war 
dieses Projekt ursprünglich auf einem ATmega168 programmiert (ohne 
Farben in der Konsole) und jetzt habe ich das ein wenig überarbeitet und 
zu einem CH32V003 portiert, auch deshalb, weil der CH32 im Gegensatz zum 
AVR fast nichts kostet.

Um was handelt es sich bei LogicMachine?

Die Zielgruppe habe ich oben genannt und mit der Logicmachine werden 
boolsche Terme Interpretiert und auf der MCU ausgeführt. Hochtrabend 
könnte man das mit einem (extrem) abgespeckten GAL- oder FPGA Baustein, 
in den Funktionen, vergleichen, hier dann aber nur mit 4 D-FlipFlops. 
Von der Geschwindigkeit de Ausführung kann sich die LogicMachine 
logischerweise mit einem GAL, geschweige denn mit einem FPGA nicht 
messen.

Das "schöne an der LogicMachine ist, dass sie komplett über die serielle 
Schnittstelle gesteuert wird, es wird ausser einem Terminalprogramm am 
PC nichts weiter benötigt.

Im Terminal kann man dann die boolschen Terme eingeben und einen 
internen Counter und Taktgeber konfigurieren, sowie die LogicMachine in 
"live" starten, so dass er die boolschen Terme auch ausführt.

Mit den Termen kann man dann alles das machen, was so klassischer Weise 
an Digitalen Gattern machbar ist. Zudem kann man hier dann auch sehen, 
wenn man einen Term bspw. mit einer KV-Tafel minimiert hat, ob man dort 
keinen Fehler gemacht hat.

Grundsätzlich könnte / kann man einen LogicMachine-Chip tatsächlich in 
eine Schaltung als digitaler Baustein (nicht als Mikrocontroller) 
einbauen und verwenden, wenn denn die Geschwindigkeit ausreicht (es gibt 
einen Pin mittels dessen es möglich ist, im Flash abgelegte Terme und 
Konfiguration zu laden und zu starten, sobald die Betriebsspannung 
angelegt wird). Ich habe noch nicht nachgemessen, biszu welcher Frequenz 
der Interpreter noch funktioniert, beim ATmega waren es irgendwas 
zwischen 20 und 30 kHz. Das sollte hier jetzt schneller gehen.

Experimente zu digitaler Logik können zu folgenden Themen gemacht 
werden:

- boolsche Algebra
- Zähler (asynchron durch den int. Zähler),  synchroner Zähler über die 
interen D-FlipFlops und Logik
- Schieberegister
- Anzeigedekoder für einen Würfel und den Würfel selbst (Zähler plus 
Anzeige)
- Siebensegmentanzeigedekoder
- Multiplexer
- 2-Bit Addierer

grundsätzlich ist hier der Kreativität und dem Spieltrieb freien Lauf 
gelassen.

Zudem kann man an der LogicMachine in der Konfiguration sehen, weshalb 
man, bspw. bei einem Mikrocontroller diverse Register benötigt und dort 
diverse Bits setzt, damit ein Baustein in seiner Funktion geändert 
werden kann. Genau so funktioniert das mit der LogicMachine dann auch.

-----------------------------------------------------------------------

Im Testaufbau habe ich einen "LED- und Tastencontroller" mit Padauk 
PFS154 programmiert, der nichts weiteres zu tun hat, als 
Ausgangszustände auf Tastenbetätigung zu toggeln und diese Zustände (in 
Ermangelung genügender GPIO-Pins) auf einer charliegeplexten LED-Anzeige 
anzuzeigen).

Die Beschreibung der LogicMachine und die (virtuellen) 
Konfigurationsregister gibts im Anhang.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.