A field-programmable gate array (FPGA) is an integrated circuit designed to be configured by a customer or a designer after manufacturing – hence the term field-programmable. The FPGA configuration is generally specified using a hardware description language (HDL), similar to that used for an application-specific integrated circuit (ASIC). Circuit diagrams were previously used to specify the configuration, but this is increasingly rare due to the advent of electronic design automation tools.

Why FPGAs?

  • Reprogrammable ==> Allows the addition of new features, bugfixes, support of new drivers and generally extends the live of a product in the field.
  • Multiple configurations ==> Instead of having one large asic one can just load a new bitfile on the fpga to have the additional functionality. Furthermore, one does not have to invest into a mask which is required on the asic.

Basic Elements

  • Matrix of CLB (Configurable Logic Blocks) connected to each other with programmable interconnects.
    • Each CLB consist itself of the following elements
      • LUT (Lookup Table) [7-Series ==> four six input lookup tables]
      • Sequential Elements (flip-flops or latches)
      • Multiplexers
        • Used to cascade the luts
      • Carry Logic
        • perfroming arithmatic functions
      • RAM
      • SRL (Shift register logic)
  • IOB (Input output blocks) to communicate with the outside world
  • Dedicated blocks
    • BRAM
    • DSP
    • PLL
    • Serial TX

Stacked Silicon Interconnect Technology

Since FPGA are huge it is easier to manufacture them in different parts (smaller dies). If one die has a malfunction it is not that expensive (one can sort this die out). Furthermore this technology allows:

  • Ultra-High interconnect bandwidth
  • Lower power Consumpiton
  • One fifth latency of standard I/O
  • Giving 100x improvements

Leave a Reply