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
Antworten:
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!
quelle
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.
quelle
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).
quelle
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.
quelle
PicoBlaze ist nett, es ist jedoch nicht in herstellerunabhängiger VHDL verfügbar.
Einige andere Möglichkeiten sind:
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.
quelle
Sie können sich den Xilinx PicoBlaze- Prozessor ansehen . Es ist ein minimaler 8-Bit-Embedded-Mikrocontroller, und der Quellcode sollte verfügbar sein.
quelle
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
quelle