Implémentations lisibles et pédagogiques d'un processeur dans un HDL

37

Pouvez-vous recommander une implémentation lisible et pédagogique d’un processeur en VHDL ou Verilog? De préférence, quelque chose de bien documenté.

PS Je sais que je peux regarder opencores, mais je m'intéresse particulièrement aux choses que les gens ont réellement examinées et trouvées intéressantes.

PS2. Désolé pour les tags insipides, mais en tant que nouvel utilisateur, je ne peux pas en créer de nouveaux

Eli Bendersky
la source
1
Voici un blog à partir d' un gars qui essaye de créer une petite unité centrale pour un CPLD stevechamberlin.com/cpu
Toby Jaffey
2
HDL ⊕ Lisible, malheureusement.
Connor Wolf
@Joby Taffey: le lien est brisé, est-ce ce que vous vouliez dire? bigmessowires.com/cpu-in-a-cpld
Brian Carlton Le
mor1kx , une implémentation de OpenRISC 1000 par Verilog. Il contient quelques commentaires. OpenRISC a l'avantage d'avoir une chaîne d'outils mais reste relativement simple.
Janus Troelsen

Réponses:

18

Vous apprécierez peut-être une série d'articles que j'ai écrits il y a longtemps sur le magazine Circuit Cellar, Construire un système RISC dans un FPGA .

Bonne piratage!

Jan Gray
la source
2
Voir également mon article Design Con, Conception d'un processeur RISC optimisé pour FPGA simple et d'un système sur puce [ fpgacpu.org/papers/soc-gr0040-paper.pdf] , qui présente le code source annoté Verilog pour un processeur FPGA et SoC.
Jan Gray
c'est un lien mort: /
Earlz
Supprimer la fin]?
Jan Gray
7

Obtenez ce livre, j'ai la première édition. Il y a quelques années, j'ai implémenté leur processeur dans un petit FPGA Flex 10K10 sur un circuit imprimé que j'ai conçu, avec quelques boutons poussoirs et un seul afficheur à 7 segments pour la saisie de données et l'affichage des résultats.

Leon Heller
la source
7

Beaucoup dépend de quel est votre but d'étudier le code? En d'autres termes, qu'est-ce qu'intéressant signifie pour vous?

Si vous le faites afin de voir à quel point la complexité peut être complexe pour un processeur, vous serez peut-être plus intéressé par l'étude de la source des architectures OpenSPARC . Il faudra beaucoup de temps pour plonger dans , mais vous aurez une appréciation pour l'ensemble vue d'ensemble vue d'un microprocesseur complexe.

Ensuite, s’il s’agit d’étudier des fonctionnalités spécifiques à la microarchitecture d’ordinateur, vous voudrez vous pencher sur des machines RISC simples, telles que l’ AEMB , un petit et rapide processeur RISC 32 bits à plusieurs threads (plug sans vergogne).

Ensuite, si vous voulez apprendre de bons styles et conventions de codage, la conception de LEON2 est un bon endroit pour apprendre un bon style de codage VHDL.

Toutefois, si votre objectif dans l’étude d’un processeur est d’apprendre à en concevoir un vous-même, votre meilleur choix serait de commencer par l’une des machines simples à 8 bits (il existe de nombreux exemples d’AVR, 8051, PIC sur le net).

sybreon
la source
Prise sans vergogne - AEMB - mon propre "plus petit processeur possible".
Sybreon
5

Vous pouvez essayer d’examiner certaines conceptions de CPU Forth. Forth est un langage de programmation simple dont la spécification et la mise en oeuvre sont définies au moyen de deux piles de piles (une pour les données et une pour les adresses de retour).

Plusieurs petits processeurs VHDL / Verilog sont disponibles gratuitement:

Quelques liens supplémentaires peuvent être trouvés ici:

PS Bien que Forth soit un langage relativement ancien et obscur, de nombreuses machines virtuelles modernes basées sur des piles (Java, machines virtuelles JavaScript rapides) ont une conception similaire de bas niveau, de sorte que son apprentissage peut être fructueux.

jpc
la source
2

PicoBlaze est agréable, mais il n’est pas disponible en VHDL indépendant du fournisseur.

Quelques autres choix sont:

  • Un clone Picoblaze dans Verilog (vous devriez pouvoir le trouver facilement). Je ne sais pas si c'est maintenu
  • Gumnut est un joli petit noyau soutenu par un livre récent d'Ashenden.
  • Le minuscule enregistreur / ordinateur de Thacker (environ 200 lignes de Verilog)
  • Jan Gray's XSoC / XR16 (déjà mentionné ici)

En outre, si vous recherchez un compilateur pour votre processeur, il est fort probable que vous en obteniez un pour un processeur 16 bits. Il était une fois le compilateur de Poderico d'un langage semblable à C à Picoblaze, mais il a été retiré du Web.

Nikolaos Kavvadias
la source
Si vous incluez une ligne vierge avant votre liste, votre réponse sera beaucoup mieux formatée.
Trygve Laugstøl
1

Vous pouvez regarder le processeur Xilinx PicoBlaze . C'est un microcontrôleur 8 bits intégré minimal, et le code source devrait être disponible.

geschema
la source
1
C'est tout en VHDL structurel, donc pas génial comme outil d'enseignement
Martin Thompson
0

Trop tard, cependant je donne une petite réponse.

Il y a un cours nommé deNand2Tetris de l'Université de Jérusalem, ce cours est également présent sur coursera, j'ai construit l'ordinateur qu'ils ont créé dans ce cours. J'ai implémenté le langage de manière à pouvoir voir moi-même comment l'ordinateur fonctionne dans les moindres détails. Et j'ai réussi, le simulateur qu'ils ont créé en Java ne peut pas faire tout ce que je voulais voir.

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

Alinsoar
la source