The advancement in on-chip field programmable techniques combined with ever increasing packing densities has led to the introduction of field programmable gate arrays or FPGAs. These devices can be considered as being the same as mask programmable gate arrays except the functionality and interconnect is programmed in the laboratory at greatly reduced financial risk. The popularity of FPGAs is indicated by the large number of companies who currently manufacture such devices. These include Actel, Altera, AMD, Atmel, Crosspoint, Lattice, Plessey, Quicklogic, Texas Instruments, and Xilinx, to name but a few. Of these, the three that are perhaps the best known are Altera, Xilinx and Actel. In order to introduce FPGAS, some of the devices provided by these three companies will therefore be discussed. Essentially they differ in terms of: granularity; programming technique; volatility; and reprogrammability. All FPGAs consist of versatile cell that is repeated across the chip with its size and hence cell complexity referred to as the granularity. These cells are multifunctional such that they can produce many different logic gates from a single cell. The larger the cell the greater the complexity of gate each cell can produce. Those arrays that use a small simple cell, duplicated many times, are referred to as having fine granularity, whilst arrays with few, but large, complex cells are defined as coarse grain. These versatile cells have been given different names by the manufacturers, for example: modules; macrocells; and combinatorial logic blocks. The programming of the function of each cell and how each cell is interconnected is achieved via either: small fuses; on- board RAM elements that control multiplexers; or erasable programmable read only memory (EPROM) type transistors. Consequently some devices are volatile and lose their functionality when the power is removed whilst others retain their functionality even with no supply connected. Finally these devices can be divided into those that can be reprogrammed many times and those that are one-time programmable.
Let us now look more closely at the FPGA types, which will be divided into: EPROM type; SRAM/MUX type; and fuse type.
EPROM type FPGAs
The most common EPROM type FPGA device is that supplied by Altera. The range of devices available from Altera are the MAX 5000, 7000 and 9000 series (part numbers: EPM5XXX, EPM7XXX and EPM9XXX). These devices are the furthest from the true FPGAs and can be considered really as large PAL structures. They offer coarse granularity and are more an extension to Altera's own range of electrically programmable, ultraviolet-erasab logic devices (EPLD). The versatile cell of these devices is called a 'macrocell'. This cell is basically a PAL with a registered output. Between 16 and 256 macrocells are grouped together into an array inside another block called a logic array block (LAB) of which an FPGA can contain between 1 and 16. In addition to the macrocell array each LAB contains an I/O block and an expander which allows a larger number of product terms to be summed. Routing between the LABs is achieved via a programmable interconnect array (PIA) has a fixed delay (3 ns worst case) that reduces the routing dependence of a design's timing characteristics.
Since these devices are derived from EPLD technology the programming is achieved in similar manner to an EPROM via an Altera logic programmer card in a PC connected to a master programming unit. The MAX 7000 similar to the 5000 series except that the logic block has two more input variables. The MAX 9000 is similar to the 7000 device except that it has two levels of PIA. One is a PIA local to each LAB whilst the other PIA connects all LABs together. Both the 7000 and 9000 series are E2PROM devices and hence do not need an ultraviolet source to be erased.
It should be noted though that these devices are not true FPGAs and have a limited number of flip-flops available(one per macrocell). Hence the Altera Max 5000/7000/9000 series is more suited to combinatorially intensive circuits.For more register intensive designs Altera offer the Flex 8000 and 10K series of FPGAs which uses an SRAM memory cell based programming technique(as used by Xilinx - see next section); although currently rather expensive it will in time become an attractive economical option. The Flex 8000 series(part number: EPF8XXX) has gate counts from 2000 to 16000 gates. The 10K series (part number: EPF10XXX) however, has gate counts from 10 000 to 100 000 gates!
SRAM/MUX type FPGAs
The most common FPGA that uses the SRAM/MUX programming environment is that supplied by Xilinx. The range of devices provided by Xilinx consists of the XC2000, XC3000 and XC4000. The versatile cell of these devices is the 'con- figurable logic block' (CLB) with each FPGA consisting of an array of these surrounded by a periphery of/ blocks. Each CLB contains combinational logic, registers and multiplexers and so, like the Altera devices, has relatively coarse granularity. The Xilinx devices are programme via the contents of an on-board- static RAM array which gives these FPGAs the capability of being reprogrammed (even whilst in operation). However the volatility of SRAM memory cells requires the circuit configuration to be held in an EPROM alongside the Xilinx FPGA. A recent addition to the Xilinx family is the XC6000 range. This family has the same reprogrammability nature as the other devices except it is possible to partially reconfigure these devices. This opens up the potential for fast in-circuit reprogramming of small parts of the device for learning applications such as neural networks.
Fuse type FPGAs
The most common fuse type FPGA is that supplied by Actel. These devices are divided into the Actl, Act2 and Act3 families. The Actl FPGAs (part numbers: A10XX) contain two programmable cells: 'Actmod' and 'IOmod'. The versatile core cell is the 'Actmod' which is simply based around a 4-to-1 multiplexer for Actl. Since this cell is relatively small the array is classed as fine grain. By tying the inputs to either a logic '0' or logic '1' this versatile cell can perform 722 different digital functions. The programmable 'IOmod' cell is used to connect the logic created from the 'Actmods' to the outside world. This cell can be configured as various types of inputs and/or outputs(bi- directional, tristate, CMOS, TTL, etc.). Unlike the Xilinx and Altera devices the Actel range are programmed using fuse technology with desired connections simply blown (strictly called an antifuse). These devices are therefore 'one time programmable' (OTP) and cannot be reprogrammed. The arrays have an architecture similar to a channelled gate array with the repeating cell (Actmod) arranged in rows with routing between each row. The routing contains horizontal and vertical metal wires with antifuses at the intersection points.