An FPGA is quite like an ASIC, but has some major differences.
- Available to buy blank chips cheaply, off-the-shelf
- Can program your digital design onto them, over and over again
- Have a very limited set of standard cells - at the least lookup tables, flip-flops, memories. Could include multipliers, memory controllers or other high speed interfaces.
- No analogue capability
- Slower than an ASIC
They have a reasonable overlap of the tools required to design for them. FPGAs need synthesis, place and route, simulation and verification tools. Additionaly you need a tool that can take the finished bitstream and send that to the FPGA for programming.
An FPGA consists of a huge amount of repeated logic elements/blocks/slices. These pictures are of the Lattice iCE40 FPGA.
These usually contain a lookup table, a flip-flop and some carry-logic (speeds up addition).
The lookup table can be programmed to model any type of gate - for example an inverter or a 4 input NAND.
An FPGA board can help you test your digital design at speed. For example I can simulate my vga clock, and even simulate the screen. But with an FPGA I can actually plug it into a real screen and see it works.
If you want to buy an FPGA board to play with and help you learn digital design, I recommend going for one with an active, supportive community:
If you’re interested in learning how the Open Source FPGA tool flow works from end to end, check this video series I did for Symbiotic EDA.
Having the formal verification part additionally felt nice, that I could have something that I know is going to be functional instead of just guessing for a long time and then looking at waveforms and then not knowing what hell I'm doing!