Field-programmable gate array
A field-programmable gate array or FPGA is a gate array that can be reprogrammed after it is manufactured, rather than having its programming fixed during the manufacturing — a programmable logic device.
FPGAs are generally slower than their Application-specific integrated circuit (ASIC) counterparts, and draw more power. However, they have several advantages such as a shorter time-to-market, and lower development costs (for quantities < 10k). An ASIC can be made that is a so-called hard copy of an FPGA - that is, an integrated circuit with the same functionality as the FPGA, but faster and consuming less power.
Many modern FPGAs have the ability to be reprogrammed at 'run time', and this is leading to the idea of reconfigurable computing or reconfigurable systems - CPUs that reconfigure themselves to suit the task at hand. Software-configurable microprocessors such as Stretch's] S5000 adopt a hybrid approach by providing a processor core and an FPGA core on the same chip.
Applications
Applications of FPGAs include DSP, Software-defined radio, Aerospace and defense systems, ASIC Prototyping, Medical imaging, Computer vision, Speech recognition, Cryptography, Bioinformatics, and a growing range of other areas.
Architecture
A basic FPGA is made up of two types of blocks: Look-up tables (LUTs), and routing. More complicated FPGAs may also include blocks of dedicated RAM and some common logical blocks such as multipliers or adders.
A look-up table acts as a gate that can be programmed with any logic function. The LUT is usually implemented as a storage block with a one-bit word. To program the LUT, the truth table of the gate being implemented by the LUT is loaded into the storage block. The input to the truth table corresponds to the address lines of the storage element, and the output of the truth table is the stored value at that address. The storage element may be directly connected to the output, or a flip-flop may be inserted between the gate and the output for clocked logic.
The inputs and outputs to the various LUTs are connected to each other by one or more routing block. Each routing block has several wires connected to it, and these wires have programmable connections between them. Since the total number of possible connections increases so quickly with the number of wires connected to the routing block, most routing blocks are designed so that only certain paths through the block are possible.
The LUTs and routing blocks are usually distributed evenly throughout the FPGA, giving it a regular array structure.
FPGA Design and programming
To define the behaviour of the FPGA it is required to use a Hardware Description Language (HDL) or a schematic designed using an Electronic design automation tool. Either of these, when compiled, will generate a netlist, that can be mapped to the actual fpga architecture. When done the binary file generated is used to (re)configure the FPGA device. Common HDL's are VHDL and Verilog.
To simplify the design there exist libraries of predefined complex functions and circuits, which have been tested and optimized to speed up the design process.
Basic process technology types
- SRAM - based on static memory technology. In-system programmable and re-programmable. Requires external boot devices. Usually CMOS.
- Anti-fuse - One-time programmable. CMOS.
- EPROM - Electrically Programmable Read-Only Memory technology. Usually one-time programmable in production because of plastic packaging. Windowed devices can be erased with ultraviolet (UV) light. CMOS.
- EEPROM - Electrically Eraseable Programmable Read-Only Memory technology. Can be erased, even in plastic packages. Some, but not all, EEPROM devices can be in-system programmed. CMOS.
- FLASH - Flash-erase EPROM technology. Can be erased, even in plastic packages. Some, but not all, FLASH devices can be in-system programmed. Usually, a FLASH cell is smaller than an equivalent EEPROM cell and is therefore less expensive to manufacture. CMOS.
- Fuse - One-time programmable. Bipolar.
FPGA manufacturers
Device manufacturers include Xilinx, Altera, Lattice Semiconductor, Actel, Cypress, Atmel, QuickLogic and ST Microelectronics.
See also
External links
- comp.arch.fpga Google archive of Usenet groups, where people interested in FPGA hang.
- GOSPL an open source tool for developing FPGA
- Opencores A set of free IP cores that can be implemented in FPGAs
- A comprehensive list of FPGA CPUs
- A good FPGA tools overview
- FPGAworld news, jobs, forums, demos etc.
- FPGA Basics by Ray Andraka
- Fpga4Fun various fpga projects
- FPGA Boards
- AP100 PCI Platform FPGA Development Board
- FPGA manufacturors
- Xilinx Xilinx has traditionally been the FPGA leader, Xilinx general philosophy is to provide all the features possible, at the cost of extra complexity.
- Altera Altera is the second FPGA heavyweight it's philosophy is to provide the features that most people want while keeping their devices easy to use.
- Lattice better known for its CPLDs, have also an "instant-on" FPGA family.
- Actel and QuickLogic have antifuse (programmable-only-once) products.
- Cypress
- Atmel
- Debian FPGA.
Note: FPGA's should not be confused with Flip-chip pin grid array, a form of integrated circuit packaging.