FPGARelated.com
Books

Practical FPGA Programming In C (Prentice Hall Modern Semiconductor Design Series)

David Pellerin, Scott Thibault 2005

During the past few years of tech sector economic decline,which has touched the EDA/semiconductor industries, two companies have had consistent double digit growth. They are Xilinx and Altera. Their business is FPGA design. Advances in FPGA technologies have made FPGA design a low cost alternative to very expensive unreconfigurable ASIC design.


Why Read This Book

You will learn how to express hardware-friendly algorithms in C and map them efficiently onto FPGAs, gaining practical techniques for pipelining, fixed-point arithmetic, and memory interfacing. The book gives hands-on, tool-focused guidance that helps you move from algorithm to running FPGA implementation without diving straight into RTL.

Who Will Benefit

Embedded/software engineers and FPGA designers with a C background who want to accelerate algorithms on FPGA hardware or evaluate C-based high-level synthesis flows.

Level: Intermediate — Prerequisites: Comfortable C programming and basic digital logic/FPGA concepts (combinational/sequential logic, registers, clocks); familiarity with an FPGA toolflow is helpful but not required.

Get This Book

Key Takeaways

  • Express algorithms in C using patterns that map efficiently to FPGA hardware (parallelism, streaming, and pipelining).
  • Optimize designs for area and performance by applying pipelining, loop transformations, and resource-aware coding styles.
  • Apply fixed-point arithmetic and scaling to convert floating-point algorithms into hardware-efficient implementations.
  • Manage on-chip memory, external interfaces, and data movement for FPGA-accelerated systems.
  • Use C-based synthesis toolchains (historical HLS/Handel-C style flows) and integrate the generated hardware with vendor flows (Xilinx/Altera).
  • Verify and debug C-to-hardware designs through simulation and hardware testbenching techniques.

Topics Covered

  1. 1. Why use C for FPGA design? — Motivations and tradeoffs
  2. 2. FPGA architectures and design flow overview
  3. 3. C-to-hardware synthesis concepts and tools
  4. 4. Writing hardware-friendly C: concurrency, loops, and functions
  5. 5. Pipelining and parallelism techniques
  6. 6. Fixed-point arithmetic and numeric considerations
  7. 7. Memory architectures and I/O interfacing
  8. 8. Common DSP kernels: filters, transforms, and accelerators
  9. 9. Optimization strategies and resource/performance tradeoffs
  10. 10. Verification, simulation, and hardware testing
  11. 11. Toolchain integration with Xilinx and Altera flows
  12. 12. Case studies and worked examples
  13. Appendices: reference material and coding idioms

Languages, Platforms & Tools

CHandel-C / Impulse-C (discussed historically)SystemC (mentioned)Xilinx (ISE-era FPGAs)Altera (Quartus-era FPGAs)C-to-HDL/HLS toolchains (Handel-C / Impulse C and similar flows)Vendor synthesis/place-and-route tools (Xilinx ISE, Altera Quartus)ModelSim or gate-level simulators

How It Compares

Compared to FPGA RTL tutorials (e.g., 'FPGA Prototyping with Verilog/VHDL'), this book emphasizes C-based, high-level synthesis approaches rather than hand-written RTL; it's closer in spirit to later HLS-focused texts but is more practical/tool-oriented for its era.

Related Books