The microprocessor is the heart of every computer and arguably one of the greatest inventions of the last century.
At their most basic level, microprocessors operate on a three step process: fetch, decode, execute.
First, they fetch an instruction from memory.
Second, they decode the instruction and figure out what to do.
Finally, they execute the instruction.
Microprocessors execute software instructions. On the other hand FPGA’s are hardware based design. They actually implement it on hardware through reconfigurable logic building blocks. Microprocessors have instructions executed on programmable hardware unit like arithmetic logic unit and control unit. Each step occurs in succession, and a computer program might be broken into a million or more instructions. Microprocessors are sequential machines, and are usually not very good at dealing with parallel problems efficiently.
FPGA’s have actually make hardware based data path and ALU design on hardware. To make things clear lets take one example. Microprocessors are usually programmed with c language and FPGA’s used verilog or VHDL language which is actually converted into logic building blocks on FPGA integrated circuit. FPGAs are excellent at working problems in dozens of parallel processes. This makes FPGAs better for things like image processing, for example. However, the key advantage microprocessors have is flexibility. A microprocessor is great at doing a lot of different things adequately, while an FPGA is really good at doing one specific task extremely well.
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.