Introduction to FPGA programming

Image taken from: https://https://digilent.com
The course is mainly thought for the new personnel hired by means of the ICSC project to work on projects and research activities in the framework of Spoke 2 ("Fundamental Research And Space Economy") and Spoke3 (Astrophysics & Cosmos Observations), but open to anyone interested within the fundamental physics community.
Lecturers:
- Andrea Triossi (University of Padova)
- Mirko Mariotti (University of Perugia)
- Sioni Summers (CERN)
Facilitators for the hands-on sessions:
- Giulio Bianchini (University of Perugia)
- Francesco Brivio (INFN Milano Bicocca)
Prerequisites:
- Basic notion of digital electronics (combinatorial and sequential circuits)
- basic C++ programming with usage of templates
- basic python programming
- entry level knowledge of machine learning (not really needed, but it may help for the last part of the course)
Target skills and knowledge: The aim of the course is to provide a hands-on programming laboratory of Field-Programmable Gate Arrays (FPGA) through the VHDL hardware description language
Course unit contents:
- Introduction to FPGAs
- FPGA Architecture
- FPGA programming flow
- VHDL language by examples
- Introduction to the Vivado programming framework and the Arty A7 board
- Combinational circuits on FPGA
- Sequential circuits on FPGA
- Arithmetic operations on FPGA
- Case study: UART interface
Suggested readings:
- Manual for syntax
- The VHDL Golden Reference Guide (DOULOS)
- VHDL handbook (HARDI)
- Books
- Zwolinski,M., Digital System Design with VHDL. Harlow: PRentice Hall Pearson Education
- Tappero F., Mealy B., Free Range VHDL
All the participants are requested to have a copy of Vivado installed on a local machine
The Course will be held at Università degli Studi di Milano Bicocca
