Digital System Integration and Programming

Course Number 705007 | Wintersemester 2020/21


The course is about the programming and design of integrated systems, with a strong focus on System-On-Chip (SoC) design. We will gather practical hands-on experience by programming our own FPGAs and designing secure multi-media systems.

We will investigate:

  • What are SoCs and where are they used today?
  • How can we design SW and HW for SoCs?
  • How do SoCs communicate with their environment?

Additionally to these core questions, we will cover security and safety aspects of such systems.


Slides Kickoff 7.10.
Topics for Seminar Presentations
Slides Tutorial 1 7.10.
Slides Tutorial 2 14.10.
Examples of Kernelmodules


Assignment 1
Assignment 2

Student Presentations

Seminar Topics
Presentation Template
(Important Note: optional! You don’t have to use it)



Architecture of FPGAs
Embedded FPGAs


SoC Design Process
NOC Designs


Soft Cores and ARM/RISC-V Processors
FPGA Bitstream Encryption Basics


FPGA Bitstream Encryption Vulnerabilities
Fault Attacks on FPGAs


EM Side-Channel Attacks on SoCs


Security Co-Processors
Edge AI: Binary Neural Networks in
Embedded Devices


Yosys and SymbiYosys
Reverse Engineering: FPGA vs ASIC


Design of Mixed-Signal SoCs
Booting Linux


FPGAs and Neural Networks / ZynqNet

Administrative Information

Previous Knowledge

This course addresses advanced-level students. If you want to participate, you should know about:

  • Software design (in C, C++)
  • the basics of Hardware design (in VHDL, Verilog)
  • Operating Systems (Linux)
  • Networks
  • Computer Organization

However, there are no formal prerequisites.

Prerequisites Curriculum

See position in the curriculum


The overall objective of the course is practical experience in the design of integrated systems.
After having attended this course, students have an understanding of current problems in designing complex integrated systems, including SoCs.
Participants have gained insight into these by studying typical microchip architectures and modeling these.

The course will deal with these topics in two projects and one seminar presentation:

  • In Project 1, each student individually gets to know all the necessary tools to make a working FPGA design, write a bare metal application and a Linux driver for a basic project.
  • In Project 2, a more complex system will be designed in groups of two. The system covers secure internal and external communication of the FPGA board.
  • In the Seminar Presentation, each student individually selects a topic of their choice from a pool of subjects and presents it during the lecture.




Teaching Method

The course material is defined through the course project`s problems. Each participant will specialize in a set of topics, and will present those topics to the whole group. With this knowledge, each group should be able to design, implement, and test the overall system.

How to get a grade

Grading consists of individual contributions throughout the course`s duration. In particular, these are one presentations, two exercises and active participation in discussions.



Stefan Mangard

Head of Institute

View more
Barbara Gigerl

PhD Student

View more
Stefan Steinegger

PhD Student

View more