Qualifier Applications open for January 2027 term, Last date to Apply: January 29, 2027

Qualifier Applications open for January 2027 term, Last date to Apply: January 29, 2027

Degree Level

Embedded Linux and FPGAs

This course introduces students to the design and implementation of embedded systems using FPGA SoC hybrid platforms, focusing on Zynq-based systems. Students will learn to develop custom FPGA IP cores, integrate them with Linux running on the SoC, and optimize hardware-software co-design for embedded applications. Special emphasis is placed on FPGA-accelerated computing for enhanced system performance.

by Prof. Nitin Chandrachoodan

Course ID: EE4101

Course Credits: 4

Course Type: Degree

Pre-requisites: None

Course structure & AssessmentsVIEW COURSE VIDEOS

4 credit course, weekly online assignments, 2 in-person invigilated quizzes, 1 in-person invigilated end term exam. For details of standard course structure and assessments, visit Academics page.

Module 1 Introduction to FPGA-SoC Hybrid Systems: Overview of Zynq architecture, PS-PL communication interfaces, and introduction to development tools.
Module 2 Advanced FPGA Design Techniques: High-level synthesis (HLS) for IP core development, AXI interface and protocol, and implementation of custom IP cores.
Module 3 Linux on FPGA-SoC systems like Zynq: Linux boot process and customization, Device Tree concepts, writing Linux device drivers for custom IP.
Module 4 FPGA-Accelerated Computing: Principles of hardware acceleration, identifying acceleration opportunities, computation offloading to FPGA fabric, optimizing data transfer between PS and PL, DMA transfers, parallel processing techniques. Case studies in topics such as image processing, signal processing, and machine learning acceleration.
Module 5 Performance Analysis and Optimization: Profiling and benchmarking tools and techniques, bottleneck identification, optimization strategies for accelerators
Module 6 Real-time Systems and Hardware-Software Co-design: Real-time constraints in embedded systems, algorithm partitioning between PS and PL, co-simulation and debugging techniques for hybrid systems.
Module 7 Advanced Linux and System Integration: Developing custom Linux modules and drivers, Userspace I/O (UIO) drivers, and system-level optimization techniques for Zynq-based platforms.
+ Show all weeks

Prescribed Books

The following are the suggested books for the course:

“The Zynq Book: Embedded Processing with the ARM Cortex-A9 on the Xilinx Zynq-7000 All Programmable SoC” by Louise H. Crockett et al, Strathclyde Academic Publishers (Free PDF download from official site available).

“FPGA-based Implementation of Signal Processing Systems” by Roger Woods et al., Wiley, 2017

“Parallel Programming for FPGAs”, Kastner et al., 2018. E-Book published on http://arXiv/1805.03648 • “Embedded SoPC Design with Nios II Processor and Verilog Examples” by Pong P. Chu, 2012 • “Linux Device Drivers” by Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman, E-book: https://lwn.net/Kernel/LDD3/

About the Instructors

Prof. Nitin Chandrachoodan
Professor, Department of Electrical Engineering, IIT Madras

Nitin Chandrachoodan received his BTech (electronics and communication engineering) from IIT Madras in 1996, and PhD from the University of Maryland at College Park in 2002, in the area of high-level synthesis techniques for mapping DSP algorithms to architectures. He has been with the department of electrical engineering at IIT Madras since 2004, where he is currently an professor.

...  more

His research interests include digital systems design and design automation tools and techniques, as well as design of embedded systems with a special focus on assistive technologies. He has taught graduate courses on digital integrated circuit design and on mapping algorithms to architectures, and a UG course on data structures and algorithms, as well as a laboratory course on digital design using FPGAs. He is an associate editor of the Springer Journal of Signal Processing Systems.

  less

Other courses by the same instructor: CS2101 - Embedded C Programming , EE2103 - Digital System Design and EE3102 - Control Engineering