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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Lucas M. (Gast)


Bewertung
2 lesenswert
nicht 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)


Bewertung
-5 lesenswert
nicht lesenswert

von H.Joachim S. (crazyhorse)


Bewertung
-1 lesenswert
nicht lesenswert
Gibts eigentlich schon eine BF-optimierte CPU?

von Gerald B. (gerald_b)


Bewertung
3 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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. (lkmiller) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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. (lkmiller) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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. (stefanus)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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. (stefanus)


Bewertung
0 lesenswert
nicht 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).

: Bearbeitet durch User
von Purzel H. (hacky)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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. (Firma: eXtensive media) (djstorm)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
H.Joachim S. schrieb:
> eine BF-optimierte CPU?

Was ist denn das?

von BF-optimierte (Gast)


Bewertung
0 lesenswert
nicht lesenswert
BF := Brainfuck

von Lucas M. (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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. (stefanus)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Und dann mindestens so spannend, braucht man einen Befehlssatz und einen 
ASM, oder Compiler.

von Klaus R. (klara)


Bewertung
0 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
2 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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 1. (sigint)


Bewertung
0 lesenswert
nicht lesenswert

von NichtWichtig (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Sigint 1. schrieb:
> https://www.nand2tetris.org/

Cool!

Danke für den Link.

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


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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.