Forum: Mikrocontroller und Digitale Elektronik Eigenen 8-Bit-Prozessor realisieren


von Lucas M. (Gast)


Lesenswert?

Guten Abend.

Ich habe seit längerem vor eine eigene CPU zu entwerfen und zu 
realisieren, doch bin noch Einsteiger in dem Gebiet.

Ich habe bereits eigene 4-Bit-Rechner realisiert, welche in der Lage 
waren simple Operationen, wie z.b. ADD (:D), durchzuführen und das 
Ergebnis in einem Register abzuspeichern.
Ich bin jedoch nie dazu gekommen mich so weit in das Thema 
einzuarbeiten, dass ich vollends verstehe, wie eine CPU sich z.B. selbst 
am laufen hält, was sie benötigt, um programmierbar zu sein, wie man so 
ein Projekt im allgemeinen beginnt und noch vieles, vieles mehr. :)

Ich habe also bereits mit Gattern und Binärarithmetik gearbeitet, aber 
würde gerne weiter in das Thema Prozessor-/Rechnerarchitektur 
einsteigen.

Ich möchte gerne eine 8-Bit-CPU auf Gatter-Ebene realisieren.

->Sollte ich so ein Vorhaben mittels eines FPGA bzw. mit VHDL 
realisieren, oder tut es ein einfaches Simulationsprogramm, wie Logisim 
auch?
Eine grafische Ansicht würde mir besser gefallen.
Da es ein reines Hobby-Projekt ist, geht es mir lediglich darum, die 
Funktion zu simulieren (habe keinen Anwendungszweck für die CPU).

->Könnt Ihr mir Bücher zu dem Thema empfehlen?
Da ich wirklich blutiger Anfänger bin, wäre es gut, wenn das Buch alle 
wichtigen Komponenten bzw. wichtigen Aspekte des eigenen Designs 
abhandelt, von Anfang bis Ende.
Bei den im Forum/Google genannten Büchern war ich mir was Aktualität 
betrifft und ob sie passend wären nicht sicher.

Sorry falls das in der Form schon gefragt wurde, habe leider keine 
passenden Antworten gefunden.

MfG Lucas.

von Lothar (Gast)


Lesenswert?


von H.Joachim S. (crazyhorse)


Lesenswert?

Gibts eigentlich schon eine BF-optimierte CPU?

von Gerald B. (gerald_b)


Lesenswert?

Da gab es doch einen Engländer, der genau so ein Projekt realisiert und 
auf einer Webseite dokumentiert hat. Jede logische Funktion auf einer 
eigenen Leiterplatte mit Status-LED. So kann man jedem FF und Register 
bei der Arbeit zuschauen.

von Alex G. (dragongamer)


Lesenswert?

Also um erstmal eine CPU zu verstehen, schau dir mal dieses Programm an: 
http://www.martinjakobs.de/pages/aufbau-funktion-eines-mikrorechners.php
Dabei wirst du schon mal Grundprinzipien wie "Mikrocode" (der ist was 
eine CPU sozusagen am laufen hält) kennenlernen.
Mein Prof hat das im IT leistungskurs der 11ten Klasse eingesetzt, also 
mit etwas Mühe kann man das wohl verstehen.

Ob sozusagen die Simulation dieses Programms, in Logisim, oder gar in 
echter Hardware all zu trivial umsetzbar ist, vermag ich nicht 
einschätzen zu können.

Auf jeden Fall ein interessantes Projekt das du da in Angriff nimmst!

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Lucas M. schrieb:
> Bei den im Forum/Google genannten Büchern war ich mir was Aktualität
> betrifft
Du willst (und kanst) sicher keine aktuelle CPU nachbauen, sondern am 
ehesten eine aus dem Urschleim der Prozessorarchitektur. Insofern 
solltest du dir um die Aktualität der Literatur keinerlei Sorgen 
machen. Du solltest sogar eher noch ein paar der älteren Bücher 
durchstöbern und schauen, wie die das gemacht haben.

