views:

992

answers:

5

I want to play around with FPGAs. I'm looking for advice getting on started.

  1. Can anyone recommend good FPGA boards that I easily start programming for? How much should I look at spending?
  2. Can I avoid buying a FPGA board now, and just emulate the code I write? Are there portability issues between different boards?
  3. What languages are typically used to for FPGA development? What is each languages advantages/disadvantages? Many of the languages look C-like. Are there ways to just specify circuits of logic gates? Does it make sense to work at the gate level?
  4. What books have you read to learn how to develop for FPGA? Which ones are the good books?
  5. How quickly does FPGA knowledge become obsolete?
  6. What advice would you give to someone just starting out in this area? Any common pitfalls?
+2  A: 

Warning: 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.

monksy
Programming a microcontroller is the same as writing any other computer program. There are of course some gotchas with interrupts and setting up a C environment at the beginning of execution. I don't think microcontroller programming has much of a bearing on learning to program and use an FPGA though.
Carl Norum
Its not... you don't get the same features, the same debugger, or output as that you would with desktop computers. You have a lot less space, and a lot less processing ability.
monksy
I dunno, JTAG is pretty good these days; I get a lot more visibility into embedded projects with a good JTAG/ICE and debugger application than I would with command line gdb for example. I think they both run a pretty wide spectrum.Regardless, what I'm really trying to say is that there is a much bigger relationship between writing a C program on my favourite OS and programming a microcontroller than there is between either of those and HDL/FPGA programming.
Carl Norum
I don't think this answer deserves a downvote, necessarily. +1 for @steven.
Carl Norum
My point was that it is a stepping stone, its not an actual subsitution. The OP is a beginner. For a person, safely assuming, that has learned a desktop/server language to go to embedded development is a big step.
monksy
JTAG is good, but it is not at all similar to debugging with VS.net or with Netbeans. My suggestion was reducing the learning curve by learning about embedded systems before completely jumping into FPGAs.
monksy
+16  A: 
  1. Here is a list 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" turned up a lot of options.

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

  3. The big ones are Verilog and VHDL. 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.

  4. I had this book as a text for the Verilog class I took in college. It was good, Amazon may suggest some other good options.

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

  6. 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 Norum
I suggest Verilog; VHDL in my experience is ADA-like. I've had atrocious times with Xilinx's IDE. Unless I rip it apart and do a pure command-line interface(doable), I don't want to touch Xilinx unless I have to.
Paul Nathan
+3  A: 

avnet has a nice spartan3a board for $50. http://www.em.avnet.com/spartan3a-evl

dwelch
+1  A: 

I liked the Cyclone II FPGA Starter Development Kit 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.

starblue
+5  A: 
mrkj