I have been in the embedded domain for a while and has a fair share of experience with those tiny 8-bit devices. FPGA (Field Programmable Gate Array) caught my attention recently and is one of the hottest things in the electronics industry at the moment. FPGA is probably the closest you can get near to achieving real time processing.
So what all the hype around FPGA? Anyone who has fiddled with embedded systems will know that processors are never real time. They execute lines of codes one after another. They appear to work in real-time for a wide variety of applications because they execute the code pretty fast. To put things into simple words, suppose that you put up a simple microcontroller circuit to turn an LED ON when a switch is pressed and turn it OFF when the switch has been released. Just a few lines of code will achieve this and the microcontroller will execute the code over and over again so many times in a single second. Think that you are a super fast human being capable of clicking the switch on and off REALLY fast such that you can push the switch ON and turn it OFF before the microcontroller executes the line of code which check if the switch has been pressed or not, you’ll never see the LED turn ON just because you microcontroller never detected the press of the switch. This makes the software or code based embedded systems non-real time.
When it comes to FPGAs things are totally different, there is no line by line execution of code. If you do the same LED operation as mentioned above, what happens is that a direct connection is established between the switch and LED, just like you would do on a breadboard. So you are going to see the LED light up every time you turn the switch ON.
What’s more exciting is that you can implement a number of such units on the same chip and all of those units will run in parallel i.e. you can have a single FPGA to so some serious image processing, blink some LEDs, drive motors all at the same time. Really cool!!!!
|A FPGA from XILINX|
Altera and Xilinx are the forerunners in FPGA manufacturing. To implement a logic on FPGA, the configuration files are creates in a suitable Hardware Description Language (HDL) like Verilog or VHDL and are downloaded to the FPGA. FPGAs are wiped clean i.e. goes blank when they are powered off. So you always need an external memory to hold the configuration files from which the device can be reconfigured every time it boots up. Most FPGA development boards come with an on-board storage facility to store the config files. The data is not stored exactly as a file. It will be a stream of bits stored in a PROM chip.