Salta ai contenuti. | Salta alla navigazione

Strumenti personali

LABORATORIO FPGA

Anno accademico e docente
Non hai trovato la Scheda dell'insegnamento riferita a un anno accademico precedente? Ecco come fare >>
English course description
Anno accademico
2021/2022
Docente
CRISTIAN ZAMBELLI
Crediti formativi
6
Percorso
Architectures & processing
Periodo didattico
Secondo Semestre
SSD
ING-INF/01

Obiettivi formativi

Il corso fornisce gli elementi necessari per la prototipazione e la progettazione di sistemi elettronici integrati utilizzando dispositivi riconfigurabili (FPGA) comunemente utilizzati sia in ambienti embedded (incluso il mobile computing) che in piattaforme di calcolo. Il corso provvede, mediante attività di laboratorio assistite dal docente, le competenze per realizzare sistemi elettronici che spaziano nello spettro dell'elettronica digitale, elettronica analogica, e dei mixed-signal systems.

L'obiettivo principale del corso è di fornire agli studenti le conoscenze necessarie per la progettazione su FPGA di sistemi elettronici integrati con componenti eterogenei considerando i vincoli che contribuiscono alle prestazioni, al consumo di potenza, e alla funzionalità degli stessi.

Le principali conoscenze acquisite saranno:
• elementi di base di una FPGA
• conoscenza di un linguaggio di descrizione dell'hardware (VHDL) orientato alla simulazione e alla realizzazione di un sistema elettronico
• uso di un ambiente di sviluppo integrato (IDE Vivado Xilinx) per sistemi FPGA
• conoscenze relative ai vincoli di occupazione d'area, di memoria, e di consumo di potenza di un sistema elettronico realizzato su FPGA
• conoscenze di base dei protocolli di comunicazione SPI e I2C per periferiche esterne come memorie off-chip, human interface devices, convertitori ADC, accelerometri, e displays
• interfacciamento di un segnale elettronico analogico con un sistema elettronico digitale per costruire e processare un segnale usando il paradigma mixed-signal

Le principali abilità (ossia la capacità di applicare le conoscenze acquisite) saranno:
• realizzare un sistema elettronico integrato usando una FPGA
• identificare i vincoli di progetto che determinano il dimensionamento di un sistema elettronico
• valutare il protocollo di comunicazione o la periferica più adatta per una determinata applicazione
• utilizzare sistemi di prototipazione digitali da usare in ambienti embedded o high performance computing

Prerequisiti

Per seguire il corso è necessario avere compreso i concetti dei corsi di:

- Elettronica dei sistemi digitali
- Circuiti analogici per l'elaborazione dei segnali
- Architettura dei sistemi digitali
- Linguaggi di descrizione dell'hardware

Nel corso sono comunque previsti dei richiami a tali corsi per facilitare la comprensione di alcuni argomenti specifici del corso. Per sostenere l'esame non è necessario avere superato gli esami associati. Essendo questo un corso di laboratorio è prevista una conoscenza minima dei concetti di base della strumentazione di laboratorio (alimentatore da banco, generatore di forme d'onda arbitrario e oscilloscopio).

Contenuti del corso

Essendo il corso un laboratorio didattico per gli studenti, si prevedono 3 lezioni (7.5 ore) introduttive sull'argomento dei sistemi elettronici integrati basati su FPGA e il linguaggio di descrizione dell'hardware usato per la loro programmazione più 10 sessioni di laboratorio (25 ore) nelle quali verranno affrontati diversi argomenti. Il corso verrà erogato su più turni di accesso al laboratorio per dare modo a tutti gli studenti di utilizzare le board FPGA e per gestire eventuali recuperi delle lezioni. Quando gli studenti non sono in laboratorio possono comunque proseguire le esercitazioni autonomamente installando il software di sviluppo sui propri PC. In questo modo il corso avrà una durata di 60 ore. I principali argomenti del corso sono:

