Welcome to FPGA for Software Programmers: From C/C++ to Hardware Acceleration, a practical and beginner-friendly course designed to bridge the gap between software programming and FPGA hardware design. FPGAs, or Field Programmable Gate Arrays, are increasingly used in artificial intelligence, machine learning, signal processing, networking, scientific computing, finance, embedded systems, and cloud acceleration. Unlike conventional CPUs that execute instructions sequentially, FPGAs can implement computations spatially, allowing many operations to execute simultaneously.
The challenge is that traditional FPGA development often requires knowledge of hardware description languages such as Verilog and VHDL. This course introduces a different approach using High-Level Synthesis (HLS), allowing software programmers to understand how familiar C/C++ algorithms can be transformed into customized FPGA hardware.
Throughout the course, you will explore FPGA architecture, LUTs, flip-flops, DSP blocks, memory resources, programmable routing, spatial computing, and hardware acceleration. You will then learn how HLS analyzes software using Control Flow Graphs and Data Flow Graphs to identify parallelism and convert sequential algorithms into spatial hardware architectures.






