ABSTRACT

This chapter discusses the use of field programmable gate arrays (FPGAs) for high performance embedded computing. An application-specific integrated circuit (ASIC) is an integrated circuit customized for a particular use, and frequently is part of an embedded system. ASICs are designed using computer-aided design (CAD) tools and then fabricated at a foundry. An application implemented on an FPGA is designed by writing a program in a hardware description language (HDL) and compiling it to produce a bit stream that can be downloaded to an FPGA. This design process resembles software development more than hardware development. The major difference is that the underlying structures being programmed implement hardware. Very high performance FPGA implementations often feature multiple identical pipelines, performing the same computation on multiple pieces of data. This type of implementation is a good way to increase the performance of an FPGA design but places even more emphasis on the available memory bandwidth.