×

Guide to FPGA implementation of arithmetic functions. (English) Zbl 1278.68026

Lecture Notes in Electrical Engineering 149. Dordrecht: Springer (ISBN 978-94-007-2986-5/hbk; 978-94-007-2987-2/ebook). xv, 469 p. (2012).
This is a comprehensive, almost 500 pages handbook devoted mainly to the design of a variety of hardware arithmetic units in modern processors and embedded systems. Moreover, Systems-on-Chips (SoCs) and their reconfiguration are treated in the last chapters. It is necessary to become aware that the hardware description language programs, but not the logical schemes, are nowadays used for definition of digital circuits. In this book the VHDL language is used. Numerous examples of FPGA implementations of arithmetic circuits are modeled in this language.
The main goal of topics presented in the book is to synthesize hardware components implementing algorithms whose execution on a general-purpose instruction set processor is too slow. Among many applications which require such approach are long-operand arithmetic operations, floating-point operations, encoding and processing of different types of signals, data ciphering and many others. Reading this book requires background in the VHDL hardware description language and basic knowledge of logic circuits – combinational and sequential.
This book is divided into sixteen chapters. In the first chapter basic building blocks of digital systems (combinational and sequential components, memory blocks and I/O ports) are briefly reviewed, and their VHDL descriptions are presented. Chapters 2 to 4 constitute an introductory part of the book whose aim is the description of basic principles and methods of algorithm implementation. Chapter 2 describes the breaking up of a circuit into the data path and the control unit, and tackles scheduling and resource assignment problems. It is emphasized that modern EDA tools have the capacity to directly generate circuits from algorithmic descriptions, with performances comparable with those obtained using more traditional methods described later in the book. In Chapter 3 special topics of data path synthesis are presented. The implementation techniques considered are pipelining and self-timing. Next, an introduction to transformations known as loop unrolling on the circuit and algorithm level is discussed. It permits the exploration of different cost-performance trade-offs, from combinational iterative circuits to completely sequential circuits. The last section tackles the problem of reducing the number of connection resources. In the chapter on control units their synthesis including command encoding, hierarchical decomposition and variable latency is described. Chapter 5 recalls important electronic concepts like drive capabilities, transitions times, glitches, stability and clock synchronization and power consumption that must be taken into account for getting reliable circuits. Chapter 6 is an introduction to electronic design automation tools that are available for developing systems on FPGAs. Their main concepts are explained and exemplified by Xilinx ISE and Altera Quartus systems. Chapters 7–13 are dedicated to a variety of arithmetic operations. Each chapter gives at first circuit structures with VHDL models and later details of FPGA implementations. At first adders are considered. Basic adder structures are optimized by FPGA vendors and are ready-to-use. However, in the case of long operands the book presents complex structures such as carry-skip, carry-select and logarithmic adders. Another topic is multioperand adders (carry-save adders and parallel counters). Chapter 8 is devoted to multipliers – combinational (ripple carry, carry-save, based on multioperand adders, various radix) and sequential (shift and add, post correction). Chapter 9 presents a variety of divider circuits. Other operations such as square root, logarithm, exponentiation, trigonometric funtions, and base conversion are described in Chapter 10. The next three chapters are devoted to decimal arithmetic, floating-point arithmetic and finite-field arithmetic. For every operation, several configurations are considered (combinational, sequential, pipelined, bit serial or parallel), and several generic models are available, thus, constituting a library of virtual components. The development of Systems on Chip (SoC) is the topic of Chapsters 14–16. The increasing capacity of transistors into a chip enables the integration of complex systems. Typical SoC applications are embedded systems that are specific-application computers. SoCs can be implemented on several microelectronic technologies: full-custom, standard-cells, FPGAs. Chapter 15 presents two case studies, both based on commercial EDA tool Xilinx Embedded Development Kit and prototyping boards. First is 4-digit, 7-segment LED display and its more elaborate version, second is a cryptographic coprocessor. Chapter 16 is an introduction to dynamic reconfiguration, a technique that allows reducing the area by modifying the device configuration at run time. Partial reconfiguration is the ability to change a portion (the reconfigurable partition) of the device without disturbing the normal operation of the rest (the static partition). A typical partially reconfigurable application is a coprocessor which switches the configuration of the reconfigurable partition at run-time when required by the application. The main advantage is reducing the required area. The main drawback is the need for storage of partial bitstreams, and the substantial reconfiguration time. Not all FPGA devices are reconfigurable. In this book the Xilinx family Virtex-4/5/6 allowing reconfiguration is discussed. The text describes reconfiguration mechanisms and suitable data structures.
To conclude this comprehensive handbook may be strongly recommended for advanced academic courses on design of embedded systems. It may also be used by practising designers as an explanation of contemporary design methodologies and tools. Moreover, the additional material including more VHDL models is included at the authors webpage http://www.arithmetic-circuits.org/guide2fpga/index.html. The exercises at the end of each chapter enhance the didactic value of the book.

MSC:

68-06 Proceedings, conferences, collections, etc. pertaining to computer science
94-06 Proceedings, conferences, collections, etc. pertaining to information and communication theory
68-00 General reference works (handbooks, dictionaries, bibliographies, etc.) pertaining to computer science
94-00 General reference works (handbooks, dictionaries, bibliographies, etc.) pertaining to information and communication theory
94C10 Switching theory, application of Boolean algebra; Boolean functions (MSC2010)
Full Text: DOI