Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Suggestions For Learning FPGA Development At Home?

timothy posted more than 4 years ago | from the control-your-basement's-trap-door dept.

Hardware Hacking 185

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

cancel ×
This is a preview of your comment

No Comment Title Entered

Anonymous Coward 1 minute ago

No Comment Entered


Try these modules (0)

Anonymous Coward | more than 4 years ago | (#28692831)


What MORON keeps tagging articles as HARDHACK? (-1, Flamebait)

Anonymous Coward | more than 4 years ago | (#28693145)

Hey idiot,

If you don't know what hardhack means, don't tag everything as such. Do you understand what an FPGA is? Obviously not. An FPGA is SOFTWARE-LOADED to mimic the functionality of a hard silicon IC. A hardhack would be popping off the packaging, removing the passivation layer, and modifying the gates by design.

Re:What MORON keeps tagging articles as HARDHACK? (-1, Flamebait)

Anonymous Coward | more than 4 years ago | (#28693471)

Or how about those fucking IDIOTS who use Windows voluntarily? Could anyone be more stupid, more of a fucking sheep, more of a mindless dweeb than to voluntarily use Windows? Duh, of course they can't.

Re:What MORON keeps tagging articles as HARDHACK? (1)

MobileTatsu-NJG (946591) | more than 4 years ago | (#28695155)

Or how about those fucking IDIOTS who use Windows voluntarily? Could anyone be more stupid, more of a fucking sheep, more of a mindless dweeb than to voluntarily use Windows? Duh, of course they can't.

So you're saying we should not be mindless sheeple and do as you do?

Re:What MORON keeps tagging articles as HARDHACK? (4, Informative)

bconway (63464) | more than 4 years ago | (#28693501)

Hardhack isn't a tag, it's a category. It stands for Hardware Hacking and is included by default. Try mousing over the story icon.

bconway, go drink some douche water. (-1, Flamebait)

Anonymous Coward | more than 4 years ago | (#28694893)

So, imbecile...

That was my point. Can you read, or are you too busy with one hand on your wang and one in a jar of vaseline while jacking off to hentai? This is NOT hardware hacking. Hardware hacking would be removing a chip off a DirecTV set top box and replacing it with a clone of your neighbor's so that you could get free TV. This is some numbskull (sorry, numbskull, but it's true) thinking that he can teach himself senior-level EE skills without having any basis beneath it.

Go sit on a cactus.

Re:What MORON keeps tagging articles as HARDHACK? (1)

sukotto (122876) | more than 4 years ago | (#28693749)

Moron? I think it's more likely a new form of trolling.
It would be interesting to see some enhancements to the tagging. Things like the ability to agree/disagree with tags; viewing who tagged and how agreed/disagreed with each; a way to filter out tags set by people you've foed (unless enough non-foes have agreed); etc

*shrug* for now, I think your only recourse is to turn them off, or maybe write a little greasemonkey script to remove tags you don't want to see anymore (either through lack of interest or contamination of the term)

Re:What MORON keeps tagging articles as HARDHACK? (4, Insightful)

Anonymous Coward | more than 4 years ago | (#28693899)

Actually, FPGAs are much more similar to hardware than they are to traditional software. Even though the configuration is volatile on most SRAM-based FPGAs, the "software" does not describe a set of procedural steps to perform as software does for microprocessors.

Rather, an FPGA configuration (personality), describes how the internal gates, storage elements, and interconnect is switched. This makes a configured FPGA almost indiscernible from an ASIC in function.

An FPGA isn't software loaded to "mimic" the functionality of an IC, it is software loaded to "describe" the functionality of the IC.

This is why VHDL and Verilog aren't strictly software programming languages. Rather, they are hardware description languages. Although they can be executed by software simulators in a fashion similar to software, they really describe hardware either behaviorally (procedurally or event-based) or structurally (netlist).

Re:What MORON keeps tagging articles as HARDHACK? (1)

jacquesm (154384) | more than 4 years ago | (#28695183)

and all those 'software simulators' are executed by hardware...

In the end, it doens't matter how many virtualization layers you've got you are programming to tell the *hardware* what to do

advice (5, Informative)

seanadams.com (463190) | more than 4 years ago | (#28692833)

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!

Re:advice (3, Funny)

hjf (703092) | more than 4 years ago | (#28692899)

Xilinx WebPACK runs on linux natively too.

Re:advice (2, Interesting)

Austerity Empowers (669817) | more than 4 years ago | (#28695179)

It runs in 32-bit mode, so if you're on 64-bit you'll need to run the linux32 shell to get it to work. The 64-bit edition is presently payware. Honestly the linux version works for me better and faster than the windows version, but if you have multiple targets (particularly that are non-Xilinx) windows may be safer.

Re:advice (4, Informative)

gregoryb (306233) | more than 4 years ago | (#28693029)

As far as development tools, they're overwhelmingly Windows based.

The majority of Xilinx' tools are available in Linux versions. I actually really prefer the Linux versions as using them from command line is far easier under Linux than under Windows (provided you want to script your process instead of using the GUI, probably not as useful for someone just getting started). Also, AFAIK, the larger Xilinx FPGAs require the *nix tools for a guaranteed Map/PAR due to memory limits, etc. You can use the Win32 version, but once utilization gets high enough, the Win32 versions may not be able to completely PAR the design.


Re:advice (2, Interesting)

QuantumRiff (120817) | more than 4 years ago | (#28693935)

Which is funny, since pretty much every Chip design package ran only on big iron UNIX back in the day, and companies had to re-write their software for NT4, because business was screaming for it.. NT4 was a fraction the price for OS/hardware as big UNIX, Now, with linux being even cheaper, they want the UNIX like software again.. Ahh, the days of a HPUX workstation and NT4 machine on every desk...

Re:advice (3, Interesting)

Anonymous Coward | more than 4 years ago | (#28693159)

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.

Re:advice (4, Insightful)

Anonymous Coward | more than 4 years ago | (#28693243)

Sure, after you learn the way things work and know what you're doing you need to design at a higher level of abstraction, but not when you're brand new to the field. The classes I took that forced me to construct low level logic in painstaking detail, draw Karnaugh maps, and know the difference between Mealy and Moore was invaluable to being able to bypass all that and think at a higher level of abstraction. You have to have a foundation to build on.

Re:advice (1)

donaggie03 (769758) | more than 4 years ago | (#28693367)

Unless you are using VHDL as a tool to help you learn Karnaugh maps and state machines, as we did in college.

Re:advice (0)

Anonymous Coward | more than 4 years ago | (#28694131)

When you start VHDL you will feel like you are programming because you're using a highly syntaxed language in a text editor.

VHDL/Verilog is not a programming language! It's a hardware description language. I've seen so many people stumble on this point. You're not coding an algorithm, you're coding hardware to perform some algorithm.

Re:advice (2, Interesting)

Anonymous Coward | more than 4 years ago | (#28694567)

True - if you're manually simplifying every operation you're doing things wrong, but there is still great value in understanding what exactly the tools you are using are going to do. The lower the level of the system you're working with, the better your understanding of low level concepts must be in order to effectively utilize said system. I once met a student who outright refused to use the = operator in always blocks because he asserted that the tool would just recognize that he really just needed an =. I showed him how the design had been routed - it was an ugly mess with HUGE delays!

My suggestion for learning FPGA design would be to first gain a firm grasp of basic binary arithmetic. For free tools, check out the digital systems courses at MIT's courseware site - the recorded lectures and associated notes provide a more than adequate coverage of these fundamental concepts. Atanua is a pretty handy tool that lets you play with very basic logic circuits without worrying about wiring up a proto board (http://atanua.org/). Once you feel comfortable with that, Xilinx provides free tools for Mac, Win2K+, and linux that includes a nice IDE. Digilent was the manufacturer of the board I used in school (the Spartan 3E 500K gate model). I believe they have a UK distributor, and I know they do international shipping.

If you aim to use Verilog or VHDL for programming your FPGA, become familiar with how to build common pieces of logic such as gates, latches, and basic logic. Opencores has many more compilcated examples for everything from an LED controller to 8088 clones.

Re:advice (4, Informative)

snakegriffin (1597867) | more than 4 years ago | (#28693325)

I would also add that VHDL/Verilog are *not* programming languages, in the sense that you are creating programs to compile and run on a system. They are Hardware Description Languages that you use to describe a functional piece of hardware. Thinking about HDL as a programming language will only get you crossed up, especially if you are new to the hardware design world.

Re:advice (1, Insightful)

Anonymous Coward | more than 4 years ago | (#28693511)

I was going to say the same thing, so good on you.

Re:advice (2, Interesting)

gwjgwj (727408) | more than 4 years ago | (#28695219)

I would also add that VHDL/Verilog are *not* programming languages, in the sense that you are creating programs to compile and run on a system. They are Hardware Description Languages that you use to describe a functional piece of hardware. Thinking about HDL as a programming language will only get you crossed up, especially if you are new to the hardware design world.

For hardware implementation, I agree. However, they are also simulation languages. In such a case, you compile them and execute on your PC, you can then print messages to the console and even open files.

Re:advice (3, Informative)

gambit3 (463693) | more than 4 years ago | (#28693329)

I second the recommendation for the FOLD book.
I used it in college (also about 15 years ago), and I loved it so much I ended up buying an updated version when I ran across it at a Half-Price books recently.

If you've never done logic design, it will take you from the basics on.

Re:advice (0)

Gerzel (240421) | more than 4 years ago | (#28693669)

What does this have to do with learning how to compete in the Female Pro Golfer's Association?

Re:advice (0)

Anonymous Coward | more than 4 years ago | (#28694687)

Also make sure to read up on the target chip of choice be it Spartan 3, Virtex 4, etc. Understanding your target architecture is even more important that with software. VHDL and Verilog are very low level, like C, and the devil is in the details. It may work but it'll take 2x the space and run @ 1/2 the MHz.

Re:advice (0)

Anonymous Coward | more than 4 years ago | (#28694967)

Also remember that hardware /= software. Algorithms are often expressed very differently than their software equivalent. A good example to look at would be something like a median filter (search for xapp953 on xilinx.com). If you can understand why it's designed that way you'll be well on your way to understanding hardware design.

Re:advice (1, Informative)

Anonymous Coward | more than 4 years ago | (#28694995)

The last time I tried Xilinx, it was buggy as hell even on Windows (their main native development platform.) Nothing is more frustrating than to have a corrupted project file that builds just fine until you try to feed it a test waveform and you find for some reason your project fails to simulate at all. You start over again and rebuild your project exactly the same way and it (maybe) works the second (or third) time. I hope they fixed a lot of the problems. Xilinx was NOT ready for prime time when I tried it a year or two ago.

Re:advice (0)

Anonymous Coward | more than 4 years ago | (#28695423)

Answer(without screwing around)

Here is where you get the board


Many universities use these boards. They are very common and work very well.

Xilinx webpack ise is free and works with windows and linux.

VHDL and Verilog both SUCK. There are no good language options anywhere for FPGAs yet. (There are many reasons behind this which are both technical and bureaucratic and go beyond the scope of this comment) Since the language suck and can't be formatted well don't worry about the code being 'clean and easy'...
I specialize in VHDL and here is some VHDL advice. The language is HUGE, but the only things you care about are case statements if statements and when/else statements. Some of what you write will be synchronous, some will not. If it is in an if block with the "risingedge" condition, its synchronous, otherwise it is not. Get an account on opencores and look at what people do there, and look at the examples that come with the board. Don't bother buying a book.

I would try and get a usb programmer instead of a parallel programmer if you are using linux. I understand usb programmers work much better.

If you are interested in a more complete solution for home embedded projects, I would recommend looked up the armadeus. http://www.armadeus.com/english/index.html
The armadeus is the best "all in one" embedded solution for almost any embedded project. Its cheap too.

I've asked some "high profile" hobbyists the same. (0)

Anonymous Coward | more than 4 years ago | (#28692839)

The answer keeps coming back Altera.

Digilent (0)

Anonymous Coward | more than 4 years ago | (#28692847)

In our lab sessions we teach the students with boards of Digilent Inc. and we're very happy of them, we also have some in house dev. boards. (do I get my discount bonus know? :)

My Advice (5, Informative)

AKAImBatman (238306) | more than 4 years ago | (#28692861)

Hardware: I highly recommend the Spartan Starter Kits [xilinx.com]. 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 [jhdl.org] 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! :-)

Re:My Advice (5, Informative)

Anonymous Coward | more than 4 years ago | (#28692999)

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)

Re:My Advice (3, Insightful)

AKAImBatman (238306) | more than 4 years ago | (#28693319)

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.

I think you miss the point. I'm not saying that he shouldn't learn VHDL and/or Verilog. Just that doing a bit of JHDL can give him some good experience with the way circuits lay out. He can actually see how, say, an adder circuit is constructed. Armed with that knowledge, he can more confidently write VHDL/Verilog code that will translate into the hardware he wants rather than some random circuitry that seems to do the right thing.

The lack of updates is disappointing, but not really a show-stopper. Even if the hardware JHDL supports falls into disuse, the simulation tools will still operate. And that's all one really needs for the learning experience. :-)

Disagree on the VHDL (3, Interesting)

pem (1013437) | more than 4 years ago | (#28693035)

I think it can be harder for a newbie to get a functioning VHDL design.

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.

Re:My Advice (3, Interesting)

SSpade (549608) | more than 4 years ago | (#28693147)

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.

Re:My Advice (5, Interesting)

negro_monolito (1172543) | more than 4 years ago | (#28693171)

Go here: http://www.digilentinc.com [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.

Re:My Advice (2, Informative)

Anonymous Coward | more than 4 years ago | (#28693869)

Following up on above:

I'm not sure what the current conversion rate is, but this is the board that I use in an academic setting:
http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,453&Prod=XUPV2P ($299.99 USD for academic customers, so you may need to ask a prof to help you out with this). The FPGA is roughly four or five years old now, but the next-generation Virtex-5 XUPV5 board will set you back $750. There are plenty of resources for beginner-to-intermediate designs -- I've seen this board implement two MPEG-4 decoders running simultaneously.

To answer your question about being *nix-friendly -- I've used the Xilinx tools under CentOS/RHEL, Debian/Ubuntu and Solaris with no problems (admittedly, these were the commercial version of the tools but I'm told the WebPack is pretty decent as well). Also, this particular FPGA has a PPC405 embedded into the FPGA fabric, and there are several linux flavors that have been ported to run on it -- so, you can actually run linux on the FPGA itself. What's more linux-friendly than that? :)

One thing you may wish to keep in mind -- I tell students that for many first-time designs, you should be spending ~90% of your time parked behind the simulator tool, ~5% checking that the synthesis/implementations tools built the circuit you were actually trying to describe, and the rest of the time validating your design on the actual hardware (I've even taken the evil step of withholding FPGA board from people until they can demonstrate their designs have a chance of working through simulation). It's not the most fulfilling approach, but chances are your board will be idle for much of the day while you write or simulate HDL anyways. I believe the Xilinx tools include a stripped-down version of the ModelSIM simulator tool that is useful for simulating smaller designs.

And I'm not touching the VHDL/Verilog issue with a 10-foot pole except to say:
- The language is a tool that you use to describe the hardware that you wish to build. I personally avoid the 'features' that are available in one HDL but not the other so that I can easily switch between the two languages if I need to.
- Writing test-benches is much easier in Verilog from my experience
- Learn whatever your prospective employer uses! ;)

Good luck!

Re:My Advice (1)

snaz555 (903274) | more than 4 years ago | (#28695247)

Xilinx software is licensed by subscription that has to be renewed annually. Even WebPack. It's also single seat, so you can't install it on both a desktop and laptop. The license is tied either to the hard drive or PHY MAC. Even though free, it's not clear whether they will grant you more than one 'free' license, and the shrinkwrap EULA isn't stated in advance. For instance, even though highly implausible they would, there's no guarantee they can't extort payment from you at a later time, gratuitously cancel your license, or simply cease their 'free' WebPack program. I personally chose to avoid Xilinx for my uses, in favor of Altera. Not because I dislike Xilinx or anything, but simply because the last thing I wanted is more licensing complexity to deal with.

Xilinx (5, Interesting)

hjf (703092) | more than 4 years ago | (#28692883)

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.

Re:Xilinx (0)

Anonymous Coward | more than 4 years ago | (#28693271)

As a fellow Brit, have a look here: http://www.digilentinc.com/Products/Catalog.cfm?NavPath=2,400&Cat=10

I got the 3E starter board, downloaded webpack and got it up and running. Like you though, I could use a good book to learn from, so far I've been using various websites.

They ship to the UK, and within about 3 days too! (customs will add on VAT when it gets here, as well as a little something for Royal Mail).

Re:Xilinx (1)

customizedmischief (692916) | more than 4 years ago | (#28694561)

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 have been playing with the Pluto board from fpga4fun. This is great for little proof of concept projects. It is too limited for big projects, but as a hobbyist, I have found that there is a lot of room to play and learn on the cheapest one before I need an upgrade.

Cheap Xilinx development board (2, Informative)

Rythan (1412023) | more than 4 years ago | (#28692905)

I'd suggest Avnet Part # AES-SP3A-EVAL400-G, it's $49, and comes with everything you need for VHDL or Verilog...

I like the Digilent Nexys2 (3, Interesting)

pem (1013437) | more than 4 years ago | (#28692913)


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.

Xilinx Spartan 3AN or Altera Cyclone III (4, Informative)

nweaver (113078) | more than 4 years ago | (#28692937)

Xilinx: http://www.xilinx.com/products/devkits/HW-SPAR3AN-SK-UNI-G.htm [xilinx.com]

Altera: http://www.altera.com/products/devkits/altera/kit-cyc3-starter.html [altera.com]

Both are very mainline FPGAs, both have full devkits, references designs, include the tools, linux support on Xilinx at least (not sure on Altera), and are both at your price point.

Re:Xilinx Spartan 3AN or Altera Cyclone III (1, Insightful)

Anonymous Coward | more than 4 years ago | (#28693107)

I agree, both of these are very good starting points, and have their own pros/cons. (some Altera tools work just fine on linux, I haven't tried everything, though)

If you want linux on board, you'll be better off learning the micro IP first, then moving to micro + OS on board.

The Altera user forums are very helpful, and many of the FAEs hang out on there to answer questions.

Also, I'll point you towards the Cohen book "VHDL Coding Styles and Methodologies" as a good introduction to VHDL construction, learning poor habits from the beginning will cripple your learning - this is a hardware language, not a software language, and as such, instructions can run in parallel.

Re:Xilinx Spartan 3AN or Altera Cyclone III (1)

Compholio (770966) | more than 4 years ago | (#28693803)

Both are very mainline FPGAs, both have full devkits, references designs, include the tools, linux support on Xilinx at least (not sure on Altera), and are both at your price point.

You need a full license from Altera to use their Linux version, if you are at a University you can usually get this license for free.

Virtex ML403 (0)

Anonymous Coward | more than 4 years ago | (#28692985)

This is a good kit, though slightly more expensive than your price point. It's also a full-up computer system. PowerPC processors can be embedded in the fabric and Xilinx has a large library of example code and projects. The development software may be very expensive - not sure, but their is a limited time evaluation version available.

Search on google to find the link to the product page.

General rule (2, Interesting)

Quiet_Desperation (858215) | more than 4 years ago | (#28693021)

VHDL for FPGAs and Verilog for ASICs. This rule applies everywhere except where it doesn't.

Re:General rule (0, Flamebait)

pem (1013437) | more than 4 years ago | (#28693143)

I think you mean: VHDL for (code which will never live anywhere except inside) FPGAs and Verilog for (all other design, including main-line CPUs from Intel and AMD, and also) ASICs.

What I did - and recommend (5, Informative)

TehBlahhh (947819) | more than 4 years ago | (#28693049)

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.


Re:What I did - and recommend (4, Informative)

DeadCatX2 (950953) | more than 4 years ago | (#28693903)

I agree entirely with the parent; go with a Xilinx Spartan 3 board. They're cheap, relatively powerful, and Xilinx offers the ISE WebPack for free. It comes with a ton of tools, which you can use to generate cores for doing things like FIR filters and FFTs, or looking at the low-level implementation of your hardware, or programming devices.

Don't forget to get a JTAG cable. They're very useful for downloading designs into the board. These will cost a little extra, but you might be able to get them with the dev board.

LEARN TO LOVE THE DOCUMENTATION! This is VERY, VERY important. Xilinx has a TON of documentation and application notes that describe everything about their chips, and I cannot stress how important it is to read as much documentation as possible.

The docs for XST (the Xilinx synthesizer that takes HLD code and turns it into netlists) describe the design flow, which is important because you need to know how to constrain your design, and what the inputs are for various stages of the design flow and how they connect (synth, translate, map, place, route, downloading into the Flash memory or directly into the FPGA, etc).

The data sheets for the FPGAs describe the awesome wealth of features, which for Spartan 3-era chips include: dual-port 2k block RAMs, single-cycle 18x18 block multipliers, Digital Clock Managers, Digitally Controlled Impedance, Partial Reconfiguration, and so on. Some other FPGAs (specifically some Virtex models) are even more wild, with on-die "hard processors" surrounded by the FPGA fabric.

In fact, you should go get the data sheets for every part on the Spartan 3 board - the memory chips, the LCD, all of it. If you're going to design with FPGAs, then datasheets should be as precious to you as the One Ring was to Gollum.

You should also try to learn what the FPGA fabric looks like. Common logic blocks, slices, flip flops, interconnect, global clock resources, where the DCMs and BRAMs are, the layout of an I/O pad, and so on.

When it comes to studying, I suggest looking for some tips on coding style for the language you end up choosing. You should also study things like combinatorial and sequential logic, finite state machines, datapath and control. You might even do well to read a book about microprocessor architecture design, because there is a lot of overlap. In fact, some books work together with FPGA dev boards, so you can build your own processor from scratch and add features (make it pipelined, add branch prediction and hazard protection, and so on).

You could also explore this "soft processor" development by using pre-packaged soft cores, like PicoBlaze or MicroBlaze. You can put all kinds of processors together, even asymmetrically, using smaller ones for small tasks and bigger ones for big tasks. This might help if you're stuck in the software design flow mindset.

Re:What I did - and recommend (2, Informative)

kpainter (901021) | more than 4 years ago | (#28694333)

3. Learn the HDL of your choice. Read the books. One warning only: it is NOT a programming language

Agreed. Here is another tip that I resisted to the very end but turns out to be very useful. Only change one variable per process. Think of each process roughly like a D Flip-Flop. You need a reset, a clock, data in with logic and an output. You end up with a lot of processes but the chances of having something synthesizable are a whole lot better.

Some tips on development (0)

Anonymous Coward | more than 4 years ago | (#28693083)

On actual development: never assume any order of two things unless you enforce it. All things happen in a single clock cycle and you can't expect anything to wait for anything else. FPGA's internally work at a much higher rate to simulate at the rate you think you're running which implicitly means that you'll *have* to clock your operations - FPGA's don't do asynchronous (technically they're able but there's no tool that figures it out for you - and you won't want to manually route).

Oh, and good luck on interfacing with software. Software is *slow*.

Re:Some tips on development (1)

DeadCatX2 (950953) | more than 4 years ago | (#28693947)

The software program flow is inherently sequential, and requires lots of belly-rubbing and head-patting in order to work in parallel.

The hardware program flow is the exact opposite. It is inherently parallel, with everything happening all the time. The effort required is to force the parallel world to behave in a sequential manner.

Build your own FPGA board :) (1)

hattig (47930) | more than 4 years ago | (#28693137)

Build/Buy yourself a Minimig (with the ARM SD controller) or FPGAArcade.

At some point you'll want to do decent graphical output as you design your dream 8-bit computer, so these will make a decent base.

VHDL (2, Informative)

skeeto (1138903) | more than 4 years ago | (#28693161)

For VHDL itself, I learned that with GHDL [ghdl.free.fr] (VHDL front-end to gcc, though it hasn't been updated in a year now) and GTKWave [sourceforge.net] for viewing the waves. Throw in make for a build system, and it was all I needed to design and implement (VHDL only, that is) a simple microprocessor.

That's a start anyway.

Don't buy a board and CtoVerilog.com (2, Informative)

fpgaprogrammer (1086859) | more than 4 years ago | (#28693181)

If you're tired of all the VHDL and Verilog nuances, try CtoVerilog.com

Learn how to use core generator and a simulator before you even buy a board. you only need a board when you actually want to have hardware.

DLP Design (1)

Sponge Bath (413667) | more than 4 years ago | (#28693225)

DLP Design (www.dlpdesign.com) has some interesting FPGA modules. Some include a USB port that can be used to program and communicate with the FPGA. This [dlpdesign.com] has a USB port and a Spartan 3E for a reasonable price and includes tutorials. Combined with the free Xilinx tools you can do quite a lot with it.

Super-cheap? CPLD development kits (1)

dissipative_struct (312023) | more than 4 years ago | (#28693249)

A cheaper alternative that's well below your price point would be CPLDs (complex programmable logic devices). Much less capable than an FPGA but also much cheaper. Xilinx makes the CoolRunner line, Altera makes the MAX line, and I'm sure there are plenty of others. There's a $63 Xilinx development kit available from digi-key:

Digilent, ISE, Verilog (0)

Anonymous Coward | more than 4 years ago | (#28693297)

Get a cheap FPGA board from Digilent (like the BASYS), the free ISE Webpack dev environment from Xilinx, and all the Verilog tutorials you can find on the web.

That's the way I did it anyway. You can get everything you need to learn for $100

A suggestion for an excellent book (2, Interesting)

blind biker (1066130) | more than 4 years ago | (#28693331)

Well, since most have already suggested the devkits of their choice (of which I have personally used at least a few), and which you could have come up with a Google search... I thought I'd rather advise on an excellent book (and which excellent cromulance you would not have been able to find with Google that easily): "VHDL Answers to Frequently Asked Questions" by Ben Cohen. Even though it has "FAQ" in the title, this books is actually an excellently structured textbook on VHDL. In fact, it's probably THE best book on VHDL for beginners and advanced beginners.

Check out old Xilinx Spartan-3 boards (2, Informative)

scriber (89211) | more than 4 years ago | (#28693339)

Now that Xilinx has released new chips, the old ones are pretty cheap. A Spartan-3A evaluation board is less than US $200. These have VGA, PS/2, RS-232, a character LCD, a rotary encoder, LEDs, switches, and a bunch of extra connectors. The main problems are that the DDR2 RAM is *difficult* to use without a proprietary core, and the FPGA doesn't have access to the USB link.

Digilent Inc sells Spartan-3E boards for less than US $100. These have an easier-to-use DRAM and provide access to the USB port (though I think the official driver is windows-only, there seem to be solutions for using it on Linux).

Xilinx's ISE runs natively on Linux (RHEL, last time I checked). With a little searching, it was easy to figure out how to get it to work on Ubuntu, including the USB JTAG interface on the eval boards.

I haven't found a great book for learning this stuff. Pedroni's _Circuit Design with VHDL_ is okay, but it's not particularly deep and doesn't cover the FPGA development process at all. I had to study the Xilinx tutorials to get things working.

Writing HDL code superficially seems like normal programming, but it's not. Think of it as a way to translate your already-completed design into a form the computer understands. If you don't do the up-front design, it will be hard to fix through refactoring. The simulators just aren't up to the task. Restrict yourself to a single edge of a single clock, and things will be much easier.

Re:Check out old Xilinx Spartan-3 boards (1)

AKAImBatman (238306) | more than 4 years ago | (#28693563)

Now that Xilinx has released new chips, the old ones are pretty cheap.

The old ones were always cheap. I got my Spartan-3 kit about 5 years ago for $150. That's what the smallest Xilinx kit is selling for now.

As many people have pointed out, FPGAs are so cheap now that there are plenty of other boards for less. My problem with those boards is that you don't often get the comprehensive devkit you get from Xilinx. As a hobbyist getting started with FPGAs, I found the Spartan kit to be incredible at hand-holding you through the basics of getting into hardware design. Diving into logic theory took care of the rest.

The board layouts ended up being far more of a challenge. Without an instructor to guide you, getting the correct solutions for circuit voltages was a bit of a challenge. Not to mention selecting the right parts among the 11 billionty parts available. A little persistence can get you through it, though. I just wish I'd stop forgetting how a transistor works. Drives me nuts having to relearn it every time. (Probably because it still boggles me a bit. It makes perfect sense... and then it doesn't. Grrr.... :-P)

Get a Digilent board with a Xilinx FPGA (2, Interesting)

jdb2 (800046) | more than 4 years ago | (#28693399)

I would recommend a board made by Digilent [digilentinc.com] as they seem to have the greatest selection of add-ons and features plus their boards are high quality from my experience. As for the FPGA, I always recommend Xilinx because of the availability of free development tools, Linux support ( I currently have their WebPACK ISE running under Kubuntu 9.04 ) and the general superiority of their products, especially for projects that involve high speeds, a large number of gates and/or flip-flops eg. a microprocessor and even low power -- Xilinx' weakness has always been their relatively high standby/leakage current compared to other vendors, but they've significantly improved upon that with the Spartan-3A and the just released Spartan 6 chips.

As a Spartan 6 dev board is going to be expensive ( Xilinx' Spartan-6 FPGA SP601 Evaluation Kit is $295 and AFAIK it's the only entry level board currently available for that chip ) right now, I would recommend a Spartan 3A board. Specifically I would recommend Xilinx' Spartan-3A Starter Kit [xilinx.com] as it has the right amount of features for the price ( $189 ) and it's made by Digilent although if you're on a *really* tight budget you can get kits based off of this chip for as low as $49 [xilinx.com]


Mai Advais (-1, Redundant)

Anonymous Coward | more than 4 years ago | (#28693431)


Re:Mai Advais (0)

AKAImBatman (238306) | more than 4 years ago | (#28693701)

My first reaction to the parent post is, "I'll bet he encoded a cool circuit design into the ASCII of his text!!! COOL!"

Then I realized he was posting from a cellphone. Probably the same one he had when he learned HDL "10 YEERS AGO". :-P

Re:Mai Advais (1)

Muad'Dave (255648) | more than 4 years ago | (#28693985)

Nah, he just 1337-ified this [slashdot.org] +4 Informative post.

Re:Mai Advais (1)

AKAImBatman (238306) | more than 4 years ago | (#28694547)

Well, that explains the post. However, that's not 1337, that's LOLCAT; a derivative of texting language, itself a derivative of common IRC abbreviations.

1337-5p34| was developed to make the text hard to read/index and was "cool" for the hip 90's h4X0rz generation. i.e. Back when putting Zs on everything was kewl. :-P

I'd insert some completely random references that make fun of the movie Hackers, but that would be admitting far too much about my knowledge of the 90's computer culture. ;-)

Re:Mai Advais (1)

julesh (229690) | more than 4 years ago | (#28695113)

that's LOLCAT; a derivative of texting language, itself a derivative of common IRC abbreviations

Lolcat didn't derive from text language. AIUI, it sprung up as a grammatical variation of standard english with rather irregular conjugation of verbs, combined with instant messaging / chat room slang, often misspelled for "cute" effect. Certainly, Mark Liberman associated [upenn.edu] it with leet rather than texting.

1337-5p34| was developed to make the text hard to read/index and was "cool" for the hip 90's h4X0rz generation.

Leet is both a method of encoding using alternative characters and a set of slang words; either can be used with or without the other. Many of those slang words have entered the instant messaging slang; words like "pwn", "noob" or "pron" are common with people who would never otherwise use leet.

Here you go (1)

NP-Incomplete (1566707) | more than 4 years ago | (#28693441)

List of FPGA prototyping boards. Xilinx software is free for certain FPGAs. http://www.fpga-faq.com/FPGA_Boards.shtml [fpga-faq.com] For books, the only one I know of with an emphasis on synthesis results that includes both VHDL and Verilog is "HDL Chip Design" by Douglas J. Smith. I highly recommend Verilog over VHDL even though I learned VHDL first. Also Xilinx has obscene amounts of documentation on their websitehttp://www.xilinx.com/support/documentation/ [xilinx.com]. Some of their whitepapers and app notes cover general logic design techniques.

Some tips (0)

Anonymous Coward | more than 4 years ago | (#28693457)

You can purchase a relatively inexpensive board these days (Spartan-3 or an XUPv5). After you've taken the steps to learn the HDL and the concepts, you should try taking a look at a few reference designs online (http://www.xilinx.com/univ/xupv5-lx110t-refdes.htm).

Also, for learning purposes, if you're willing to, there are some high-quality university courses that you can watch online that walk you through the digital design concepts and the FPGA tool flows. Here's one from a pretty well-known digital design course at UC Berkeley: http://webcast.berkeley.edu/course_details.php?seriesid=1906978206

a n00b's FPGA advice (3, Informative)

wangahrah (898109) | more than 4 years ago | (#28693483)

As many have stated, both Xilinx are Altera can be good routes. Note that while they Altera tools support Linux, their freebie Web edition does not, and the full kit is more than you'd want to spend. Any Xilinx starter kit should be fine for tooling around. I'm not sure your experience level, so I'll go with the basics...

I'm a young n00b in the FPGA world (two years design experience out of college now), so my experiences are pretty recent. I've got an EE degree, and would say first of all, get a firm grasp of logic design. Do you know what a flip flop actually is? Are you familiar with things like setup and hold time? If not, start out with a lot of reading. Horowitz and Hill's "The Art of Electronics" is a good standard...there's a lot of analog stuff that's "less relevant" to you, but there's a good section on digital design that's a great start.

One of my young programmer colleagues was looking over some of my code, and seemed to think it was pretty easy...the syntax seemed pretty straightforward, he liked the idea of combinatorial logic being so easy to implement, etc. He started tinkering himself, and VERY quickly realized that it was much more complex than he thought when issues of timing were thrown in. A fundamental knowledge of how signals are propagating through the device is key. It's not just PROGRAMMING, you're programming the actual hardware (or making fancy lookup tables, whatever. Get off my back!).

As designs get more complicated, you'll need to learn how to use some tools to analyze timings. Altera has Timequest, not sure what Xilinx uses. In college, I managed to get away with the bare minimum of analysis, but I consider this to be a flaw in my education...to do things right, you should do proper timing analysis.

I have an Altera starter kit I dink around with myself when I'm not at work, and it's definitely worth the time to learn the basics if you're an eternal tinkerer. Finally, the best advice I can give you...don't forget to use VIM as your editor, or you're just setting yourself up for failure.

First things first (0)

Anonymous Coward | more than 4 years ago | (#28693567)

Step 1 Forget everything you know about programming. Programmable logic and FPGA design deals with programming of events that all happen in parallel. VHDL code does not execute in the order of the code statements, it compiles into a large logic array that executes at the speed of the gate propagation.
Logic design does not execute like standard programs. Everything in a process occurs at once unless there is a state machine present. If a state machine, present, it all happens on the machine clock. Code should be written with this in mind. Failing to do so will result in unneeded state machines forcing the logic to execute sequentially.
Step 2: Find something else to do. Designing with VHDL is more of a art form than programming. I deeply respect anyone who can do it well. I have been designing analog and digital circuits for 30 years and VHDL design is stillone of the most challanging tasks I have to do.

a few thoughts (0)

Anonymous Coward | more than 4 years ago | (#28693623)

Before you even bother buying a board, learn the simulator and learn the synthesizer. Understand the difference between pre- and post-route simulations. Look at the logic diffferent coding constructs give you. Even though you'll be tempted to just synthesize and see if it runs, simulation is important. You get complete control. Write unit tests, make your testbench self checking, and you can run it after every change. Writing models to simulate things you'll be hooking up to is tedious, but also important.

Altera's FPGA software (1)

ronaldg (718122) | more than 4 years ago | (#28693695)

Another FPGA manufacturer is Altera. Their software is called" Quartus II" and is available for free on their website.

Re:Altera's FPGA software (1)

ccvqc (307904) | more than 4 years ago | (#28694075)

Quartus is available for SUSE and RedHat -- not sure about other distros. (I used the Windows version in the courses I teach.)
My students use the DE1 prototyping kit from Altera -- actually it's made by Terasic in Taiwan. $150 buys you a board with a good-sized set of I/Os, three memory chips, etc.
As I've said here before, I find Quartus (Altera) easier to work with than ISE (Xilinx). Students can drill down in the schematics and see the gate-level structures, which I never figured out how to do using ISE. I'm sure you can do it, it's just that I found it easier when using Quartus.

Re:Altera's FPGA software (2, Interesting)

julesh (229690) | more than 4 years ago | (#28694895)

Yep. As a newbie a couple of years back I played around with both Altera and Xilinx's software, and found Altera's much more friendly, so I'm now an Altera-all-the-way kind of guy.

That said, Altera development boards can be a bit pricier than their Xilinx equivalents, mainly because they're harder to find (I don't know why, but perhaps Altera attracts a more advanced designer who doesn't need starter kits, etc, while Xilinx tends to attract the newbies?). That said, this board [digikey.co.uk] for around half the poster's budget limit boasts a last-gen (65nm) FPGA with about 20K logic elements, which will implement moderately complex designs, including a wide variety of microprocessor designs (the smallest I've seen uses less than 300LEs, so theoretically you could get about 70 of them on there...!), many of which can be run at ~50MHz on this hardware.

link (2, Informative)

rhythmx (744978) | more than 4 years ago | (#28693741)

This is a great site with a good bit of introductory information. I implemented their LED flasher tutorials when I was playing with my Xylinx Spartan board. fpga4fun.com [fpga4fun.com]

HDL Chip Design (1)

imgod2u (812837) | more than 4 years ago | (#28693743)

As others have said, all the major FPGA vendors provide cheap starter kits and software to go along. They're a great way to start.

What is essential, though is to understand the concepts of digital design. It's out of print and still expensive (even used) but get yourself a copy of "HDL Chip Design" by Douglas Smith. It is still hands-down the best book on HDL chip design (with every example given in both VHDL and Verilog).

The important thing to realize is that the language isn't important. You have to start with visualizing the gates, bits and timing windows; then move on to figuring out how to describe those circuits in a language. The Smith book guides you through this learning process.

Spartan-3 and Virtex5 (0)

Anonymous Coward | more than 4 years ago | (#28693777)

The Spartan 3 is a good starter board. This was used in my VHDL class. A simple RISC processor was implemented on this board. The virtex5 board was used in my second Computer Design class. A 8-bit MIPS arch processor was implemented on this with all the normal features, ram, PC, interrupts, etc. The virtex5 board is not cheap however.

I second the suggestions to learn good digital design first. Learn and understand state machines as well as well.

Xilinx WebPack ISE is the software to use with these boards that I mentioned. Along with this, Modelsim Xilinx edition works good as well. Both of these tools are free and available from Xilinx.com

digilent board + Xilinx (0)

Anonymous Coward | more than 4 years ago | (#28693865)

Get a board from http://www.digilentinc.com/ [digilentinc.com] and use Xilinx WebPack software (Free as in beer) They have a lot of onboard hardware such as RAM (usually SRAM), buttons/switches/LCDs, etc. They cost about $60 USD to $2k

NetFPGA? (1)

JohnMoD (1210454) | more than 4 years ago | (#28693911)

has anyone experience with NetFPGA? http://netfpga.org/ [netfpga.org] The NetFPGA is: a line-rate, flexible, and open platform for research, and classroom experimentation. About 1,000 NetFPGA systems have been deployed at over 120 institutions in over 15 countries around the world. As detailed in the specifications, the NetFPGA is a PCI card that contains a large Xilinx FPGA, 4 Gigabit Ethernet ports, Static RAM (SRAM), Double-Date Rate (DDR2) Dynamic RAM (DRAM). The card design is open-source and the hardware is made available at very lost through donations of gifts and Silicon chips by sponsors of the NetFPGA project. The NetFPGA enables researchers and students to build working prototypes of high-speed, hardware-accelerated networking systems. The NetFPGA has been used in the teachers in the classroom to hgelp students learn how to build Gigabit Ethernet (GigE) switches and Internet Protocol (IP) routers. It has also been used by researchers to prototype new modules that use hardware rather than software to forward packets.

Tips from someone who's done this before (0)

Anonymous Coward | more than 4 years ago | (#28693949)

The Xilinx starter kits are cheap. If you want something with a few more peripherals, the Altera DE2 or DE2-70 kits have more extras than you can shake a stick at.

Both Altera and Xilinx offer free versions of their tools.

VHDL or Verilog doesn't matter, pick one and learn the basics.

You should expect to have to know something about interfacing digital hardware to get anywhere. Having an oscilloscope or logic analyzer handy will save you time debugging when you try to interface to external chips.

Check out Avalda's F# to FPGA compiler (1)

fpgasafari (1407371) | more than 4 years ago | (#28693955)

It will enable you to write real code for an FPGA using a subset of normal F# with some parallel programming semantics. You can download it here [avalda.com]. That is, you can write normal F# code and calculate some result as a regular F# program on your pc, then compile the code for the FPGA and see the same output on an FPGA. It's ideal for a software programmer like yourself who wants to get started with serious FPGA programming. There are many good books on verilog and VHDL. For VHDL one of the best is Peter Ashenden's "The Designer's Guide to VHDL". For verilog a good book is Vranesic and Brown's "Fundamentals of Digital Logic with Verilog Design" (they also have a similar book for VHDL).

Xess [xess.com] has a good Xilinx-based started board and great tutorials. As other's have mentioned, Digilent [digilentinc.com] also has some good starter boards. The company was started by a couple of professors from Washington State University. A course that one of them teaches (Clint Cole) has some excellent tutorials on FPGAs. Make sure you get a board with a VGA interface and check out some of the classic arcade game projects implemented on an FPGA (eg, fpgaarcade.com [fpgaarcade.com]). Enjoy!

Recommendations (4, Informative)

Ditiris (689306) | more than 4 years ago | (#28694025)

I write FPGA code for a living, more in VHDL than Verilog, and more for Xilinx than Altera.

I would actually recommend that you don't buy a board at first. You can pick one out so you can decide on a vendor's chip, that's fine, but simulate everything, because that's what HDL design is all about. Both vendors offer a free version of their toolset and there's a free simulator with each of those. Or you can download ModelSim Starter edition. I wouldn't call either one Linux friendly.

As far as the board goes, I would recommend one of Altera's Nios II Embedded Dev Kits [altera.com]. I feel that although Altera has a slightly steeper learning curve than Xilinx, they also have a nicer overall package than what Xilinx is currently offering. I'm speaking from the point of embedding a soft processor though, if that doesn't interest you, then either of the cheap Altera Cyclone or Xilinx Spartan kits will get the job done.

This is the only book you need on VHDL: The Designer's Guide to VHDL by Peter Ashenden [amazon.com].

I haven't found a Verilog book of similar quality.

Buy several books on Verification and testbench writing. That's where the real work comes in, and it's significantly more work than whatever circuit design you're doing. Spend the time to learn how to write self-checking testbenches.

Read over the Synthesis guides for whatever vendor's board you choose. Understand how the constructs you use affect synthesis. There's a wealth of information in the Xilinx and Altera online documentation. There's also a lot of really of good snippets of code which are themselves useful but also typically contrast less and more effective constructs for synthesis.

And finally, I will echo the caution that HDL is not a programming language, it is a design language. If you do not have a fundamental grasp of circuits, logic design, and computer architecture, I would recommend you pursue those topics first.

Verilog (0)

SkOink (212592) | more than 4 years ago | (#28694047)

My advice would be to learn Verilog first, particularly if you're coming from a computer science background. I find Verilog to be much cleaner and easier to read / understand. On the hobbyist (or even the small-scale professional) level, Verilog will probably be easier than VHDL.

I find that VHDL scales to extremely large designs better than Verilog (much better generate statements, pre-processing macros, and paramterization). VHDL is also better if you're really strict on version control and module heirarchy. But if you're working on a one-man project, you probably don't need or want VHDL's unnecessary complexity.

Ultimately, both languages do the same thing and in basically the same way. When you get down to the actual nitty gritty where you're writing the HDL, they're pretty similar. They differ mostly in how they handle passing arguments to- and from- modules, and what kind of compile-time constructs they support.

Last but not least, I would also recommend starting off with Xilinx's Webpack and a Spartan-3 starter board. Get something with a digital-analog converter and an analog-digital converter too, some LEDs and pushbuttons, a UART transceiver, and a ton of GPIO headers. GPIO is where FPGAs really shine.

Altera Cyclone 2 Starter Kit / Terasic DE-1 (2, Informative)

hpa (7948) | more than 4 years ago | (#28694051)

It is a little old, but the price is excellent... $150 for the general public, and $120 for students. Even though there are cheaper boards on the market, I have found that the combination of features at a low price has been pretty unbeatable, and it is also available from a lot of distributors.

Now, in the interest of full disclosure, I have been focused heavily on retrocomputing projects... they're a lot of fun.

try ... (1)

dominic.laporte (306430) | more than 4 years ago | (#28694469)

I am not affiliated with them. Just something i was my self interested in for a while just like you.

these guys at www.picocomputing" [picocomputing.com] they have nice little cards.

One thing is that the tools are still not available for free if you want to do very advanced stuff.

OKAD (1)

samjam (256347) | more than 4 years ago | (#28694501)

Use OKAD, it's commercial quality and will fit on a floppy disk.

Seriously: http://www.colorforth.com/vlsi.html [colorforth.com]

Don't let the old-school lack of whizz-bang on the website fool you, this real stuff

http://www.ultratechnology.com/color4th.html [ultratechnology.com]

You're probably not smart enough for it.

http://www.c2.com/cgi/wiki?ColorForth [c2.com]

I'm not. I can't even find a download link or a sales page.

http://modest-proposals.com/colorForth.htm [modest-proposals.com]


Digilent (0)

Anonymous Coward | more than 4 years ago | (#28694549)

Digilent (http://www.digilent.us) makes good development kits. They tend to be pretty inexpensive and a good value. If you have the cash their XUP board has a good FPGA chip and a lot of great peripherals.

a solid programming background only hurts you (2, Insightful)

goffster (1104287) | more than 4 years ago | (#28694607)

Forget what you know about programming, FPGA's are about thinking in a compleltely different mind set

Extraordinarily useful resource (1)

svtdragon (917476) | more than 4 years ago | (#28694777)

A former professor of mine, Dr. Ed Doering, set up this page here for our intro logic/FPGA course: PLD Oasis [rose-hulman.edu]. The school it's hosted off of, my alma mater, is the school that produced one of the co-founders of Xilinx.

In any case, Dr. Doering has lots of video tutorials about how to use Xilinx software, Spartan boards, Nexys boards, and all other manner of Progammable Logic Devices (PLDs), as well as some clever software resources. He includes things about visual schematic design, which may be beneficial for being able to drop logic circuits onto FPGAs without Verilog as an intermediary, but it's also useful in that you can look at the intermediate Verilog files to get a handle on how Xilinx renders schematics to code.

OpenCPI, http://opencpi.org/ (1)

JohnMoD (1210454) | more than 4 years ago | (#28695421)

also something to check out, http://opencpi.org/ [opencpi.org], it will be released and OSS in a few weeks The Open Component Portability Infrastructure (OpenCPI) is a real-time embedded (RTE) middleware solution that simplifies programming of heterogeneous processing applications requiring a mix of field-programmable gate arrays (FPGA), general-purpose processors (GPP), digital signal processors (DSP), and high-speed switch fabrics. The âoemixâ can be over a lifecycle (technology insertion) as well as within a single implementation (to meet SWAP constraints). CPI improves code portability, interoperability, and performance in FPGA and DSP-based environments by providing well-defined waveform component APIs (application programming interfaces) with a set of infrastructure blocks that act as a hardware abstraction layer (HAL). CPI is also appropriate for the incorporation of GPU and multicore technologies. CPI is uniquely positioned to meet the goals of S3 since in some sense component-based systems are computer-scienceâ(TM)s answer to dealing with âoeknowledge captureâ and lock-up of intellectual property (IP). sign up here: http://lists.opencpi.org/listinfo.cgi/opencpi_announce-opencpi.org [opencpi.org]

Focus on HDL for SYNTHESIS (0)

Anonymous Coward | more than 4 years ago | (#28695445)

Both Verilog and VHDL can be used as either a modeling language, or for synthesis. You need to learn synthesis. There are some texts that treat the language from this view and I strongly recommend you find one. Verilog is a little easier to learn.

Load More Comments
Slashdot Account

Need an Account?

Forgot your password?

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>
Sign up for Slashdot Newsletters
Create a Slashdot Account