Indice
Progetti Verilog A.A. 2016-17
Elenco progetti disponibili
Unità stack con operazioni aritmetiche
Si realizzi una unità che presenta un'interfaccia di memoria “standard” (come quella del sosttosistema di memoria verso il processore D-RISC, non utilizza il campo INDIRIZZO, ovviamente) e che implementa le seguenti operazioni esterne:
- PUSH(val) : inserisce in cima allo stack il valore val
- POP() : restituisce il valore in cima allo stack, cancellandolo
- OP(op) : restituisce il risultato dell'operazione op (+ o -) sul contenuto della cima dello stack e della posizione immediatamente sottostante, cancellandole entrambe dallo stack
Lo stack ha capacità pari a 1024 parole da 32 bit. Eventuali errori devono essere comunicati mendiante il campo ESITO.
Memoria modulare con doppio accesso
Va realizzata una unità firwmare “memoria” con organizzazione interna modulare (indirizzi interallacciati) dotata di due interfacce di accesso, idealmente una per il processore e una per co-processori e unità di I/O. Entrambe le interfacce sono del tipo dell’interfaccia standard vista nel corso nella parte dedicata al processore monolitico di cui abbiamo visto l’interprete monolitico. Quindi con un registro da 32 bit per i dati da scrivere e uno per i dati letti, un registro operazione da 3 bit, un registro indirizzi ancora da 32 bit, un registro per comunicare l’esito dell’operazione da almeno 3 bit, e tutti gli indicatori a transizione di livello necessari. Va implementata una politica di arbitraggio che preveda priorità all’interfaccia dal processore. Nel caso in cui il processore richieda un’operazione il cui esito potrebbe essere influenzato da un’operazione pendente sulla seconda interfaccia, occorre fare in modo che i valori resituiti siano quelli relativi al completamento dell’operazione richiesta dopo il complemetamento dell’operazione pendente. In questo caso, prima di accettare una nuova operazione dall’interfaccia verso il processore, deve essere completata l’operazione dall’altra interfaccia.
MMU
Va realizzata un’unità che implementi l’algoritmo di traduzione degli indirizzi logici in indirizzi fisici nella MMU. L’unità riceve un indirizzo logico da 32 bit con IPL da 20 bit e OFFSET da 12 bit e lo traduce nel corrispondente indirizzo fisico utilizzando una cache completamente associativa da 8 posizioni. Va gestito il meccanismo di rimpiazzamento di un’entry della cache in caso di fault, che si avverrà di un’interfaccia standard verso il sottosistema di memoria in grado di richiedere operazioni di lettura e di un registro dedicato TABRIL contenente la base della tabella di rilocazione per il processo in esecuzione. La politica di rimpiazzamento nella cache può essere implementata come politica round robin.
Arbitro a richieste indipendenti
Va realizzata un’unità in grado di arbitrare richieste di servizio da parte di 8 altre unità. Le richieste arrivano mediante indicatori a transizione di livello e vengono servite mediante segnalazioni tramite indicatori a transizione di livello. Vanno implementate tre politiche di arbitraggio:
- Politica round robin
- Precedenza all’unità di indice minore
- Precedenza all’unità che ha inviato l’ultima richiesta prima di tutte le altre (LRU)
Coprocessore vettoriale
Va realizzata una unità che accetta tre indirizzi A, B, C, un intero N è un codice OP. Realizza l'operazione vettoriale fra i due vettori A e B di lunghezza N con l'operazione identificata dal parametro OP, ovvero calcola Ai OP Bi in Ci per tutti gli i da 0 a N. Il valore restituito è un codice che vale 0 se non ci sono stati errori e uno se invece c'è stato un tipo di errore qualunque. L'unità accede alla memoria mediante una interfaccia standard. Le operazioni da considerare per il campo OP sono le quattro operazioni aritmetiche.
Modalità di svolgimento e consegna
La realizzazione del progetto richiede i seguenti passi:
- Scelta di uno dei progetti proposti. La scelta deve essere concordata con il docente prima di procedere alla realizzazione del progettino, o a ricevimento o per email (email con Subject “AE 2016-17: scelta progetto Verilog”. Nel corpo del messaggio vanno indicati Nome Cognome e Matricola).
- Progettazione della soluzione, con la metodologia e gli strumenti imparati nel corso di AE, quindi senza l’utilizzo di Verilog
- Realizzazione di un modulo Verilog che implementa l’unità scelta. Il modulo Verilog va costruito secondo un processo di composizione di moduli elementari che implementano i componenti standard visti a lezione e/o eventuali moduli “primitive” (reti combinatorie) progettate ad hoc. Nei moduli che implementano i componenti standard vanno cablati a mano gli eventuali ritardi.
- Preparazione di una breve relazione (max 10 pagine!) che illustri:
- Principali scelte progettuali
- Eventuali moduli particolarmente significativi (progettazione, implementazione, caratterisitiche)
- Caratteristiche del modulo utilizzato per il test
- Manuale d’uso, ovvero tutta l’informazione necessaria per utilizzare il modulo e riprodurre i risultati presentati nella relazione
- Iscrizione all’appello secondo i termini e le modalità stabilite per l’appello standard
- Invio della relazione (in PDF) e di un archivio con tutti i file relativi al progetto per email al docente entro il giorno in cui si svolge lo scritto dell’appello. Il messaggio dovrà avere il Subject impostato come “AEb 2016-17: Consegna progetto Verilog” (per favore utilizzate esattamente questo testo, altrimenti potrei non trovare correttamente i vostri messaggi) e nel testo del messaggio dovranno essere indicati Nome, Cognome e Matricola.
Prova orale
L’orale per chi presenta il progetto si farà nelle date previste per gli orali, insieme agli altri studenti che avranno superato lo scritto e inizierà con una breve discussione del progetto Verilog e procederà quindi come un normale orale di AE.
Assegnamento progetti
Studente | Progetto | stato |
---|---|---|
Antonio Lepore | STACK | Assegnato |
Lorenzo Pennoni | COPROCESSORE VETTORIALE | Assegnato |
Andrea Cosci | STACK | Assegnato |
Alessandro Di Giorgio | COPROCESSORE VETTORIALE | Assegnato |
Andrea Tosti | MMU | Assegnato |