> ->Sollte ich so ein Vorhaben mittels eines FPGA bzw. mit VHDL
> realisieren, oder tut es ein einfaches Simulationsprogramm, wie Logisim
> auch?
> Eine grafische Ansicht würde mir besser gefallen.
Wenn du schon eine 4-Bit CPU gebaut hast, dann ist ein 8-Bit CPU 
eigentlich nichts Neues, bei dem du was lernen könntest. Insofern würde 
ich das 8-Bit CPU Projekt mit etwas wirklich Neuem verbinden, mit dem 
ich hinterher noch was anfangen kann. Und da wäre doch der Einstieg in 
FPGAs der eigetnliche Witz an der Sache.
Oder du implementierst mal deine 4-Bit CPU im FPGA und bohrst die dann 
auf 8 Bit auf...

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

In der Historie der Prozessoren bzw. deren ALUs gab es auch mal sog. 
"bit slices" mit z.B. 2 oder 4 Bit Arbeitsbreite.

Die waren so konzipiert, dass man die gleichartig aufgebauten Module je 
nach Bedarf an Arbeitsbreite nahezu beliebig aneinanderreihen konnte.

Vlt. ist das ja eine Projekt-Idee?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Frank E. schrieb:
> In der Historie der Prozessoren bzw. deren ALUs gab es auch mal sog.
> "bit slices" mit z.B. 2 oder 4 Bit Arbeitsbreite.
Sieh dir mal an, wie FPGAs intern aufgebaut sind: dort hat ein Slice 2 
oder 4 Flipflops mit etwas Logik (z.B. für die ALU) davor...

Ganz grundlegend z.B. hier:
http://zone.ni.com/reference/en-XX/help/371599G-01/lvfpgaconcepts/fpga_basic_chip_terms/

von Falk B. (falk)


Lesenswert?

@Lucas M. (Gast)

>Ich bin jedoch nie dazu gekommen mich so weit in das Thema
>einzuarbeiten, dass ich vollends verstehe, wie eine CPU sich z.B. selbst
>am laufen hält, was sie benötigt, um programmierbar zu sein, wie man so
>ein Projekt im allgemeinen beginnt und noch vieles, vieles mehr. :)

Schau dir den Picoblaze von Xilinx an, der ist top! Da ist auch alles 
erklärt und es gibt eine vollständige VHD-Beschreibung.

>->Sollte ich so ein Vorhaben mittels eines FPGA bzw. mit VHDL
>realisieren,

Ist sinnvoll.

> oder tut es ein einfaches Simulationsprogramm, wie Logisim
>auch?

Kann sein.

>Eine grafische Ansicht würde mir besser gefallen.

Logisch!

>Bei den im Forum/Google genannten Büchern war ich mir was Aktualität
>betrifft und ob sie passend wären nicht sicher.

Man könnte sich das hier anschauenen, aber das ist schon was für 
Fortgeschrittene.

https://www.mikrocontroller.net/articles/16/32Bit_Computer/Konsole

DAS ist mal ein wirklich gutes Projekt zum Thema. Das Antiprojekt von 
J.G. wurde ja schon verlinkt 8-0

: Bearbeitet durch User
von NichtWichtig (Gast)


Lesenswert?

Ach herrje...

sowas macht man mit einer ordentlichen Menge 7400 :-)
Damit läßt sich auch ein Pentium nachbauen und der Lerneffekt dürfte 
immens sein, wie auch der Stromverbauch.

Logicworks auf dem AMIGA, man waren das zeiten :lol:

von Stefan F. (Gast)


Lesenswert?

Mich reizt ja der Gedanke, mal eine Turing Maschine mit einem µC oder 
Laptop zu simulieren und die dann zu programmieren (was die größere 
Herausforderung ist).

Aber irgendwie fehlt es mir da an Vorstellungskraft, wie man mit 3 
Operationen etwas sinnvolles anstellen soll.

von Peter S. (psblnkd)


Lesenswert?

@Lucas M.
Man kann natürlich eine CPU mit der FPGA-Technologie simulieren, aber 
mit der komplizierten Einarbeitung in diese wird wohl schnell die Lust 
an der eigentlichen Aufgabe verloren gehen. Es sei denn, man will sich 
sowieso mit FPGA und seinen Programmiersprachen auseinandersetzen ...

