Free Range VHDL : Introduction to VHDL (pdf)
freerangefactory.org
freerangefactory.org
I'm still looking for an online community of hardware developers like HN. Smenow, John Cooley's mailing list feels too 80s for me and Janick Bergeron's verification guild just never had enough traction. Is HW intrinsically more boring?
This is probably the best reference for Verilog out there.
I wish I had had this a few years ago.
Writing VHDL isn't programming. If you treat it like it is, you might get something that works in simulation, but it's going to be horribly inefficient at best, and will more likely not work at all in hardware.
Programming usually means coding in some language that will be compiled to machine language, and hardware description is so different kind of "programming" that I think it's dangerous to call it programming at all.
I believe the authors assume that the reader is actually familiar with architecting digital systems or learning it concurrently from some other source.
It's probably good to teach the two process FSM first, because it resembles the mathematical model, but back when I did VHDL design, I found single process FSMs more straightforward. Can't remember what they looked like exactly, but something like Thompson's answer here: http://stackoverflow.com/questions/5961751/encoding-state-ma...
The best explanation I've seen for two and three process FSMs is that older synthesis tools weren't smart enough to infer an FSM from anything else. At least with FPGAs, it seems like the professionals are only using the single process model. Why wouldn't you? It doesn't separate related pieces of code over multiple pages and the chance for stuffing it up is reduced significantly.
Teach people to use the single process model. Teach them that two and three process FSMs exist so that they can identify and understand them, but don't waste too much time on it. Some of the textbooks I've read devote a chapter to the distinction between Mealy and Moore state machines. Time to let this one die!
The second, sixth, and twelfth pages of the PDF file are blank. The fifth page is nearly blank, except for the auto-erroneous notation that is was intentionally left blank. We are left with the ambiguity of unintentionally blank pages, or pages that refused to be corrupted by self negating declarations of their absence of content.