FPGA or CPU?
Of course, the answer to this question will vary according to the application. In this section we will provide information on the differences between FPGA and hard processors, Pros and Cons, and which applications are widely used with FPGAs, which applications are widely used with processors.
The main and the most significant difference between the microcontroller and the FPGA is that FPGA doesnÔÇÖt have a fixed hardware structure, on the contrary it is programmable according to user applications. However processors have a fixed hardware structure. It means that all the transistors memory, peripheral structures and the connections are constant. Operations which processor can do (addition, multiplication, I/O control, etc.) are predefined.And users make the processor do these operations "in a sequential manner" by using a software, in accordance with their own purposes.
Hardware structure in the FPGA is not fixed so it is defined by the user. Although logic cells are fixed in FPGA, functions they perform and the interconnections between them are determined by the user. So operations that FPGAs can do are not predefined. You can have the processes done according to the written HDL code "in parallel" which means simultaneously. Ability of parallel processing is one of the most important features that seperate FPGA from processor and make it superior in many areas.
Lets explain this with an analogy: FPGA can be likened to a plasticine that we can give the shape we want; hard processors can be likened to the toy car. You can make any toys from plasticine included the car you want. You have to adopt toy car as it stands and play just a toy car. Nevertheless, it is quite difficult and tricky to make a toy car identical with the toy car you bought. So it is very convenient to buy the toy car instead of buying a plasticine, if it is the one you exactly need. Hovewer if you can not find the toy car of your dreams, you have to make it on your own with the plasticine.
Processors are generally more useful for routine control of a particular circuits. For example, using FPGA for simple functions such as turn on and off any device from a computer may be overstated. This process can be easily done with many ordinary microcontroller (PIC series, etc.). However, FPGA solution is more reasonable, if you want to process on a high-resolution video data on the computer.
Because video processing requires processing large data in high speed and make these types of applications are very suitable for FPGA that is capable of parallel processing.
Since the user can determine the hardware structure of FPGAs, you can program FPGA to process larger data with few clock cycle.
Whereas this is not possible with the processor. Because data flow is limited by processor bus (16-bit, 32 bit, etc.) and the processing speed.
As a result, applications that requires more performance such as intensive data processing FPGA has come to the fore, and processor / microcontroller has come to the fore for routine control operations.
Nevertheless,┬á processors / microcontrollers can be embedded into the FPGA since they are logic circuits in fact.
Thus it possible to define and use processor and user-specific hardware functions on only one chip by using FPGA. This solution gives engineers the oportunity to control the hardware because of its great flexibility.
You can modify and update whole design (FPGA on the processor and other logic circuits) by only changing the code on FPGA, without┬á any change on circuit board layout.
In this way, you can add different functions, improve performance and make your design resistant of time without having to redesign the cards.