Digital System Integration and Programming (WS 2021/22)
Table of Content
Content
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.
Material
- Introduction
- Seminar Topics
- Tutorial 1
- Tutorial 2
- Tutorial 3
- Presentation Template (Important Note: optional! You don’t have to use it)
Assignments
Pitfalls and FAQ
- What is the proper way to modify/update an IP block, e.g., add more functionality to it? Open the block design in Vivado, then right click your IP core and select “Edit in IP packager”
- Make sure to use the correct USB cable. There are cables which are not intended for data transmission, only for charging the device.
- Carefully read the log output of your device while booting Linux when you think there is an error.
- “Unable to read file system-top.dtb”: adapt your defconfig file accordingly. If your device tree blob is called “katze123.”, then the defconfig file must also be changed to use “katze123.***” as the name of the device tree, and hence, uenv.txt must contain “devicetree_image=katze123.dtb”. The same holds for all other files.
- To find possible problems with your design, have a look at the logs in Vivado (especially the Critical Warnings).
- Helpful for your device driver: platform_get_resource, ioremap
- When using gparted for formatting the SD card, make sure the partitioning system of the first partition is set to msdos instead of gpt.
- Buildroot does not rebuild your driver even though the source changed? Run make packagename-dirclean before make.
- Buildroot (cmake) says “The CXX compiler identification is unknown” and you cannot build your C++ module: double-check your GCC version! You can do this in the menuconfig (Toolchain / GCC compiler version)
- Working with the AXI VIP: “import axi_vip_pkg::*;” and “import design_1_axi_vip_0_0_pkg::*;” have red squiggles underneath them, hover says “‘axi_vip_pkg’ is not declared”, simulation fails with error (“[VRFC 10-2991] ‘IF’ is not declared under prefix ‘inst’ for the line where the master agent is created.”) – try to clean all build artefacts (ie reset all synthesis/design runs, or try to create a new project. If this doesn’t help, reinstall Vivado)
Administrative Information
Seminar Presentations
27.10. | SoC Basics | Architecture of FPGAs | Slides |
27.10. | SoC Basics | ARM AXI Interface | Slides |
3.11. | SoC Basics | Alternative SoC Bus Interconnections | Slides |
3.11. | SoC Security | FPGA Bitstream Encryption Basics | Slides |
10.11. | SoC Security | FPGA Bitstream Encryption Vulnerabilities | Slides |
SoC Security | Hardware Trojan Attacks in FPGAs | ||
17.11. | SoC Security | TEEs and Enclaves | Slides |
24.11. | SoC Environment | Booting Linux | Slides |
1.12. | SoC Environment | Design of Mixed-Signal SoCs | Slides |
1.12. | SoC Environment | Soft Cores and ARM/RISC-V Processors | Slides |
15.12. | SoC Environment | FPGAs and Neural Networks / ZynqNet | Slides |
15.12. | SoC Environment | FPGAs in Space | Slides |
Lecturers

Gigerl
PhD Candidate