Recommend Reading for FPGAs and VHDL? 41
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."
Can't help you... (Score:1)
Can't help you...Beads. (Score:2, Funny)
I'm older than that. I use to wire colored bits of sand together.
Re:Can't help you...Beads. (Score:5, Funny)
quote from that page (Score:1)
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!
Here's my ask slashdot (Score:2)
Re:Here's my ask slashdot (Score:4, Informative)
Think of digital controllers in microwaves, ovens, printers, USB devices. Or, maybe you want to throw a CPU and a few off-the-shelf bridge controllers onto a tiny board without needing dozens of other components to control the system (if it's a tiny thing with very specific hardware requirements, you can say "screw scalability" and design minimal logic to synchronize and channel your data).
Or, perhaps digital audio technology, or maybe video editors/filters (DSP stuff).
People prototyping their own custom logic chips typically use FPGAs before ordering production components. For example, maybe you're designing some custom 3d video hardware to handle special GL extensions that consumer cards don't have, building a system for process control (meaning, running factory equipment), designing robotics, doing data acquisition (analog-->digital hardware), making a video game system, designing some digital stompboxes for your guitar, or making a digital video filter to eliminate MacroVision so you can play DVDS on an old TV that doesn't have S-Video inputs.
Most of this stuff is unexplored territory for coders and software designers... kind of like how a fashion designer wouldn't know how to build a house.
Re:Here's my ask slashdot (Score:2)
Erm, controller design, custom logic, any sort of medium-to-large scale digital electronics project
VHDL (Score:4, Informative)
Verilog (Score:2)
Re:Verilog (Score:4, Insightful)
Navabi has a pretty good book on Verilog. The book mentioned above on VHDL by Perry is a very good starting point for that language. (I'm using the 3rd edition.)
Re:Verilog (Score:1)
Re:Verilog (Score:2)
I work for a large ASIC company. We do business all over the world and have all but dropped VHDL. The demand just isn't there.
VHDL is a better language but for most things is overkill and more difficult to learn. Sometimes simplier is better.
Re:Verilog (Score:2, Insightful)
Re:Acronym Hell (Score:1)
Acronyms explained (Score:1)
VHDL = VHSIC Hardware Description Language (language used to describe how the gates are set up)
VHSIC = Very High Speed Integrated Circuits
VHDL Designer's Guide (Score:3, Informative)
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.
Re:VHDL Designer's Guide (Score:2)
If you're learing about VHDL, consider writing some code for OpenCores [opencores.org] as part of your education. I gather they have server problems at the moment, so the link may not work.
Re:VHDL Designer's Guide (Score:2)
OpenCores (Score:3, Interesting)
My page... (Score:3, Informative)
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 [fpgaarcade.com] implementation of the original Pac Man hardware on a single chip.
Fundamentals of Digital Logic by Brown & Vrane (Score:4, Informative)
Check out:
Fundamentals of Digital Logic [mhhe.com] by Brown & Vranesic
Available in both a VHLD and Verilog version for your learning pleasure. Both books ship with a copy of Quartus II [altera.com] from Altera [altera.com]. You can get Altera development kits here [shopaltera.com] if you're looking for something bigger and better than a Spartan-IIe.
Disclaimer: I work with the authors.
Re:Fundamentals of Digital Logic by Brown & Vr (Score:2)
HDL Chip Design (Score:2)
Douglas J. Smith
ISBN 0-9651934-3-8
Amazon Link. [amazon.com]
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 th
fpga4fun (Score:3, Informative)
Books are good, but don't try "advanced" language (Score:1)
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:
Two books I recommend (Score:1)
USENET (Score:2, Informative)
Of course, I also wouldn't recommend Xilinx, but I'm biased - I work for their competition
FPGAs (Score:3, Interesting)
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.
Don't sweat the low level details (Score:1)
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.
A few more sources: (Score:1)
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.informa [uni-hamburg.de]