Field Programmable Gate Arrays (FPGAs are integrated circuit chips which are capable of implementing digital logic (combinational as well as sequential). The devices can be programmed and reprogrammed many times in circuit. FPGAs can replace large numbers of discrete devices. They can be used for reconfigurable computing, where the device configuration can be changed according to need, so that one chip can perform the function of many. FPGAs and microprocessors/microcontrollers account for the major part of modern digital systems.
For example, the Xilinx XC4003EPG84 chips we use have 238 logic cells, up to 3000 logic gates, and 360 flip flops.
The FPGA devices store programmed configuration data in a volatile RAM-like manner, Figure 63. The XC devices are programmed by loading them with a bit stream of configuration data from either a PROM or from a host computer via a download cable. In some sense the XC devices are like very long configurable shift registers. The XC devices have 3 major elements:
CLB (configurable logic blocks)
Digital designs are spread over an array of CLBs, Figure 64, which are configured to implement the required logical and state machine functionality. XC4000 series devices have 100 CLBs in a 10 x 10 matrix. Each CLB has the following configurable features:
IOB (input - output blocks)
These provide connection between the internal logic and external package pins. XC4000 devices have between 64 and 192 IOBs, Figure 65. Each IOB is configurable and consists of
Programmable Interconnects
XC devices have internal networks for interconnecting the CLBs and IOBs. The connections are programmed as part of the design implementation. See Figure 66.
Programming FPGAs
Here is a basic programming sequence. There are many variations and options in practice.
ANU Engineering - ENGN3213