Recommend Reading for FPGAs and VHDL?
George Holland asks: "After designing several projects around PLD-based programmable logic, I decided to buy a FPGA development board (the Spartan-IIE based XSA-200) to experiment with something more capable. I'd like to find some good books on VHDL and FPGAs in general, but there are many to choose from. Some are aimed at beginners (I have a solid background in both low and high level programming languages and digital electronics), others gloss over the low-level details of an FPGA (covering RTL only, skipping floor-planning) assuming the tools with synthesize an optimal design with no manual tweaking. Trying to find something that fits in the middle is what I'm after. What books do Slashdot readers suggest? Ideally something that covers the WebPACK toolset from Xilinx or the Spartan-IIE would be best as that's what I'm using."
I'm an old fart TTL designer that loves schematic capture
"Eve of Destruction", it's not just for old hippies anymore...
you also get a VGA port that produces vivid graphics in 512 colors
:)
Man, now that's kickin' it 01d 5k001!
You may also be interested (or not) in the XgameStation, and the Commodore One. Sorry, too lazy to look up the URLs right now.
Or, if you just wanna do low-level programming, check out menuetos.org.
Fun for the whole geek family!
What applications would you use one of these for? I see these embedded things advertised all the time and don't have a clue what anyone would use them for. Too low level for me I guess.
I used "VHDL" by Douglas Perry, McGraw Hill, 2nd edition. I see its now in 4th edition, so it seems to have some staying power. Its not tied to a particular development environment, which is bad when you are trying to get over the hump as a beginner, but good as a general tool to learn VHDL.
How about you switch to Verilog with the rest of the industry?
One should not theorize before one has data. -Sherlock Holmes-
The what now?
Bring it down to earth, won't you? Or at least include enough explanation so those who don't understand can go look for further information.
Brief summaries are a very nice way to introduce a story such as this.
Thank you!
http://www.ashenden.com.au/designers-guide/DG.html
This is a link to the VHDL Designer's Guide by Ashenden (from Adelaide if I remember correctly). Some of the hardware people I have worked with used it and considered it to be the bible. From memory you can find a pre-release downloadable as a PDF somewhere, or go and buy the book. It was expensive, but well worth it.
Another book to get hold of is one of the early student manuals that came with the Xilinx Foundation 1.5 tools. It was a beginner's introduction to the Foundation suite but it had a lot of useful snippets that helped me even through more advanced work in recent versions of the Xilinx ISE software. You should be able to find these in a university library if they have an electronic engineering course.
I drink to make other people interesting!
If you haven't already you should check out OpenCores.org.
I just took an EE course where we used several different Xilinx-based boards. I've put up a load of links and documentation for VHDL and the Xilinx tools here.
The course focused on soft processors, so some of the talk about Microblaze won't apply to you unless you can pony up the $500 for Xilinx's EDK.
Even without the EDK, there are a load of cool things you can do with these FPGAs. Consider this guy's implementation of the original Pac Man hardware on a single chip.
Check out:
Fundamentals of Digital Logic by Brown & Vranesic
Available in both a VHLD and Verilog version for your learning pleasure. Both books ship with a copy of Quartus II from Altera. You can get Altera development kits here if you're looking for something bigger and better than a Spartan-IIe.
Disclaimer: I work with the authors.
HDL Chip Design
Douglas J. Smith
ISBN 0-9651934-3-8
Amazon Link.
It is not a complete reference text to VHDL, and it is indeed a bit dated, but is covers stuff not found in many other books.
It covers both Verilog and VHDL, and goes into such high-level things as the best way to code state machine, the various trade-offs associated with different state machine designs, how generics can save you time, writing test benches, etc.
It is NOT a complete language reference. For that, get the Ashenden book. But this book and the Ashenden book compliment each other nicely. The Amazon reviews give it a very mixed bag of opinions. Some love it, others hate it.
BTW: If anybody has found the perfect VHDL book, I would love to know what it is. The Ashenden book is the standard, but it reads like an encyclopedia.
"-1 Troll" is the apparently the same as "-1 I disagree with you."
A great site I've run across is fpga4fun.com. The guy who runs the site has designed and built several really neat little FPGA prototyping boards, and has some great step-by-step tutorials for doing things like generating video signals, reading optical encoders, using Ethernet, etc. You'll probably be sad you got a Spartan IIE just to play around, since he has a great little Altera board for just $50. However I do have a Spartan IIE from Digilent and the code principles are virtually the same.
"I'm an old fart TTL designer that loves schematic capture"
I'm older than that. I use to wire colored bits of sand together.
WTF is FPGA PDL-based Programming logic ... Good Grief ... This post is like reading the first letter of every sentence of a Shakesperian Tragedy! RORWFATR. FCUK!
"Designing with FPGAs and CPLDs" http://www.amazon.com/exec/obidos/tg/detail/-/1578 201128/qid=1104896988/sr=8-3/ref=pd_csp_3/104-7443 394-0211910?v=glance&s=books&n=507846
followed by
"The Design Warrior's Guide to FPGAs"
http://www.amazon.com/exec/obidos/tg/detail/-/0750 676043/qid=1104896988/sr=8-1/ref=pd_csp_1/104-7443 394-0211910?v=glance&s=books&n=507846
In the first book, the author has a slant towards Verilog, but I learned a great deal of good design practices.
The second book is thick and is more like a bible for all things FPGA. This book is great if you are new to FPGAs and need to learn what is out there.
It is a must-read book (one of the few course books I didn't regret buying), but perhaps a bit basic for what the story poster seems to be looking for? :)
ClutterMe.com - easiest site creation on the Net. Just click and type.
Have a look at this site - it's got some seriously cool stuff (like a FPGA board that can plug into a PCI slot, with onboard USB and ethernet, etc.
I'd also recommend checking out the usenet group comp.arch.fpga . Most folks on there are a helpful bunch.
:-)
Of course, I also wouldn't recommend Xilinx, but I'm biased - I work for their competition
This sig is in Spanish when you're not looking....
FPGAs are my thing really, I think they are one of the best ways into electronic design if it isn't your career.
I'm not up on Xilinx at all, but I've used most of the Altera FPGAs available. They are all pretty amazing devices, and all have their own dedicated features such as memory, DSP, fast IO, things like that. Learn about the structure of the FPGA from the data sheets to see how they work, and recommended applications.
If you are doing anything reasonably complex, rely on the automated routing and placing. It's simply too complex for a human to do well. When you want that bit extra speed, or maybe when you are nearing 100% usage, then start manually tweaking the automated system - there are some really clever tricks to be done here.
I did some fairly basic projects to start with (a digital function generator, an IIR filter, a display processor) which were guided coursework assignments. They gave me the grounding in the tools and techniques required.
I think VHDL is my favourite language. It's so different to conventional programming, and again you can learn some really neat tricks to do jobs. A neat project was a biquad filter which used a systolic array of very similar blocks - watching how it ran as a simulation was interesting.
I think the best thing though is to come up with a complex and real world application, and build up from there. Buy some of the reference books, but do something that will really tax you - it's far more interesting doing something like this all by yourself than using books to do projects of things already designed 30 years ago.
Computer architecture is an exciting and unexplored field. Read some papers on new ideas, like asynchronous processors, or multicore processors, and try and implement some of the ideas. It's a good way to bring the world of hardware programming and software programming together.
I ended up developing a multiprocessor system on a chip. Which as an individual I think is a great achievement. I learnt so much doing it.
If you have a design that has trouble making timing, you are better off going back and reworking the RTL. Try to visualize how your RTL is getting mapped to flops and logic ("use the force"). If you can talk to several experienced designers about your design, they can give you good insights.
there are loads of good websites for learning vhdl, verilog, systemc etc, google is your friend! for example:
d e/vhdl/
http://toolbox.xilinx.com/cgi-bin/forum - for xilinx specific problems
http://tech-www.informatik.uni-hamburg.
www.opencores.org - heaps of sample code/IP
www.totallychips.com, a general question and answer forum, albeit doesn't seem that busy
etc etc
Hey! Who turned me into a troll? That's all absolutely serious advice from a professional designer whose Xilinx-based products are out there in the shops where you can buy them. I really mean what I said: don't learn to do anything "advanced" with VHDL for Xilinx as it will just crash the tools; stick to basic language constructs.
Look, I even get less points than someone who says "duh what is an FPGA???". Someone please mod it back up.
UC San Diego Extension offers courses in embedded computer engineering, including FPGA programming, VHDL, and Verilog. Go to http://www.extension.ucsd.edu/Schedule/ and select the Engineering section of the catalog. Some of the courses are offered on-line. Even if you're not interested in taking a course, you could find out which textbooks the instructors are recommending.
An interesting (and excellent) link on VHDL coding standards in a working environment is also available off that page: the European Space Agency's VHDL coding standard (available in PostScript format here http://tech-www.informatik.uni-hamburg.de/vhdl/doc /style_guide/ModelGuide.ps.gz).
The Xilinx WebPack is a great place to start - you get everything you need to take you from text-edited files to a binary image on one CD (or download from here: http://support.xilinx.com/support/download.htm). It even comes with a (very) cut-down version of Mentor Graphics' ModelSim and Xilinx's own synthesis tool, XST.
If you use Altera chips, they have a similar offering, called Quartus II Web Edition (http://www.altera.com/products/software/products/ quartus2web/sof-quarwebmain.html)
Speaking of text editors, (X)Emacs has a great VHDL mode that can beautify your code, create makefiles and manage your projects, available here:http://opensource.ethz.ch/emacs/vhdl-mode.htm l.
To clarify "advanced" some more: the VHDL language is quite flexible but there is a big difference between writing code that you will synthesise and code that you will not:
If your synthesisable VHDL code is clean and free from "advanced" things as the pervious poster says, you won't have trouble with Xilinx tools. Enumerated types are fine, too - it's how I do all my state machines.
Disclaimer: I don't work for Xilinx (or Altera).
FPGA = Field Programmable Gate Array (a sea of logic gates in a chip that can be set up any way you like).
VHDL = VHSIC Hardware Description Language (language used to describe how the gates are set up)
VHSIC = Very High Speed Integrated Circuits