Esercitazioni di Reti Logiche
Creazione di un Account
Per poter accedere ai pc del LAB2 è necessario creare il nuovo account utente
(se non lo avete già) con user name del tipo s0000123456; gli account con
user name tipo x0123456 verranno cancellati dal 1° Novembre!
Per creare i nuovi account è necessario effettuare l’accesso ai pc con:
USER= nuovi
PASSWORD= nuovi
poi seguite la procedura guidata.
UNA VOLTA CREATO IL NUOVO ACCOUNT DOVETE EFFETTUARE IL LOGOUT
E POI EFFETTUARE IL LOGIN CON IL NUOVO ACCOUNT
1
Dal sito:
www-lia.deis.unibo.it/materiale/retilogiche
scaricate i 3 file (mux4.qpf , .bdf , .vwf).
È importante che i file siano nella stessa
cartella e che non vengano rinominati!
2
Cos’è Quartus II
Quartus II è un software nato per programmare gli FPGA (Field
Programmable Gate Array): partendo da un codice sorgente scritto in
linguaggio VHDL, che descrive il circuito logico, Quartus II “traduce in
hardware” tale codice sorgente. Dopo aver compilato il codice è possibile
simulare il circuito virtuale prima di programmare l’FPGA.
Inoltre nelle ultime versioni di Quartus II è disponibile un editor grafico che
permette di disegnare il circuito logico, evitando così di dover programmare
in VHDL.
Dunque l’editor grafico e il tool di simulazione rendono Quartus II un
software perfetto per le nostre esercitazione in laboratorio!
Quartus II è disponibile nella versione “Web Edition”, gratuita, ed è
scaricabile dal sito web di Altera (è necessario registrarsi).
Quartus II Web Edition Software v9.0 Service Pack 2 (1.31 GB)
3
I File di Quartus
Quartus II lavora con moltissimi tipi di file, ma quelli che davvero ci
interessano sono solo 3, gli altri vengono generati e utilizzati in automatico
dal programma quindi noi non li utilizzeremo mai direttamente.
File .qpf : contiene tutte le informazioni sul progetto e viene
generato in automatico alla fine del New Project
Wizard. Aprendo il file .qpf si caricano anche tutti gli
altri file associati al progetto.
File .bdf : è il file che contiene il circuito logico, questo file
viene generato dal Graphic Editor
File .vwf : è il file contenente le forme d’onda d’ingresso
necessarie a simulare il circuito e dopo la
simulazione viene aggiornato con la forme d’onda
d’uscita
4
Come funziona Quartus II
Editor Grafico
VHDL
Sintesi ed
Elaborazione
Generazione File
Programmazione
Analisi ed
Elaborazione
Generazione
Netlist
Forme d’onda
Simulazione
Programmazione
FPGA
Non verrà trattato in
questo corso
5
Impostazioni iniziali per Quartus
Per le esercitazioni utilizzeremo Quartus II con l’interfaccia di MAX+PLUS II.
All’avvio, nel campo Look, scegliete MAX+PLUS II, oppure una volta avviato
Quartus II seguite il seguente procedimento:
Accedere alla
finestra Customize
dal menu Tools,
quindi selezionare
MAX+PLUS II nel tab
General.
6
Impostazioni iniziali per Quartus
Poi nel tab
Toolbars scegliere
Standard
MAX+PLUS II.
Lasciare il resto a
default.
7
Un esempio
• Progetto di un Multiplexer a quattro vie
(MUX4)
8
Cos’è un Multiplexer?
Il Multiplexer (MUX) è un circuito con 2^N ingressi, N segnali di selezione
(quindi 2^N + N ingressi) e 1 uscita. La sua funzione è portare in uscita uno
ed uno solo dei segnali di ingresso, in base al valore dei suoi segnali di
selezione. Da qui si deduce che se (prendiamo come esempio un mux a 4
ingressi e 1 uscita):
IN 0  A ; IN 1  B ; IN 2  C ; IN 3  D
 OUT  { A , B , C , D }
