Embedded Computing Systems on FPGAs
Field-programmable gate arrays (FPGAs) provide designers with a programmable hardware substrate consisting of configurable logic blocks (CLBs) and a configurable routing fabric. This design flexibility comes at the cost of increased power, area, and latency for a given implemented on an FPGA as opposed to an application-specific integrated circuit (ASIC). However, given the rising cost of fabricating an ASIC, FPGAs are used for an increasing number of low- and medium-volume applications. Furthermore, the increasing design resources available on each new generation of FPGA devices due to Moore’s law allows designers to implement circuits of increasing complexity on a single FPGA. Since the late 1990s, FPGAs have been used to implement not only glue logic or hardware accelerators (e.g., fast Fourier transforms [FFT]), but complete systems-on-chip (SoCs) [1, 2]. The ability to combine one or more processors plus the required custom hardware accelerators for an embedded computing system on a single die, without having to pay the huge fabrication costs of custom integrated circuits (ICs), makes FPGAs an extremely attractive option for embedded computing systems.
This chapter starts by introducing the fundamental concepts common to commercial FPGA architectures and the different configuration technologies used by different vendors. It is followed by a discussion of the software support tools and operating system (OS) choices available ...