The ubiquitous field-programmable gate array (FPGA) is finding use as a software accelerator in many applications, including the communications, image processing, biomedical, and scientific computing fields. FPGAs are essentially used to implement software algorithms directly in hardware, producing orders-of-magnitude speed improvements over general-purpose processors. This book introduces C-based parallel programming techniques for creating these applications, verifying them, and moving them into FPGA hardware.
Both software and hardware engineers can benefit from this programming book. The authors’ intent is to help bridge the gap—or as they call it “the great chasm”—that exists between software and FPGA hardware development methods. Software engineers will hopefully learn to view FPGAs as software-programmable computing resources. On the other hand, hardware engineers will likely discover the many benefits of a C-based hardware design flow, including the potential for effective hardware-software co-design. The programming examples are written with Impulse C, which is compatible with standard ANSI C and standard C development tools.
The book begins with background information about FPGAs and the associated tools. The authors then present a method of C programming and models that are appropriate for use with highly parallel FPGA hardware platfoms. A series of examples, written in C, shows readers how to exploit the parallelism available in an FPGA-based platform. Later chapters have examples of how a streaming programming model can further boost performance. Several appendices provide an Impulse C function reference, triple-DES source listings, and image filter listings.
An associated web site lets readers download fully operational, time-limited versions of a C-based FPGA design compiler. The web site also offers programming tips and extra examples. In addition, readers can chat with each other or the authors through the site’s discussion forums.
If you're interested in FPGAs, you might also like these books: