Logica combinatoriale. Logica sequenziale. Progettazione di circuiti digitali e sintassi VHDL. DAC e ADC. Microcontrollore Arduino. Macchine logiche sincrone e asincrone, problematiche di temporizzazioni segnali. Errori logici e loro trattamento. Utilizzo di una scheda con FPGA, DAC e interfaccia seriale RS232. Misura della non-linearità di un ADC mediante campionamento di onda triangolare generata dal DAC.
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: logica combinatoriale e sequenziale, 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 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. 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
L'esame consiste in una prova orale di durata 30 minuti. Presentazione orale del progetto realizzato durante l'anno dallo studente in laboratorio, descrizione delle caratteristiche della struttura logica, delle ottimizzazioni in funzione dell’applicazione desiderata, delle problematiche riscontrate e come potrebbero essere risolti. Generalizzazione dalla specifica casistica riscontrata al caso generale.
La valutazione terrà conto della capacità dello studente di spiegare con chiarezza espositiva e padronanza della materia, motivazione quindi finalità del progetto, metodi utilizzati e risultati, evidenziando le connessioni con le tematiche più generali apprese nel corso e gli strumenti che queste hanno fornito alla soluzione del problema posto.
Programma del corso
- Lezioni frontali.
Logica combinatoriale. Porte elementari. Algebra booleana. Codificatore e decodificatore. Porta XOR, circuto di parità, comparatore. Sommatore. Look ahead logic.
Logica sequenziale. Latch. Flip-Flop. Contatore e registro a scorrimento.
Cenni alla struttura dei circuiti integrati (FPGA e ASIC). Descrizione funzionale di circuiti logici. Progettazione a blocchi gerarchici. Elementi base di sintassi VHDL.
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. Concetto di macchina logica sincrona e asincrona. Temporizzazioni dei segnali nel circuito e relazione con setup/hold time. Illustrazione delle principali casistiche applicative.
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.
DAC, nozioni su circuiti operazionali. ADC, errore di conversione. Non-linearità differenziale e integrale dell’ADC, metodo di misura con onda triangolare.
Microcontrollore Arduino. Descrizione dei componenti e del software di programmazione.
- Laboratorio.
Realizzazione di una scheda con FPGA, DAC e interfaccia seriale RS232. Progettazione della macchina a stati su FPGA. Utilizzo della scheda per generazione di un’onda triangolare in ingresso all’ADC integrato nel microcontrollore Arduino.