Hallo alle zusammen, ich studiere Informatik und wir nehmen gerade die Rechnerarchitektur (Von-Neumann) durch. Dabei wird während der Vorlesung ein kompletter (kleiner) Computer (ALU, Steuerwerk, zentraler Bus, Arbeitsspeicher, ...) zusammengebaut (also wir lernen wie man aus logischen Gattern z.B. eine AU und dann eine ALU zusammenbaut etc.) und mikroprogrammieren ihn dann. Das ganze finde ich sehr interessant und plane daher neben den Vorlesungen einen Computer (dieser hat ein anderes Design, so das ich ihn z.B. direkt auf rekursive programmierung optimiere und ein paar anderen Änderungen zu dem Rechner aus unserer Vorlesung). Da ich den Computer dann später synthetisieren möchte (besteht momentan aus einer Menge Zeichnungen) suche ich eine geeignete Plattform, bei der ich möglichst ohne Löten und möglichst schnell (und dann noch zu einem akzeptablen Preis) den Rechner herstellen kann. Auf meiner Suche nach einer passenden Plattform bin ich über FPGA gestolpert. Da ich noch nicht den Aufbau eines kompletten Computers kenne weiß ich nicht ob diese Plattform möglichst optimal für mein Vorhaben ist bzw. ob es damit überhaupt möglich ist. Daher ist meine Frage: Kann ich bei FPGAs einzelne Logik-Gatter definieren und diese dann verschalten und habe ich damit die Möglichkeit einen zentrallen Datenbus zu realisieren (z.B. für die Ankoplung der Register an meine ALU). Ich lese immer etwas über VHDL, ich bin mir aber nicht sicher, ob VHDL mir das liefert was ich benötige. danke fürs durchlesen, mit freundlichen Grüßen Erik
Hi, google mal nach "suska", oder Atari ST im FPGA. Da hat einer genau das gemacht. Beantwortet auch deine letzte Frage :-) Gruss, - Strubi
Klar geht das. Du kannst zum Beispiel bei Xilinx den MicroBlaze Softcore Prozessor in den FPGA implementieren, RAM ist intern im BRAM realisiert, nach außen hin gibts auch viele Schnittstellen. Damit kannst du mit einem FPGA Demobaord einen vollwertigen Rechner bauen, auf dem dann sogar Linux läuft.
Schau mal hier: http://groups.inf.ed.ac.uk/pasta/hw_fpga.html Eine CPU auf rekursive Programmierung zu optimieren wird übrigens nicht viel bringen. Zu viel Hardware-Aufwand für marginale Geschwindigkeitsvorteile, die eventuell durch eine geringere erzielbare Taktfrequenz wieder aufgefressen werden. Es hat in der Vergangenheit eine Reihe CPUs gegeben, die auf objektorientierte Programmierung, LISP-Programmierung usw. "optimiert" wurden, aber ein effizientes RISC-Design ist kaum zu schlagen. Es hat auch ein ganzes Jahrzehnt RISC-vs-CISC Debatten gegeben, bei denen es um ähnliche Dinge ging, nämlich ob der Instruktionssatz so mächtig sein soll, um die semantische Lücke zu den Hochsprachen zu schließen, oder ob recht simple Instruktionen ausreichen, die zu einer schlichteren Architektur führen und möglicherweise mit einer höheren Taktfrequenz implementiert werden können. Am Ende hat sich übrigens ein Hybrid durchgesetzt (x86) mit einem CISC-Instruktionssatz und einer internen RISC-ähnlichen Architektur. Murkser
Anderes Beispiel, die verwenden auch guenstige eval boards: http://zet.aluzina.org/index.php/Zet_processor
Ums kurz zu machen: Ein FPGA ist genau das Richtige für sowas. Am besten deinen Rechner in VHDL bzw. Verilog implementieren oder eben mit dem Schematic Tool des jeweiligen Herstellers (Altera, Xilinx,..) (Von der Eingabe als Schaltplan würde ich aber eher abraten ;) )
Erik Lamhase schrieb: > Ich lese immer etwas über VHDL, ich bin mir aber > nicht sicher, ob VHDL mir das liefert was ich benötige. VHDL ist wie Verilog eine Hardwarebeschreibungssprache. Die meisten heutzutage käuflichen CPUs wurden in einer der beiden Sprachen beschrieben.... > Daher ist meine Frage: Kann ich bei FPGAs einzelne Logik-Gatter > definieren und diese dann verschalten und habe ich damit die Möglichkeit > einen zentrallen Datenbus zu realisieren (z.B. für die Ankoplung der > Register an meine ALU). In jedem halbwegs anspruchsvollen VHDL Buch wird heute irgendeine CPU beschrieben, das ist irgendwie hipp... :-/ Leih dir mal das Buch VHDL-Synthese von Reichardt&Schwarz aus. > Das ganze finde ich sehr interessant > und plane daher neben den Vorlesungen einen Computer Dir ist schon klar, dass für einen richtigen Computer etliche Mannjahre investiert werden? Und du willst das so nebenher machen? Krass... Ich würde sagen, du solltest um deine FPGA-VHDL-Versuche erst mal mit den einfachen Dingen des Lebens beginnen: Lauflichter, serielle Schnittstellen und VGA-Spiele... Und dann gibt es 2 Möglichkeiten: 1. deine CPU wird mit dem dabei gewonnen Wissen irgendwann fertig. 2. dein EVAL-Board ist billig bei EBAY zu haben. Mir scheint, dass viele eher die 2. Möglichkeit ausnützen... :-/
also ich kann dir das Buch empfehlen: Peter J. Ashenden: The Designer's Guide to VHDL Second Edition
Lothar Miller schrieb: > Dir ist schon klar, dass für einen richtigen Computer etliche Mannjahre > investiert werden? Und du willst das so nebenher machen? Krass... Im Elektrotechnik- und Informatikstudium wird der Aufbau eines Prozessors vom Logikgatter bis zum Pipelining in ungefähr einem Semester detailiert durchbesprochen. Einen MIPS-Prozessor beispielsweise kann man aus grundlegenden Schaltelementen wie Register, Multiplexer, Addierer, etc. auf einer A4-Seite relativ problemlos aufzeichnen. Das dann noch in VHDL zu übersetzen ist überschaubar.
P. M. schrieb: > Einen MIPS-Prozessor beispielsweise kann man > aus grundlegenden Schaltelementen wie Register, Multiplexer, Addierer, > etc. auf einer A4-Seite relativ problemlos aufzeichnen. Wünsche ich mir bei deinem nächsten Post als Anhang ;-) Aber im Ernst: Kommt natürlich drauf an, was man will... einen "Computer" oder ne CPU im Stil eines core i7 wird man nebenher und auf nem FPGA eher nicht hinbekommen (oder nur mit 0,5 Hz ;) nach 30 Jahren Entwicklung ;) ) Aber für einen Anfänger sollte eine einfach Rechenmaschine schon drin sein mit entsprechender Einarbeitungszeit... P. M. schrieb: > Im Elektrotechnik- und Informatikstudium wird der Aufbau eines > Prozessors vom Logikgatter bis zum Pipelining in ungefähr einem Semester > detailiert durchbesprochen. Und ich glaube mit dem was man in einem Semester so lernt wird man evtl. auch an der einen oder anderen Ecke seine Mühe haben.. der Teufel steckt bekanntlich im Detail...
In einem Semester die Theorie einer CPU durchpauken ist okay. Diese auf einem FPGA zu implementieren nochmal deutlich anspruchsvoller. Aber kennen wir nicht alle diese Sonntag-Nachmittags-Langeweile-Projekte, aus denen idR nichts wird weil nach einer Woche die Motivation dahin ist und man sich in seiner Freizeit lieber anderen Dingen zuwendet (Freunde, Sport, das andere Geschlecht etc) :-)))
Yo! schrieb: > Wünsche ich mir bei deinem nächsten Post als Anhang ;-) Hier, bitteschön: http://www.google.ch/images?hl=de&rlz=&=&q=mips+datapath&um=1&ie=UTF-8&source=og&sa=N&tab=wi&biw=1280&bih=805 Yo! schrieb: > Aber im Ernst: Kommt natürlich drauf an, was man will... Natürlich. Aber einen einfachen Prozessor mit ein paar Befehlen, wie eben beispielsweise ein MIPS-Kern, kriegt man gut hin. Wenn man Dinge hinzunimmt wie tiefe Pipelines, parallel ausgeführte Instruktionen, dynamische Zuweisung von Resourcen, Spezialoperationen, etc. dann wird es schnell beliebig kompliziert. Intel beispielsweise erschwert sich das Leben dann zusätzlich noch über die Altlasten des x86 Instruktionssatz - gerüchteweise soll ja ein wesentlicher Teil der Chipfläche dafür draufgehen, abwärskompatibel zu sein.
P. M. schrieb: > Yo! schrieb: >> Wünsche ich mir bei deinem nächsten Post als Anhang ;-) > > Hier, bitteschön: > http://www.google.ch/images?hl=de&rlz=&=&q=mips+da... Ich dachte du malst das jetzt selbst ;) Außerdem sind das leider alles recht abstrahierte Blockschaltbilder (gut hab nur flüchtig geschaut)... mir wurde doch ein Plan der nur aus Grundelementen besteht versprochen... schade ;) P. M. schrieb: > Einen MIPS-Prozessor beispielsweise kann man > aus grundlegenden Schaltelementen wie Register, Multiplexer, Addierer, > etc. auf einer A4-Seite relativ problemlos aufzeichnen.
Yo! schrieb: > Ich dachte du malst das jetzt selbst ;) Nein, dafür war ich jetzt definitiv zu faul ;-) (Ich hab es schon mal gemacht, hab den Zettel aber nicht hier. Vielleicht grabe ich ihn am Abend mal aus.) > Außerdem sind das leider alles recht abstrahierte Blockschaltbilder (gut > hab nur flüchtig geschaut)... mir wurde doch ein Plan der nur aus > Grundelementen besteht versprochen... schade ;) Es sind nur Register, einfache arithmetische oder logische Blöcke und Multiplexer. Also nichts, das VDHL nicht kann oder das man nicht als 74xx-IC bekommt.
P. M. schrieb: > Lothar Miller schrieb: >> Dir ist schon klar, dass für einen richtigen Computer etliche Mannjahre >> investiert werden? Und du willst das so nebenher machen? Krass... > Im Elektrotechnik- und Informatikstudium wird der Aufbau eines > Prozessors vom Logikgatter bis zum Pipelining in ungefähr einem > Semester detailiert durchbesprochen. Jo klar, gut, dass wir darüber gesprochen haben... :-o Zwischen "vorgekaut und halb verdaut angeliefert bekommen" und "selber verstanden und gemacht" ist dann nochmal ein Semester. > Einen MIPS-Prozessor beispielsweise kann man > aus grundlegenden Schaltelementen wie Register, Multiplexer, Addierer, > etc. auf einer A4-Seite relativ problemlos aufzeichnen. Warum arbeitet bei der Firma dann noch ein 2. Entwickler, wenn einer sich das ein Semester lang anhört und dann im nächsten halben Jahr das Zeug selber macht? > Das dann noch in VHDL zu übersetzen ist überschaubar. Das grenzt jetzt an Überheblichkeit. Im Ernst! Ich bin mir nur nicht so sicher von welcher Seite her... :-o >> Außerdem sind das leider alles recht abstrahierte Blockschaltbilder (gut >> hab nur flüchtig geschaut)... mir wurde doch ein Plan der nur aus >> Grundelementen besteht versprochen... schade ;) > Es sind nur Register, einfache arithmetische oder logische Blöcke und > Multiplexer. Also nichts, das VDHL nicht kann oder das man nicht als > 74xx-IC bekommt. Es ist auf dem FPGA sogar noch einfacher: nur LUTs und FFs. Aber die sollte man in die richtige Reihenfolge bringen... > Also nichts, das VDHL nicht kann oder das man nicht als 74xx-IC bekommt. Man könnte es sich sogar aus einzelnen Transistoren zusammenlöten...
Hallo alle zusammen, nein, einen core i7 war nicht mein Projekziel :D Ich meine wirklich eine kleinere CPU (kleiner Computer) also für die ALU Inkrement, Dekrement, Addition, Substraktion, Division, OR, AND, XOR, INV, NZVC-Flags dazu eine kleine FPU (Fix oder Float, darüber denke ich noch nach). Dazu ein wenig RAM und für I/O erst einmal nur eine Handvoll Ports. Und was zu diesen Sachen dazu gehört. Also nichts x86 kompatiebles. Ich denke das dürfte machbar sein (in einer annehmbaren Zeit) oder ist das ganze so viel komplexer als es aussieht. Ich meine noch viel niedriger als auf Gatter-Logik ebene wird es bei VDHL doch nicht sein oder (dabei muss ich doch nicht einzelne MOSFETs konfigurieren oder)? mit freundlichen Grüßen Erik @Strubi danke für die Information zum Projekt @Christian R. nun ein ganzes Linux muss es nicht sein. @Murkser Danke für die Information. @Christian Leber Danke für die Information zum Projekt. @Yo! Danke für den Tipp. Ich werde mir mal VHDL angucken. @Lothar Miller Ich habe mich für das VHDL-Synthese von Reichardt&Schwarz mal vormerken lassen. Danke für den Tipp. @user Ich werde mir das Buch (Peter J. Ashenden: The Designer's Guide to VHDL Second Edition) einmal genauer ansehen, danke für den Tipp. @P. M. Danke, dass war wieder motivierend nach dem Post von Herrn Miller @Yo! (2) Naja, wenn ich an der einen oder anderen Ecke keine Mühe hätte würde es sich ja nicht lohnen :) @Wissender Denke schon, aber mein Interesse ist groß und durch die Vorlesung werde zumindest das ganze Semester über motiviert (immer wieder ein neuer Baustein für mein Projekt). @P. M. (2) Ja, diese Sachen wollte ich nun wirklich nicht einbauen. @Lothar Miller (2) das mit dem Zusammenlöten von Transistoren wollte ich ja vermeiden.
Hat Jeri Ellsworth das nicht schon so gemacht? Laut Wikipedia http://en.wikipedia.org/wiki/Jeri_Ellsworth hat sie sogar einen Vortrag names "Demo Coding with FPGAs: We Don't Need No Stinking CPUs" gehalten... mit freundlichen Grüßen, Valentin Buck
Also ich habe im Rahmen der Vorlesung "CPU-Design" im letzten Semester nen 32bitter mit Pipeline inkl. Hazardhandling und Caching in VHDL implementiert. Jedoch keine Branch Prediction, Interrupts oder sonstiges Gedöns
Lothar Miller schrieb: > Jo klar, gut, dass wir darüber gesprochen haben... :-o > Zwischen "vorgekaut und halb verdaut angeliefert bekommen" und > "selber verstanden und gemacht" ist dann nochmal ein Semester. Nein, dazwischen liegt an vernünftigen Unis die Prüfungsvorbereitungszeit. Natürlich kann das danach nicht jeder, aber man bekommt auf jeden Fall genug Wissen angeliefert und genug Gelegenheiten, es zu verstehen. Lothar Miller schrieb: > Warum arbeitet bei der Firma dann noch ein 2. Entwickler, wenn einer > sich das ein Semester lang anhört und dann im nächsten halben Jahr das > Zeug selber macht? Hier wurde behauptet, es sei überschaubar, den MIPS-Prozessor in VHDL zu implementieren. Es hat niemand behauptet, es sei überschaubar, aus dem nichts einen MIPS-Prozessor zu erfinden und zu einem marktfähigen Produkt zu bringen.
foobar schrieb: > Es hat niemand behauptet, es sei überschaubar, aus dem nichts einen > MIPS-Prozessor zu erfinden und zu einem marktfähigen Produkt zu bringen. Da wird sich gewunden wie ein aalglatter Anwalt... Erik Lamhase schrieb: > Ich meine wirklich eine kleinere CPU (kleiner Computer) also für die ALU > Inkrement, Dekrement, Addition, Substraktion, Division, OR, AND, XOR, > INV, NZVC-Flags Das mit der Division ist dann schon sportlicher... > dazu eine kleine FPU (Fix oder Float, darüber denke ich noch nach). Ich meinte, eine FPU wäre immer Float... http://en.wikipedia.org/wiki/Floating-point_unit > Dazu ein wenig RAM und für I/O erst einmal nur eine Handvoll Ports. > Und was zu diesen Sachen dazu gehört. Ein paar Timer, die Interruptverwaltung, eine serielle Schnittstelle, ein VGA-Ausgang, ein Speichercontroller, ein Compiler und dazu die ganze Toolchain... > Ich denke das dürfte machbar sein (in einer annehmbaren Zeit) Was heißt bei dir annehmbar wenn es quantisiert wird? > oder ist das ganze so viel komplexer als es aussieht. Noch viel > niedriger als auf Gatter-Logik ebene wird es bei VDHL doch nicht sein > oder (dabei muss ich doch nicht einzelne MOSFETs konfigurieren oder)? Wenn ein FPGA deine Zielplattform ist, dann sind LUTs und FFs die unterste Ebene. > @P. M. Danke, dass war wieder motivierend nach dem Post von Herrn Miller Ich wollte dich keinesfalls demotivieren. Ich wollte nur sagen: fang einfach mal an. Oder besser: fang erst mal einfach an. Wenn du bisher noch nichts mit VHDL gemacht hast, dann kauf dir ein EVAL-Board und leg mal los mit den beschriebenen Lauflichtern usw. Zur Abrundung: > Also nichts x86 kompatiebles. Beitrag "8086 nachbauen" Beitrag "Re: Multicoresystem auf FPGA" Beitrag "µC Entwurf/Prozessor Entwurf mittels VHDL/Verilog und FPGAs?" Und als Tip für Xilinx: das Stichwort "PicoBlaze"
Bisschen andere Art von Prozessor (Vektorprozessor), aber auch ein komplettes System mit IO, VGA usw. Haben wir mal im Studium gebaut: http://hicovec.informatik.fh-augsburg.de/trac
Lothar Miller schrieb: > foobar schrieb: >> Es hat niemand behauptet, es sei überschaubar, aus dem nichts einen >> MIPS-Prozessor zu erfinden und zu einem marktfähigen Produkt zu bringen. > Da wird sich gewunden wie ein aalglatter Anwalt... Es wurde gesagt, dass die Übersetzung des stehenden Blockschaltbilds nach VHDL überschaubar sei. Dann hast du gefragt, warum dann noch ein zweiter Entwickler bei der Firma arbeite. Da ist es doch überhaupt nicht allglatt gewunden, wenn man darauf hinweist, was alles noch zu tun ist. Von der Entwicklung des Designs (der wohl umfangreiche Programmanalysen vorhergehen), über die Implementierung in VHDL, allerlei Verifikation und Tests, dann noch die von dir gebrachten Punkte: Lothar Miller schrieb: > Ein paar Timer, die Interruptverwaltung, eine serielle Schnittstelle, > ein VGA-Ausgang, ein Speichercontroller, ein Compiler und dazu die ganze > Toolchain... usw.
Erik Lamhase schrieb: > Daher ist meine Frage: Kann ich bei FPGAs einzelne Logik-Gatter > definieren und diese dann verschalten und habe ich damit die Möglichkeit > einen zentrallen Datenbus zu realisieren (z.B. für die Ankoplung der > Register an meine ALU). Ich lese immer etwas über VHDL, ich bin mir aber > nicht sicher, ob VHDL mir das liefert was ich benötige. Ja klar, geht das. bei meinem selbstversuch hab ich mal den Picoblaze nachgehämmert: datenblatt runtergeladen und nach blockbild,OpCode beschreibung nachgebaut. natürlich etwas anders, nicht als zwei, sondern als Eintaktmaschine. Ein paar Lehren habe ich daraus gezogen: -Hat man das Blockbild, das Konzept und die opCode codierung ist es deutlicher einfacher. -in für FPGA-Architecturen optimierte controller vwerwendet man so oft als möglich kleiner Dual-Port Ramfelder statt register. -raffinierte Addressierungsarten wie beim MC68000 machen FPGA's langsam -die meiste zeit verbringt man mit der Simulation von testprogrammen und beim Ärgern mit den verschiedenen Assembleren und den tools deren output als Binary in den FPGA zu bringen -in VHDL geschriebener RTL-Code verbraucht mehr FPGA-ressourcen als der von Ken Chapmann handoptimierte Code (instanzierte FF,LUT's und Distributed RAM -manchmal ist umständlich, besser als primitiv, so lassen sich viele Primitvbefehle durch arithmetische Befehle nachbilden und so Logik vermeiden: z.B. CLR Reg -> reg := SUB REG,REG oder MOV B,A -> B := ADD A,0 -Buchempfehlung: Christian Siemers: "Prozessorbau" MfG,
Fpga Kuechle schrieb: > Ja klar, geht das. bei meinem selbstversuch hab ich mal den Picoblaze > nachgehämmert: datenblatt runtergeladen und nach blockbild,OpCode > beschreibung nachgebaut. Nun, was sagst du zur oben diskutierten Fragen, ob das ein überschaubarer Aufwand ist?
Hier mal mein kleiner 32bitter aus dem letzten Semester. Aufgabenstellung und Opcodekodierung im PDF enthalten. Implementierungsaufwand mit fortgeschrittenen VHDL-Skills und dem Wissen aus Rechnerarchitektur aus dem Vorsemester, knapp 2 Wochen. Die im Package enthaltenen Testprogramme berechnen die Fibonaccizahlen, mal iterativ mal rekursiv
foobar schrieb: > Fpga Kuechle schrieb: >> Ja klar, geht das. bei meinem selbstversuch hab ich mal den Picoblaze >> nachgehämmert: datenblatt runtergeladen und nach blockbild,OpCode >> beschreibung nachgebaut. > > Nun, was sagst du zur oben diskutierten Fragen, ob das ein > überschaubarer Aufwand ist? Ja, hat zwei Wochen benötigt, wobei die meiste Zeit fürs Anpassen Toolchain und Adaption Evalboard benötigt wurde. Allerdings habe ich schon ein Jahrzehnt Berufs-Erfahrung. MfG,
Dennis Kuchel hat sich vor zig Jahren einen Computer aus 74er-Digital-ICs zusammengebaut. Alte Seite hier: http://mycpu.selfhost.it/oldsite/index.htm Neue hier: http://www.mycpu.eu/ Inzwischen gibt es davon auch eine VHDL-Implementierung.
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.