StartseiteArtikel

Wirklich von Hand hergestellter CPU: Ein hartgesotter Entwickler hat in drei Monaten per Hand gelötet und 1800 Zeilen Assembler-Code geschrieben. Überraschenderweise konnte der selbst gebaute Chip den Film "Matrix" auf dem Bildschirm abspielen.

CSDN2025-07-15 19:21
Es ist weder ein Entwicklungsboard noch ein Mikrokontroller, sondern eine vollständige CPU mit der Fähigkeit zur Befehlsausführung und Speicheradressierung.

„Es heißt immer, zwischen Genie und Wahnsinn besteht nur ein feiner Grat, und das stimmt tatsächlich. Denn bei dem Projekt, das Sie gleich sehen werden, ist es wirklich schwer zu entscheiden, auf welcher Seite es liegt.“

Dies ist die Selbstbeschreibung eines YouTubers namens Majsterkowanie i nie tylko (kurz MINT, was „DIY and more“ bedeutet), der auch der Entwickler dieses Projekts ist.

Er hat vor kurzem auf YouTube ein verblüffendes Projekt gezeigt – EPROMINT: Mit einem Lötkolben, einer Reihe alter Speicherchips und 8-Bit-Logikbauteilen hat er von Grund auf einen ganzen Prozessor gebaut – ja, nicht eine Entwicklungsplatine und auch kein Mikrocontroller, sondern ein vollständiger CPU mit Befehlexekutions- und Speicheradressierungsfähigkeiten.

Darüber hinaus hat dieser selbst gebaute CPU erfolgreich an einem VFD-Bildschirm angeschlossen und seinen selbst geschriebenen Code ausgeführt. Er kann sogar eine niedrig aufgelöste Version von „The Matrix“ abspielen...

Außerdem hat MINT den gesamten Code des Projekts auf GitHub open source gemacht: https://github.com/majsterkowanieinietylko/EPROMINT. Er sagte: „Es hat mich ganze drei Monate und unzählige Tage und Nächte gekostet. Ich habe stundenlang mit dem Lötkolben gearbeitet und auf der Tastatur getippt, nur um mir und Ihnen einen neuen Weg zu ebnen – einen Weg, der weit führt.“

Die Geburt einer verrückten Idee stammt von einer Reihe alter Chips, die man nicht wegwerfen wollte

Die Entwicklung dieses Chips wird nicht von einem ganzen großen Team unterstützt, auch gibt es kein Budget von Millionen von Dollar. Es ist nur MINT, der es alleine macht.

Laut MINT in seinem Video ist die Idee, einen eigenen Prozessor zu bauen, alles von einer Reihe alter Speicherchips ausgegangen.

„Ich habe viele gesammelt und dann begonnen zu experimentieren. Ich habe schnell gemerkt, dass diese scheinbar veralteten Teile tatsächlich zu etwas coolen zusammengebaut werden können. Nach dem Hinzufügen einiger Peripherie-Schaltungen habe ich eine Entwicklungsplatine auf Basis eines einzelnen Speicherchips gebaut, die beliebige relativ einfache Operationen ausführen kann. Zum Beispiel kann man einen Motor schneller oder langsamer drehen – dazu benutzt man sogenanntes PWM, also das schnelle Umschalten des Stromschalters, um die tatsächliche Leistung des Motors einzustellen; oder man kann eine Nachricht auf dem Bildschirm anzeigen“, sagte MINT.

In einem Experiment hat MINT auch ein programmierbares Modul auf Basis eines einzelnen Speicherchips entwickelt und eine einfache Programmierumgebung dafür entworfen. Auf dieser Grundlage kann MINT Programme leichter ändern, Firmware generieren und in den Chip schreiben. Ein ganzer Prozess ist fast wie bei der modernen Entwicklung.

Genau diese Erfahrung hat ihm eine kühne Idee gegeben: Wenn man mehrere solche Module kombiniert, kann man dann eine ganze Rechenlogik aufbauen? Oder sogar einen ganzen Prozessor bauen?

Als Liebhaber der Retro-Elektronik hat sich MINT entschieden, einen Prozessor zu bauen, der der „Zeit der Anfänge des Computers“ gewidmet ist – es waren genau die Prozessoren dieser Generation, die die Verbreitung der Computertechnik vorangetrieben haben. Er hat einmal selbst einen Computer mit einem klassischen Z80-Prozessor zusammengebaut und hat daher ein relativ tiefes Verständnis der Prozessorarchitektur.

