User Tools

Site Tools


ETH Course 402-0248-00L: Electronics for Physicists II (Digital) - EFP2

Also known as EFP2

As of Spring 2019, teaching of this course will be taken over by Dr. Yves Acremann

<html> <table style=“width:194px;”><tr><td align=“center” style=“height:194px;background:url( no-repeat left”><a href=“”><img src=“” width=“320” height=“320” style=“margin:1px 0 0 4px;”></a></td></tr><tr><td style=“text-align:center;font-family:arial,sans-serif;font-size:11px”><a href=“” style=“color:#4D4D4D;font-weight:bold;text-decoration:none;”>Electronics for Physicists II (Digital)</a></td></tr></table> </html>


This course teaches the basics of digital electronics, to provide hands-on experience with using COTS (Commodity Off The Shelf) components to build systems. The course complements the preceding analog course by teaching logic design and digital systems that convert and process analog information. It covers the use of microcontrollers (AVR architecture) and reconfigurable logic (Xilinx FPGA) from basics to physical implementation, including PCB design and surface-mount assembly. The aim of the course is to remove the fear of starting a project and offer the students a first experience at many levels of design.


The course consists of short lectures on theory and exercises using two different hardware platforms - a microcontroller board with Universal Serial Bus (USB) interface, and a Field Programmable Gate Array (FPGA) board. In addition the course includes exercises in printed circuit board (PCB) design and PCB surface mount assembly.

New: In 2014 we will be using an Arduino uC platform for the first time.

Prerequisites and Requirements

Students should have taken Analog Electronics for Physicists or equivalent and should have had some programming experience, preferably with C. Students (or at least each group of 2 students) need a laptop computer, preferably Windows (7×64 preferred) or Linux (Linux users must largely support themselves…).



See also Calendar below.

PCB design and assembly, embedded microcontroller programming

Meeting Week (of year) Topic Lecture Exercise See
1 8 Introduction and organization. Microcontroller architectures and programming. Architecture (registers and hardware). Reading a datasheet. Demonstration of programming and using Arduino Nano board. 1-EPF2 Intro Setup development tools; run demo program. Arrange time for soldering your own microcontroller PCB. Arduino quiz
uc-arduino Soldering doodle
2 9 Writing your own Arduino application. Pulse Width Modulation (PWM) outputs for producing analog output and controlling servo motor. Discussing quiz on ATmega datasheet and Arduino Sketch.
Introducing GPIO and PWM. Electret mics and audio amplifier.
2015 slides 3-uC
During week before lecture: Surface mount assembly; soldering PCBs.
During class exercise: Build audio amp and servo power supply.
- 2-SolderingArduinoNano soldering instructions slides
Installing Sketches bootloader firmware to your Nano
3 10 Analog to Digital Converters (ADCs): Successive approximation register (SAR) ADC. Simple DSP. 2015 slides 4-micBoard Finish microphone preamp on protoboard, acquire and process signals, and control servo motor in response to volume of sound using DSP and PWM output. Lab 3
4 11 Writing your own Arduino application for DSP (Digital Signal Processing). USB interfacing. Using the ADC on the ATmega328P. Interrupt Service Routines (ISRs). Device side USB and host side USB. 2015 slides 4-micBoard Acquire and process sound signal, and control servo motor in response to volume of sound using PWM output. uc-arduino
5 12 PCB design: PCB schematics. Getting software, making a schematic and new library component, finding parts, PCB footprints. PCB design slides Start to design daughterboard for microcontroller board which adds analog components. Draw schematic of daughterboard. Lab 4
6 13 PCB design: PCB layout. Board components: Resistors (Carbon, thin and thick film metal, wire wound), capacitors (COG/X7R/Z5U, electrolytic, ceramic), amplifiers, optocouplers, SCRs and triacs, headers, package types. Board layout tips. Power supply decoupling and power routing with star power nets. PCB design slides PCB layout, technology, stackup slides Start to design daughterboard for microcontroller board which adds analog components. Draw schematic of daughterboard. Lab 4
start of logic design part of course fpga2 and gateway
7 14 Introduction to using reconfigurable logic (FPGAs, CPLDs, etc). Introduction to Hardware Description Languages (HDLs). Logic Design 1 Install FPGA toolsmeet, finish Gateway exercise 1. gateway
15 Easter break
16 Easter break
17 Easter break
8 18 Logic design continued. Introduction to verilog HDL and exercises. Review of Gateway exercises 1-5,7 Logic design 2 Gateway exercises 2,3,4,(5 if possible). gateway Gateway exercises 1-10 (zip archive)
10 19 Review of Gateway exercises 8-10 Logic design 3
FPGA insights from Luca Longinotti
Understand Gateway exercises 8-10. gateway
11 20 Sequential logic with state machines. Representation of states and state transitions, state transition actions. Demonstration of silicon retina. and FSM design for handshaking with an event-based silicon retina. Gateway 11-12. Logic design 4
Notes on FSM design for AER monitor
Understand Gateway 11-12 gateway Gateway 11-12 zip archive
Joystick PMOD controller IP for snake game
12 21 Review IP blocks in Gateway 1-12. fsbdesignhandshakingblackboard.jpg Work on snake game. gateway
14 22 Semester summary. Project demonstrations: Show your complete snake game or other video FPGA demo using developed modules. Go to cafe for drinks to celebrate summer break!


This class is taught by Tobi Delbruck based on material developed by Khaled Benkrid and Tom Clayton at the University of Edinburgh for the logic design using FPGAs part. In 2014, the course was also taught by Alejandro Linares-Barranco, D-ITET guest professor, Univ. of Sevilla. In 2015 and 2016, the teaching assistant is Ilya Kiselev.


Students, please provide feedback about how to improve the course.


See also ETH Academic Calendar. Refresh if you don't see the google calendar below.

<html> <iframe src=“;wkst=1&amp;bgcolor=%23FFFFFF&amp;;color=%23182C57&amp;ctz=Europe%2FBerlin” style=“ border-width:0 ” width=“800” height=“600” frameborder=“0” scrolling=“no”></iframe> </html>

dig/start.txt · Last modified: 2024/02/29 07:28 by