# FPGA Programming syllabus Implementing digital circuits with Systemverilog 4 SWS, 5 ECTS, in degree program {abbr}`AI (Angewandte Informatik, applied computer science)` Master and as {abbr}`FWP (fachwissenschaftliches Wahlpflichtfach, special (not general) compulsory optional subject)` in {abbr}`ET (Elektrotechnik, electrical engineering)` Master ## Intended learning outcomes The purpose of the course is for you (the student) to learn to: - explain the typical structure of FPGAs - differentiate a hardware description language from a typical programming language, e.g., regarding structure and purpose - use Systemverilog and a state-of-the-art FPGA development tool to develop circuits on an FPGA - differentiate between structural and behavioral design approaches - analyze behavioral description and write code that implement the behavior - classify which data processing tasks are better suited for FPGAs than general processors - cooperate in a pair programming setting - evaluate someone else's work and give constructive feedback (e.g., in context of peer-assessed exercises) ## Prerequisites - Fundamental programming tools (e.g, control flow, data structures, functions) - Digital logic (e.g., transistor, logic gate, K-map, SOP, POS, multiplexer, counter) The learning materials contain a graceful introduction to digital logic so you can still attend the course if you do not have any experience with digital logic. But expect more workload in this case. ## Content (what we do to reach the learning outcomes) - Getting started with the FPGA board - Implementation (including testing using testbenches) of: - combinational logic, e.g., multiplexer, decoder, shifter, encoder - sequential logic, e.g., flip-flop, latch, counter, memory - arithmetic circuits, e.g., adder, multiplier - state machines - a digital system: reaction time monitor ## Didactic methods To reach the learning outcomes we will use the following didactic methods: - [Flipped classroom](https://en.wikipedia.org/wiki/Flipped_classroom) - Labs with feedback sessions and [pair programming](https://en.wikipedia.org/wiki/Pair_programming) During the labs you are encouraged to work with a partner in a pair programming setting. Your partner and the instructor will give you feedback. - Mini projects on the FPGA Every week there will be problems that you must solve on an FPGA board. ## Grading Written exam 90 min. The examination is based on the intended learning outcomes. ## Materials - [Digital logic course by Realdigital](https://www.realdigital.org/course/digital-logic-for-the-boolean-board) - Lecture videos related to the content can be found in the section *Lectures* on [EE214 course page from Washington State University](https://eecs.wsu.edu/~ccole/ee214/) - Accompanying lecture notes: [Digital logic notes](https://aydos.de/digital-logic) - Realdigital Boolean FPGA board will be provided by the instructor that you may use during the class. It is not possible to borrow a board for home. If you want to work at home, please buy one. Additional: - [FPGA Design for Embedded Systems Specialization – Coursera](https://www.coursera.org/specializations/fpga-design)