FPGAs and micro-controllers can be the two possible choices an electronics engineer may have to opt from when prototyping his projects. Most of the engineers prefer micro-controller albeit in going with the flow while some of them might be slightly interested in the FPGA thing.
Delving into the great debate of FPGA vs Micro-controllers, here we will attempt to compare the ace merits and pitfalls of both of them and arrive at a suitable conclusion.
|FPGA vs Micro-controller. Comparing the two.|
The Micro-controller stores the code in its EEPROM and fetches instructions from its memory code segment and thereby executes one instruction at a time.
The FPGA is different, once it is programmed, its internal architecture changes according to the code (because it has programmable interconnects) and it is able to carry out multiple tasks simultaneously - means it can do parallel processing of different tasks at a single instant. (We will discuss this feature in a separate article later).
Difference in Architecture
The next major difference lies in the architecture.
The micro-controller generally has a fixed number of common logic units, for example it may have a fixed number of registers, timers, PWM modules and memory segments.
The FPGA is however a blank space, a programmer can build any number of timers, counters, registers and other logic modules only to be limited by the available chip area.
|Xilinx Virtex 5 FPGA embedded on a development board|
Programming the FPGA vs Micro-ControllerFrom the perspective of a programmer (probably you!) micro-controllers are way easier to program as compared to FPGAs, simply because in a u-controller one has to write a program for a predefined system architecture e.g loading a register with a value. On the other hand in FPGAs the programmer has to first define the required architecture through coding as well as decide how to use it at the same time.
ApplicationsThese prime differences in technology of FPGAs and micro-controllers warrant that for some applications a micro-controller must be better and while in some applications a FPGA might be better (where it might actually worth conquering their steep learning curve).
The Micro-controller serves better in most ordinary applications because it's architecture is specialized for a narrow range of tasks for example many micro-controllers have specialized PWM modules geared towards performance which means for simple tasks you are better off by using an MCU rather then FPGA because if you use an FPGA you will have to put many times more coding effort then MCU which is not worthwhile.
In contrast an FPGA finds its applications on a different side where you need customized device architecture. They are particularly useful when an application can be broken down into parts for parallel processing, This way an application can be processed faster then on a MCU. These days most important use of FPGAs is in the ASICs modelling industry where different IC designs and architectures are first coded on FPGAs for testing and then mass-produced if they perform satisfactory.