Circuiti digitali integrati: FPGA e ASIC. Sintassi VHDL. Descrizione funzionale, realizzazione e verifica di un progetto logico. Macchine logiche sincrone e asincrone, problematiche di temporizzazioni segnali. Errori logici e loro trattamento. Realizzazione pratica su scheda (circuito stampato) dotata di FPGA di esempi di circuiti logici di complessità crescente: dalla codifica VHDL fino alla verifica in laboratorio della corretta funzionalità. Integrazione FPGA con sistema Arduino.
D. Naylor and S. Jones, “VHDL: a logic synthesis approach”, Chapman & Hall, 1997
Z. Navabi, “VHDL. Analysis and modeling of digital systems”, McGraw-Hill, 1993
S. Rajan, “Essential VHDL: RTL synthesis done right”, CL Books, 1997
Obiettivi Formativi
Conoscenza e comprensione di: circuiti digitali integrati (FPGA e ASIC), loro descrizione formale in linguaggio VHDL, corrette metodologie di codifica e verifica del progetto, casistiche di errori logici e loro trattamento.
Capacità di applicare conoscenza e comprensione per: realizzazione di tipici esempi di circuiti digitali di varia complessità su FPGA, dalla fase di codifica VHDL alla fase di simulazione e infine alla fase di verifica in laboratorio sul dispositivo FPGA configurato; realizzazione di interfacce digitali con sistema Arduino.
Autonomia di giudizio: scelte di ottimizzazione della descrizione formale di un circuito digitale, di minimizzazione dei potenziali errori logici, di controllo opportuna della temporizzazione e quantità di dati trattati dal circuito.
Prerequisiti
Elementi di elettronica analogica, inclusi: circuiti elettrici, struttura dei semiconduttori e delle principali tipologie di transistor. Logica elementare e algebra booleana. Elementi di elettronica digitale: porte logiche di base e loro combinazioni, elementi di memoria (flip-flop). Utilizzo di programmi testuali e a finestre su PC e delle strumentazioni di base del laboratorio elettronico (oscilloscopio, stazione saldante).
Metodi Didattici
Lezione frontale con presentazione a schermo, dispense, attività di laboratorio con esercitazioni pratiche, realizzazione circuiti e misure.
Modalità di verifica apprendimento
Prova orale. Discussione analitica di uno dei progetti logici realizzati dallo studente in laboratorio, descrizione delle caratteristiche della struttura logica, delle mancate ottimizzazioni in funzione dell’applicazione desiderata, delle problematiche riscontrate e come potrebbero essere risolti. Generalizzazione dalla specifica casistica riscontrata al caso generale.
Criteri di valutazione: capacità di organizzare la conoscenza; capacità di ragionamento critico e analitico sul progetto realizzato; competenza nell’impiego del lessico tecnico; capacità di astrazione dalla specifica casistica alla problematica generale.
Programma del corso
Lezione frontale. Cenni alla struttura dei circuiti integrati (FPGA e ASIC). Introduzione ai linguaggi HDL. Elementi base di sintassi VHDL. Descrizione funzionale di circuiti logici. Progettazione a blocchi gerarchici.
Lezione frontale. Analisi della fasi di compilazione e verifica di un progetto HDL: sintesi del circuito logico, configurazione del dispositivo, simulazione funzionale e temporale, prove in laboratorio. Esempi di progettazione avanzata in VHDL.
Lezione frontale. Concetto di macchina logica sincrona e asincrona. Temporizzazioni dei segnali nel circuito e relazione con setup/hold time. Descrizione della macchina sincrona in VHDL. Esempi di progetti codificati in VHDL. Illustrazione delle principali casistiche applicative.
Lezione frontale. Upset ed errore logico in un circuito sincrono. Upset in un circuito asincrono e risincronizzazione senza errore logico. Upset da perturbazioni esterne, esempi di ridondanza logica e di sistemi di rivelazione dell'errore logico.
Laboratorio. Progettazione VHDL, compilazione e simulazione di un semplice circuito a blocchi logici gerarchici. Realizzazione VHDL di una macchina sincrona e di un’interfaccia con sistema Arduino, su FPGA a bordo di scheda dedicata. Prove e misure in laboratorio per verifiche della funzionalità effettiva.