
Explore how embedded systems evolve from on-premises computing to cloud and edge architectures, describing endpoints, edge devices, and IoT, and highlighting FPGA-based accelerators for edge applications.
Investigate the role of high level synthesis in end devices, edge platforms, and cloud computing, and how HLS enables pipelines and interfaces on FPGA based embedded systems.
1- Assume a design that uses HP0 and HP1 in a Zynq UltraScale MPSoC to read data arrays simultaneously at the frequency of 200MHz. What would be the maximum memory bandwidth utilisation?
2- What is the upper bound of the memory utilisation for reading data from a DDR memory in Zynq 7000 at the frequency of 150MHz?
Identify the hardware and software components, including the host computer and FPGA boards, and the design flow to create an accelerator with Xilinx tools and a final binary.
Set up a Linux workstation with Xilinx Vitus unified software platform, learn about software and hardware emulation, and generate FPGA bitstreams to test on zinc based FPGA boards or emulation.
Obtain and configure the Zcu 102 Vitis platform, build a hardware‑software platform, and prepare an SD card to boot the Zynq MP Linux system and run a Linux emulator.
Write a host program in C++ for an OpenCL 1.2 FPGA accelerator, covering environment setup, device discovery, context creation, kernel argument configuration, and memory buffer management.
Define the host code for the scaling kernel, set buffers and arguments, and prepare input data. Migrate buffers, run the kernel, synchronize, and validate results against the golden model.
Develop an efficient image thresholding example using Vitis, optimizing kernel computation and data transactions, analyzing burst data protocols, and integrating an external software library with data files.
Explore binary thresholding as a simple image segmentation method, converting grayscale to binary with a 128 threshold on an fpga using Vitis.
Demonstrates running an image thresholding example on the FPGA using Vitus, OpenCV, and hardware builds; transfer SD card files, connect via network, and debug with Vitus ID.
Develop and debug a linear relationship kernel for fpga acceleration by writing kernel and host code, compiling, and running in the software emulator.
Assign two memory ports to the kernel using pragmas to read A and B from DDR memory with separate bundles, boosting performance from 117.74 ms to 10.687 ms on hardware.
Explore memory dependencies in FPGA design with Vitis, showing how Eprom with two access ports can constrain parallel reads and how memory partitioning increases ports to reduce the initiation interval.
This course is an introduction to function acceleration in high-level synthesis (HLS). The goals of the course are describing, debugging and implementing compute-intensive algorithms on FPGA-based embedded systems using C/C++ language without any help from HDLs (e.g., VHDL or Verilog).
The course introduces the Xilinx Zynq embedded systems and then explains how to use Xilinx toolsets to map applications on them.
It uses the Xilinx Vitis unified software platform to describe real examples and applications for embedded systems. The course follows the software and hardware emulation schemes as well as running the applications on the actual FPGAs.
Each section of the course uses several examples, quizzes and exercises to explain complex designing concepts easily and smoothly.
Along the course, you will work with several examples describing the HLS concepts and techniques. The course contains numerous quizzes and exercises for you to practice and master the proposed methods and approaches. In addition, the course utilises two exciting projects to put all the explained concepts together to design real circuits and hardware controllers.
This course is the first of a series of courses on function acceleration on Zynq-based embedded systems. Whereas this course focuses on fundamental concepts, the other courses will explain different optimisation techniques in Vitis.