La relazione ingresso-uscita dipende da come è costruito il mux, in ogni
modo la più comune descrizione logica di
S1
S0
OUT
un mux è la seguente:
0
0
IN 0
dove S0 ed S1 sono i segnali di selezione
0
1
IN 1
1
0
IN 2
1
1
IN 3
9
Apertura del progetto
Per questo primo esempio servono i file mux4.qpf mux4.bdf e mux4.vwf
scaricabili dal sito dell’esercitazione. I 3 file devono essere in un’unica
cartella.
Per prima cosa aprite il file di progetto mux4.qpf con Quartus II. Quando lo
aprirete non vedrete niente, tranne il percorso del file in alto, perché il file
.qpf contiene solo delle informazioni sui file che bisogna simulare.
I tre file vanno aperti nella stessa finestra di Quartus II! Quindi aprite il .qpf
e poi dalla finestra di Quartus II dov’è aperto il .qpf aprite gli altri file. Se
fate doppio click su ogni file, verrà aperto 3 volte Quartus II in 3 finestre
diverse E NON VA BENE!
Ora aprite il file .bdf e dal menu Project cliccate Add Current File To
Project… (se l’opzione non è cliccabile significa che il file è già presente
nel progetto: meglio così!) quindi ripetete l’operazione per il file .vwf.
Per verificare che i file .bdf e .vwf siano stati aggiunti correttamente al
progetto potete cliccare su Add/Remove Files In Project dal menu project:
se nella lista non compaiono i 2 files dovete selezionarli uno alla volta e
cliccare di nuovo Add Current File To Project…
10
Com’è fatto un MUX
Come potete vedere ci siamo fermati ad un livello di astrazione che
comprende solo gate logici, senza scendere al livello dei transistor.
Il multiplexer (MUX) può essere realizzato in svariati modi e per questa
esercitazione abbiamo scelto il circuito con decoder a 2 ingressi e 4 uscite,
4 AND a 2 ingressi e 1 OR a 4 ingressi.
I due ingressi del decoder sono i segnali di selezione del MUX e gli ingressi
dei 4 AND sono gli ingressi del MUX.
IN0
IN1
OUT
IN2
IN3
S0 S1
11
Decoder
Input(Dec)=
=S[1..0]= i (base 10)
Uscita attiva per i=0
Output(Dec)
Output(AND)=IN0
quando i=0
12
Funzionamento
Le quattro uscite del decoder sono sempre tutte a 0 tranne una a 1: in pratica
si attiva solo l’uscita i-esima del decoder dove i è la corrispondente cifra
decimale dell’ingresso (es.: S1=1 , S0=1 => Input(Dec)=11 => i=3 ) e l’uscita di
destra del decoder è quella attiva per i=0.
Dunque i 4 AND collegati ai 4 ingressi del MUX saranno attivi 1 alla volta: è
attivato solo l’AND collegato all’ingresso i-esimo del MUX (dove i ha lo stesso
valore di prima), quindi l’uscita dell’AND attivo è INi che viene portata in
ingresso all’OR, i cui ingressi sono tutti a 0 tranne uno che vale INi di
conseguenza l’uscita dell’OR è INi.
13
Impostazioni per la simulazione
Dal menu Assignments cliccare su Settings… e selezionare dal menu a
sinistra Simulator Settings , quindi assicurarsi che nel campo Simulation
Mode sia selezionata l’opzione Functional e non Timing, altrimenti la
simulazione non viene effettuata nel modo corretto, perché vengono tenuti
in considerazione i ritardi di propagazione dei gate logici (il che richiede
alcuni minuti)
14
Analisi, Netlist e Simulazione
A questo punto possiamo iniziare ad utilizzare Quartus II.
Il circuito è già pronto per l’analisi. Quindi dal menu Processing -> Start
selezionare Start Analysis & Elaboration. Il processo testa il circuito,
verifica cioè che le connessioni siano corrette, che gli ingressi e le
uscite siano nella giusta direzione, ecc…
Prima di passare alla simulazione vera e propria è necessario creare la
Netlist del circuito.
Dal menu Processing cliccare su Generate Functional Simulation Netlist.
Ora possiamo finalmente simulare il circuito con le forme d’onda
d’ingresso presenti nel file .vwf. Cliccate su Processing -> Start
Simulation.
Finito il processo, per vedere il risultato della simulazione selezionate il
file .vwf in Quartus II e se richiesto salvate la forma d’onda d’uscita.
15
Riassumendo…
Editor Grafico
1) Processing -> Start ->
Start Analysis & Elaboration
2) Processing ->
Generate Functional
Simulation Netlist
3) Processing ->
Start Simulation
Analisi ed
Elaborazione
Generazione
Netlist
Forme d’onda
Simulazione
16
Modifica delle forme d’onda
Ora potete modificare i 6 segnali d’ingresso per simulare differenti casi di
funzionamento del MUX.
Per modificare un segnale è sufficiente selezionarne una parte (oppure tutto)
e assegnargli un valore con i comandi sulla sinistra oppure con il doppio
click sulla selezione e l’inserimento del valore binario nel campo value.
Attenzione: i 4 segnali di input (IN i) sono descritti da un solo bit, quindi nel
campo value dovete inserire 1 o 0, mentre i 2 segnali di selezione sono
raggruppati in un unico segnale descritto da un vettore di 2 bit, quindi il
valore di value è a 2 bit (es.: value= 10 )
17
Creare un nuovo progetto
Per creare un nuovo progetto andare in File -> New Project Wizard
Nel primo campo indicare la directory in cui verranno salvati i file del
progetto (conviene creare una cartella contenente una cartella diversa per
ogni progetto!).
Nel secondo campo indicare il nome del progetto. Il terzo campo verrà
riempito automaticamente con lo stesso nome del progetto. Cliccare Finish
18
Creazione dello schema logico
Dal menu MAX+PLUS II aprire il Graphic Editor. Utilizzando semplicemente il
Symbol Tool e il Node Tool è possibile disegnare un circuito.
Text Tool Permette di scrivere del testo
Zoom
Specchia il componente
Symbol Tool Apre la libreria per
selezionare i componenti da aggiungere
Node Tool Disegna i “fili” di
collegamento tra i componenti
Ruota il
componente
19
Creazione dello schema logico
La libreria interna di Quartus contiene molti componenti, sia elementari (AND,
OR, ecc…) sia più complessi, sufficienti a creare tutti gli schemi che verranno
utilizzati durante le esercitazioni.
Per prima cosa vanno piazzati i componenti utilizzando il Symbol Tool.
Premendo il relativo pulsante si aprirà una finestra nella quale si può
scegliere un componente per volta navigando tra le varie categorie (i gate
elementari sono in Primitives -> Logic). Una volta piazzati sull’area di lavoro, i
componenti si possono spostare, ruotare, specchiare e rinominare.
20
Creazione dello schema logico
A questo punto bisogna effettuare le connessioni con Orthogonal Node Tool
prestando molta attenzione ai collegamenti con gli ingressi/uscite dei
componenti. Nell’esempio possiamo vedere che il collegamento a destra è
stato effettuato correttamente mentre il collegamento a sinistra è errato.
Infatti anche se graficamente il “filo” è a contatto con l’ingresso dell’AND, il
collegamento reale non c’è!!!
Collegamento
sbagliato
Collegamento
corretto
Il Graphic Editor evidenzia con una X le terminazioni dei fili
volanti
21
Creazione dello schema logico
Finito di creare il circuito logico bisogna specificare quali sono i nodi di
ingresso e di uscita. Quartus è in grado di riconoscere in automatico solo
alcuni nodi di input e output cioè solo quelli non connessi a niente!
Nell’esempio riconosce l’uscita dell’OR come output e solo gli ingressi non
connessi degli AND come input, mentre non è in grado di riconoscere i due
ingressi centrali degli AND in quanto sono connessi tra loro!
Per l’assegnazione in automatico bisogna selezionare tutto le schema (o un
gate per volta), cliccare con il tasto destro e selezionare l’opzione Generate
Pins for Symbol Ports
22
Creazione dello schema logico
IN1, IN2 e OUT sono stati aggiunti con il procedimento descritto prima,
mentre Input_Symbol_Tool è stato aggiunto con Symbol Tool (Primitives ->
Pin) come fosse un normale componente ed è stato collegato al circuito
Ora il circuito è finito ed è pronto per l’analisi (non la simulazione!).
Quindi dal menu Processing -> Start selezionare Start Analysis &
Elaboration. Il processo testa il circuito, verifica cioè che le connessioni
siano corrette, che gli ingressi e le uscite siano nella giusta direzione,
ecc… Al termine se l’esito è Not Successful in basso verranno indicati
Errors e Warnings: leggeteli attentamente per capire dov’è l’errore! Se
l’esito invece è positivo potrete simulare il circuito.
23
Netlist
Prima di passare alla simulazione vera e propria è necessario creare la Netlist
del circuito.
Dal menu Processing cliccare su Generate Functional Simulation Netlist.
Se il processo di Analysis & Elaboration ha avuto esito negativo o non è stato
eseguito non è possibile creare la Netlist! La generazione della Netlist si può
effettuare solo dopo un Analysis & Elaboration andata a buon fine.
Inoltre se l’analisi precedente ha avuto esito positivo ma con alcuni Warnings
allora la generazione della Netlist potrebbe non andare a buon fine, in tal caso
è necessario risolvere i Warnings e ripetere la generazione della Netlist.
La Netlist va rigenerata ogni volta che si modifica il
circuito, dopo il processo di Analysis & Elaboration.
24
Vector Waveform File (.vwf )
Per assegnare gli ingressi di un circuito è necessario creare un file .vwf . Per
fare ciò cliccare su File -> New e selezionare Vector Waveform File
Quindi doppio click sulla tabella
vuota a sinistra -> Node Finder…
Lasciate tutto a default,
assicurandovi che nel campo
Filter sia selezionata l’opzione
Pins: all , ora cliccate su List: vi
compariranno in automatico tutti
gli ingressi e le uscite del vostro
circuito.
Doppio
Click qui
25
Simulazione del circuito
Selezionate i segnali che vi interessano (generalmente tutti!) e questi vi
compariranno nella schermata principale, ora è necessario impostare l’End
Time della simulazione dal menu Edit e dopo, coerentemente, la Grid Size…
(non ha senso impostare End Time= 1s e Grid Size= 1us : avrete la griglia
divisa in 1milione di parti!).
Per modificare un segnale, selezionate la parte del segnale che vi interessa e
con i comandi sulla sinistra (o con il tasto destro del mouse -> Value)
assegnategli un valore. Ora potete finalmente simulare il vostro circuito dal
menu Processing -> Start Simulation
26
Scarica

Diapositiva 1