Domanda

Per un progetto universitario a medio termine devo progettare un processore configurabile, scrivere il codice in VHDL e quindi sintetizzarlo su una scheda FPGA 3E Spartan di Digilent. Sono un principiante, quindi potresti indicarmi alcune informazioni sui processori configurabili, alcune idee relative al concetto?

È stato utile?

Soluzione

Puoi consultare la mia per una domanda correlata . Abbiamo fatto quasi lo stesso, costruendo una CPU in VHDL per una scheda FPGA.

Altri suggerimenti

Questo è solo un modello, quindi tieni presente che lo pulirò

fetch instruct1,
fetch instruct2, fetch datas1
fetch instruct3, fetch datas2, process datas1
fetch instruct4, fetch datas3, process datas2, store1 datas1
fetch instruct5, fetch datas4, process datas3, store2 datas1
fetch instruct6, fetch datas5, process datas4, store3 datas1
fetch instruct7, fetch datas6, process datas5, store4 datas1
fetch instruct8, fetch datas7, process datas6, store5 datas1

sostanzialmente questi sono i componenti principali di un processore Parte 1 ALU: Arithmetic Logic Unit (questo è il punto in cui il draeing sarebbe utile) Una ALU ha 2 porte di ingresso e una porta di uscita. Vengono attivate le 2 porte di ingresso e il risultato viene emesso. Per sapere quale istruzione deve eseguire l'ALU è disponibile una porta di controllo. Fondamentalmente questo è il nome del comando. Quindi se la porta di controllo ha 4 bit ci sono 16 possibili istruzioni.

Parte 2 REGISTER UNIT: Questo è un insieme di celle di memoria (memoria cache). Il contenuto di questa memoria viene spesso trasferito alle porte di input dell'ALU.

Part3 Unità di controllo: è un po 'come il maestro dell'orchestra della cpu. Il suo compito è quello di 1 inviare i dati all'ingresso ALU 2 Leggi quale istruzione deve essere presente nei registri delle istruzioni, invia tali codici alle porte di controllo ALU

Interfaccia. Ecco come la RAM e le altre periferiche comunicano con la CPU

Ogni volta che l'istruzione genera un risultato, deve essere memorizzata. Può essere memorizzato nella RAM, quindi una scrittura del ram deve essere pronta una volta che il risultato è pronto. Allo stesso tempo, può verificarsi una lettura RAM degli input dell'istruzione successiva e, allo stesso tempo, è possibile recuperare l'istruzione successiva successiva dalla RAM.

Generare 1 istruzione di solito richiede più di 1 ciclo di clock. L'elaborazione di un'istruzione è analoga alla produzione industriale. Quindi il lavoro a catena è fatto.

VLIW La programmazione che scriviamo è lineare, il che significa che le istruzioni si susseguono una dopo l'altra. Ma oggi le CPU (non gli ARM) hanno più ALU, quindi più istruzioni vengono elaborate contemporaneamente.

Quindi hai una catena di unità di elaborazione che gestisce più istruzioni contemporaneamente (pipeline) e hai molte di quelle unità (superscalar)

Diventa quindi una domanda su cosa può / deve fare per modificare la tua architettura della CPU.

Ho fatto un progetto simile, implementando un processore con una pipeline a 5 fasi in VHDL.

Per prima cosa, devi capire l'architettura di come funzionano i processori. Senza capire cosa stia facendo ogni stange e che tipo di segnali di controllo siano necessari, non hai alcuna speranza di scriverne effettivamente uno in VHDL.

In secondo luogo, inizia a disegnare diagrammi di come le istruzioni e i dati scorreranno attraverso il tuo processore (cioè attraverso ogni fase). In che modo ogni fase è collegata l'una all'altra? Dove vanno i segnali di controllo? Da dove provengono i miei input e dove vanno i miei output?

Una volta che hai un diagramma solido, l'implementazione effettiva in VHDL dovrebbe essere relativamente semplice. Puoi usare la modellistica comportamentale di VHDL per spiegare in modo essenziale esattamente cosa vedi nel diagramma.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top