What FPGAs (Field-Programmable Gate Arrays) can one buy to experiment with at home?
If you want to get started with an FPGA and experiment with an inexpensive board, you can try any of these for about USD 50.00:
- Lattice XP2 Brevia
- Xilinx Spartan3A
I began my career with Xilinx products and can vouch for their tools. I own the Lattice board above and it is a great board for experimenting with. Lattice is Windows only, however.
With these boards you can learn the basics of FPGAs: HDL design, I/O techniques, design architecture, etc. You could also implement image processing algorithms, but you would be limited by I/O throughput and the DSP slices in these low-end devices. When you're comfortable with designing in HDL and you have a better grasp of the tools, then you might consider having your employer/educational institution purchase you a more advanced kit. Some of the kits with high-end equipment and I/O can cost thousands of dollars, depending on your application.
While there are some open source and free tools for working with FPGAs, most of the tools you'll need to learn to use are Windows and Linux only. Often the free versions from the FPGA vendors are Windows only (EDIT: Looks like Linux is started to be supported as well). You could try using Verilog HDL with Icarus and GNUWave, but when it comes time to programming the design to a device, you'll need the vendor specific tools.
If you just need to learn HDL then downloading ModelSim will be enough. I suspect though that you will learn much more with a simple kit. Not only will you learn the HDL design, you'll also learn practical aspects such as programming, optimization for your device, debugging designs on hardware and so on.
Although it is far from the cheapest, buying a Xilinx XUPv5 is a good idea if you want to learn a lot - not only is the 110T chip large enough to build very ambitious projects (a fully functional Nintendo console replica, for example), but it is also the board many top-tier universities use in their digital design class. Berkeley, for example, publishes their full notes, labs, etc for use with the XUPv5 board. I taught the class for a number of years, and would like to believe that it is an excellent, high-quality resource.
Hope this helps,
As to your question about what an FPGA is, I think the best way to think of it if you are already familiar with microcontrollers (and their normal programming scheme with sequential ordering of processing) is to think of a microcontroller as being told what to "do" and FPGAs as being told what to "be." I think this is the simplest way to view it :P FPGAs are programmed differently. You need to have a full knowledge of the circuit which you want to design, the inputs, outputs, and you will need to spend a lot of time considering the clocking, as clock skew and other issues can easily arise when dealing with more complex circuits in FPGAs! I learned about FPGAs first using a Spartan3E. Have fun! :)