What are FPGAs?
FPGAs are programmable digital logic chips. What that means is that you can program them to do almost any digital function.
Here's the general workflow when working with FPGAs:
- You use a computer to describe a "logic function" that you want. You might draw a schematic, or create a text file describing the function, doesn't matter.
- You compile the "logic function" on your computer, using a software provided by the FPGA vendor. That creates a binary file that can be downloaded into the FPGA.
- You connect a cable from your computer to the FPGA, and download the binary file to the FPGA.
- That's it! Your FPGA behaves according to your "logic function".
Keep in mind that
- You can download FPGAs as many time as you want - no limit - with different functionalities every time if you want. If you make a mistake in your design, just fix your "logic function", re-compile and re-download it. No PCB, solder or component to change.
- The designs can run much faster than if you were to design a board with discrete components, since everything runs within the FPGA, on its silicon die.
- FPGAs lose their functionality when the power goes away (like RAM in a computer that loses its content). You have to re-download them when power goes back up to restore the functionality.
Who makes FPGAs?
There are (at least) four companies making FPGAs in the world. The first two (Xilinx and Altera) hold the bulk of the market.
- Xilinx invented FPGAs and is the biggest name in the FPGA world.
- Altera is the second FPGA heavyweight, also a well-known name.
- Lattice and Actel are smaller players.
Xilinx has traditionally been the density and technology leader.
Their general philosophy is to be very open about their devices architecture and to provide lots of (useful) features at the cost of a bit more complexity.
Altera's focus is on ease of use, with an HDL software suite that has traditionally been very good.
Their silicon has a bit less features and their architecture is not as open.
FPGAs vs. CPLDs
Are FPGAs and CPLDs the same thing? No
Both are programmable digital logic chips and are made by the same companies. But they have different characteristics.
- FPGAs are "fine-grain" devices - that means that they contain a lot (up to 100000) of tiny blocks of logic with flip-flops. CPLDs are "coarse-grain" devices - they contain relatively few (a few 100's max) large blocks of logic with flip-flops.
- FPGAs are RAM based - they need to be "downloaded" (configured) at each power-up. CPLDs are EEPROM based - they are active at power-up (i.e. as long as they've been programmed at least once...).
- FPGAs have special routing resources to implement efficiently arithmetic functions (binary counters, adders, comparators...). CPLDs do not.
In general, FPGAs can contain large digital designs, while CPLDs can contain small designs only.
FPGAs vs. microcontrollers
Are FPGAs and microcontrollers the same thing? No
- FPGAs implement programmable logic elements running in a parallel fashion.
- Microcontrollers are based on a CPU architecture (executes a set of instructions in a sequential manner).
Microcontrollers have on-chip peripherals that also execute in parallel with their CPU.
But they are still much less configurable than FPGAs.