Vai al contenuto principale
Oggetto:
Oggetto:

Laboratorio Avanzato di Elettronica

Oggetto:

Advanced Electronics Laboratory

Oggetto:

Anno accademico 2023/2024

Codice attività didattica
MFN1324
Docenti
Luca Pacher (Titolare)
Michela Greco (Titolare)
Corso di studio
008510-105 Laurea Magistrale in Fisica ind. Fisica del Sistema Meteoclimatico, Generale e delle Tecnologie Avanzate
Anno
1° anno
Periodo
Secondo semestre
Tipologia
B=Caratterizzante, D=A scelta dello studente
Crediti/Valenza
6
SSD attività didattica
FIS/01 - fisica sperimentale
Erogazione
Tradizionale
Lingua
Italiano
Frequenza
Facoltativa
Tipologia esame
Prova pratica
Prerequisiti

Nessuna propedeuticità obbligatoria. Tuttavia è consigliato di aver seguito il corso di Elettronica Applicata (FIS0010) della Laurea Magistrale o comunque un corso base di ambito elettronico durante il triennio precedente.

No mandatory prerequisites. However it is recommended to have attended the Applied Electronics (FIS0010) course of the Master's Degree or some other basic electronics course during the Bachelor's Degree programme.

Propedeutico a

Tesi magistrale di ambito elettronico/sperimentale. Inserimento nel mondo del lavoro o della ricerca.

Electronics/experimental research work during the final Master's Degree thesis. Job or professional research placement.

Oggetto:

Sommario insegnamento

Oggetto:

Obiettivi formativi

Il corso è suddiviso in due moduli indipendenti e ha come scopo quello di fornire allo studente del secondo biennio, specializzando in Fisica di tipo sperimentale, un'introduzione esaustiva all'utilizzo di logiche programmabili quali dispositivi FPGA e micro-controllori (Arduino) per la realizzazione di sistemi di controllo e sistemi di acquisizione dati (DAQ) per sensori e attuatori, nonché un'introduzione all'utilizzo di strumenti software quali Python/ROOT e LabVIEW per la gestione di questi sistemi.

The course is divided in two independent parts and aims to provide to post-graduate degree students specializing in experimental Physics an  exhaustive introduction  to the usage of programmable logic devices such as FPGA devices and micro-controllers (Arduino) to implement control systems and data acquisition (DAQ) systems for sensors and actuators. Beside these hardware components the course also introduces the usage of Python/ROOT and LabVIEW as software interfaces to such systems. 

Oggetto:

Risultati dell'apprendimento attesi



Conoscenza e capacità di comprensione (knowledge and understanding)

Comprensione degli aspetti fondamentali associati alla progettazione, simulazione e implementazione di circuiti digitali su logiche programmabili di tipo FPGA mediante l'utilizzo del linguaggio di descrizione dell'hardware Verilog e dell'ambiente CAD professionale Xilinx Vivado.

Comprensione degli aspetti fondamentali associati alla programmazione ad alto livello di un micro-controllore Arduino per acquisire segnali da diversi sensori e per implementare sistemi di controllo per attuatori. Realizzazione di interfacce di acquisizione dati mediante l'utilizzo di linguaggi di programmazione quali Python/ROOT e LabVIEW.



Capacità di applicare conoscenza e comprensione (applying knowledge and understanding)

Capacità di progettare, simulare e implementare in autonomia sistemi digitali mappati su dispositivi FPGA mediante l'utilizzo del linguaggio Verilog HDL in ambiente Xilinx Vivado.

Capacità di programmare ad alto livello un micro-controllore Arduino per acquisire segnali da diversi sensori e per implementare sistemi di controllo per attuatori. Capacità di realizzare interfacce di acquisizione dati mediante l'utilizzo di linguaggi di programmazione quali Python/ROOT e LabVIEW.



Knowledge and understanding

Understanding of fundamental aspects related to the design, simulation and implementation of digital circuits targeting FPGA devices using the Verilog HDL and the professional CAD environment Xilinx Vivado.