In diesem Projekt hat er sich für einen „Minimalismus“-Ansatz entschieden, der aber sehr herausfordernd ist: Er hat moderne integrierte Schaltungen komplett verworfen und nur alte Speicherchips und Logikbauteile verwendet, die in der Goldenen Zeit der 8-Bit-Rechentechnik populär waren, und versucht, einen CPU auf die ursprüngliche Weise zu bauen.

Drei Monate lang von der ALU zu einem vollständigen Modulsystem

Bei der Gestaltung hat MINT mit der grundlegendsten Komponente – der Arithmetisch-Logischen Einheit (ALU) – begonnen.

Anfangs hat die erste Version seines Prototypen ALU nur einfache Additionen ausführen können. Die Funktionen waren noch nicht sehr stabil und etwas schlicht. MINT sagte: „Ich mache nicht ein Spielzeug, sondern einen vollständigen Prozessor. Also habe ich eine stärkere ALU neu entworfen.“ Also hat er diese Version verworfen und neu entwickelt.

Anschließend hat MINT eine ALU mit Steckverbinder-Struktur neu entworfen.

Die folgenden Arbeiten waren repetitive körperliche Arbeiten: Schaltplanentwurf, Steckverbinderlöten, Verkabelung, Kondensatoren, Stromversorgung, Kabel, immer wieder Testen. „Jedes Modul hat mich einige Tage gekostet, aber es war es wert – ich konnte es jederzeit ändern und spätere Umarbeiten vermeiden.“

Die neue Version ist nicht nur stärker, sondern auch die Grundlage für die spätere Funktionserweiterung.

Auf Basis der ALU hat MINT dann nacheinander drei Kernmodule realisiert:

Speichersteuerungsmodul: Für Datenspeicherung und Adressierung. Durch manuelles Schreiben der ALU-Ausgabe an eine bestimmte Adresse und Entwurf der Adresssteuerlogik wurde der Datenschreib- und -leseprozess realisiert.

IO-Schnittstellen- und Programm-Speichermodul: Um dem Prozessor die Fähigkeit zur Interaktion mit der Außenwelt zu geben. Die Programmbefehle werden auch in diesem Bereich gespeichert. Der Prozessor kann Befehle wie „Werte von Adresse A und B lesen und addieren, Ergebnis in C speichern“ ausführen.

Steuerungsmodul (Befehlsplanungszentrum): Verantwortlich für das Lesen von Befehlen aus dem Programmspeicher und die Koordination des Betriebs von ALU, Speicher und IO.

Nach dem Zusammenbau wiegt dieser Prozessor insgesamt über 500 Gramm.

Aber nur die Hardware reicht nicht aus. Hier muss es auch einen Befehlssatz geben, der definiert, welche Operationen der Prozessor ausführen kann.

MINT hat festgestellt, dass diese Befehle zwar einfach aussehen, wie „Wert von Speicheradresse X in Register A lesen“, aber die Umsetzung viele Schritte wie Speichersteuerung, Adressdekodierung, Registerbeschreibung und so weiter beinhaltet.

Also hat er jedem Befehl einen Befehlscode (Opcode) zugewiesen. Das Steuerungsmodul entscheidet dann anhand dieses Codes, wie die Schaltung arbeiten soll. Der ganze Prozess ist kompliziert, aber klar.

Außerdem hat MINT gesagt: „Die ALU kann nicht nur Addition und Subtraktion ausführen, sondern auch Multiplikation, Division, Logarithmus, trigonometrische Funktionen und so weiter. Dies ist eine Funktion, die ich bewusst erweitert habe – schließlich hat der Z80 diese Funktionen nicht. Ich habe während des Tests optimiert, manchmal die ursprüngliche Gestaltung gelöscht und bessere Ideen hinzugefügt.“

Am Ende hat MINT für den Prozessor über 1800 Zeilen Assemblercode von Hand geschrieben, insgesamt etwa 120 KB, der von mathematischen Funktionen bis hin zu logischen Bit-Operationen reichende Funktionen abdeckt.

Natürlich gab es auch viele Bugs in diesem Prozess. Die Lösung einiger Bugs ist sogar etwas wie „elektronische moderne Kunst“. Um diese Programme zu debuggen, hat MINT auch ein ganzes Set Papierdokumente ausgedruckt. Der Vorteil von Papier ist, dass man es jederzeit durchblättern kann, es gut markieren kann und nicht von Geräten abhängt. Es eignet sich sehr gut für die Fehlersuche in komplexen Systemen.

