A field programmable gate array (FPGA) is a semiconductor device than can take on the personality of a customer’s design by programming it. Unlike a processor that executes a program, and FPGA configures itself to become an operating circuit that will then respond to inputs in the same way that a dedicated piece of hardware would behave.
Hardware Description Languages (HDL), such as Verilog and VHDL are used to program the devices.
A typical FPGA will contain a number of reprogrammable elements (often implemented as a lookup table), reprogrammable interconnect, memory blocks and programmable I/O. Later devices also contain processor cores and other hardened blocks that can be used without having to program them into the programmable fabric.