Here are some books that I like for electronics (including FPGA’s).
If you have any favorite electronics book please leave it in the comments below.
The first one is the Art of Electronics by Horowitz and Hill.
This is a very in-depth book that starts with the basics and ohms law and works its way up to analog and digital devices, it also has a section on circuit construction and prototyping. The book is old (1989) so a lot of the digital stuff and the circuit fabrication stuff are out of date. One thing I really like about this book is that is was written by engineers for engineers. Most things are described using very basic math in a way that makes the reader understand the concepts needed for design with getting bogged down with advanced math. The rumor is that an updated version will be released in mid 2014.
Jason (you know who you are) saw the review of the book above and lent me a copy of the Student Manual for this book, and I was impressed by it. I was expecting just a bunch of labs, but this book provides useful information and explains random/various concepts nicely. If you are looking for labs that teach in addition to just plain building of the circuit then this is a good book for you. Just for fun I went and breadboarded a few of the transistor labs, since I have not done that in a while.
The next electronics book I like is Practical Electronics for Inventors by Scherz and Monk. This is a basic book that is not nearly as think as Art of Electronics and can be less intimidating (and cheaper). This book also starts from the beginning introducing basic concepts and moving into the many practical electronic devices that are used. This book has basic coverage of things such as wire selection, test equipment, and circuit construction.
Circuit Analysis with Devices by Robbins and Miller is also an old favorite of mine. It is somewhat in the middle of the two books above but with more theory. It is less intimidating than Art of Electronics but it is also thick and has a lot of material. Unlike the other two books this one has a lot of theory but there are a lot of color illustrations to help understand the material.
I have two books that I like for FPGA’s. Before I list them I want to preface that with there is no good book for FPGA’s that I can find. These books cover aspects of FPGA development, however, from a workflow perspective and for actually being able to sit down and implement design all these books leave much to be desired. If you want to start using embedded processors then the learning curve (initial typo was curse, which some might say is accurate) is even steeper and the books are also non-existent. If you are serious about learning FPGA’s Xilinx has a lot of tutorial videos on its website.
Also I know there is a lot of debate between VHDL and Verilog as well as between Xilinx and Altera. I use VHDL primarily because that is what I started with and I like it. However if you are working with FPGA’s you will need to know the basics of both VHDL and Verilog as you can often not escape using bits of both. In fact one of the books I am about to recommend uses Verilog. I use Xilinx chips because that is what I started with and the learning curve between vendor tools is very steep.
The first book is Circuit Design with VHDL by Volnei A. Pedroni. It is a good book that teaches about VHDL. It spends the first part of the book teaching basic VHDL and the second part on system design. The system design part is very important for creating reusable code and for understanding how to use commercial IP (packages, port maps, etc..). The other thing I really like about the book is the discussion on what code is synthesizable and what is not synthesizable. Many books teach a lot of VHDL but don’t mention that half of it can not actually be used on an FPGA and are limited to things like testbenches.
The next book focuses on higher level FPGA design. It is Advanced FPGA Design: Architecture, Implementation, and Optimization by Steve Kilts. This book teaches different approaches to coding on hardware. For example the first few chapters discuss how to speed up your design, how to minimize footprint, and how to reduce power usage. There are also good discussion on clock domains and dealing with asynchronous designs (and resets). There are several large examples in the book but I did not find them to be that instructional.
There is another book that I saw on Amazon that looks good and I would like to check out. However, I have not had a chance to buy it yet. It is 100 Power Tips For FPGA Designers by Evgeni Stavinov.