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.
I've really enjoyed the whole process, I've learned a lot. For a long time it’s been something I've wanted to do but the idea of just going at it on your own is a bit daunting. You're not really going to know what you're going to get out of it. And you're not going to know if what you've actually done is correct, so having an option to take a course with some other people has been a really great way of learning it.