Understanding of fundamental aspects related to the usage of the Arduino micro-controller to process signals from different sensors and to implement control systems for actuators. Implementation of data acquisition interfaces using programming languages such as Python/ROOT and LabVIEW.



Applying knowledge and understanding

Design, simulation and implementation of digital circuits targeting FPGA devices using the Verilog HDL and the professional CAD environment Xilinx Vivado.

 

High-level programming targeting the Arduino micro-controller, implementation of control and data acquisition software interfaces with Python/ROOT and LabVIEW.

Oggetto:

Programma



Il corso si articola su 60 ore (corrispondenti a 6 CFU) di lezioni/laboratorio e risulta essere suddiviso in due parti indipendenti.


PARTE 1 - Introduzione alla programmazione FPGA [Prof. Pacher - 4 CFU]

 

 Introduzione all'elaborazione dei segnali nel dominio digitale, descrizione e simulazione di semplici circuiti digitali tramite linguaggio Verilog HDL e loro implementazione hardware mediante programmazione FPGA in ambiente Xilinx Vivado, verifica del corretto funzionamento in laboratorio (espandere per visualizzare il programma dettagliato).

 

  • Introduzione al corso. Richiami sui sistemi elettronici digitali: sistemi sincroni e asincroni, classificazione dei circuiti digitali (combinatori vs. sequenziali). Introduzione alla progettazione di sistemi digitali moderna mediante utilizzo di Hardware Description Languages (HDL). VHDL vs. Verilog HDL. Panoramica dei simulatori digitali disponibili.

  • Ripasso sull'utilizzo del terminale e dei comandi Linux fondamentali. Utilizzo del repository Git per il corso. Introduzione alla sintassi del linguaggio Verilog: commenti, costanti logiche, moduli, wires/buses, data types, parallel programming vs. sequential programming, continuous assignment. Implementazione di una semplice porta NOT mediante il linguaggio Verilog.

  • Simulazione HDL della porta logica NOT mediante l'utilizzo di un modulo Verilog testbench. Codice sintetizzabile vs. non sintetizzabile. Descrizione dettagliata del flusso di simulazione in ambiente Xilinx Vivado: compilazione dei sorgenti (xvlog/xvhdl), elaborazione (xelab) ed esecuzione della snapshot (xsim) da riga di comando. Debug dei risultati di simulazione utilizzando l'ambiente grafico del simulatore XSim (probing delle waveforms digitali). Introduzione al linguaggio Tcl e agli scripts per automatizzare l'esecuzione del flusso di XSim. Introduzione all'utilizzo del GNU Makefile per automatizzare da riga di comando il flusso complessivo di simulazione (compilazione/elaborazione/esecuzione).

  • Introduzione a nuovi costrutti del linguaggio Verilog: packed arrays, endianess, slicing, concatenation, sistemi di numerazione (base-2, base-8, base-10, base-16), ripasso sui codici binari. Il problema del type casting in Verilog. Ulteriori data types: integer, real, time e realtime. Implementazione e simulazione mediante Verilog e Xilinx Vivado degli operatori logici fondamentali dell'algebra booleana (AND, NAND, OR, NOR, XOR, XNOR). Prima introduzione alla realizzazione di contatori in Verilog.

  • Implementazione alternativa delle porte logiche fondamentali mediante Verilog gates primitives. Verilog strutturale. Ulteriori nozioni sull'utilizzo dell'ambiente grafico di simulazione di XSim. Breve approfondimento sul funzionamento e utilizzo di Git come versioning tool. Organizzazione della cartella di lavoro. Implementazione e simulazione in Verilog mediante diversi possibili coding styles per un semplice blocco combinatorio quale un multiplexer 2:1 (Verilog behavioral, logic equation, strutturale). Costrutti if/else e case, Verilog macros. Clock generator parametrizzabile. Esecuzione del flusso di simulazione mediante scripts Tcl e Makefile, relaunch della simulazione. Implementazione e simulazione di un semplice decoder one-hot mediante for-loop in Verilog.

  • Introduzione ai dispositivi di tipo FPGA: evoluzione storica delle logiche programmabile (PLD, CPLD). ASIC vs. FPGA, vantaggi e svantaggi. FPGA vendors, principali soluzioni software e hardware disponibili sul mercato. Xilinx vs. Altera. Xilinx 7-series devices resources. Esempi di schede FPGA largamente utilizzate per acquisizioni di Fisica. Introduzione al flusso di implementazione FPGA in ambiente Xilinx Vivado e discussione dei dettagli architetturali interni: fabric, interconnessioni programmabili, logic-cells, LUT, slices, CLB. Implementazione pratica di un semplice circuito combinatorio utilizzando il flusso di Xilinx Vivado in project-mode e GUI mode. Introduzione all'utilizzo degli Xilinx Design Constraints: sintassi base, electrical constraints, physical constraints per il port-mapping tra codice HDL e pin fisici su FPGA, prima introduzione ai timing constraints per circuiti puramente combinatori (set_max_delay, set_false_path, set_disable_timing). Generazione del bitstream. Discussione dettagliata architettura interna FPGA Xilinx: clock distribution, BEL, LUT, registri, fast carry-chain, slices, CLBs, I/O blocks programmabili, BRAM, DSP, XADC).

  • Introduzione all'implementazione e simulazione dei circuiti sequenziali in Verilog: D-latch e D-FlipFlop, reset sincrono vs. asincrono, reset styles. Implementazione e simulazione di contatori asincroni vs. sincroni usando codice Verilog strutturale. Implementazione comportamentale. Introduzione alla simulazione gate-level con back-annotation dei tempi di propagazione: export della netlist Verilog post-sintesi/post-routing, definizione di tempo di ritardo, cell-delay vs. net delay, back-annotation dei tempi di ritardo mediante Standard Delay Format (SDF) file, process corners. Implementazione e simulazione di un contatore Binary-Coded Decimal (BCD) di dimensione programmabile in Verilog mediante utilizzo del costrutto generate for-loop.

  • Introduzione al problema della temporizzazione nei sistemi digitali sincroni e alla gestione del segnale di clock, good vs. bad clocking techniques, setup/hold constraints, FlipFlop con clock-enable e slow-down della logica mediante utilizzo di "tickers". Introduzione all'utilizzo del Phase-Locked Loop (PLL): il problema della moltiplicazione e divisione di un segnale di clock, diagramma a blocchi di un PLL circuit, principio di funzionamento, jitter filtering e phase alignment. Introduzione all'utilizzo del flusso di progettazione utilizzando IP cores in ambiente Xilinx Vivado (IP catalog), compilazione di un blocco di tipo PLL mediante il Clocking Wizard.

  • Esempio di utilizzo del Clocking Wizard nel codice Verilog. Utilizzo della flag PLL "locked" come ulteriore condizione di reset per la logica interna. Introduzione alla Static Timing Analysis (STA) e ai Synopsys Design Constraints (SDC) industry-standard per la timing analysis: timing paths (reg2reg, in2reg, reg2out, in2out) e relativi comandi Tcl (create_clock, set_input_delay, set_output_delay, set_max_delay). Timing exceptions (set_false_path, set_disable_timing). Timing analysis results: Total Negative Slack (TNS), Worst Negative Slack (WNS), Total Hold Slack (THS) e Worst Hold Slack (WHS). Esecuzione interattiva del flusso di implementazione FPGA in Non Project Mode mediante utilizzo di scripts Tcl e Makefile.

  • Pulse Width Modulation (PWM). Implementazione e simulazione di un generatore di numeri pseudo-casuali utilizzando un Linear Feedback Shift Register (LFSR). Esempi pratici di utilizzo (eye diagram). Generazione di numeri pseudo-casuali distribuiti secondo una distribuzione normale mediante il teorema del limite centrale, confronto tra valori generati hardware e MonteCarlo software.

  • Introduzione alle memorie. Implementazione e simulazione di una ROM in Verilog, packed vs, unpacked arrays, esempio di inizializzazione con valori campionati delle funzioni seno/coseno. Introduzione all'utilizzo dei "synthesis pragmas" (attributes) per guidare la generazione dell'hardware, possibili implementazioni di una ROM su FPGA (distributed vs. BRAM). Verifica dei risultati di sintesi. Compilazione di una ROM come IP core.

  • Principio di funzionamento di una memoria di tipo First-In First-Out (FIFO): diagramma a blocchi, puntatori di scrittura/lettura, condizioni di FIFO-full e FIFO-empty, buffer circolare vs. freezing. Applicazioni in Fisica per la de-randomizzazione di eventi poissoniani con distribuzione esponenziale dei tempi di arrivo. Simulazione del funzionamento di una FIFO compilata in forma di IP core.

  • Introduzione alla serializzazione dati: protocolli seriali, classificazione (sincroni vs. asincroni) ed esempi (UART, SPI, I2C, JTAG, Ethernet/USB). Implementazione e simulazione di un registro a scorrimento di tipo Parallel-In Serial-Out (PISO) in Verilog. Il protocollo seriale di tipo Universal Asynchronous Receiver/Transmitter (UART), baud-rate, error-checking.

  • Implementazione e simulazione di Finite States machines (FSM) in Verilog. Macchine di Mealy vs. macchine di Moore, FSM coding styles in Verilog. Esempi: sequence detector, implementazione semplificata e simulazione di un transmitter UART mediante macchina a stati finiti.

 


 

