I want to play around with FPGAs [1]. I'm looking for advice getting on started.
Here is a list [1] of a bunch of available boards, both Altera and Xilinx. You're probably looking at spending in the $100-$500 range depending on how fancy an FPGA you want. Googling " fpga development board [2]" turned up a lot of options.
Most development environments provide simulation capability, so you could use those to learn the language. Getting real device experience is good, though. As to portability between boards, the kind of things you're going to be doing while learning probably won't be pushing the envelope enough that it matters which device you have.
The big ones are Verilog [3] and VHDL [4]. I prefer Verilog's more C-style syntax, your mileage may vary. Working directly at the gate level is certainly possible, but the whole point of HDL languages is to give you some abstraction on that stuff.
I had this book [5] as a text for the Verilog class I took in college. It was good, Amazon may suggest some other good options.
The general concepts of FPGA programming don't change much; the cababilities and features of the chips certainly do, however. As always, good fundamentals will take you a long way.
Programming HDL to describe logic is not the same as writing code for a general purpose processor. Don't try to do a lot of complicated sequential logic.
Carl's response was excellent and definitely warrants reading before mine. Having said that:
Before buying a board, I would recommend considering two points carefully:
What sort of applications do you want to hack at and what sort of peripheral support do they need? Do you want DDR RAM or SRAM? VGA or component video? Do you want a character LCD or a video LCD or neither? AC'97 audio? Do you want Ethernet and, if so, do you care if it's 10/100 or gigabit? Do you want PCI or PCI-E? How about USB?
If, for example, your goal is to use FPGAs to accelerate some application running on a host PC, you need to consider how you'll get data to and from the FPGA, including what sort of bandwidth and latency characteristics you'd like, and what sort of software support you can expect on the host PC side. There's a great-looking module from Opal Kelley [5] that addresses the host-to-FPGA issue.
In short, you don't want to shell out a bunch of money to get stuck with a board that doesn't really meet your expectations. If your goal is simply to experience what it's like to design for an FPGA, the cheapest possible board (i.e., the $50 Avnet Spartan board) is probably your best bet.
Again, I would absolutely recommend downloading the vendors' free tools and working through some tutorials before buying a board.
If you're interested in learning VHDL and/or Verilog independent of the FPGA domain, there are open source simulators for each: Icarus [6] and Alliance [7]. There's also a free version of ModelSim [8]. I'm not aware of a free option that supports mixed-language simulation.
Regarding portability between boards, I tend to disagree with Carl insofar as I think portability can be a big issue. Moving between vendors introduces a lot of problems, ranging from the nuisance of unfamiliar tools to the headache of incompatible or nonexistent IP. Switching boards could mean different, incompatible peripheral chips (e.g., moving from a board with DDR to a board with DDR2 will require a new memory controller). The concepts you learn will definitely be portable; large parts of your designs may also be portable; the integrated system, however, will not be.
The largest barriers will exist when switching between vendors: keep in mind that the FPGA industry is a well-established oligopoly and the leading vendors have a vested interest in preventing their clients from moving to the competition.
On the language front, I also prefer Verilog, mostly because it's more succinct. I've been told that Verilog is more common in North America whereas VHDL is more common in Europe. VHDL also seems to be favoured in defense (possible due to its similarities to Ada). When you're reading about Verilog and VHDL, try to keep in mind that they are event-driven simulation languages that are being used for synthesis -- that is, large portions of the language are only meaningful for simulation and are inefficient or impossible to synthesize.
I agree with Carl that working schematically at the gate level, while possible, will quickly reveal itself to be tedious and inefficient.
There are higher-level languages for hardware design, but none are all that widely accepted. Wikipedia has good links on the C to HDL [9] side and on general-purpose HDLs [10] (like Confluence, Lava, BlueSpec, and so on). There are also MATLAB to HDL tools, like Xilinx's System Generator for DSP [11].
While there are plenty of decent books on HDL programming, I've honestly never seen a good book on FPGA development. I personally think you'll find better information in vendor tutorials and on blogs. Course notes on university websites may also be useful.
It's often been said that the best way to learn to code well is by reading good code; to that end, take a look at the code for vendor IP and dig around the more successful-looking projects on OpenCores [12].
Be sure to read the HDL coding guidelines from vendors, and make an effort to read and understand all the warnings and errors generated during synthesis, mapping, placement, and routing. I would also strongly recommend skimming the architecture manual for whatever device you're designing for. Make an effort to understand the synthesis flow and the way in which your HDL maps to the FPGA architecture.
A good example of this is: why is a ripple-carry adder faster on an FPGA than a carry-lookahead adder? The carry chain is so significantly faster than general-purpose routing. Always bear in mind that FPGAs and ASICs are decidedly different beasts.
Edit: Added a link to Actel's tools; the one Actel board I'm aware of is the OpenRISC development kit [13] from ORSoC.
[1] http://www.xilinx.com/tools/webpack.htmavnet has a nice spartan3a board for $50. http://www.em.avnet.com/spartan3a-evl
I liked the Cyclone II FPGA Starter Development Kit [1] from Altera (I got it in March 2008, don't know if it is still available). It comes with tutorials for both Verilog and VHDL and has some simple I/O to play with, as well as standard 2x40 connectors which are easy to interface with.
[1] http://www.altera.com/products/devkits/altera/kit-cyc2-2C20N.htmlWarning: I have not done very much FPGA development.
A good starting point would be programming a microcontroller. Typically these have a shallow-er learning curve than FPGAs do.
If I'm not mistaken FPGAs do not become obsolete as fast as consumer grade hardware. FPGAs are very specialized and new FPGA models are not released as frequently.
I would imagine that many FPGAs provide a simulator to code for them. Try writting for embedded OSes. I've heard a few FPGAs use VxWorks.