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.
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.
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.