FIELD-PROGRAMMABLE GATE ARRAYS
Before programmable logic was developed, circuits requiring a fixed logical process were constructed on dedicated boards using basic building-block chips and associated interface devices. Sufficiently mature boards that required cost or size reduction due to high expected volumes were subsequently embedded in application-specific integrated circuits (ASICs). Unfortunately, ASICs are relatively easy to attack. They are not based on identical building blocks with switches that are turned on to create pathways but rather are made of easily recognized components. It is possible to strip off the top of an ASIC chip and copy its layout easily.
In contrast, a field-programmable gate array (FPGA) is a form of integrated circuit that consists of a large number of identical building blocks, each of which can be configured to perform specific functions. These building blocks communicate with one another through interconnection matrices and programmable switches that can be configured to create or close communication paths between these building blocks. As designs for higher-level functions are perfected, these can be used in subsequent designs wherein the previous functions are complemented with additional functions to perform progressively more complex operations. Like software (or a child's building blocks), they can be reconfigured into new applications, creating a growing library of functions.
At its most primitive level, an FPGA consists ...