Electronic – When can FPGA’s be used and Microcontrollers/DSPs not

dspfpgamicrocontroller

I have to choose between a course on advanced microcontrollers and a course on advanced FPGA's.

I have had introductory courses in both subjects, and what troubles me now is that I am already pretty good at firmware development for microcontrollers, and I fail to see what products/projects I can make with an FPGA and cannot with an microcontroller/DSP.

Can you come up with some applications/products/projects where a microcontroller or DSP wouldn't be sufficient, and why?

Cameras? High-speed cameras? High-speed image processing?

Best Answer

See also FPGA's vs Microcontrollers

High-speed image or video processing is a good example. Or processing 'images' that aren't straightforward optical images, such as radar or laser-based systems.

The key thing to consider is throughput and latency requirements. A microcontroller can service an interrupt (very roughly) once per microsecond. It can only service one interrupt at once. If you need to process it in an elaborate way, that limits how many you can service in a particular time.

With an FPGA, you can generally respond to an input event immediately (well, on the next clock cycle). You can have lots of processing units in parallel. If you know that your filter takes 20 cycles, that's entirely independant of anything else going on.

Highly-parallel integer intensive computation works best on FPGAs, especially if there's complex data dependencies. However, they don't have a lot of onboard memory; you can add some DRAM to the side but at the cost of latency.

You may also want one for the peripherals, or to speak some high-speed digital bus. You can't bit-bang HDMI into or out of a microcontroller. You can't build a PCI card around one.