Suggestions For Learning FPGA Development At Home?
Doug writes "I've recently been inspired to take up amateur electronics, specifically with FPGAs. I have an understanding of the basics, plus a solid programming background. From my research so far I've concluded that I should start with a simple FPGA development board and a couple of books on Verilog and/or VHDL and go from there. I found this Ask Slashdot discussion on Verilog vs VHDL very useful, but it focuses more on the development language rather than hardware. I'd be very interested in hearing peoples' recommendations for an entry-level kit that is simple, flexible, and affordable (sub-£200), and preferably Linux-friendly, and indeed any other wise words that experienced FPGA developers (professional or amateur) might have for a novice just starting out in the world of circuit design."
Use Xilinx's FPGA Starter Kit. I bought the old version 5 years ago, and it also came with a CPLD dev kit. The dev tools run on linux too. It was something like $99 IIRC. It's made by Digilent. Last time I checked they had a better board for an extra $50 with an LCD display and 64MB SDRAM.
Otherwise, check fpga4fun.com . They use a tiny FPGA board, which reminds me of the Arduino: it has everything you need and nothing more.
I use these at work for general-purpose little widgets. They are great for all sorts of control/data collection devices. I think we've bought around 50 or so over the past couple of years.
Unfortunately, they do not support Linux.
There is an FPGA programming solution around for this board which does support linux (search for Nexys2 on comp.arch.fpga), but it does not support the data transfer function.
The data transfer function is very nice (under Windows). digilent supplies a driver and DLL, and I find it very easy to transfer data using Python. I do wish they supported Linux, though -- that's all I use at home.
But in particular, I disagree with your reasoning about why to use VHDL vs. Verilog. Obviously, everybody's mileage may vary, but removing all vestiges of familiarity so that everything gets equally hard is not the way I learn.
The way I learned C was by looking at the assembly language output of the compiler, and you can effectively do the same thing with hardware.
It's not that hard to see what kind of logic your stuff compiles into -- in fact, you can dump a verilog netlist that shows you exactly how your logic maps to the internal chip elements. At a higher level, you can just look at the resource utilization report to see how "big" your circuit is.
In terms of the "right" language to learn for other reasons, apparently VHDL is somewhat more popular in Europe, and maybe somewhat more popular among FPGA-only designers, but all the "real" chip companies in the US use Verilog.
Odd. I have much the same perspective as you, but with VHDL and Verilog reversed. I see Verilog as being slightly closer to hardware and VHDL as a little better matched to architectural modelling. I suspect it depends on the tools and workflow you get used to more than anything intrinsic to either language.
You can certainly make the "being a software developer" mistake in either language - I don't think that's a reason to choose one over the other, rather it's just something to be very aware of.
One caveat. I find that a lot of folks need to think at a higher logic level than is presented in most digital logic books. I see people constructing multiplexers and decoders and other basic logic structures in painstaking detail when they should be using simpler statements and letting the synthesis tool do the work.
If ever draw a Karnaugh map while coding VHDL, you're doing it wrong. If you are worrying about whether to use a Mealy or Moore state machine, you're doing it wrong.
Go here: http://www.digilentinc.com
Buy the Nexy2 board for about $70. It has: 8-bit vga, 1 serial p., 8-seg disp., some flash mem., and a bunch of switches and leds. Uses Spartan3e chip, and comes with a nice case and USB programming cable. Programming software (adept) only works in Win., but you can get a linux programmer if needed. The Xilinx ISE or EDK stuff works in either windows or linux. Bonus: gvim works as an editor in ISE :)
It basically comes with everything you need and should keep you occupied for several months; it's what we use at my university to introduce students to FPGAs in the lab. Feel free to contact me for more info.