Introduzione agli hardware programmabili

Commenti

Transcript

Introduzione agli hardware programmabili
Esercitazione di Elettronica III
Ing. F. Iannuzzo - A.A. 2006/2007
Progetto di una porta logica NOT con Hardware programmabile.
Introduzione.
In questa esercitazione si acquisirà dimestichezza con l'ambiente di sviluppo Quartus II per la
simulazione e programmazione di hardware programmabile Altera, si conoscerà la Development
Board (basetta) basata sull'integrato MAX II. Come semplice esempio, si realizzerà un invertitore
NOT.
L'integrato MAX II serie EPM240T100C5 è un CPLD (Complex Programmable Logic Device)
dotato di 240 elementi logici, e per la sua programmazione e utilizzazione è montato su una basetta
del tipo ritratto nella foto sottostante.
Ponticello di programmazione
Tastiera
a 16
tasti
Connettori
utente
Connettore di programmazione
Display a 4 digit
Tasto di Reset
XTAL1-2 (Clock)
Connettore di alimentazione (6.5VDC)
8 led blu
Clock selector
Tasto di
accensione
SW1..SW16
Tastiera a 16 tasti
CPLD EPM240T100C5
1
In figura è possibile riconoscere gli elementi peculiari. In particolare:
•
Connettore di programmazione: verrà collegato successivamente alla porta parallela del
PC mediante il cavo proprietario fornito a corredo della basetta.
•
Tasto di Reset: provvede al reset del CPLD e di tutte le circuiterie ausiliarie.
•
Ponticello di programmazione: fornito a corredo della basetta, va tenuto inserito in modo
permanente.
•
Tasto di accensione: alimentazione generale della basetta.
•
Tastiera a 16 tasti: matrice di 16 pulsanti che si userà come tastierino numerico. In figura
seguente sono riportati i collegamenti di riga e di colonna.
Segnale
COL1
COL2
ROW1
ROW2
COL3
COL4
ROW3
ROW4
•
Pin del
CPLD
48
49
43
47
37
39
90
88
Led blu: 8 led (Light Emitting Diodes - diodi a emissione di luce). In tabella seguente sono
riportati i rispettivi pin del CPLD:
LED
LED1
LED2
LED3
LED4
LED5
LED6
LED7
LED8
Pin del
CPLD
48
49
43
47
37
39
90
88
NB: tutti i led sono attivi
BASSI (“0” Æ led acceso)
Si noti che i pin del tastierino a 16 tasti sono condivisi con i segnali relativi al banco di 8 led blu,
per cui non sarà possibile impiegare contemporaneamente gli uni e gli altri insieme.
!
•
Connettori utente: a disposizione per I/O di segnali esterni al CPLD.
•
SW1…SW16: 16 interruttori on/off.
SW1 è connesso al pin 2 del CPLD, SW2 al pin 3, e così via, come da tabella seguente.
NB: Quando vengono premuti, SW1...SW16 portano a massa (livello logico basso “0”)
i rispettivi pin. Se ripremuti, i rispettivi pin vengono portati a livello logico alto (“1”).
2
SW
SW1
SW2
SW3
SW4
SW5
SW6
SW7
SW8
SW9
SW10
SW11
SW12
SW13
SW14
SW15
SW16
Pin del
CPLD
2
3
6
7
15
16
19
20
4
5
8
12
17
18
21
26
NB: tutti gli switch sono
attivi BASSI (switch
premuto Æ pin a “0”)
•
Connettore di alimentazione: a cui collegare l'alimentatore a 6.5V, positivo centrale.
•
XTAL1-2: sono oscillatori che generano due clock (3,6864 MHz e 32,768 Mhz),
indispensabili per le applicazioni sequenziali.
•
Clock selector: ponticelli di selezione della frequenza di clock.
•
Display a 4 digit: quattro cifre a disposizione dell'utente. I display sono collegati a bus,
come da figura seguente:
Segment A
Segment B
Segment C
Segment D
Segment E
Segment F
Segment G
Dot Point DP
Pin del
CPLD
33
34
35
42
41
36
38
40
Enable DISP 1
Enable DISP 2
Enable DISP 3
Enable DISP 4
30
29
28
27
Segmento
NB: tutti i segmenti e i
segnali di enable sono
attivi BASSI (“0” Æ
segmento acceso)
3
Nel prosieguo dell’esercitazione, per visualizzare una cifra su uno dei quattro display, occorrerà
attivare i segmenti corrispondenti e abilitare il segnale di Enable relativo a quella posizione.
Esempio: per visualizzare la cifra “1” sul display 2, occorrerà:
1. attivare i segmenti B e C, ponendo a 0 le linee 34 e 35;
2. disattivare A, D, E, F, G e DP, ponendo a 1 le linee 33, 42, 41, 36, 38 e 40;
3. attivare Enable DISP2, ponendo a 0 la linea 29;
4. disattivare Enable DISP1, 3 e 4, ponendo a 1 le linee 30, 28 e 27.
Progetto con il software Quartus II
Prima di iniziare la realizzazione del progetto, si prenderà dimestichezza con il programma Quartus
II.
Per prima cosa si crei la cartella c:\Elettronica, e dentro se ne crei un’altra chiamata
Esercitazione_1 (si scriva senza inserire spazi). In questa cartella si inseriranno tutti i file del
progetto.
Alla fine dell’esperienza si copi questa cartella su un supporto di
memorizzazione rimovibile (FLOPPY o PENDRIVE) in quanto allo
spegnimento del PC si perderanno tutti dati salvati in precedenza.
Si apra dal menù Avvio/Programmi/Altera il software Quartus II
Si faccia click su: File -> New Project Wizard, all’apertura della finestra, si scelga Next.
Alla nuova schermata, si prema il tasto
alla destra del primo spazio, e si scelga la directory
c:\Elettronica\Esercitazione_1 precedentemente creata. Si specifichi nel secondo e
terzo spazio bianco il nome del progetto: Invertitore. Si faccia click su Next per due volte di
seguito fino ad arrivare alla schermata seguente:
4
Nella finestra che si apre, si scelga la sigla EPM240T100C5 dalla lista.
Si clicchi su Finish.
Si clicchi sull’icona
e si scelga Block Diagram / Schematics File.
Si clicchi su OK
Si aprirà una finestra con una griglia. Nel seguito, si imparerà a inserire i componenti del progetto
da realizzare, come mostrato dallo schema seguente:
Si aprirà la finestra denominata Symbol. Si disabiliti la funzione
.
Repeat-insert mode, altrimenti si inseriranno più componenti. Si apra la libreria facendo
Si clicchi sull’icona
doppio click sull’icona
e si scelga Primitives e dalla sottocartella Logic si scelga
di inserire la porta Not. Si faccia click su Ok e si inserisca sul foglio Schematics la porta NOT.
Dalla libreria Pin, si scelga uno alla volta Input ed Output, disabilitando di nuovo la
funzione Repeat-insert mode, e per una maggior chiarezza si rinominino i pin
chiamandoli Ingresso e Uscita (per rinominare il pin bisogna cliccare sul nome). Si
effettui il collegamento tra i componenti avvicinando il puntatore del mouse all’ingresso e
all’uscita degli stessi. Si noti il cambiamento del cursore, a questo punto tenendo premuto il
pulsante sinistro del mouse si tracci il collegamento.
Fatto ciò si salvi il file e si proceda alla compilazione tramite l’icona
posta in alto sulla barra
dei comandi.
Finita la compilazione viene visualizzato il Report della compilazione. Le informazioni che vi
sono indicate riguardano le fasi della compilazione. Le fasi sono le seguenti:
Analysis and Synthesis: in questa fase si analizza il progetto e viene generata la Netlist che
specifica i collegamenti tra i vari componenti.
Fitter: in questa fase il compilatore distribuisce nello spazio del CPLD le macrocelle contenenti
i componenti del progetto.
Assembler: in questa fase il compilatore produce il file per la programmazione del CPLD.
Timing Analyzer: in questa fase il compilatore analizza i tempi di propagazione nel CPLD,
calcola il tempo peggiore e il tempo migliore specificando il percorso per cui si hanno.
Simulazione del Progetto
Per effettuare la simulazione, occorre innanzitutto creare un file di simulazione. Si clicchi su
.
Si scelga la scheda Other Files e, di seguito, Vector waveform file; si clicchi su OK.
5
.
Si aprirà un’ulteriore finestra, si faccia doppio clic nella parte sinistra (sotto la dicitura Name) e si
scelga Node Finder.... Si utilizzi il menù filter e si scelga PINS: all e poi List. Apparirà la
lista di tutti i pin del progetto. Si faccia doppio click sul pin Ingresso e si chiudano le finestre Node
Finder e Insert Node or Bus cliccando su OK.
Si attivi lo strumento zoom tool
e si clicchi ripetutamente col tasto destro nella schermata
destra, fino a visualizzare l’intero periodo di simulazione, di circa 1µs.
Si specifichino le transizioni dell’ingresso. Per fare ciò, selezionare lo strumento “freccia”,
cerchiato in rosso nella figura in basso. Con il mouse si selezionino di volta in volta diversi
intervalli di tempo, come in figura:
e con le icone
si imposti se nell’intervallo selezionato l’ingresso debba assumere valore
alto (1) oppure basso (0). Si salvi il file.
Si clicchi sull’icona
per salvare il file invertitore.vwf e si passi alla simulazione cliccando sul
menu Tools -> Simulator Tool. Si ingrandisca il tool con il tasto
.
Si hanno due tipi di simulazione principali (simulation modes), più un terzo avanzato (Fast timings
model).
1) Functional: simulazione ideale, non tiene conto dei tempi di propagazione.
2) Timing: simulazione reale, tiene conto dei tempi di propagazione.
3) Timing Using fast timings model: non importante per questa esercitazione.
6
Si scelga per prima la simulazione Functional, e si clicchi su Generate Functional Simulation
Netlist. Alla fine della generazione, si chiuda il compilation report prodotto. Si selezioni la finestra
simulator tool e si dia Start alla simulazione. Se non si sono avuto errori, si clicchi su Report.
Nella finestra si visualizzino le transizione dell’uscita e si verifichi se il risultato è quello voluto.
Si ripeta la simulazione scegliendo questa volta Timing, si dia Start e si visualizzi, cliccando su
Report, il risultato ottenuto. Si ingrandisca il diagramma sulle transizioni e si dia una stima del
ritardo. Si notino le differenze con la simulazione Functional.
Assegnazione dei pin
Prima di programmare la basetta, occorre assegnare i pin al nostro progetto.
Cosa significa assegnare i pin?
Bisogna specificare le corrispondenze tra gli input e gli output del progetto e quelli del CPLD. A
cosa sarà collegato il segnale d’ingresso? E quello di uscita?
Si può, ad esempio, disporre che l’uscita sia visualizzata dal led blu LED1 e che l’ingresso venga
associato all’interruttore SW1. Procediamo.
Si chiuda la simulazione e si attivi la voce di menù Assignments… -> Pins. Si faccia click
sull’icona
posta in alto a destra.
Si faccia doppio click su new sotto la colonna To ; si aprirà un menù a tendina; si scelga il pin
Ingresso.
Si faccia doppio click sotto la colonna Location in corrispondenza del pin Ingresso; si aprirà un
menù a tendina, si scelga il Pin_2 corrispondente al pulsante SW1.
Si faccia di nuovo doppio click su new sotto la colonna To e si scelga ora il pin Uscita.
Si faccia doppio click sotto la colonna Location e si scelga il Pin_48 che corrisponde al led blu
LED1.
Completata l’assegnazione dei pin, si salvi il file.
Che ne è degli altri pin inutilizzati del CPLD? E’ buona norma non lasciare
“unspecified” alcun pin inutilizzato. Per fare ciò, si attivi Assignments… - >
Device.
Si scelga il tasto Device & Pin Options… (v. sotto).
7
Si scelga la scheda Unused Pins e si scelga la voce “As input tri-stated with weak pull-up” (v.
sotto).
Si clicchi su OK e si compili di nuovo il progetto (tasto
fase di programmazione del CPLD.
). Se non si hanno errori, si proceda alla
Set-up della basetta
poiché è possibile che in questa fase si spenga inavvertitamente il PC, prima di
effettuare qualunque operazione, è caldamente consigliato fare un backup della
8
cartella di lavoro c:\elettronica su memory stick USB o floppy disk, pena il
rischio di perdere il lavoro fatto finora.
Elenco del materiale che viene consegnato:
- basetta sperimentale
- alimentatore
- kit tripla presa + adattatore schuko
- cavetto di programmazione
Seguire scrupolosamente la seguente sequenza di operazioni:
1. Per prima cosa, per collegare l’alimentatore alla presa di alimentazione, staccare il
monitor dalla presa (NON IL PC!!!!!) e utilizzare il kit tripla presa/adattatore per
derivare la necessaria presa aggiuntiva. Ricollegare il monitor del PC.
2. Sincerarsi che l’alimentatore sia posizionato su 6V e inserirlo nella presa aggiuntiva.
3. Collegare lo spinotto di alimentazione alla basetta e accenderla con l’interruttore
apposito. Se la basetta non dovesse accendersi subito, scollegare immediatamente
lo spinotto e chiamare il docente!!!!
4. se la basetta si accende, è possibile che essa sia già programmata con vecchie
esercitazioni. Non ci si stupisca, dunque, se il sistema incomincia alcune sequenze di
operazioni (accensione di led, conteggi, ecc. ecc.)
5. Collegare il cavo di programmazione alla porta parallela del PC e al connettore di
programmazione della basetta.
Programmazione del CPLD
Si faccia click sull’icona
. Nella finestra che si aprirà, si controlli che appaia, come di seguito,
la scritta ByteBlaster [LPT1] (se non compare, v.sotto).
9
Se non dovesse comparire, si clicchi su Hardware setup…, si clicchi su Add
Hardware… e si scelga ByteBlasterMV or ByteBlaster II. Si clicchi su OK.
Adesso si clicchi su No Hardware e si scelga ByteBlasterII [LPT1]. Si clicchi su
Close.
Si attivi l’opzione Program/Configure e si clicchi su Start per iniziare la programmazione:
Si verifichi che alla pressione di SW1, il led LED1 si accende e si spegne.
Domanda: dalle tabelle precedenti, si vede come sia i led che gli interruttori on/off siano attivi bassi
(“0”=led acceso, SW1 premuto=“0”). Provare a dare una giustificazione al comportamento del
circuito.
Altre esperienze
1. Si provino a realizzare funzioni logiche più complesse (AND a 2, 3 o 4 ingressi, OR, XOR).
2. Si provino a utilizzare i segmenti del display.
Ringraziamenti.
Desidero ringraziare il Dott. Paolo Mele, laureato di questa Facoltà, per l’insostituibile contributo
dato alla preparazione di questa e delle altre esercitazioni sugli hardware programmabili,
nell’ambito del suo lavoro di tesi di laurea.
10