What is an FPGA? • An FPGA is an IC that contains an array of identical logic cells with programmable interconnections. • The user can program the functions realized by each logic cell and the connections between the cells. • Figure shows the layout of part of a typical FPGA. • The interior of the FPGA consists of an array of logic cells, also called configurable logic blocks (CLBs) • .The array of CLBs is surrounded by a ring of input-output interface blocks. • These I/O blocks connect the CLB signals to IC pins. • The space between the CLBs is used to route connections between the CLB outputs and inputs. • The size, structure and number of blocks; and the amount and connectivity of the interconnect vary considerably among FPGA architectures. • This difference in architectures is driven by different programming technologies and different target applications. • An architectural organization that works well with a particular programming technology typically does not work with another. • Figure shows a simplified version of a CLB. • This CLB contains two function generators, two flip- flops, and various multiplexers for routing signals within the CLB. • Each function generator has four inputs and can implement any function of up to four variables. • The function generators are implemented as lookup tables (LUTs). • A four input LUT is essentially a reprogrammable ROM with 16 1-bit words. • This ROM stores the truth table for the function being generated. Organization of FPGAs FPGA Programming Technologies
• For commercial FPGAs, the main switch
technologies are 1. Static RAM cells (e.g. Xilinx) 2. Anti-fuses (e.g. Actel) SRAM programming Technology • Use SRAM cells to control pass transistors or multiplexers by the bit-content in the SRAM cells. • Advantage: reprogrammable • Disadvantage: occupy more space Anti-fuse programming Technology • An anti-fuse is the opposite of a regular fuse. • It is an open path until a programming current is forced through it by applying a high programming voltage across it. Advantage: small (allow denser switch population). Disadvantage: only one-time programmable Programmable Interconnect • There are long lines that can be used to connect critical CLBs that are physically far from each other on the chip without inducing much delay. • Theses long lines can also be used as buses within the chip. • There are also short lines that are used to connect individual CLBs that are located physically close to each other. • Transistors are used to turn on or off connections between different lines. • There are also several programmable switch matrices in the FPGA to connect these long and short lines together in specific, flexible combinations. • Three-state buffers are used to connect many CLBs to a long line, creating a bus. • Special long lines, called global clock lines , are specially designed for low impedance and thus fast propagation times. • These are connected to the clock buffers and to each clocked element in each CLB. • This is how the clocks are distributed throughout the FPGA, ensuring minimal skew between clock signals arriving at different flip- flops within the chip. Configurable I/O Blocks: • A Configurable input/output (I/O) Block is used to bring signals onto the chip and send them back off again. • It consists of an input buffer and an output buffer with three-state and open collector output controls. • Typically there are pull up resistors on the outputs and sometimes pull down resistors that can be used to terminate signals and buses without requiring discrete resistors external to the chip • The polarity of the output can usually be programmed for active high or active low output, and often the slew rate of the output can be programmed for fast or slow rise and fall times. • There are typically flip-flops on outputs so that clocked signals can be output directly to the pins without encountering significant delay, more easily meeting the setup time requirement for external devices. • Similarly, flip-flops on the inputs reduce delay on a signal before reaching a flip-flop, thus reducing the hold time requirement of the FPGA. Dedicated Specialized Components of FPGAs • The logic resources of FPGAs discussed so far are in principle sufficient to implement a wide range of circuits. • However, to address high-performance and usability needs of some applications, FPGA vendors additionally intersperse FPGAs with special silicon components. 1. Dedicated RAM blocks (BRAM) 2. multipliers 3. adders (DSP units) 4. full-fledged CPU cores. Applications of FPGAs