A Field Programmable Gate Array or FPGA is an integrated circuit that could contain millions of logic gates that can be electrically configured to perform a certain task. But how does an FPGA compare to a microcontroller, microprocessor or an application specific IC?.
Microcontroller vs FPGA: The structure of a microcontroller is comparable to a simple computer placed in a single chip with all of the necessary components like memory and timers embedded inside. It is programmed to do some simple tasks for other hardware. The very basic nature of FPGAs allows it to be more flexible than most microcontrollers. The term field programmable already tells you that the whole FPGA device can be reprogrammed to do any logic task that can be fitted into the number of gates that it has. The flexibility of FPGAs comes at a price because they consume more power than typical microcontrollers, making them unsuitable for applications where power drain is an issue. Making an FPGA function in a certain role would also take a lot longer compared to microcontrollers because you would have to write all the code from scratch and convert it to machine language. With microcontrollers, you can buy packages that are geared towards a certain task and just program them to your exact specification relatively quikly.
Microprocessor vs FPGA: A microprocessor is a simplified CPU or Central Processing Unit. It executes a program that contains a specific set of instructions. The main difference between FPGAs and microprocessors is the complexity. Although both vary in complexity depending on the scale, microprocessors tend to be more complex than FPGAs. This is because of the various processes already implemented in it. Microprocessors already have a fixed set of instructions, which the programmers need to learn in order to create the appropriate working program. Each of these instructions has their own corresponding block that is already hardwired into the microprocessor. An FPGA doesn’t have any hardwired logic blocks because that would defeat the field programmable aspect of it. An FPGA is laid out like a net with each junction containing a switch that the user can make or break. This determines how the logic of each block is determined. Programming an FPGA involves learning HDL or the Hardware Description Language; a low level language that some people say to be as difficult as assembly language. The development and drop in price of semiconductors and electronics in general has slowly blurred the lines between FPGAs and microprocessors by literally combining the two in a single package. This gives the combined package a lot more flexibility. The microprocessor does most of the actual processing but it passes off the more specific tasks to an FPGA block. This lets you obtain the best of both worlds. The microprocessor can handle the general tasks while custom FPGA blocks give you the ability to incorporate unique blocks. Microprocessors are more complex than FPGAs. Microprocessors have fixed instructions while FPGAs don’t. FPGAs and microprocessors are often mixed into a single package.
ASIC vs FPGA: Field Programmable Gate Arrays (FPGAs) and Application Specific Integrated Circuits (ASICs) provide different values to designers, and they must be carefully evaluated before choosing any one over the other. Information abounds that compares the two technologies. While FPGAs used to be selected for lower speed/complexity/volume designs in the past, today’s FPGAs easily push the 500MHz performance barrier. With unprecedented logic density increases and a host of other features, such as embedded processors, DSP blocks, clocking, and high-speed serial at ever lower price points, FPGAs are a compelling proposition for almost any type of design. The FPGA design flow eliminates the complex and time-consuming floorplanning, place and route, timing analysis, and mask / re-spin stages of the project since the design logic is already synthesized to be placed onto an already verified, characterized FPGA device. However, when needed, Xilinx provides the advanced floorplanning, hierarchical design, and timing tools to allow users to maximize performance for the most demanding designs. ASICs (Application Specific Integrated Circuits) are specific chips (as the name suggest) used to implement both analog and digital functionalities in high volume or high performance. ASICs are full custom therefore they require higher development costs in order to design and implement (NRE). Moreover, unlike the FPGAs chips, they are not reprogrammable and therefore a change requires again NRE payment. On the other side, however, ASICS are much denser, and one can integrate several different functionalities into one chip and therefore offer small size, low power and low cost solution.
No layout, masks or other manufacturing steps are needed
No upfront non-recurring expenses (NRE)
Costs typically associated with an ASIC design
Simpler design cycle
Due to software that handles much of the routing, placement, and timing
More predictable project cycle
Due to elimination of potential re-spins, wafer capacities, etc.
A new bitstream can be uploaded remotely
Full custom capability
For design since device is manufactured to design specs
Lower unit costs
For very high volume designs
Smaller form factor
Since device is manufactured to design specs
Table 1: FPGA vs. ASIC Design Advantages