Unterbrechungssystem, Funktionsaufruf und Stapelunterstützung: Schritt für Schritt näher an einem „echten CPU“

An diesem Punkt war der CPU bereits fast fertig. Als nächstes hat MINT das erste offizielle Programm geschrieben, um es zu testen – er hat den Prozessor dazu gebracht, eine LED ständig blinken zu lassen und wenn eine Unterbrechung empfangen wird, eine andere LED anzuschalten.

Dies führt zu einem anderen wichtigen Thema – dem Unterbrechungsmechanismus.

Ein Prozessor führt normalerweise Befehle nacheinander in Reihenfolge aus, aber manchmal möchten wir, dass er auf bestimmte externe Ereignisse (z. B. das Drücken einer Taste) sofort reagiert. Dafür braucht man eine Unterbrechung.

In Bezug auf die Architekturgestaltung hat EPROMINT eine vollständige Unterbrechungsbehandlunglogik realisiert. Wenn ein externes Ereignis eine Unterbrechung auslöst, drückt der Prozessor den aktuellen Programmzähler (PC) auf den Stapel, springt zur Unterbrechungsbehandlungsprogramm. Nach der Ausführung holt er den PC wieder aus dem Stapel und setzt den ursprünglichen Programmablauf fort. Dieser Mechanismus ermöglicht es ihm, sofort auf externe Eingaben wie Tasten zu reagieren und hat die grundlegende Interaktionsfähigkeit moderner Prozessoren.

Außer den Grundbefehlen hat MINT auch eine Reihe komplexer Programme für den Prozessor geschrieben. Zum Beispiel kann er die numerischen Ergebnisse auf einem LCD-Bildschirm anzeigen oder Zahlen in ASCII-Zeichenketten umwandeln und dann auf einem hochauflösenden VFD-Bildschirm ausgeben. Dieser Prozess beinhaltet die manuelle Umsetzung der Division, Stapeloperationen und Zeichenkodierungskonvertierung, alles in Assemblersprache.

In einem Test hat er sogar versucht, eine 256-Bit-Ganzzahl zu verarbeiten. In diesem Experiment hat er den Prozessor dazu gebracht, eine 100-stellige Dezimalzahl, die von einem Chat-Tool generiert wurde, zu dividieren. Das System ist dann abgestürzt. Um das Problem zu finden, hat er den Inhalt des Speichers mit einem RAM, das die Daten auch bei Stromausfall behält, gespeichert, Zeile für Zeile verfolgt und die Logik geprüft und schließlich die Ursache des Fehlers gefunden.

Noch erstaunlicher ist, dass das Projekt EPROMINT nicht nur Code ausführen kann, sondern auch Videos abspielen kann.

MINT hat manuell eine Divisionsschleife für die genaue Steuerung der Bildwiederholrate implementiert, damit es ein stabiles Videosignal von 24 Bildern pro Sekunde ausgeben kann. Nach dem Anschluss an einen hochauflösenden VFD-Bildschirm hat er auch ein Fragment von „The Matrix“ abgespielt – obwohl es im minimalistischen Pixelstil ist, ist das Ergebnis komplett und beeindruckend.

Open Source und weitere Pläne: Ein C-Compiler für ihn entwickeln

EPROMINT ist derzeit vollständig open source. Alle Schaltpläne, Firmware, Gestaltungsdokumente und Befehlssatzbeschreibungen können auf GitHub (https://github.com/majsterkowanieinietylko/EPROMINT) und Google Drive (https://drive.google.com/drive/folders/11-RFmGcRUevfkHXVt-ET09YOgsZoN3Ui) abgerufen werden.

MINT hat gesagt, dass er im nächsten Schritt einen C-Compiler für ihn entwickeln will, damit mehr Leute in der Hochsprache Programme für diesen selbstgebauten Prozessor schreiben können.

Er hofft, dass durch dieses Projekt die Leute das Wesen des Prozessors neu verstehen können. Die Mobiltelefone, Computer und Smartgeräte, die wir täglich benutzen, laufen alle auf ähnlichen unteren Ebenen. Nur wird diese Komplexität in der heutigen Zeit hoher Integration perfekt verborgen.

„Dieses Projekt hat mich wieder vor der Macht dieser grundlegenden Bauteile in Awe versetzt. Ich hoffe auch, dass mehr Leute sehen können: Ohne moderne ICs, ohne fertige Plattformen, solange man versteht und sich bemüht, kann man einen Computer immer noch von Grund auf