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.
ASICs or
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.
ASSPs 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.
PLD 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.
SoCs 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."
FPGAs 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.
SoC-FPGAs (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.
Reusability:
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.