A major revolution in digital design has taken place over the past decade. Field programmable gate arrays (FPGAs) can now contain over a million equivalent logic gates and tens of thousands of flip-flops. This means that it is not possible to use traditional methods of logic design involving the drawing of logic diagrams when the digital circuit may contain thousands of gates. The reality is that today digital systems are designed by writing software in the form of hardware description languages (HDLs). The most common HDLs used today are Verilog and VHDL. Both are in widespread use. When using these hardware description languages the designer typically describes the behavior of the logic circuit rather than writing traditional Boolean logic equations. Computer-aided design tools are used to both simulate the Verilog or VHDL design and to synthesize the design to actual hardware.
This book assumes no previous knowledge of digital design. You start at the beginning learning about basic gates, logic equations, Boolean algebra, and Karnaugh maps. In over 75 examples we show you how to design digital circuits using Verilog, simulate them using the Aldec Active-HDL simulator, and synthesize the designs to a Xilinx Spartan3E FPGA on either the BASYS2™ (or BASYS™) system board that can be purchased from Digilent, Inc. (www.digilentinc.com) for $59 or the Nexys-2 board that costs $99. A free student edition of the Aldec Active-HDL simulator is available from Aldec, Inc. (www.aldec.com). To synthesize your designs to a Spartan3E FPGA you will need to download the free ISE WebPACK from Xilinx, Inc. (www.xilinx.com). The Xilinx synthesis tools are called from within the Aldec Active-HDL integrated GUI. We will use the ExPort utility to download your synthesized design to the Spartan3E FPGA. ExPort is part of the Adept 1.10 software suite, which has been replaced with Adept 2.1, which you can download free from Digilent, Inc. (www.digilentinc.com). You should use Adept 2.1 to download your bit files to either the BASYS2 or Nexys-2 boards. All references to the BASYS board in this book apply to the newer BASYS2 board. The only difference is that if you are using the BASYS board, you must use the user constraints file (.ucf) for the BASYS board (basys.ucf), while if you are using the BAYSY2 board, you must use the user constraints file (.ucf) for the BASYS2 board (basys2board.ucf). Both of these .ucf files can be downloaded from http://www.lbebooks.com/downloads.htm.
Many colleagues and students have influenced the development of this book. Their stimulating discussions, probing questions, and critical comments are greatly appreciated. We particularly want to thank Wayne Morrell who has provided important input to many of the examples and problems described in this book.
Richard E. Haskell
Darrin M. Hanna