For people starting out with FPGA design, I thought it may be interesting to do a quick review of the relevant books I have on my shelf. Most of these are skewed towards VHDL, but if Verilog is your thing, then I'm sure you can find equivalent texts.
I have certainly learned a great deal over the years from reading blog posts, watching videos, and browsing through source code. But for me, nothing beats sitting down and drilling through the gory details covered in a book.
With a subject as deep as FPGA design, it's important to try to read widely on the subject to fill in gaps in your knowledge. I even find that re-reading important chapters is helpful to let things fully soak in. Sometimes you can't understand something, until you first understand something else.
In no particular order, here are some of my favourite hardware books:
Designing Video Game Hardware in Verilog
This book is squarely aimed at people who want to get into designing retro arcade games for FPGAs. Obviously, the code examples are written in Verilog, but the concepts taught in this book can easily be translated to any hardware description language.
The author takes you through subjects like clocks, flip-flops, counters, video signal timing, bitmap graphics, tilemaps, sprites, etc. These are all important subjects to learn, no matter which type of retro arcade game you're working on.
It's worth pointing out that all of the code examples in this book can be run in the 8bitworkshop IDE, which is an arcade hardware simulator that can natively execute Verilog code. While this is an excellent tool for playing around with the code examples, if you think you are going to walk away from this book with a game running on a real FPGA, then you may be disappointed. Actual FPGAs only get a fairly cursory mention right at the very end.
If you're completely new to FPGAs, then you should know that this book doesn't spend very long on the basics before it dives into the workings of arcade hardware. That said, games are a really fun way to learn the ropes.
You should definitely add it to your reading list if you are interested in learning how to write arcade cores for MiSTer.
FPGA Prototyping By VHDL Examples
This was my first FPGA book. It's more of a hands-on book that teaches you important digital design subjects like gates, registers, adders, finite state machines, etc. Each chapter includes a number of detailed VHDL examples to clearly illustrate these concepts.
A couple of the chapters deal with Xilinx-specific topics, like the Picoblaze soft processor core, but it doesn't hurt to read about these things even if you're not using Xilinx FPGAs. If you want to write retro arcade games, then you'll need to learn how to use soft processor cores like the Z80, 68K, etc. The more familiar you are with these types of soft processor cores, the easier you'll be able to learn how to use new ones.
It gets quite advanced as you work your way through all the chapters, and even explains how to build a little pong-style game. I think this book has the best explaination of video signal timing I’ve read so far.
You can also get a Verilog version of this book, which is exactly the same except that the code examples are written in Verilog. Nice.
Free Range VHDL
This is a short book focused on the VHDL language. I bought a printed copy, but it's creative commons licensed, so you can download a free PDF from the authors' website.
It gets right into the nitty-gritty of the VHDL language, looking at types, loops, signals and variables, concurrent and sequential statements, registers, finite state machines, etc. If you follow it through, you will have a thorough working knowledge of the VHDL language by the end of this book.
It does neglect to talk about a few of VHDLs more advanced features, like records and packages, but overall it's fairly comprehensive. Download a copy, and if you get something out of it, then consider supporting the authors and buy the printed version.
Circuit Design with VHDL
This is probably my favourite VHDL book. As with Free Range VHDL, it covers the VHDL language in detail, but I really like the logical progression to this book. Each chapter really builds upon the previous chapters. I also appreciated the chapters on system design which cover things like functions, generics, packages, and assertions.
It has some great example circuit designs for things like digital filters, neural networks, memory, and signal generators. The examples are very nicely explained, complete with signal timing diagrams to illustrate how they work.
Even the appendices are useful, covering different types of programmable logic devices, and how to use development tools like Xilinx ISE and Intel Quartus to program them.
Logic and Computer Design Fundamentals
This was originally one of my university textbooks, but I have since purchased the updated edition. As the title suggests, this book is all about the fundamentals of digital design. If you ever wanted to learn about how a computer works, then this is the book.
This isn't specifically a FPGA book, although it does provide the occasional example of the concepts discussed in both Verilog and VHDL. In any case, I would strongly suggest picking up a copy of this text. There have been multiple editions over the years, so if you're strapped for cash I would suggest buying a second-hand copy of an earlier edition.
It covers subjects like number systems, logic and gates, flip-flops, registers, finite state machines, memory, busses, CPUs, IO, etc. In a nutshell, this book goes deep.
As with most textbooks, it's a little abstract and dry at times. But if you can stick with it, then you will do some serious levelling-up with your hardware skills. Even if you just read the first few chapters, you're going to learn a lot of the fundamentals that will help you along your journey with FPGAs and digital design.
Advanced FPGA Design
As the title suggests, this is not a book that is friendly for beginners. I've been coming back to it over the years, as my knowledge has grown I've been able to decipher more of the information locked up in this book.
The first time I read it, to be honest I didn’t get much out of it at all. But as I have worked on projects, I have occasionally realised that I need to understand something mentioned in this book, and pulled it off the shelf.
It covers subjects like crossing clock domains, optimisation, pipelining, and simulation.
The Art of Hardware Architecture
This is another fairly advanced book, but I find it way more practical than Advanced FPGA Design.
It covers subjects like metastability, clocks and resets, crossing clock domains, clock dividers, pipelining, endianness, etc.
It's full of juicy topics, but I feel like the author wrote it in a rush because there are typos and grammatical errors all over the place. But great engineers aren't always great authors, so you have to just deal with it.
I only bought this book recently, but after reading it once I can already tell that I'll be reaching for it often. It certainly lives up to its title, as there really is an art to some of the more advanced concepts covered in this book. You just don't see a lot of this material covered in the more intermediate books on the subject.
If you search hard enough, you can probably find pirated copies of most of these books floating around on the Internet. But as you can see in my photos, I prefer physical books so I can flip through them, mark important pages and take the opportunity to step away from my computer.
Most importantly, I can't imagine the authors are selling great quantities of books on a subject as niche as FPGA design. This ain’t 50 Shades of Grey. If you get something useful out of pirated copies of these books, then I would strongly encourage you to consider paying for them.