Suggestions For Learning FPGA Development At Home?
Doug writes "I've recently been inspired to take up amateur electronics, specifically with FPGAs. I have an understanding of the basics, plus a solid programming background. From my research so far I've concluded that I should start with a simple FPGA development board and a couple of books on Verilog and/or VHDL and go from there. I found this Ask Slashdot discussion on Verilog vs VHDL very useful, but it focuses more on the development language rather than hardware. I'd be very interested in hearing peoples' recommendations for an entry-level kit that is simple, flexible, and affordable (sub-£200), and preferably Linux-friendly, and indeed any other wise words that experienced FPGA developers (professional or amateur) might have for a novice just starting out in the world of circuit design."
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!
Hardware: I highly recommend the Spartan Starter Kits. They're dirt cheap, well supported by the industry, and come with a good toolkit. There's not much more you need to know other than you'll probably want a serial cable in addition to the JTAG cable the kit ships with.
I'll grant you that the fabric isn't very large by today's standards, but it's still enough space to learn about the hardware. By the time you outgrow the fabric, you should have a good idea of what size hardware you want. In fact, your next board may even be a custom design based on a bus like wishbone. ;-)
Software: The Xilinx stuff (pronounced "Zy-Links") comes with a full toolkit for VHDL/Verilog development including an IDE, place and route tools, and software to reconfigure the FPGA. It's all quite slick and easy for a beginner to use.
Language: The most common route taken by new hardware developers is to learn Verilog. They do this because it's similar to C and that makes them comfortable. THIS IS A BAD IDEA. I can't count how many hardware designers swear up a storm when they see a Verilog project with loops and other software constructs stuck into them. See, the comfort and familarity of C makes new hardware developers forget that the hardware is a fixed layout. There is no for loops or control logic as you think of it. It all ends up flattening to hardware. If you write regular software constructs, you'll end up with the least efficient circuit possible.
From this perspective, learning VHDL is better because you won't have that comfort and familiarity that might tempt you into creating poor circuits.
I actually recommend doing some JHDL code for a while. It's lower level than VHDL, but that's a good thing. You have to think about every wire connection and how it all links up. When you're done, you can easily step through your circuit and see how it plays out in hardware. Even better, you learn how to properly use software constructs like loops to create a large number of static hardware objects. This will make your code better without falling in the trap of trying to write software.
That's my 2 cents anyway. Good luck! :-)
Javascript + Nintendo DSi = DSiCade
Use Xilinx's FPGA Starter Kit. I bought the old version 5 years ago, and it also came with a CPLD dev kit. The dev tools run on linux too. It was something like $99 IIRC. It's made by Digilent. Last time I checked they had a better board for an extra $50 with an LCD display and 64MB SDRAM.
Otherwise, check fpga4fun.com . They use a tiny FPGA board, which reminds me of the Arduino: it has everything you need and nothing more.
I'd suggest Avnet Part # AES-SP3A-EVAL400-G, it's $49, and comes with everything you need for VHDL or Verilog...
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: http://www.xilinx.com/products/devkits/HW-SPAR3AN-SK-UNI-G.htm
Altera: http://www.altera.com/products/devkits/altera/kit-cyc3-starter.html
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.
Test your net with Netalyzr
VHDL for FPGAs and Verilog for ASICs. This rule applies everywhere except where it doesn't.
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.
1. Get a (the) Spartan-3 starter board. It's got the 500 variant of the Spartan-3 on it which is big enough to implement even small processors. The board also has some very limited VGA output, and a heap of other things that makes it fun to work with (Serial I/F, etc). The manual for this board is one of the better ones for beginners, as well. I broke my own teeth on this board. It's 149 US schmucks from digilent.
2. Get Xilinx's free tool suite; its nicely compatible with that board. Free download from the web. Heck, you can even download and play with it without the / any board (but then you don't, of course, get the blinkenlights.) You can however try out and simulate designs before going to FPGA, and thus figure out why the (redacted) it doesn't (redacted) work. Simulations are your main way of verifying your design once you're past 20-odd gates.
3. Learn the HDL of your choice. Read the books. One warning only: it is NOT a programming language - the entire model in your head about how software works needs to be replaced. Case statements are king. Productivity with HDL's are generally way lower than software; don't be surprised by this.
4. Do points 1 through 3 in reverse order. Having a shiny 150 schmucker board won't help anything if you still have to spend two weeks grokking HDL's.
HTH.
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.
For VHDL itself, I learned that with GHDL (VHDL front-end to gcc, though it hasn't been updated in a year now) and GTKWave 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.
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 (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 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.
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
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.
"The agriculture ministry is not in charge of Gundam" - Japanese ministry official.
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.
I would recommend a board made by Digilent 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 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
jdb2
List of FPGA prototyping boards. Xilinx software is free for certain FPGAs. http://www.fpga-faq.com/FPGA_Boards.shtml 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/. Some of their whitepapers and app notes cover general logic design techniques.
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.
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.
Interested in open source engine management for your Subaru?
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
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.
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)
Come play free flash games on Kongregate!
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).
has anyone experience with NetFPGA? http://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.
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.
:(){
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. 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 has a good Xilinx-based started board and great tutorials. As other's have mentioned, Digilent 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). Enjoy!
Nah, he just 1337-ified this +4 Informative post.
Tiller's Rule: Never use a word in written form that you've only heard and never read. You will end up looking foolish.
Fundamentals of Logic Design - Roth. Designed for a self-paced course taught at the University of Texas at Austin, so actually geared toward your needs. http://www.amazon.com/Fundamentals-Logic-Design-C-Roth/dp/0495073083/ref=sr_1_1?ie=UTF8&s=books&qid=1247594924&sr=8-1
--"insert clever quote here"
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. 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.
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.
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.
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.
Disclaimer:
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" 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.
Use OKAD, it's commercial quality and will fit on a floppy disk.
Seriously: http://www.colorforth.com/vlsi.html
Don't let the old-school lack of whizz-bang on the website fool you, this real stuff
http://www.ultratechnology.com/color4th.html
You're probably not smart enough for it.
http://www.c2.com/cgi/wiki?ColorForth
I'm not. I can't even find a download link or a sales page.
http://modest-proposals.com/colorForth.htm
Sam
blog.sam.liddicott.com
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. ;-)
Javascript + Nintendo DSi = DSiCade
Forget what you know about programming, FPGA's are about thinking in a compleltely different mind set
A former professor of mine, Dr. Ed Doering, set up this page here for our intro logic/FPGA course: PLD Oasis. 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.
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 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.
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 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.
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?
"I like to lick butts!" by MobileTatsu-NJG (#32700246) (Score:5, Informative)
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
MP3 Search Engine
also something to check out, http://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
This really is not a task for programmers. It is a task for an engineer that has done both logic and software design. I've been programming FPGA's since Xilinx came out with their first chips. At the time, it was all schematic capture. Place and route never completed on its own, it always required user editing to finish. FPGA design techniques depend on your constraints. For some projects, it is much cheaper to buy a very large FPGA and not worry about space optimization. If you are building thousands of the same device, then space optimization is critical. For other projects, logic timing is everything. Every chip has it's own constraints as well, especially if speed is an issue. When speed is an issue, you have to really understand how your VHDL will be implemented, because it will make all the difference between sucess & failure. Learning how to use constraint files is important. Learning how to test using simulations is critical. Time spent writing and runing simulations may exceed design time for an order of magnitude.
On the matter of tags... What the hell are those "story" tags for?
Truth arises more readily from error than from confusion. -Francis Bacon
Kirk Weedman, KD7IRS, has posted some good Verilog classes on http://verilog.openhpsdr.org/ that are tailored to amateur radio enthusiasts that have been working on the High Performance Software Defined Radio (HPSDR) an interesting open source hardware project.
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.
iPhone users.
http://www.ashenden.com.au/designers-guide/DG.html with some support stuff.
No. When you upload your C/ASM-code to your ÂC, e.g Atmel, then âoeyou are programming to tell the *hardware* what to doâ. Downloading to an FPGA is like telling it what to be.
Altera, www.altera.com has a version of their FPGA development software for Linux -- Quartus II. This tool allows FPGA development for many Altera eval boards, and is available for free via their website. My personal preference is to develop in Verilog rather than VHDL. The syntax is more familiar to someone who also develops firmware in C/C++. Overall, though this is a personal preference. Each language has its opponents/proponents.
There's a Spanish startup, Forware, that develops FPGA development tools and has a growing user community. Not sure about the conditions, though.
To do list for Windows
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
You can't legislate goodness. Let each to his own destiny, by will of his freely made choices.
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. 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 outboard RAM to play with.
There are also a couple of reasonably priced books written especially for novices learning logic design with the Digilent platforms. $200 will get you both the basic- and advanced-level books from LBE and a Nexys2 to do the exercises. Very hard to beat that combination IMHO. (You can use the Nexys2 with the first book, even though it was written for the lower-end Basys board.)
Dahlmann tightly grips the knife, which he may have no idea how to use, and steps out into the plain.
with what he had to say:
To me, that reads like he thought Altera's licensing scheme was better, easier, simpler. My understanding and belief is that was never true -- it was advantage Xilinx until they decided to tie it up by also succumbing to FlexLM. But, the offer at the end of my email remains -- if he thinks Altera licensing is better, by all means let him explain himself.
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.
Take a look at the Demand Peripherals Baseboard4. It uses standard USB-serial for code download instead of JTAG and the development is even Makefile based. Hope this helps ....
Read through some of the tutorials at http://www.fpga4fun.com/ and then head over to the sister site http://www.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.
If you want to start learning FPGAs, then first logical step is to learn CPLD first. I have written small step by step tutorial for beginners : http://elecrom.wordpress.com/2008/03/02/getting-started-with-xilinx-xc9536/ Hope it helps.
Hi, Regarding the development on the FPGA, I didn't see anyone suggesting Handel-C (proprietary from AgilityDS http://www.agilityds.com/), or SystemC (http://www.systemc.org/). I have only used Handel-C to be honest, during a course of my MSc. Not to bad for beginners I think, I would suggest it. Although it lacks support for any platforms other than Windows...
I'm using Altera tools for work right now. We have a paid seat, but even in free mode, the web kit is powerful enough to do pretty complex stuff. To experiment with the software, go to altera.com, click download in the upper right corner and download the web kit. Unfortunately, the linux version is not free but you can use it for 30 days without a license. Xilinx also has a free version you can use. As for development boards, here's the cheapest FPGA board I found for Altera: http://www.altera.com/products/devkits/altera/kit-cyc2-2C20N.html I'm using the Cyclone III version of that board. Its quite good. For a Cyclone I board, these look inexpensive and have a wide range of features: http://www.knjn.com/ShopBoards_USB2.html Xilinx has a lot of development boards as well. My experience with Xilinx is better in the support department than Altera. They will give you the software and even dev hardware if you ask nicely. But their software takes more than 12 hours (yes twelve hours) to install and update on a core 2 duo machine. Sad really. The altera software is lighter feeling but just as powerful and seems to be more ... what's the word: friendly. I haven't used Xilinx in a while but I had a hellofa time with it, when I was trying to prototype asics with Virtex II.
Altera is currently under mandate to make money from their software, even though they are a hardware company. That makes getting a free license almost impossible. Too bad for them.
I've been getting great support for Altera from Octera Solutions (as opposed to Altera itself). Perhaps they can help you.
If you're brand new to hardware, you might want to learn Verilog or VHDL first. I think both Xilinx and Altera's web kits come with Modelsim. Its a stripped down version but it will be fine to learn the basics.
HDL doesnt tell the hardware what to do, it decides how the interconnects are configured. if you make a simple counter to count from 0-2 in software, it will probabaly end up being a 0-3 counter cause what u built via software is essentially a 2 bit hardware counter. u WILL have trouble with hardware description if u r from a purely software background.
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.
It's not exactly rocket surgery.
I not really sure how this compares to other options.
I'd be interested in the thoughts of those more expereienced.
.
US$229
500Mhz ARM9 CPU running Linux
onboard 12,000 LUT on-board programmable Lattice FPGA
http://www.embeddedarm.com/products/board-detail.php?product=TS-7800
.
US$84
250MHz ARM9 CPU running Linux
onboard 5000 LUT Lattice FPGA
http://www.embeddedarm.com/products/board-detail.php?product=TS-7500
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.
You can't legislate goodness. Let each to his own destiny, by will of his freely made choices.
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 learning about FPGAs.
Having fairly recently gone through the same process the steps I took are still fresh in my mind. I would recommend doing the following:
-Get a good understanding of digital electronics, you need to understand the building blocks that HDL languages such as Verilog and VHDL describe. Learn about flip flops, latches, counters, shift registers, and memories. With HDL you are describing how these basic building blocks connect rather than the sequential programming you may be used to. So go to Amazon and buy several used books on "Digital Electronics" or "Digital Fundamentals". You will be using these concepts to solve problems with HDL so it is important. Think of it as the equivalent of a "Data Structures and Algorithms" book for programming.
-Once you have a basic understanding of Digital Electronics then it is time to start learning an HDL. One of the biggest trip ups that I ran into while learning VHDL was the distinction between VHDL for simulation and VHDL for RTL synthesis. I was finding VHDL examples and tutorials on the web that did not explain the difference. There are many VHDL examples on the web that are only valid for simulation but do not work for RTL synthesis. So I ended up writing VHDL code that worked great in simulation but would blow up when I tried to synthesize it to run on a board. I wasted many, many hours before I found a book that clearly explained the difference. So get a book that focuses on RTL synthesis to avoid confusion in the beginning. The book that I found very helpful was Essential VHDL RTL Synthesis Done Right by Sundar Rajan. This book truly was the key, for me, to being successful with VHDL. (Search around for a better price, I did not pay over $100 for the book)
-Another great book that isn't necessarily important for HDL learning but has many easy to understand electronics solutions is Practical Electronics for Inventors by Paul Scherz.
Finally, get involved with open source FPGA projects, there is nothing like studying the code of working projects. Head over to http://www.gadgetgactory.net/ which is a new FPGA Open Source community trying to make FPGA's more useful and accessible. You will find:
-A completely open source FPGA circuit design, the Butterfly Platform, that you can build yourself or purchase pre-assembled and tested. This board can fulfill your development needs and has the advantage of being actively developed for. Most dev boards on the market have examples that you can work through but once you get through all of them you are on your own. The goal of the Butterfly Platform is to find the best FPGA open source projects available and get them all running on this board.
-An open source Logic Analyzer design that is both useful for your electronics workbench but is also an amazing example to help with learning VHDL.
-An AVR compatible processor that supports the avr-gcc toolchain for C development. (Still a work in progress)
-Tutorials and Screencasts for basic FPGA tasks.
Take a look around and see if there is anything helpful. The site is in heavy development right now so keep checking back for more projects, tutorials, and FPGA wiki's.
Jack.
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 some memory contents, but in general, it's very difficult to create an FPGA bitstream without a good fundamental understanding of digital logic design, which is a hardware field, not a software one. An FPGA designer must be aware of many design constraints on the bitstream such as gate propagation delays and timing. Thus, an FPGA article most definately is deserving of a "hardhack" tag.
retrorocket.o not found, launch anyway?
My advice for learning fpga programming is the same for learning a regular programming language: it's a lot easier to stay motivated if you're not just learning for learning's sake, but have some particular project in mind. This is where I got stuck; I read a big thick book on verilog and got myself a development board and all the software set up, and I figured out how to make the LEDs blink faster or slower, but then I got distracted and never actually went on to do anything more complicated.
You are definitely right, it is best to get a low cost FPGA board to start learning. You will definitely find it fun and satisfying. Video 3 on this page is "FPGA boards and general advice on what to get" http://www.burched.com/freevideos.ag.php There are some other videos there that will help you with learning.