Introduction to FPGA
A field-programmable gate array is a semiconductor device containing programmable
logic components called "logic blocks", and programmable interconnects. Logic blocks
can be programmed to perform the function of basic logic gates such as AND, and XOR,
or more complex combinational functions such as decoders or mathematical functions. In
most FPGAs, the logic blocks also include memory elements, which may be simple flip-
flops or more complete blocks of memory.
A hierarchy of programmable interconnects allows logic blocks to be interconnected as
needed by the system designer, somewhat like a one-chip programmable breadboard.
Logic blocks and interconnects can be programmed by the customer or designer, after the
FPGA is manufactured, to implement any logical function—hence the name "field-
programmable".
FPGAs are usually slower than their application-specific integrated circuit (ASIC)
counterparts, cannot handle as complex a design, and draw more power (for any given
semiconductor process). But their advantages include a shorter time to market, ability to
re-program in the field to fix bugs, and lower non-recurring engineering costs. Vendors
can sell cheaper, less flexible versions of their FPGAs which cannot be modified after the
design is committed. The designs are developed on regular FPGAs and then migrated into
a fixed version that more resembles an ASIC.