Lesbare und lehrreiche Implementierungen einer CPU in einem HDL

Können Sie eine lesbare und lehrreiche Implementierung einer CPU in VHDL oder Verilog empfehlen? Am besten etwas gut Dokumentiertes.

PS Ich weiß, dass ich mir anschauen kann opencores, aber ich interessiere mich besonders für Dinge, die sich die Leute tatsächlich angesehen und interessant gefunden haben.

PS2. Entschuldigung für die blöden Tags, aber als neuer Benutzer kann ich keine neuen erstellen

Hier ist ein großartiger Blog von einem Typen, der versucht, eine winzige CPU für ein CPLD zu erstellen stevechamberlin.com/cpu
HDL ⊕ Leider lesbar.
@ Joby Taffey: Link ist defekt, hast du das gemeint? bigmessowires.com/cpu-in-a-cpld
mor1kx , eine Verilog-Implementierung von OpenRISC 1000. Es enthält einige Kommentare. OpenRISC hat den Vorteil, dass es eine Toolchain hat, aber dennoch relativ einfach ist.

Antworten (7)

Vielleicht gefällt Ihnen eine Artikelserie, die ich vor langer Zeit für das Circuit Cellar Magazin darüber geschrieben habe, Building a RISC System in an FPGA .

Fröhliches Hacken!

Siehe auch mein Design Con-Papier, Designing a Simple FPGA-Optimized RISC CPU and System-on-a-Chip [ fpgacpu.org/papers/soc-gr0040-paper.pdf] , das den kommentierten Verilog-Quellcode für eine FPGA-CPU präsentiert und SoC.
Das ist ein toter Link :/
Löschen Sie das nachgestellte ]?

Holen Sie sich dieses Buch, ich habe die Erstausgabe. Vor ein paar Jahren habe ich ihre CPU in einem kleinen Flex 10K10 FPGA auf einer von mir entworfenen Leiterplatte implementiert, mit ein paar Drucktasten und einer einzelnen 7-Segment-Anzeige zur Eingabe von Daten und Anzeige der Ergebnisse.

Vieles hängt davon ab, zu welchem ​​Zweck Sie den Code studieren? Mit anderen Worten, was bedeutet interessant für Sie?

Wenn Sie dies tun, um zu sehen, wie viel Komplexität in eine CPU fließen kann, sind Sie möglicherweise mehr daran interessiert, die Quelle der OpenSPARC- Architekturen zu studieren. Es wird lange dauern, in dieses Thema einzutauchen, aber Sie werden die Gesamtansicht eines komplexen Mikroprozessors zu schätzen wissen .

Wenn es darum geht, bestimmte Merkmale der Computermikroarchitektur zu studieren, sollten Sie sich einige unkomplizierte RISC-Maschinen wie den AEMB ansehen , einen kleinen und schnellen 32-Bit-RISC-Prozessor mit mehreren Threads (schamloser Stecker).

Wenn Sie gute Codierungsstile und -konventionen lernen möchten, ist das LEON2-Design ein guter Ort, um einen guten VHDL-Codierungsstil zu lernen.

Wenn Sie jedoch beim Studium eines Prozessors lernen möchten, wie man selbst einen entwickelt, beginnen Sie am besten mit einer der einfachen 8-Bit-Maschinen (es gibt viele AVR-, 8051-, PIC-Beispiele im Internet).

Schamloser Stecker – AEMB – mein eigener „kleinster Prozessor, der das könnte“.

Sie können versuchen, einige Forth-CPU-Designs zu untersuchen. Forth ist eine einfache Programmiersprache, deren Spezifikation und Implementierung durch zwei Stacks (einen für Daten und einen für Rücksprungadressen) definiert ist.

Mehrere kleine VHDL/Verilog-Prozessoren sind frei verfügbar:

Einige weitere Links finden Sie hier:

PS. Obwohl Forth eine ziemlich alte und obskure Sprache ist, haben viele moderne Stack-basierte VMs (Java, schnelle JavaScript-VMs) ein ähnliches Low-Level-Design, sodass es fruchtbar sein kann, etwas darüber zu lernen.

PicoBlaze ist nett, aber es ist nicht in herstellerunabhängigem VHDL verfügbar.

Einige andere Möglichkeiten sind:

  • Ein Picoblaze-Klon in Verilog (Sie sollten diesen leicht finden können). Nicht sicher, ob es beibehalten wird
  • Gumnut ist ein netter kleiner Kern, der von einem kürzlich erschienenen Ashenden-Buch unterstützt wird.
  • Die winzige Registermaschine/Computer von Thacker (ca. 200 Zeilen Verilog)
  • Jan Grays XSoC/XR16 (hier bereits erwähnt)

Auch wenn Sie nach einem Compiler für Ihre CPU suchen, ist es am wahrscheinlichsten, einen für eine 16-Bit-CPU zu bekommen. Es gab einmal Podericos Compiler von einer C-ähnlichen Sprache zu Picoblaze, aber er wurde aus dem Netz genommen.

Wenn Sie vor Ihrer Liste eine Leerzeile einfügen, wird Ihre Antwort viel besser formatiert.

Sie können sich den PicoBlaze -Prozessor von Xilinx ansehen . Es ist ein minimaler eingebetteter 8-Bit-Mikrocontroller, und der Quellcode sollte verfügbar sein.

Das ist aber alles strukturelles VHDL, also nicht so toll als Lehrmittel

Zu spät, aber ich gebe eine kleine Antwort.

Es gibt einen Kurs namens fromNand2Tetris von der Universität Jerusalem, dieser Kurs ist auch auf Coursera vorhanden, ich habe den Computer gebaut, den sie in diesem Kurs erstellt haben. Ich habe die Sprache im Schema implementiert, um selbst sehen zu können, wie der Computer im kleinsten Detail funktioniert. Und es ist mir gelungen, der Simulator, den sie in Java erstellt haben, kann nicht alles, was ich sehen wollte.

https://github.com/alinsoar/little-computer