In this article, we consider implementing field-programmable gate arrays (FPGAs) using a standard cell design methodology and present a framework for the automated generation of synthesizable FPGA fabrics. The open-source Verilog-to-Routing (VTR) FPGA .
Reviewer: Vladimir Botchev
To approach digital design problems with a moderate level of confidence, one must have a specific body of knowledge. This book presents this body, in a condensed form. It begins by delivering a crash course in digital logic, both combinational and sequential. While this may be considered a good introduction or refresher, I personally disagree with the author that older logic design methods, such as minimization, have to give way in modern teaching to more tools and language-oriented methodologies, because the older methods are built into the tools anyway; someone has to be able to build them in or maintain and develop them further. A modern design course (not a crash course) for digital logic that doesn't incorporate, for example, the Quine McCluskey method is a poor design course. After the book's introductory chapters, two chapters introduce the Verilog language for hardware representation. This author has produced another book with identical content [1], but in the second book the language vehicle is very high-speed integrated circuit hardware description language (VHDL). This contributes to making the book set unique, in the sense that a reader can follow either language path or both. In the past, there have been similar two-faceted books on hardware description languages; this book set is better designed, however, in that it minimizes distraction (the Verilog book does not concern itself at all with VHDL, and vice versa). Enough of the language is taught in these chapters to allow readers to start experimenting with describing their own designs, or to successfully attempt to understand someone else's code. Chapter 5 details the specification and design of controlling state machines, and includes some classic example designs, such as a vending machine and a liquid crystal display (LCD) controller. Chapter 6 provides details on programmable chip technologies, complex programmable logic devices (CPLDs), and field programmable gate arrays (FPGAs), and is rather Xilinx-centric. The last three chapters are devoted to complete designs, from the ground up. Chapter 7 presents a universal serial bus (USB) protocol analyzer. Although it handles only USB 1.1, it is still a very good example of how to use a communication standard description as a useful observation/debugging tool. Chapter 8 is about arithmetic designs and their pipelining. Its scope is limited to adders and multipliers, which is perfectly acceptable for this kind of book, the main purpose of which is not to teach computer arithmetic. The last chapter details the design of a somewhat simplified version of a Thumb reduced instruction set computer (RISC) microprocessor, which in turn is a subset of the ARM architecture. The author could have chosen to introduce a processor of his own; selecting a subset of something as widely known as the ARM microprocessor, however, provides a much more solid ground for both classroom use and self-study, which is the main goal of this book (book set). There are two appendices, one detailing the instruction set of the RISC processor designed in the last chapter, and the second providing detailed answers to select end-of-chapter exercises. In conclusion, this book (book set) is of significant pedagogical value. It is recommended as an introductory text for both more advanced logic design and the selected hardware description language (HDL), as a vehicle toward design implementation. Online Computing Reviews Service
Become a reviewer for Computing Reviews.