Suggestions For Learning FPGA Development At Home? 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."
advice (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!
Re:advice (Score:4, Funny)
Xilinx WebPACK runs on linux natively too.
Re: (Score:3, Interesting)
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: (Score:2, Informative)
Other way around, at least with version 11.1, WebPack only supports 32-bit Windows but supports 32 and 64 bit Linux (though Xilinx only supports RHEL and SUSE Enterprise). I actually just purchased a USB Dongle node locked license only to find out after the fact that they only support the USB Dongle on Windows.
Re: (Score:2)
It runs fine on ubuntu, perhaps 64-bit linux is ok now, haven't tried in a little while.
Re:advice (Score:5, Informative)
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.
-gb
Re: (Score:3, Interesting)
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: (Score:2, Insightful)
On the plus side, at least this time they can dual boot and/or use virtualization. No need for two boxes.
Re: (Score:2)
The sysadmins at all companies I worked for, didn't like virtualization. They all let me choose either a Windows or a Linux installation, apparently because dualbooting makes updating difficult. I.e. with Linux' uptime, it is possible that the Windows installation will not get booted in months to come.
Re: (Score:3, Interesting)
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 (Score:4, Insightful)
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: (Score:2)
Re: (Score:2, Interesting)
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 =.
Re: (Score:2)
VHDL/Verilog is not a programming language! It's a hardware description language.
While coding in a HDL is strictly not programming, it may as well be! The simulators allow you to functionally verify the design on your own PC, the state machines produced in HDL look identical to the version you might have written in another language ... The only difference is that overall the description is that for parallel processing. (In fact, there are translators that take C code and convert it to run on FPGA's ...
... would you deny that ADA is not a pr
VHDL looks very much like a subset of ADA
Re: (Score:2)
The difference is one of purpose. He doesn't just want to learn how to write a program in HDL (although it is helpful for verifying designs, certainly), he wants to learn how to design on an FPGA. This means that he needs to be focusing on hardware implementations of logic and what that requires him to do in Verilog/VHDL, rather than using the same logic he would use in another language and use the different syntax.
Sure, it may be possible to take a program in C and turn it into hardware, but it will nev
Re:advice (Score:4, Informative)
Re: (Score:1, Insightful)
I was going to say the same thing, so good on you.
Re: (Score:2, Interesting)
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: (Score:2)
Correct, but the only time you should be creating non-implementable HDL code is to produce test cases for your implementable HDL cases, or placeholder modules that will be replaced with implementable code.
Re:advice (Score:4, Informative)
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: (Score:1)
What does this have to do with learning how to compete in the Female Pro Golfer's Association?
My Advice (Score:5, Informative)
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 (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)
Re:My Advice (Score:4, Insightful)
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 (Score:3, Interesting)
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 in
Re:My Advice (Score:4, Interesting)
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 (Score:5, Interesting)
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: (Score:2)
Seconded - the Nexys2 kicks ass. Best bargain in hardware, anywhere.
There are a couple of decent books [lbebooks.com] by Richard Haskell that are written especially for users of the Nexys2/Basys boards.
Re: (Score:2, Informative)
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 bo
Re: (Score:2)
Re: (Score:2, Informative)
This is probably a bit of a troll, but I'll bite anyway.
1) Until version 11.1 (earlier this year), Xilinx software was never protected by ANYTHING. (Well, you had to enter a serial number, but the FAE would probably give you one).
2) Xilinx software never expires -- the 1 year gets you updates, but you can still keep using it after that.
3) At version 11.1, Xilinx started using FlexLM licensing. While I am not a fan, it has not proved all that difficult. Now, I have to admit that I haven't tried licensing
Re: (Score:3, Insightful)
He wasn't trolling, and Xilinx's move to FlexLM is a big deal. It's why I went with them over Altera in the first place. That reason is now gone.
With product activation, you have no idea if you'll be able to recover your toolchain several years from now when you need to bring a project out of cold storage. It is not OK to rely on critical software that runs only at the pleasure of its vendor, and I'm just flabbergasted, gobsmacked, and astonished that everybody in the entire technology industry seems to
Xilinx (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.
Cheap Xilinx development board (Score:2, Informative)
I like the Digilent Nexys2 (Score:3, Interesting)
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.
Re: (Score:2)
Re: (Score:2)
But this is how I communicate with FPGA - I upload custom firmware to FX2 chip (that overwrites Digilent one) and talk to it. This allows you to implement different endpoi
Re: (Score:2)
I don't think the 8-bit path between the CY68013 and FPGA is a bottleneck, really. With an IFCLK of 48 MHz, you'd have to be able to shove 48 MBytes/sec through the endpoint to be bus-width limited, and that just isn't going to happen over USB 2.0. You'll have to spin on FIFO-full either way.
In practice about 32 MBytes/sec is about the best you can count on achieving, although I understand that the GNU Radio guys are pushing 40 MB/sec with some 8051 bus-mastering hacks.
Seems that most of the speed-constra
Re: (Score:2)
True, but I was not able to get the FX2's pipe to operate reliably on every edge of IFCLK. This might have to do with the fact that my data transfer FPGA logic is clocked off IFCLK as well, but might be a limitation of
Re: (Score:2)
True, but I was not able to get the FX2's pipe to operate reliably on every edge of IFCLK. This might have to do with the fact that my data transfer FPGA logic is clocked off IFCLK as well, but might be a limitation of the FX2 or board design.
Clocking the FPGA from the 48 MHz IFCLK is the right thing to do IMHO. That's how my setup's working. Email me offline if you want a code dump; no guarantees that it's optimal or even "correct", but I've run it for several days at a time without any problems.
You aren
Re: (Score:2)
Ahhh, this is good advice ! I am using libusb, but I suspect it has a similar problem. I was doing bulk writes (from the point of view of FX2), I think I hit the limit around 16-20 MB/sec.
Re: (Score:2)
Of course, the problem is that I don't know of anyone who can comfortably solder BGA chips.
People have been doing it with toaster ovens (http://www.instructables.com/id/Toaster-Oven-Reflow-Soldering-BGA/ [instructables.com] and http://www.sparkfun.com/commerce/tutorial_info.php?tutorials_id=60&page= [sparkfun.com]). I haven't tried that yet. I have soldered QFNs by laying down some solder paste and blasting the other side of the board with a heat gun, but it's a high-pucker-factor operation. I plan to try the toaster oven hack the nex
Re: (Score:2)
Ahh, interesting suggestion ! I'll take a look at Andy's code when I have a chance. Yes, my code is available if anyone wants it - it is really quite simple, initialize registers and then wait for data. It might be bet
Re: (Score:2)
Thanks for the info!
The lack of Linux support for the Nexys2 was the main thing keeping me from buying one... I think I'm going to order one in the next week. :)
Xilinx Spartan 3AN or Altera Cyclone III (Score:5, Informative)
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: (Score:1, Insightful)
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, learnin
Re: (Score:2)
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.
General rule (Score:3, Interesting)
Re: (Score:2)
Untrue, the only time I ever worked on an ASIC was a VHDL project.
Re: (Score:2)
No, everyone else was using VHDL too. It was an internship.
What I did - and recommend (Score:5, Informative)
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.
Re:What I did - and recommend (Score:5, Informative)
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: (Score:3, Informative)
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.
Re: (Score:2)
I broke my own teeth on this board
:-P Wow, that's pretty hardcore. I've never even broken a bone
Build your own FPGA board :) (Score:1)
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 (Score:3, Informative)
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 (Score:3, Informative)
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.
Re:Don't buy a board and CtoVerilog.com (Score:5, Informative)
For a newbie, CtoVerilog.com is the mother of all bad ideas. Verilog is not isomorphic to C. Being able to represent a few trivial C loops as Verilog code will not help you learn what's going on under the hood, and it will not help you get the fundamental aspects of your design up and running.
Also, much of what's done in HDL is gluing other chips together. If you try to use CtoVerilog to make a high-speed USB chip talk to an ADC, the results will be amusing at best. If you find yourself wanting to use C in an HDL design, consider either falling back to a conventional microcontroller or using a software core to run it.
DLP Design (Score:2)
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 (Score:1)
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:
http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=122-1573-ND
A suggestion for an excellent book (Score:3, Interesting)
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.
Re: (Score:2)
If Ben Cohen is VHDLCohen, then +2. Until about half a decade ago I had done chip design and verification for almost two decades and VHDLCohen was one of the few people on the planet I'd run into who understood the language better than myself.
I'm not normally one to "do the yank" and claim the high ground. But this is one of those cases where I believe I have (or rather had) justification
Re: (Score:2)
If Ben Cohen is VHDLCohen, then +2. Until about half a decade ago I had done chip design and verification for almost two decades and VHDLCohen was one of the few people on the planet I'd run into who understood the language better than myself.
Yep, that's him :o)
By the way, from the way you describe yourself, you seem to be an author/researcher in VHDL yourself?
Check out old Xilinx Spartan-3 boards (Score:2, Informative)
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
Re: (Score:2)
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-holdin
Get a Digilent board with a Xilinx FPGA (Score:3, Interesting)
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]
jdb2
Here you go (Score:1)
a n00b's FPGA advice (Score:3, Informative)
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.
link (Score:3, Informative)
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 (Score:2)
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
NetFPGA? (Score:1)
Check out Avalda's F# to FPGA compiler (Score:1)
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 Ashende
Recommendations (Score:4, Informative)
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.
Peter Ashenden's site... (Score:2)
Altera Cyclone 2 Starter Kit / Terasic DE-1 (Score:3, Informative)
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.
OKAD (Score:2)
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]
Sam
a solid programming background only hurts you (Score:3, Insightful)
Forget what you know about programming, FPGA's are about thinking in a compleltely different mind set
FPGA programming is very, very different (Score:2, Insightful)
Forware (Score:2)
There's a Spanish startup, Forware [forware.es], that develops FPGA development tools and has a growing user community. Not sure about the conditions, though.
FPGA4Fun and KNJN Altera boards under $50 (Score:2)
Read through some of the tutorials at http://www.fpga4fun.com/ [fpga4fun.com] and then head over to the sister site http://www.knjn.com/ [knjn.com] to find some FPGA boards. You can get a very good introduction to FPGA concepts for less than $50. The Pluto boards with Altera Cyclone FPGAs are perfect for getting your feet wet.
Altera free tools are really good. (Score:2)
Have a project in mind (Score:2)
Re: (Score:2)
Opal Kelly modules are clean, well-documented designs, but because of their relatively high cost they're better thought of as embeddable modules rather than as learning platforms. For education and basic home tinkering, you want a cheap well-documented board with lots of peripherals to play with.
I think the best overall learning platform right now is the Nexys2 [digilentinc.com]. You can teach yourself everything from USB interfacing to VHDL/Verilog design for $129, and it's got a lot of switches, lights, ports, and outboa
Re: (Score:2)
I'll throw in another vote for the Nexys2. It's brilliant value, and you can program it via USB! Don't underestimate the value of that. The USB programming cable for the ML501 board I'm working with at the moment costs more than the Nexys2 board.
The toolchain is free-as-in-beer, but I've only run it on Windows. I think there is a linux version of ISE, but I don't know about the diligent programming software.
Re:What MORON keeps tagging articles as HARDHACK? (Score:5, Informative)
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.
Re: (Score:2)
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 co
Re:What MORON keeps tagging articles as HARDHACK? (Score:4, Insightful)
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: (Score:2)
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
Re:What MORON keeps tagging articles as HARDHACK? (Score:4, Insightful)
The AC's comments are valid and noteworthy nonetheless. Just because someone understands OOP and knows 5 software languages doesn't mean hardware hacking will be easy. The skills are related, but proficiency in one does not necessarily imply aptitude for the other.
I recommend two things. First, give up the notion that FPGA development as a hobby can be done for the price you're looking for. Good development boards are a little pricy, but you will frustrate yourself with no end in sight by using a barebones development kit. The best cheap dev kit I've seen yet is the Xilinx Spartan-6 SP601 kit. It includes everything you need to get started, including Xilinx ISE design software. That should set you back about $300. The Spartan-6 is fairly anemic in features and power compared to most other new FPGA's so a careful consideration of your goals should take place before you make a purchase.
Two, get a good FPGA development book. I highly recommend "Designing with FPGAs and CPLDs". It's a really useful primer on programmable logic hardware to those who already are technically literate.
http://books.google.com/books?id=enQq7m800xYC&dq=embedded+FPGA [google.com]
Re: (Score:3, Informative)
Spartan 6 is anaemic? What are you trying to build? I am working with a Raggedstone Spartan IIIe card (the mini-can); it's US$150 and I'm developing PCI hardware with it. That's hardly anaemic. There's lots of fun to be had with smaller devices as well.
Re: (Score:2)
When hobbyists get interested in FPGA development, the first thing they turn to are Altera's and Xilinx's websites and look at top of the line FPGA's like the Virtex 6 LXT. The Spartan 6 is definitely a lightweight compared to the Virtex features.
A newly interested hobbyist should not be under the impression that they can spend $250 and it will have the same features.
Re: (Score:2)
I disagree. I think a hobbyiest can take a look at the simpler, smaller, cheaper devices and have lots of fun without jumping to the top-end parts. Hell, they could have a ton of fun with CPLDs too, although they'd become pretty limiting in a hurry.
Yes, Spartan6 is a lightweight compared to the Virtex line, but again... we're talking about getting started in FPGAs. I think throwing a ton of money at a dev board that will be severely underutilized for months, if not years, is a fast way to turn people off of
Re: (Score:2)
An FPGA load is something very different from software... Exactly what an FPGA bitstream should be defined as is still the subject of much controversy and debate due to being in such a grey area.
As I see it, software is machine-executable code that runs on a processor.
An FPGA is a whole different animal - FPGA code doesn't execute, it effectively defines the internal wiring of the FPGA. It is most definately not, in my opinion, "software".
It isn't exactly hardware as it is reconfigurable and defined by so
Re: (Score:2)
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: (Score:2)
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.
Re: (Score:2)
Re: (Score:2)
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: (Score:2)
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 generat
Re: (Score:3, Interesting)
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
Re: (Score:2, Interesting)
I especially like Altera's "Nios Embedded Evaluation Kit" (aka the NEEK). It has its own TFT, sound codec, analog video input, ethernet and lots more. It also has a thriving uClinux community and they're working on including MMU support. Plus, you don't need a programming adapter for it - just put your hardware design on an SD card, insert into NEEK, power up, and off you go. Ok, it costs $449, but you can do far more than push a few buttons and let LEDs light up.