Es gibt aber schon fertige Entwicklungen zu CPU-Simulation in FPGA, so 
z.B. zur Z80-CPU: http://opencores.org/project,a-z80
Alternativ dazu wäre es aber auch möglich diese in TTL-Technik "diskret" 
aufzubauen. Siehe dazu den Thread 
http://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=9977 
(009 usw.)

Ein sicherlich lohnendes und sehr lehrreiches Betätigungsfeld ...


Grüsse aus Berlin

PSblnkd

von Purzel H. (hacky)


Lesenswert?

Ein puristischer Asatz waere eine 1 bit CPU. Was kann ich mit einer 1 
bit CPU alles machen ? Daraus bestimmt sich dann wie gross der 
Adresscounter sein muss. Vielleicht reichen 16 Befehle fuer die gesammte 
funktionalitaet.

von Stefan F. (Gast)


Lesenswert?

> Ein puristischer Asatz waere eine 1 bit CPU

Sag ich ja, Turing Maschine. Die gibt mit 3 Operationen und auch mit 
mehr.

> Daraus bestimmt sich dann wie gross der Adresscounter sein muss.

Der ist bei der Turing Maschine unendlich groß, da der Speicher 
unendlich groß ist (natürlich nur theoretisch).

von Purzel H. (hacky)


Lesenswert?

Naja. Du hast 1 Eingang & 1 Ausgang & 1 Register. Von den logischen 
Operationen AND, OR, NOT, XOR faellt vielleicht eine oder die Andere 
zusammen.

von Bitwurschtler (Gast)


Lesenswert?

Lucas M. schrieb:
> Ich möchte gerne eine 8-Bit-CPU auf Gatter-Ebene realisieren.
>
> ->Sollte ich so ein Vorhaben mittels eines FPGA bzw. mit VHDL
> realisieren, oder tut es ein einfaches Simulationsprogramm, wie Logisim
> auch?

Ein FPGA hat keine Gatter sondern LUT's und CPU's werden auch nicht 
reinrassig aus Gattern gefertigt sondern da finden sich auch ein paar 
Mini-speicherbänke und ggf ROM für den Microcode. 
http://alumni.media.mit.edu/~mcnerney/2009-4004/i4004-schematic.gif

wenn du industrierelevantes KnowHow aufbauen willst, dann realisiere das 
ganze als FPGA und verbuch die Logisim-Simulierei als akademische 
Spielerei. Falls du mit industrierelevanten Simulationstools arbeiten 
willst dann schau dich nach modelsim/aldec und den FÜGA-Herstellern um.

von Strubi (Gast)


Lesenswert?

Willst du wirklich mit Gattern arbeiten?
Hier gibt es einiges zu dem Thema anzugucken/lernen: 
http://www.mycpu.eu/
Ansonsten wirst du zum Thema MIPS oder DLX viel akademisches Material an 
amerikanischen Unis (da muss jeder ET-Student mal im Kurs ansatzweise 
eine CPU schreiben) im Netz finden. Aktuelle Bücher sind schwerer zu 
kriegen, selten findet man offline ein Juwel zu Z80 Interna, etc.
Ziehst du alles im FPGA auf, komm bloss weg von Gatterkonzepten. 
Ansonsten gibts hier eine Menge Threads zum Thema, Stichwörter VHDL, 
MyHDL, GHDL-Simulator, GTKWave, usw.
Mit GHDL kann man z.B. virtuelle CPUs an seine Kollegen im .exe-Format 
verschicken :-)

von Jens S. (djstorm)


Lesenswert?

Interessant ist hier die Videoserie von Ben Eater "Building an 8 Bit 
breadboard Computer":

https://www.youtube.com/watch?v=HyznrdDSSGM&list=PLowKtXNTBypGqImE405J2565dvjafglHU

Man muss sich zwar einiges an Zeit nehmen um alles anzuschauen - ist 
aber gut erklärt.

von Gugl (Gast)


Lesenswert?

H.Joachim S. schrieb:
> eine BF-optimierte CPU?

Was ist denn das?

von BF-optimierte (Gast)


Lesenswert?

BF := Brainfuck

