What's the difference between ASIC and FPGAs


During the FIRST Robotics competition season one of the kids asked, ‘what’s the difference between ASICs and FPGAs’?  They were planning on developing a custom circuit to control a camera on their robot.  So the simple answer was, ASIC is a custom analog and/or digital solution on a chip and an FPGA is a programmable solution on a chip.  However, these kids were not going to just let me walk away with such a simple answer.  Their question expanded to be the difference(s) between ASICs, ASSPs, PLDs, CPLDs, SoCs, and FPGAs.  OK, here goes.

application-specific integrated circuit are custom designed solutions.  They can be either analog or digital (or both).  ASICs are typically designed and used for a specific purpose or system. They are expensive, time-consuming, and are resource-intensive to develop.  However, they do offer extremely high performance coupled with low power consumption.

or application-specific standard parts are essentially the same thing. The difference being ASSPs are more general-purpose devices, or commodity types of chips.  For example, FTDI's UM245R USB FIFO Interface chip would be classed as an ASSP.

or CPLDs (programmable logic array) are simple field programmable chips that have an AND gate plane followed by an OR plane.  It is based on the fact that any logical function can be written in SOP (Sum of Products) form thus any function can be implemented by AND gates generating products which feed to an OR gate that sums them up.

or System-on-Chip are ASICs or ASSPs which contain one or more processor cores -- microprocessors (MPUs) and/or microcontrollers (MCUs) and/or digital signal processors (DSPs) -- along with on-chip memory, hardware accelerator functions, peripheral functions, and (potentially) all sorts of other "stuff."

or field-programmable gate arrays is an IC designed to be configured by the customer or designer after it manufacture.  Meaning you can program it to do pretty much anything you want.  Whereas ASICs, ASSPs, and SoCs offer high-performance and low power consumption, any algorithms they contain (aside from those that are executed in software on internal processor cores) are “frozen in silicon.”  The architecture of the FPGA allows for programmable blocks linked by programmable interconnects to be configured anyway you like.  Also, we can implement algorithms in a massively parallel fashion, which means we can perform a humongous amount of data processing very quickly and efficiently.  There are trade-offs, FPGAs tend to be slower and consumer a lot of current.

(System-on-Chip field programmable gate arrays) - As mentioned above, SoCs are basically an ASIC chip with one or more processor cores.  So how could we call it a FPGA?  The answer, we can't.  Hence the hybrid name SoC-FPGA.  Over time, the capabilities (capacity and performance) of FPGAs increased dramatically. For example, a modern FPGA might contain thousands of adders, multipliers, and digital signal processing (DSP) functions; megabits of on-chip memory, large numbers of high-speed serial interconnect (SERDES) transceiver blocks, and a host of other functions.  In addition, today's FPGAs can contain one or more soft (HAL - Hardware Abstraction Layer) and/or hard core processors.  You'll see attempts to name this technology from different manufacturers like Cypress' PSoC (programmable System-on-Chip), or Xilinx All Programmable SoCs, and even Altera with MCU.  In all cases this is just a hybrid of hard and soft processors mixed together with FPGA and ASIC technologies.  

FPGA Design Advantages
Faster Time-to-Market:
No layout, masks or other manufacturing are needed for FPGA design.  Just burn your HDL code and done!
No NRE (non-recurring expenses): This cost is typically associated with an ASIC design. For FPGAs there is none.
Simpler design cycle: Software handles much of the routing, placement, and timing. Little manual intervention is needed.
More Predictable Project Cycle: FPGA design flow eliminates chip revs, design logic is already synthesized & verified in FPGA device.
Field Re-programmability:
Programs can be uploaded instantly, while ASICs can cost thousands and take months to process.
FPGAs can be reprogrammed over and over again.

FPGA Design Disadvantages
Power Consumption:
FPGAs are power hungry.  You don't have any control over the power optimization. This is where ASIC is King.
Design Size: You are limited to the resources (size) of the FPGA.
More Expensive: As quantity increases cost per product increases compared to the ASIC implementation.

ASIC Design Advantages
Lower Unit Costs:
Cheaper for high volumes.
Speed: ASICs are faster than FPGA and gives greater design flexibility. This gives enormous opportunity for speed optimizations.
Low Power:
ASIC can be optimized for lower power use. There are several low power techniques such as power gating, clock gating, multi vt cell libraries, pipelining etc are available to achieve the power target. This is where FPGA fails badly.

ASIC Design Disadvantages
Expensive Tools: ASIC designs, tools, and processing is very expensive.
Design Issues:
Errors are etched in Silicon for good.  There is no reprogramming it.
Time-to-Market: ASICs can take a year or more to design. A good strategy would be prototyping with FPGAs and final design with ASIC.