
"Hardware Descriptive Language (HDL) and Field Programmable Gate Array (FPGA) devices allow designers to quickly develop and simulate a sophisticated digital circuit, realize it on a prototyping device, and verify the operation of its physical implementation. As these technologies have matured, they have become accepted mainstream practice so that it is possible to use a PC and an inexpensive FPGA prototyping board to construct a complex digital system. This book uses a "learn by doing" approach to introduce the concepts and techniques of VHDL and FPGA to designers through a series of hands-on experiments." "Although the book is an introductory text, the examples are developed in a rigorous manner and the derivations follow strict design guidelines and coding practices used for large, complex systems. It lays a solid foundation for students and new engineers and prepares them for future development tasks FPGA Prototyping by VHDL Examples is an indispensable companion text for introductory digital design courses and also serves as a valuable self-teaching guide for practicing engineers who wish to learn more about this emerging area of interest."--Jacket.
https://store.digilentinc.com/nexys-a7-fpga-trainer-board-re...
It has a USB host port for a keyboard and VGA out for the display. The jury is still out as to whether I can build the entire CPU using nand gates, including the ROM and RAM memory. Doing so will use a lot of the FPGA's resources from calculations I've seen. If that's not possible for the memory, then I plan on using the block RAM that's included on the Xilinx board, but for everything else I plan on following the book's design as close as possible. So far, I am in chapters 1-3 simply porting my solutions in the course's HDL to VHDL, which is relatively straightforward so far. I'm taking my time to make sure I'm doing things "professionally", as I'd like to learn the Xilinx toolchain in my professional work at some point. My experience with FPGAs has been implementing them with LabVIEW, which actually makes learning VHDL somewhat mechanical although a bit frustrating. (If I had an FPGA big enough that's targetable via LabVIEW, I could probably build and test the computer in a day or two aside from the VGA and keyboard.) The combinatorial gates are done now, and I've implemented a DFF and am building things from there. So now I'm learning about clocking and such with VHDL. The most troublesome part I anticipate is what to do about the ROM and RAM memory and the display and keyboard. I'd also like to update the CPU where I can interactively download new code to the CPU from a PC using the assembler and software stack I'm building, which is in F#.
I have several books I am using as reference:
- VHDL By Example by Blaine C. Readler (great first intro to VHDL)
- Digital Design Using Digilent FPGA Boards: VHDL/Vivado Edition by Haskell and Hanna
- Effective Coding with VHDL: Principles and Best Practices by Ricardo Jasinski (I'm using this to sort through the various ways to do things in VHDL and have best practices in my code.)
- VHDL for Logic Synthesis by Andrew Rushton
- FPGA Prototyping by VHDL Examples: Xilinx MicroBlaze MCS SoC by Pong Chu
You can get really nice Xilinx starter kits compatible with this book for cheap. To be absolutely compatible, you can get the old Spartan-3 starter board from digilentinc.com for $99, but be aware that you need a PC with a parallel port. If you prefer like me to connect your FPGA board to your computer using USB, I recommend either the Nexys-2 board for $99 or the Spartan-3E starter board for $149, available at digilentinc.com, or the more up-to-date Spartan-3A starter board for $189, which you can buy at nuhorizons.com or avnet.com. These boards are mostly compatible with the book, and you can get lots of peripheral modules like seven-segment LED's for them from Digilent.
The software necessary to program these starter boards is available for free from Xilinx. The only slight problem is that you need to use Windows or Linux--no Mac OS X.