PARTE 2 - Programmazione Arduino e LabVIEW [Prof. Greco - 2 CFU]


Introduzione ai sistemi di controllo e acquisizione dati per la trattazione di segnali da sensori e attuatori, impiegando sia strumentazione software (LabVIEW) che dispositivi hardware programmabili ad alto livello (micro-controllore Arduino).



The course consists of 60 hours of lectures/lab sessions, corresponding to 6 CFU, and is divided in two independent parts.


PART 1 - Introduction to FPGA programming [Prof. Pacher - 4 CFU]


Introduction to signal processing in the digital domain, design and simulation of simple digital circuits using the Verilog HDL, hardware implementation targeting FPGA devices using the professional Xilinx Vivado CAD environment and final electrical characterization in the lab.

 

PART 2 - Arduino programming and LabVIEW [Prof. Greco - 2 CFU]

Introduction to control systems and to data acquisition systems for the processing of signals from sensors and from actuators, using both software tools (LabVIEW) and high-level programmable hardware devices (Arduino micro-controller).

Oggetto:

Modalità di insegnamento



PARTE 1 - Prof. Pacher


Lezioni introduttive teorico/pratiche con esercitazioni al calcolatore (20 ore) seguite da attività in laboratorio (20 ore). Le lezioni introduttive si terranno in presenza con il supporto di un'aula informatica nel rispetto del numero massimo di studenti ammessi in aula secondo le norme vigenti.