von Lucas M. (Gast)


Lesenswert?

Danke für die zahlreichen Antworten!

Mir geht es nicht um eine physisch greifbare Variante der CPU (außer Ihr 
empfehlt mir das ganze über ein FPGA oder anders zu machen).
Ich möchte am liebsten die Möglichkeit haben, dem Prozessor am Ende beim 
Arbeiten zuzusehen.
Eine Benutzeroberfläche zum Entwickeln der CPU, wie in Logisim wäre gut, 
aber nicht unbedingt erforderlich.

Ich möchte mich in der nächsten Zeit eingehend mit dem Thema 
beschäftigen und suche dementsprechend eine passende 
"Entwicklungsumgebung".

Es würde mir völlig ausreichen den Prozessor nur über Software zu 
simulieren, außer Ihr empfehlt mir etwas anderes.

Ich möchte gerne auf Gatterebene arbeiten und den Prozessor bis ins 
kleinste Detail selbst entwickeln.

Strubi schrieb:
> Mit GHDL kann man z.B. virtuelle CPUs an seine Kollegen im .exe-Format
> verschicken :-)
Gibt es dazu eine grafische Simulation der Komponenten?
Wäre das eine sinnvolle Möglichkeit mein Vorhaben umzusetzen?
Kann man in GHDL oder allgemein in Hardwarebeschreibungssprachen auf 
Gatterebene arbeiten?

Was würdet Ihr mir empfehlen?

Und habt Ihr gebundene Buchempfehlungen für mich?
Eventuell Bücher die sich allgemein mit dem Aufbau oder vielleicht sogar 
dem eigenen Entwickeln von Prozessoren befassen?

MfG Lucas.

von Eric B. (beric)


Lesenswert?

Lucas M. schrieb:
> Ich möchte gerne auf Gatterebene arbeiten und den Prozessor bis ins
> kleinste Detail selbst entwickeln.

Dann fang doch einfach an! Überlege dir was (d)ein Prozessor alles 
machen können soll. Irgenwann kommen dann große Entscheidungen die nur 
du treffen kannst: Harvard oder von-Neumann, Stack oder Register, RISC 
oder CISC, Memory mapped oder Port mapped I/O...

Beispiele woran man sich orientieren kann gibt's genug: Motorola 6800, 
Intel 8080 oder 8051, MOS 6502, Zilog Z80, ...

[edit]
Das Buch zu Computerarchitekturen ist: Computerarchitektur. Strukturen 
– Konzepte – Grundlagen (5. Aufl. ISBN 3-8273-7151-1) von Tanenbaum und 
Goodman

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

> Gibt es dazu eine grafische Simulation der Komponenten?

Minecraft: 
https://technic-de.gamepedia.com/Schaltkreise/Logikgatter_(Redstone)

> Wäre das eine sinnvolle Möglichkeit mein Vorhaben umzusetzen?

Nein. War auch nicht ernst gemeint.

Du brauchst nicht nur eine CPU, sondern eine ganzen Computer, alos auch 
einen Programmspeicher, einen Arbeitsspeicher und mindestens eine 
Eingabe- und eine Ausgabeschnittstelle. Um all diesen Komponenten 
zuschauen zu können, wird eine Simulation, die auf die wenigen cm² eines 
Bildschirms beschränkt ist, wohl kaum ausreichen.

von bastler (Gast)


Lesenswert?

Lothar schrieb:
> Beitrag "Re: 8bit-Computing mit FPGA"

Ein besserer Link zur selben Sache:
Beitrag "Re: Befehlssatz der bo8-CPU - was ist gut, was ist schlecht"

Der TO interessiert sich für den Aufbau einer CPU auf
Gatter-Ebene. Hier würde er Informationen dazu finden.

von Strubi (Gast)


Lesenswert?

Lucas M. schrieb:
> Gibt es dazu eine grafische Simulation der Komponenten?
> Wäre das eine sinnvolle Möglichkeit mein Vorhaben umzusetzen?
> Kann man in GHDL oder allgemein in Hardwarebeschreibungssprachen auf
> Gatterebene arbeiten?