- Introduzione ai sistemi elettronici integrati: concetto di sistema elettronico analogico, digitale e mixed-signal, possibili scenari di integrazione, vincoli di progetto (consumo di potenza, occupazione d'area, costi) flusso di progettazione, sistemi di prototipazione e boards di sviluppo

- Le logiche programmabili (FPGA): macro-struttura a blocchi, realizzazione integrata di una FPGA, programmare una FPGA mediante un linguaggio di descrizione dell'hardware (VHDL), sintesi e implementazione di un design, la board Digilent Basys3

- L'ambiente IDE Xilinx Vivado: come realizzare un primo progetto in VHDL di un sistema elettronico integrato, differenza fra simulazione (test bench) e implementazione, comunicazione con la board Digilent Basys3 e con le sue periferiche (LED, switches e push button)

- Costruzione gerarchica di un sistema elettronico integrato: esempio di un sommatore hardware, concetto di entità e modulo in VHDL, riuso delle risorse, esempio di un modulatore PWM

- Gestione degli I/O della board Digilent Basys3: multiplazione degli I/O con altre periferiche, pilotaggio e acquisizione di segnali mediante ADC integrati in FPGA, comunicazione con le human interface device (HID) tramite porta USB

- Protocolli di comunicazione nei sistemi elettronici: esempio e realizzazione di un semplice protocollo di comunicazione Point-to-Point tra FPGA, il protocollo UART, il protocollo SPI (realizzazione e simulazione di un SPI controller), il protocollo I2C (realizzazione e simulazione di un I2C controller)

- La periferica 3-axis accelerometer Analog Devices ADXL345: schema circuitale, reference manual, interfacciamento con la board Digilent Basys3, processing dei segnali provenienti dall'accelerometro

- Processore RISC istanziato su FPGA tramite picoBlaze: introduzione al computing su FPGA, compilatore per RISC, gestione degli interrupts, implementazione e verifica del funzionamento

Metodi didattici

3 Lezioni in aula
10 Esercitazioni di laboratorio su postazioni attrezzate con boards di sviluppo su FPGA (Digilent Basys3) e strumentazione per misure elettroniche (oscilloscopio, generatore di funzione, etc.)
Il materiale verrà distribuito su Classroom con codice yfwhsdt

Modalità di verifica dell'apprendimento

L'esame è una prova singola che consiste nello sviluppo di un sistema elettronico integrato che utilizza una scheda FPGA in laboratorio.

Durante l'esame allo studente viene assegnato un design specifico da implementare sull'FPGA (ad esempio, potrebbe essere una FSM, una logica semplice, un design con un IP, ecc.). Esempi di design saranno forniti durante l'intero corso.

Il voto finale si baserà sulla capacità dimostrata dallo studente nell'uso dei seguenti concetti esaminati in questo corso applicati al progetto su FPGA:

- Creazione di un design usando un linguaggio di descrizione hardware
- Simulazione di un design fornendo un testbench funzionale
- Ottimizzazione del design in base ai vincoli di area / potenza / temporizzazione richiesti
- Sintesi / Implementazione / Bitstream del design su FPGA con dimostrazione empirica della sua funzionalità

Ogni elemento precedente pesa 8 punti sul voto finale. Il punteggio massimo è 32. I punteggi superiori a 30 verranno classificati come 30 e lode.

La durata dell'esame è di 3 ore.

Il superamento dell'esame è prova di aver acquisito le conoscenze e le abilità specificate negli obiettivi formativi dell'insegnamento.

L'esame può essere sostenuto anche in lingua inglese qualora lo studente lo richieda.

Testi di riferimento

Materiale didattico fornito dal docente e manuali di riferimento della board di prototipazione Digilent Basys3.

Inoltre verranno resi disponibili tutti i datasheets delle periferiche e dei componenti utilizzati nelle esercitazioni di laboratorio