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.
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.
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!
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...
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?
@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
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:
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.
@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
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.
> 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).
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.
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 :-)
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.
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
> 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.
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.
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 :-)
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
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
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.
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. ;)