Slashdot Mirror


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."

6 of 185 comments (clear)

  1. advice by seanadams.com · · Score: 5, Informative

    Unless you are very experienced designing with TTL chips, you won't get far in HDL without first getting good coverage of logic theory. My experience may be a little dated as it was 10 years ago that I started learning programmable logic, but at the time I enjoyed the first edition of Fundamentals of Digital Logic with VHDL Design. Not that logic theory has changed, but newer books might come with better examples or easier to use software. What I liked about that book was that it covered the theory in a very complete way while introducing the vhdl concepts at a manageable pace.

    As far as development tools, they're overwhelmingly Windows based. You may have to run a VM so that you can use the most common tools (eg Xilinx WebPACK) until you're up to speed, then try a linux solution later. There are lots of hardware trainers out there - it's really not that important which one you use initially, although if whatever books you're reading have a recommended one, use that.

    Your experience in the software world will help you somewhat, but be prepared for a vastly steeper learning curve than picking up a new programming language. There are not a lot of engineers who go very deep on both the software and hardware/logic sides - if you do you will end up with some valuable skills indeed. good luck!

  2. My Advice by AKAImBatman · · Score: 5, Informative

    Hardware: I highly recommend the Spartan Starter Kits. They're dirt cheap, well supported by the industry, and come with a good toolkit. There's not much more you need to know other than you'll probably want a serial cable in addition to the JTAG cable the kit ships with.

    I'll grant you that the fabric isn't very large by today's standards, but it's still enough space to learn about the hardware. By the time you outgrow the fabric, you should have a good idea of what size hardware you want. In fact, your next board may even be a custom design based on a bus like wishbone. ;-)

    Software: The Xilinx stuff (pronounced "Zy-Links") comes with a full toolkit for VHDL/Verilog development including an IDE, place and route tools, and software to reconfigure the FPGA. It's all quite slick and easy for a beginner to use.

    Language: The most common route taken by new hardware developers is to learn Verilog. They do this because it's similar to C and that makes them comfortable. THIS IS A BAD IDEA. I can't count how many hardware designers swear up a storm when they see a Verilog project with loops and other software constructs stuck into them. See, the comfort and familarity of C makes new hardware developers forget that the hardware is a fixed layout. There is no for loops or control logic as you think of it. It all ends up flattening to hardware. If you write regular software constructs, you'll end up with the least efficient circuit possible.

    From this perspective, learning VHDL is better because you won't have that comfort and familiarity that might tempt you into creating poor circuits.

    I actually recommend doing some JHDL code for a while. It's lower level than VHDL, but that's a good thing. You have to think about every wire connection and how it all links up. When you're done, you can easily step through your circuit and see how it plays out in hardware. Even better, you learn how to properly use software constructs like loops to create a large number of static hardware objects. This will make your code better without falling in the trap of trying to write software.

    That's my 2 cents anyway. Good luck! :-)

    1. Re:My Advice by Anonymous Coward · · Score: 5, Informative

      I'm a hardware and software designer and while VHDL and Verilog are different, I would say it doesn't really matter which you start with (VHDL makes you be more careful in your design, Verilog is more often used in industry).

      I was one of the developers on JHDL and I would stick with the standard tools. Trying to explain to a potential employer why you know JHDL and not verilog or VHDL is kind of depressing. JHDL's last release was 2 years ago and I'm not sure if it is an active project any more. That said, the interaction with the simulation of circuits provides a nice graphical interface if that is something you are interested in.

      The Xilinx Spartans are great (and cheap) to start on and there are a bunch of people using their WebPack software with Linux (http://lug.wsu.edu/node/383)

    2. Re:My Advice by negro_monolito · · Score: 5, Interesting

      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.

  3. Xilinx by hjf · · Score: 5, Interesting

    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.

  4. What I did - and recommend by TehBlahhh · · Score: 5, Informative

    1. Get a (the) Spartan-3 starter board. It's got the 500 variant of the Spartan-3 on it which is big enough to implement even small processors. The board also has some very limited VGA output, and a heap of other things that makes it fun to work with (Serial I/F, etc). The manual for this board is one of the better ones for beginners, as well. I broke my own teeth on this board. It's 149 US schmucks from digilent.

    2. Get Xilinx's free tool suite; its nicely compatible with that board. Free download from the web. Heck, you can even download and play with it without the / any board (but then you don't, of course, get the blinkenlights.) You can however try out and simulate designs before going to FPGA, and thus figure out why the (redacted) it doesn't (redacted) work. Simulations are your main way of verifying your design once you're past 20-odd gates.

    3. Learn the HDL of your choice. Read the books. One warning only: it is NOT a programming language - the entire model in your head about how software works needs to be replaced. Case statements are king. Productivity with HDL's are generally way lower than software; don't be surprised by this.

    4. Do points 1 through 3 in reverse order. Having a shiny 150 schmucker board won't help anything if you still have to spend two weeks grokking HDL's.

    HTH.