Per questa prima parte del corso tutti i sorgenti HDL dei progetti e gli scripts richiesti per eseguire il flusso di progettazione FPGA (simulazione HDL, sintesi/place-and-route e download del firmware sulla board) sono liberamente consultabili e scaricabili tramite portale GitHub all'indirizzo:

https://github.com/lpacher/lae


Per poter seguire questa parte del corso è inoltre necessario provvedere ad installare tutto il software richiesto come descritto dettagliatamente in questa pagina.

 


 

PARTE 2 - Prof. Greco


Le attività di laboratorio saranno tenute in presenza. Il materiale è disponibile sulla pagina Moodle del corso.



PART 1 - Prof. Pacher


Introductory theoretical/hands-on lectures (20 hours) followed by practical sessions in the electronics lab (20 hours). All lectures and lab sessions will be held in presence according to the maximum number of students allowed in the class.

For the first part of the course all HDL sources and scripts required to run the FPGA programming flows (HDL simulations, synthesis/place-and-route and firmware download) are tracked on GitHub and are available at the following address:

https://github.com/lpacher/lae


Before attending the introductory lectures all students are requested to install all necessary software components as extensively described in this page.




PART 2 - Prof. Greco


All lab sessions will be held in presence. The course material is available on the course Moodle page.

Oggetto:

