Implementazioni leggibili ed educative di una CPU in un HDL


37

Puoi consigliare un'implementazione leggibile ed educativa di una CPU in VHDL o Verilog? Preferibilmente qualcosa di ben documentato.

PS So che posso guardare opencores, ma sono particolarmente interessato alle cose che le persone hanno effettivamente visto e trovato interessanti.

PS2. Mi dispiace per i tag sucky, ma come nuovo utente non posso crearne di nuovi


1
Ecco un ottimo blog di un ragazzo che cerca di creare una piccola CPU per un CPLD stevechamberlin.com/cpu
Toby Jaffey,

2
HDL ⊕ Leggibile, purtroppo.
Connor Wolf,

@Joby Taffey: link non funzionante, è questo che intendevi? bigmessowires.com/cpu-in-a-cpld
Brian Carlton,

mor1kx , un'implementazione di Verilog di OpenRISC 1000. Ha alcuni commenti. OpenRISC ha il vantaggio di avere una toolchain ma è ancora relativamente semplice.
Janus Troelsen,

Risposte:



7

Ottieni questo libro, ho la prima edizione. Alcuni anni fa ho implementato la loro CPU in un piccolo FPGA Flex 10K10 su un PCB progettato, con un paio di pulsanti e un singolo display a 7 segmenti per l'immissione di dati e la visualizzazione dei risultati.


7

Molto dipende da quale è il tuo scopo di studiare il codice? In altre parole, cosa significa interessante per te?

Se lo stai facendo per vedere quanta complessità può andare in una CPU, potresti essere più interessato a studiare l'origine delle architetture OpenSPARC . Ci vorrà molto tempo per tuffarsi in, ma si otterrà un apprezzamento per la complessiva immagine grande vista di un microprocessore complesso.

Quindi, se si tratta di studiare specifiche funzionalità di microarchitettura del computer, si vorranno esaminare alcune macchine RISC semplici come AEMB , un piccolo e veloce processore RISC a 32 bit multi-thread (spina spudorata).

Quindi, se quello che vuoi è imparare buoni stili e convenzioni di codifica, il design LEON2 è un buon posto per imparare un buon stile di codifica VHDL.

Tuttavia, se il tuo scopo nello studio di un processore è imparare a progettarne uno tu stesso, la soluzione migliore sarebbe iniziare con una delle semplici macchine a 8 bit (ci sono molti esempi di AVR, 8051, PIC in rete).


Spina senza vergogna - AEMB - il mio "processore più piccolo che potrebbe".
sybreon,

5

Puoi provare ad esaminare alcuni progetti di CPU Forth. Forth è un semplice linguaggio di programmazione la cui specifica e implementazione sono definite per mezzo di due stack stack (uno per i dati e uno per gli indirizzi di ritorno).

Numerosi piccoli processori VHDL / Verilog sono disponibili gratuitamente:

Alcuni altri collegamenti sono disponibili qui:

PS. Nonostante Forth sia un linguaggio piuttosto vecchio e oscuro, molte moderne VM basate su stack (Java, VM JavaScript veloci) hanno un design simile di basso livello, quindi apprenderne può essere fruttuoso.


2

PicoBlaze è carino, tuttavia non è disponibile in VHDL indipendente dal fornitore.

Alcune altre scelte sono:

  • Un clone di Picoblaze in Verilog (dovresti riuscire a trovarlo facilmente). Non sono sicuro che sia mantenuto
  • Gumnut è un piccolo nucleo supportato da un recente libro di Ashenden.
  • Il minuscolo registratore / computer di Thacker (circa 200 righe di Verilog)
  • XSoC / XR16 di Jan Gray (già menzionato qui)

Inoltre, se stai cercando un compilatore per la tua CPU, è molto probabile ottenerne uno per una CPU a 16 bit. Una volta c'era il compilatore di Poderico da un linguaggio simile a C in Picoblaze ma è stato rimosso dal web.


Se includi una riga vuota prima dell'elenco, la tua risposta verrà formattata molto meglio.
Trygve Laugstøl,

1

Potresti dare un'occhiata al processore Xilinx PicoBlaze . È un microcontrollore incorporato minimo a 8 bit e il codice sorgente dovrebbe essere disponibile.


1
Questo è tutto VHDL strutturale, quindi non eccezionale come strumento di insegnamento
Martin Thompson,

0

Troppo tardi, tuttavia fornisco una piccola risposta.

C'è un corso chiamato da Nand2Tetris dell'Università di Gerusalemme, questo corso è presente anche sulla corsia, ho costruito il computer che hanno creato in quel corso. Ho implementato il linguaggio nello schema per essere in grado di vedere come funziona il computer nei minimi dettagli. E ci sono riuscito, il simulatore che hanno creato in Java non può fare tutto quello che volevo vedere.

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.