SWTP: Turing Maschine
In den vergangenen Semesterferien wurde im Modul Softwaretechnik Projekt von
- Viktor Kratz,
- Benjamin May,
- Gökhan Bayrakci,
- Sebastian Schöne,
- Jakob Czekansky,
- Lukas Ritter,
- und Jan Schneider
eine Turing-Maschine als mechanischer Simulator gebaut.
Dabei wurde sowohl die Softwareseite
- Programmieren eines Simulators mit Qt
- Programmieren der Cortex-M3 Mikrocontroller
als auch die Hardwareseite
- Erstellen von Schaltplänen
- Erstellen von Platinenlayouts
- Herstellung und Bestückung der Platinen
von den Studenten umgesetzt. Anbei ein erster Einblick in den Simulator.
In diesem Video findet eine kleine Vorführung eines Programms statt, welches
eine Multiplikation von zwei einprogrammierten Zahlen durchführt (2*3).
Die GUI selbst zeigt zum einen das Programm (in der oberen Tabelle), wie der
Lese-/Schreibkopf (LSK) sich zu verhalten hat und zum anderen den Inhalt des Bandes, welches auf 32 Plätze begrenzt ist. Die Position des LSK wird hierbei mit einem Pfeil am Band gezeigt. Jeder Platz kann drei Zustände haben:
- blau - leer
- rot - 0
- grün - 1
Zusätzlich wird der aktuelle Zustand (unten links) angezeigt und die Simulationsgeschwindigkeit ist über ein Einstellrad (neben "Run") konfigurierbar.
Beim Betätigen des "Run"-Buttens, startet die Simulation mit dem zuvor geladenen Programm.
In der Gruppe haben sich die Entwickler des Mikrocontrollers und die Entwickler des Simulators auf eine einheitliche Schnittstellle zur Steuerung der Komponenten geeinigt (LSK nach links, nächsten Eintrag der Programmtabelle lesen, ...).
Hierdurch war die Entwicklung eines Programms, welches den Ablauf der Turing-Maschine steuert im Simulator möglich, ohne dass die Hardware benötigt wird.
Zusätzlich mussten sich die Entwickler der Mikrocontroller Software mit der
Gruppe, die für die Hardware zuständig ist auseinander setzen.
Dabei waren die beiden Gruppen unter anderem zu den Fragestellungen
- Welche Hardwarekomponente wird benötigt?
- Wie werden die Komponenten angesteuert oder konfiguriert?
- Bietet der Controller eine Möglichkeit eine zusätzliche Hardwarekomponente anzubinden?
im kontinuierlichen Austausch.
Da in dem Projekt als Programmspeicher eine Lochkarte verwendet wird, die
optisch eingelesen wird, haben die Studenten zusätzlich einen "Lochkartengenerator" geschrieben. Dabei werden die Programme im Dateiformat für den Simulator als Eingabe verarbeitet und in eine Grafik umgewandelt, die auf eine Folie gedruckt werden kann. Durch die Löcher sind in einer Zeile die Informationen für
- Zustand, bei dem diese Zeile verwendet wird
- Buchstabe, bei dem diese Zeile verwendet wird
- Folgezustand
- Zu schreibender Buchstabe
- Auszuführende Bewegung des LSK
Im aktuellen Stand des Projektes funktionieren die Einzelkomponenten zum Großteil, nur eine Platine muss neu entwickelt werden. Die Treiber dieser Komponenten sind bereits getestet. Dies wurde im ersten Schritt mit Ersatzschaltungen bzw. einem Logic-Analizer getan. Sobald die Hardwarekomponenten fertig waren, wurden getestete Treiber an der Hardware getestet.
Ausstehend sind noch
- ... das Neuerstellen der fehlerhaften Platine,
- ... fehlende Gehäuseteile drucken,
- ... Zusammenbau der Komponenten,
- ... Testen des Gesamtsystems
Bilder des Projekts:
(Aktualisierungen folgen...)