Introduzione agli hardware programmabili
Transcript
Introduzione agli hardware programmabili
Esercitazione di Elettronica Digitale Ing. F. Iannuzzo - A.A. 2005/2006 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 da impiegare 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 è 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 Per visualizzare una cifra su uno dei quattro display, occorre attivare i segmenti corrispondenti e abilitare il segnale di Enable relativo a quella posizione. Esempio: per visualizzare la cifra “1” sul display 2, occorre: 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 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