Author Options:

What's an FPGA? Whats an CPLD? Answered

What's an FPGA?  Like what's it compared to a microcontroller?  Please no links to google or wikipedia :P  I mean, from what I've read, it just seems like theyre inferior to a microcontroller, so I don't get why people use them.


Microcontrollers typically can only execute "single thread" instructions, performing basic bitwise math on a couple of bytes of input in a single instruction. The single thread execution clock rate typically around 10-100MHz for a decent micro PALES in comparison to the capabilities of even a modest ($6) FPGA. Your typical $6 FPGA can implement a good dozen or more fairly complex parallel processes. You're designing HARDWARE configurations, so you can pack ridiculous purpose-built efficiency and optimization into a single hardware process.

For example, a simple HVAC control system might implement a network of temperature sensors to turn on heating or cooling systems in certain parts of a building. A single threaded system, like a microcontroller, would have to be instructed to read each sensor, perhaps perform some scaling math, check a few conditions, then appropriately change the states of the HVAC machinery.

On an FPGA, the hardware could be configured to run the sensor data in, have combinatorial lookup tables preprogrammed into static registers, controlling EVERY OUTPUT SIMULTANEOUSLY or enabled by one of many global clocks.

An FPGA can execute functions on data-spaces hundreds of bits wide at the full speed (limited only by propagation delay) allowable by the physics of the chip (100MHz is a good starting point for a well-designed FPGA config),
compared to a microcontroller operating on an 8, 16, or 32 bit data space, one word at a time at 1/10 the speed of the FPGA.

When you compile a program and burn/download it to your target FPGA/CPLD, the internal structure of the device get changed. That is, the logic gates inside the chip rearrange to perform as per your logic. So changes are happened inside the HARDWARE itself.

But its completely different for a Micro-controller. It works with a SOFTWARE. When you burn a program's hex code to a micro-controller, it will be stored in the program memory of the controller and when you power-ON the circuit, the program starts executing from the first instruction.

People use the because they fit the purpose.  If you need a hammer why use a sledge.

Six months after your question, and since you decided no one had answered it, there's a new Instructable that should give you what you want.

They'll do things way beyond what any microcontroller can do.

Inferior is not a term I'd use.

An FPGA is a Field Programmable Logic Array

A CLPD is a Complex Programmable Logic Device (ie, it dconsists of severzl bundled PLDs.

Re-design and Nacho explained in part why they're used. The rest is up to you and google (sorry, but I'm not paid to do your footwork)

.  They are great for one-off and low production runs.