GHDL ist 'nur' ein VHDL-Simulator, aber einer der sauberst 
implementierten.
Grafische Simulation gibt's nur insofern, dass du eine Wellenform 
rausbekommst (virtuelles Oszi). Sieht in der Animation so aus wie im 
Video hier: 
http://section5.ch/index.php/dokumentation/masocist-soc/virtualchip/
Es gibt aber eine Menge anderer Simulatoransätze, a la cocotb, 
qemu...bedien' dich :-)


bastler schrieb:
> Ein besserer Link zur selben Sache:
> Beitrag "Re: Befehlssatz der bo8-CPU - was ist gut, was ist schlecht"
>
> Der TO interessiert sich für den Aufbau einer CPU auf
> Gatter-Ebene. Hier würde er Informationen dazu finden.

Langsam wird die Threadkaperei auf dieses unsägliche bo8-Geplärr zur 
Störung, mit Verlaub. Josef, lass es doch einfach.
Und ich korrigiere mal: Das Design dieser CPU ist das beste Beispiel 
dazu, wie man es NICHT machen sollte, also schon gar kein 
Anschauungsmaterial für Anfänger.

von Strubi (Gast)


Lesenswert?

Ich vergass noch: Es gibt da ein Java-Tool namens MyOpenLab, was man 
auch für grafische Ausgabe der Simulation a la Labview verwenden kann. 
Damit kannst du dir auch auf Gatter-Level mal was zusammenklicken. Aber 
prinzipiell ist von 'grafischem Programmieren' im Sinne der 
Wiederverwertbarkeit eher abzuraten :-)

von Purzel H. (hacky)


Lesenswert?

Und dann mindestens so spannend, braucht man einen Befehlssatz und einen 
ASM, oder Compiler.

von Klaus R. (klara)


Lesenswert?

Lucas M. schrieb:
> Ich habe seit längerem vor eine eigene CPU zu entwerfen und zu
> realisieren, doch bin noch Einsteiger in dem Gebiet.

Hol Dir lieber einen Raspberry Pi. Da lernst Du etwas für das Leben.
mfg klaus

von ilm8 (Gast)


Lesenswert?

Hast du schon Mal was von Ben Eater gehört? Der hat in einer YouTube 
Serie alles erklärt und schematic Dateien und Stücklisten mit teilen 
gemacht. Er hat den Computer zwar nicht ausschließlich auf Gatter Ebene 
gebaut aber theoretisch erklärt wie man das machen könnte. Du könntest 
für 240€ sogar ein Kit kaufen doch das ist eben auf Breadboards 
aufgebaut. Deswegen auch der Höhe Preis.

LG Jakob

von Hans Kanns (Gast)


Lesenswert?

Name H. schrieb:
> Und dann mindestens so spannend, braucht man einen Befehlssatz und einen
> ASM, oder Compiler.

Das wäre was gewesen für ein Projekt der 90er. Ich würde im Traum nicht 
mehr auf die Idee kommen, eine CPU zu bauen. Wozu? MAn kriegt sie ja am 
Ende hin, hat aber nichts Gescheites.

Wenn, müsste es eine Spezial-CPU- sein, die eine Sonderaufgabe kann, 
z.B. der Audio DSP von MASON.

Oder sie ist besonders sicher, hat integriertes TMR oder sowas.

von Dr.Who (Gast)


Lesenswert?

Wie weit der TO wohl nach fast zwei Jahren mit seinem Vorhaben
gekommen ist? Vermutlich hat er noch nicht mal den Clock-Generator
zum Laufen gebracht. ;)

von MaWin (Gast)


Lesenswert?

Hans Kanns schrieb:
> Ich würde im Traum nicht
> mehr auf die Idee kommen, eine CPU zu bauen. Wozu?

Erkenntnisgewinn.
Neue Dinge lernen.
Spaß.

von Sigint 112 (sigint)


Lesenswert?


von NichtWichtig (Gast)


Lesenswert?

Sigint 1. schrieb:
> https://www.nand2tetris.org/

Cool!

Danke für den Link.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Ansonsten kann mans auch übertreiben und in 32Bit bauen:
http://www.fritzler-avr.de/spaceage2/index.htm

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.