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!
:
Bearbeitet durch User
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?
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/
@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
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).
Naja. Du hast 1 Eingang & 1 Ausgang & 1 Register. Von den logischen Operationen AND, OR, NOT, XOR faellt vielleicht eine oder die Andere zusammen.
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 :-)
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.
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
:
Bearbeitet durch User
> 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.
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.
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 :-)
Und dann mindestens so spannend, braucht man einen Befehlssatz und einen ASM, oder Compiler.
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. ;)
Hans Kanns schrieb: > Ich würde im Traum nicht > mehr auf die Idee kommen, eine CPU zu bauen. Wozu? Erkenntnisgewinn. Neue Dinge lernen. Spaß.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.