Lesbare und lehrreiche Implementierungen einer CPU in einer HDL


37

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

PS Ich weiß opencores, dass ich es mir ansehen kann , aber ich interessiere mich speziell für Dinge, die die Leute tatsächlich angeschaut und interessant gefunden haben.

PS2. Tut mir leid, aber als neuer Benutzer kann ich keine neuen Tags erstellen


1
Hier ist ein großartiger Blog von einem Typen, der versucht, eine kleine CPU für eine CPLD zu erstellen. Stevechamberlin.com/cpu
Toby Jaffey

2
HDL ⊕ Leider lesbar.
Connor Wolf

@Joby Taffey: Link ist kaputt, hast du das gemeint? bigmessowires.com/cpu-in-a-cpld
Brian Carlton

mor1kx , eine Verilog-Implementierung von OpenRISC 1000. Es gibt einige Kommentare. OpenRISC hat den Vorteil, dass es eine Toolchain hat, aber immer noch relativ einfach ist.
Janus Troelsen

Antworten:


18

Vielleicht haben Sie Spaß an einer Artikelserie, die ich vor langer Zeit für das Circuit Cellar-Magazin " Building a RISC System in a FPGA" geschrieben habe .

Viel Spaß beim Hacken!


2
Siehe auch mein Design Con Paper, Entwerfen einer einfachen FPGA-optimierten RISC-CPU und eines System-on-a-Chip [ fpgacpu.org/papers/soc-gr0040-paper.pdf] , das den mit Verilog-Anmerkungen versehenen Quellcode für eine FPGA-CPU enthält und SoC.
Jan Gray

Das ist ein toter Link: /
Earlz

Löschen Sie das nachfolgende]?
Jan Gray

7

Holen Sie sich dieses Buch, ich habe die erste Ausgabe. Vor ein paar Jahren implementierte ich ihre CPU in einem kleinen Flex 10K10 FPGA auf einer von mir entworfenen Leiterplatte mit ein paar Drucktasten und einer einzigen 7-Segment-Anzeige zur Dateneingabe und Anzeige der Ergebnisse.


7

Viel hängt davon ab, wozu 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, interessieren Sie sich möglicherweise mehr für die Untersuchung der Quelle von OpenSPARC- Architekturen. Es wird in eine lange Zeit zu tauchen, aber Sie werden eine Anerkennung für die Gesamt bekommen große Bild Ansicht eines komplexen Mikroprozessor.

Wenn Sie sich dann mit bestimmten Merkmalen der Computer-Mikroarchitektur befassen möchten, sollten Sie sich einige einfache RISC-Maschinen wie den AEMB ansehen , einen kleinen und schnellen 32-Bit-RISC-Prozessor mit mehreren Threads (shameless plug).

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

Wenn Sie sich jedoch mit dem Entwickeln eines Prozessors befassen möchten, beginnen Sie am besten mit einem der einfachen 8-Bit-Computer (es gibt viele AVR-, 8051- und PIC-Beispiele im Internet).


Schamloser Stecker - AEMB - mein eigener "kleinster Prozessor, der das könnte".
Sybreon

5

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

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

Weitere Links finden Sie hier:

PS. Obwohl Forth eine ziemlich alte und undurchsichtige Sprache ist, haben viele moderne stapelbasierte VMs (Java, schnelle JavaScript-VMs) ein ähnliches Low-Level-Design, sodass das Erlernen dieser Sprache von Nutzen sein kann.


2

PicoBlaze ist nett, es ist jedoch nicht in herstellerunabhängiger VHDL verfügbar.

Einige andere Möglichkeiten sind:

  • Ein Picoblaze-Klon in Verilog (sollte sich leicht finden lassen). Ich bin nicht sicher, ob es gewartet wird
  • Gumnut ist ein netter kleiner Kern, der von einem kürzlich erschienenen Ashenden-Buch unterstützt wird.
  • Die winzige Registriermaschine / Computer von Thacker (ca. 200 Zeilen Verilog)
  • Jan Grays XSoC / XR16 (hier bereits erwähnt)

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


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

1

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


1
Das ist alles strukturelle VHDL, also nicht großartig als Lehrmittel
Martin Thompson

0

Zu spät gebe ich jedoch eine kleine Antwort.

Es gibt einen Kurs mit dem Namen Nand2Tetris von der Universität Jerusalem. Dieser Kurs ist auch auf Coursera verfügbar. Ich habe den Computer gebaut, den sie in diesem Kurs erstellt haben. Ich habe die Sprache im Schema implementiert, um mir selbst ein Bild davon zu machen, wie der Computer am wenigsten funktioniert. Und es gelang mir, der Simulator, den sie in Java erstellt haben, kann nicht alles, was ich sehen wollte.

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.