INTRODUZIONE ALLE LOGICHE PROGRAMMABILI TEMA: L DESCRIZIONE: Introduzione al linguaggio VHDL per la descrizione dell hardware e sintesi di un circuito logico. LUOGO: Laboratori Nazionali di Legnaro (PD) PERIODO: 19 30 Giugno 2017 STAGISTI: Mattia Vanni Pizzaballa, Nicholas Sermenghi TUTOR RESPONSABILE: Marco Bellato TUTOR COLLABORATORI: Davide Pedretti, Stefano Pavinato Scopo di tale stage era dare le nozioni minime ed indispensabili per affrontare il mondo dell'elettronica digitale. Nella prima settimana dello stage sono state fornite le basi del sistema binario e i postulati dell'algebra di Boole. Partendo dalle porte logiche elementari (AND, OR, NOT, NAND, NOR, XOR) si è passati allo studio di funzioni logiche più complesse, tramite tabelle di verità, forme canoniche, mappe di Karnaugh. Con questi esempi si è appreso il flusso di progettazione di un circuito digitale: ovvero partendo dalle tabelle di verità fino al disegno del circuito medesimo implementato con porte elementari e relativi diagrammi temporali. Contemporaneamente è stato introdotta l'architettura della FPGA (Field Programmable Gate Array) e le basi del linguaggio di descrizione hardware VHDL (VHSIC Hardware Description Language, dove VHSIC è la sigla di Very High Speed Integrated Circuits). Come corollario di quanto appreso nella prima settimana, durante la seconda settimana si è progettato un circuito logico combinatorio di decodifica per display a sette segmenti. Le fasi necessarie per la sua implementazione sono state: disegno dello schema a blocchi di massima, prototipizzazione su scheda mille fori ed implementazione della logica di controllo su FPGA. PROGETTO PER PILOTAGGIO DISPLAY A SETTE SEGMENTI Nelle prossime sezioni si elencano: scopo del progetto, schema a blocchi, materiali utilizzati, assemblaggio su millefori, implementazione firmware via VHDL, debug con ChipScope, risultati. Display e orologi digitali utilizzano diodi LED per rappresentare caratteri alfanumerici. In elettronica il LED o diodo a emissione di luce e un dispositivo in grado di emettere luce se opportunamente polarizzato. Ogni carattere esadecimale puo essere rappresentato utilizzando un display a 7 segmenti. I segmenti (LED) vengono pilotati tramite 7 segnali digitali etichettati come : a, b, c, d, e, f, g. Mentre le 4 variabili indipendenti, ovvero gli input del circuito combinatorio, sono indicati nello schema a blocchi come w,x,y,z. Il valore di tali variabili dipende dalla posizione di quattro interruttori (switch).
SCOPO DEL PROGETTO Fine di questo progetto è capire l utilità pratica di una FPGA e più in generale comprendere il funzionamento ed i principi dell elettronica digitale che ci circonda. PROCEDIMENTO Lo studio delle reti logiche è stato compiuto mediante tabelle di verità e diagrammi temporali. Ognuna delle funzioni logiche associate ai segmenti del display è descritta in modo univoco dalla tabella di verità riportata di seguito. Le funzioni sono state semplificate tramite mappe di Karnaugh a quattro variabili indipendenti. Successivamente si è passati alla sintesi VHDL. Switch, display a sette segmenti sono stati assemblati su scheda millefori, utilizzando strumentazione tipica di un laboratorio di elettronica: filo di stagno, saldatore, ecc.. La scheda così realizzata è stata debuggata per verificarne il corretto funzionamento. w x y z hex a b c d e f g 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 1 1 1 1 0 0 1 0 2 0 0 1 0 0 1 0 0 0 1 1 3 0 0 0 0 1 1 0 0 1 0 0 4 1 0 0 1 1 0 0 0 1 0 1 5 0 1 0 0 1 0 0 0 1 1 0 6 0 1 0 0 0 0 0 0 1 1 1 7 0 0 0 1 1 1 1 1 0 0 0 8 0 0 0 0 0 0 0 1 0 0 1 9 0 0 0 0 1 0 0 1 0 1 0 A 0 0 0 1 0 0 0 1 0 1 1 B 1 1 0 0 0 0 0 1 1 0 0 C 0 1 1 0 0 0 1 1 1 0 1 D 1 0 0 0 0 1 0 1 1 1 0 E 0 1 1 0 0 0 0 1 1 1 1 F 0 1 1 1 0 0 0 Tabella di verità del display a 7 segmenti
Mappa di Karnaugh SCHEMA A BLOCCHI E' una rappresentazione grafica usata per descrivere idee e concetti preliminari al disegno dello schema elettrico dettagliato.
MATERIALI - 4 resistenze da 5.6 k Ω - 1 resistenza da 330 Ω - 7 resistenze da 82 Ω - Condensatori da 4.7 µf - Connettore 20 pin - LED - Display 7 segmenti - Switch con 4 interruttori - Regolatore di tensione LM1117 - Alimentatore lineare da banco - Scheda millefori - FPGA: Virtex 4 XC4VFX12FF668A - Scheda Elettronica ML403 ASSEMBLAGGIO SU MILLEFORI Il circuito elettrico è stato monato su scheda millefori. Si sono saldati i componenti sulla scheda, collegati successivamente tra loro con l ausilio di un filo di materiale conduttore. Si è prestata particolare attenzione al corretto collegamento anodo-catodo del display e alla verifica delle alimentazioni tramite multimetro da banco.
IMPLEMENTAZIONE HARDWARE VIA VHDL Il codice VHDL scritto è una sequenza di istruzioni, che una volta compilate, vengono sintetizzate in circuito combinatorio mappato direttamente nelle celle logiche della FPGA. Per la sua creazione si è utilizzato il linguaggio VHDL e l ambiente di sviluppo ISE Design Suite 14.7 di Xilinx. Successivamente il codice è stato trasferito su FPGA tramite cavo USB-JTAG.
DEBUG CON CHIPSCOPE ChipScope è un software di debug di Xilinx che permette di monitorare real-time l'evoluzione nel tempo dei segnali logici all' interno dell'fpga. Inoltre tramite questo software si è visto come virtualizzare le variabili d'ingresso del nostro circuito logico. Questo ambiente semplifica e velocizza la verifica funzionale del progetto.
RISULTATO FINALE Dopo aver concettualizzato il progetto mediante uno schema a blocchi, aver saldato i componenti su scheda millefori, aver scritto il codice per la programazione ed aver corretto gli errori con ChipScope si è visto concretamente la corrispondenza tra le uscite della tabella di verità e il corrispettico carattere esadecimale visualizzato su display. Inizialmente gli input sono stati forniti da interrutori azionati manualmente, successivamente grazie ad un implementazione nel codice tali comandi sono stati forniti direttamente da pc.