68k Eigenbau-Computer

Vorwort

Als langjähriger Amiga-Nutzer war ich früher natürlich auch ein großer Fan des 68000’er Prozessors. Während meines Grundwehrdienstes habe ich deshalb viele Dienststunden mit dem Buch “Mikrocomputertechnik mit den Prozessoren der 68000-Familie” von G.Schmitt sinnvoll genutzt. In diesem Buch werden eigentlich alle Grundlagen von der digitalen Schaltungstechnik, dem internen Aufbau des 68k bis zur Assemblerprogrammierung beschrieben. Allerdings war mein Wehrdienst länger als das Buch, deshalb fing ich einen eigenen 68k-Rechner, der aus einzelnen Modulen besteht, zu entwerfen. Ein wirklich konkretes & revolutionäres Ziel gab es bei der Entwicklung nicht, außer das Gelesene mal direkt auf einer “einfachen” Hardware nach zu vollziehen.

Das Ergebnis der Entwicklung sieht man hier:

68k-Modulrechner


Alle Module des 68k-Rechners

Der Computer besteht aus sechs Modulen, auf denen jeweils eine spezielle Funktion untergebracht ist. Verbunden werden die einzelnen Module über eine 64-polige Busbackplane über die direkt der Adress/Daten Bus der 68k-CPU geführt wird.

CPU-Modul

Die CPU-Karte ist mit einem 68000-Prozessor bestückt, der von einem 8MHz Quarzoszillator getaktet wird. Zusätzlich ist ein MAX707 als Resetgenerator auf der Karte verbaut. Der GALs war dafür vorgesehen eventuell den Bustakt herunter zuteilen und das IRQAck-Signal zu erzeugen. Außerdem werden damit die LED’s angesteuert, die den Betriebszustand der CPU anzeigen.

RAM-Modul

Auf der RAM-Karte sind zwei 128kB EPROM und zwei 64kB RAM-Bausteine verbaut. Außerdem ist auf der Karte ein RTC-Baustein untergebracht. Sowohl die RAM-Bausteine als auch die RTC können über eine Pufferbatterie versorgt werden, damit der Inhalt der Bausteine auch nach einem Spannungsverlust erhalten bleiben. Die Adressdekodierung wird über die GALs gemacht.

Uart-Modul

Uart-Modul

Das UART-Modul stellt die Verbindung mit der Außenwelt über ein Terminalprogramm her. Das Modul besteht hauptsächlich aus einem MC68681 Dual-Uart-Baustein, der mit einen Adressdecoder und Interfacebausteinen für RS232 & RS485 zusammengeschaltet ist. Als Pegelwandler für die RS232-Schnittstelle wird der gute alte MAX232 benutzt. Die RS485-Schnittstelle ist mit einem SN75176 beschaltet.

Parallelport-Modul

Parallelport Modul

Das Parallelport-Modul stellt 3 8-Bit IO-Ports zur Verfügung. Aufgebaut ist dieses Modul um einen MC68230, der zusätzlich auch ein Timermodul enthält. Damit können über dieses Modul auch Zeitabläufe in “Realzeit” (auf Basis des Quarztakts) in der Software realisiert werden.

LCD-Modul

LCD-Modul

LCD-Modul

Das LCD-Modul enthält nur ein Register mit dem der Inhalt des Datenbus beim Zugriff auf eine Adresse gelatched wird. Der Inhalt dieses Registers wird dann über einen parallelen 8-Bit-Bus einem LCD-Modul mit 2x16 Zeichen zur Verfügung gestellt.

Software

Das wichtigste Programm, das ich für den Modulrechner geschrieben habe ist ein Bootloader-Programm. Damit ist möglich in S-Record formatiere Programme über die RS232-Schnittstelle ins RAM zu laden und auszuführen. Der Bootloader selbst ist in Assembler geschrieben.

Nachdem der Bootloader fertig war, habe ich eigentlich nur noch kleine Testprogramme in Assembler geschrieben mit denen ich “lustige” Muster auf den LEDs des Parallelport-Moduls ausgegeben habe…

Das Ziel mit dem GNU-68k-Crosscompiler C-Programme für den Modulrechner zu schreiben habe ich ziemlich schnell beiseite gelegt, als klar wurde, was man eigentlich tun muss um erst mal die C-Library zu erzeugen. Quasi zeitgleich hat die Firma Motorola (heute Freescale) eine Low-Cost Entwicklungsplattform für den Coldfire MCF5206 herausgebracht, für den man bereits fertige GNU-Tools herunterladen konnte. Bei dem Coldfire-Baustein handelt es sich um einen abgespeckten 68k-Prozessor, der bereits u.a. UART, PIO & Timer-Module intern enthält. Mit dem Entwicklungsboard des Coldfire MC5206 bin ich damals direkt von meinem “Low-End” 68k-System mit 8MHz und 128kB RAM zu einem “High-End”-µC mit 66MHz und 4MB EDO-RAM gesprungen und konnte dabei das gesamte Grundwissen über den Prozessor weiterverwenden.

Coldfire Entwicklungsboard