Modalità di verifica dell'apprendimento

Due esami indipendenti, uno per ciascun modulo del corso. La valutazione complessiva risulterà dalla media pesata del voto in trentesimi conseguito nelle singole due parti. Non è richiesto di sostenere i due moduli nella stessa sessione.


PARTE 1 - Prof. Pacher

  • Progettazione e simulazione di un piccolo sistema digitale a scelta dello studente utilizzando il linguaggio Verilog HDL e l'ambiente di sviluppo FPGA Xilinx Vivado. Si lascia agli studenti la possibilità di realizzare il progetto in gruppo nel limite di massimo 2 studenti per gruppo.

  • Descrizione del proprio lavoro (descrizione del progetto, dettagli sull'implementazione HDL, risultati di simulazione e di sintesi, problematiche incontrate etc.) in stile articolo scientifico professionale, da redigere in lingua inglese e utilizzando il linguaggio di formattazione Latex. Se il progetto viene realizzato in gruppo anche la relazione finale sarà un lavoro condiviso. I template Latex per la realizzazione di questo elaborato sono disponibili all'indirizzo:


    https://github.com/lpacher/lae/tree/master/latex


  • Presentazione orale individuale del progetto in stile di presentazione a conferenza mediante l'uso di diapositive. In questo caso viene richiesto che ogni studente esponga il proprio lavoro individualmente.



PARTE 2 - Prof. Greco


Per la seconda parte la valutazione si basa sul montaggio di un'esperienza eseguita in laboratorio.


 

Two independent oral exams, one for each part of the course. The final grade will consists in the weighted mean of the two partial grades. It is not required to give both parts in the same exam session.


PART 1 - Prof. Pacher

  • Design and simulation using the Verilog HDL and Xilinx Vivado of a small digital system. The choice of the final project is completely free and up to the student. Additionally students can team-work, with a maximum number of 2 students per group.

  • Description of the work (project description, HDL implementation details, simulation and synthesis results, issues encountered in the project etc.) in form of a professional scientific paper that has to be written in English using the Latex markup language. If the project is a team-work the final report will be also a shared work. Professional Latex templates to be used for this report are available on the GitHub repository at the following link:


    https://github.com/lpacher/lae/tree/master/latex


  • Conference-like individual oral discussion of the project using slides. In this case it is requested that each student will give its own talk.



PART 2 - Prof. Greco


For the second part the exam consists in reproducing one of the experiments performed during practical sessions in the lab.



 COVID-19 INFORMATION

In accordance to present University directives related to the COVID-19 situation exams should be held in presence.

Students that due to health issues, fragility or other motivations as specified by University rules are not able to give the exam in presence can request to give the exam remotely through the Webex UniTO platform by providing a valid motivation during the registration procedure in the "notes" field of the online registration form.

For the first part of the course remote examination procedures do not change with respect to those for the exam in presence. For the second part instead the project will be reproduced using dedicated remote platforms for Arduino.

Oggetto:

Attività di supporto

Sul repository GitHub della prima parte del corso sono disponibili e liberamente accessibili tutti i link Webex alle video-registrazioni degli anni precedenti.

On the GitHub repository of the first part of the course students can freely access all Webex links to past video-recorded lectures.

Testi consigliati e bibliografia

Oggetto:



PARTE 1 - Prof. Pacher


Slides e altro materiale forniti dal docente. Non è richiesto acquistare un libro di testo specifico.
Alcuni riferimenti utili sono:

  • Z. Navabi, Verilog Digital System Design - McGraw-Hill
  • P.P. Chu, FPGA Prototyping By Verilog Examples - Wiley
  • R.E. Haskell, D.M. Hanna, Introduction to Digital Design Using Digilent FPGA Boards - LBE Books
  • S. Churiwala (Editor), Designing with Xilinx FPGAs Using Vivado - Springer
  • S. Gangadaran and S. Churiwala, Constraining Designs for Synthesis and Timing
    Analysis: A Practical Guide to Synopsys Design Constraints (SDC)
    - Springer


Può forse interessare che del libro Introduction to Digital Design Using Digilent FPGA Boards esiste inoltre una collezione completa di 112 video-lezioni tenute da uno degli autori e liberamente disponibili sul canale YouTube.

Tutti i sorgenti di codice presentati e discussi a lezione sono disponibili sul repository GitHub del primo modulo del corso.


 

PARTE 2 - Prof. Greco


Slides e altro materiale forniti del docente, disponibili sulla pagina Moodle del corso.
Altri riferimenti utili sono:

Getting started with LabVIEW,

http://www.ni.com/pdf/manuals/373427j.pdf

http://arduino.cc/en/Guide/HomePage



PART 1 - Prof. Pacher


Slides and additional course material provided by the teacher. It is not required to buy a specific book for this part of the course. Some useful references are:

  • Z. Navabi, Verilog Digital System Design - McGraw-Hill
  • P.P. Chu, FPGA Prototyping By Verilog Examples - Wiley
  • R.E. Haskell, D.M. Hanna, Introduction to Digital Design Using Digilent FPGA Boards - LBE Books
  • S. Churiwala (Editor), Designing with Xilinx FPGAs Using Vivado - Springer
  • S. Gangadaran and S. Churiwala, Constraining Designs for Synthesis and Timing
    Analysis: A Practical Guide to Synopsys Design Constraints (SDC)
    - Springer


It might be of interest to mention that the book Introduction to Digital Design Using Digilent FPGA Boards is  accompanied by a collection of 112 video-lectures given by one author and freely available on the YouTube channel.

All code sources introduced and discussed during hands-on lectures are available on the GitHub repository of the course.


 

PART 2 - Prof. Greco


Slides and additional course material provided by the teacher and available on the course Moodle page.
Further useful references are:

Getting started with LabVIEW,

http://www.ni.com/pdf/manuals/373427j.pdf

http://arduino.cc/en/Guide/HomePage



Oggetto:

Note

Frequenza obbligatoria alle sessioni pratiche in laboratorio.

It is mandatory to atted practical sessions in the laboratory.

Oggetto:

Orario lezioniV

Lezioni: dal 01/03/2024 al 06/06/2024

Nota:

Per il primo modulo del corso (Prof. Pacher, 4 CFU) le lezioni introduttive teorico/pratiche supportate da esercitazioni passo-passo al calcolatore si terranno in Aula Informatica B. Il primo incontro organizzativo è fissato per il giorno Venerdì 01/03 alle ore 14 in Aula Informatica B. L'orario effettivo di queste lezioni, concordato con il docente per massimizzare la partecipazione, è disponibile nella seguente tabella.

Le attività di laboratorio si svolgeranno invece nel laboratorio 2S/13-A.




Giorno Orario Aula Note
01/03/2024 14.00 - 17.00 Informatica B Incontro organizzativo
05/03/2024 14.00 - 17.00 Informatica B Ripasso Linux
12/03/2024 14.00 - 17.00 Informatica B Introduzione Verilog
19/03/2024 14.00 - 16.00 Informatica B Flusso di simulazione in Xilinx Vivado
26/03/2024 14.00 - 16.00 Informatica B Flusso di simulazione (cont'd)
05/04/2024 14.00 - 16.00 Informatica G Logica combinatoria
18/04/2024 09.00 - 11.00 Informatica B Derivazione delle equazioni logiche dalle tabelle, mappe di Karnaugh


Le sessioni di laboratorio del secondo modulo (Prof. Greco, 2 CFU) verranno comunicate agli studenti dal docente.

Registrazione
  • Aperta
    Oggetto:
    Ultimo aggiornamento: 24/04/2024 18:31
    Location: https://www.fisicamagistrale.unito.it/robots.html
    Non cliccare qui!