The book pursues two main objectives and is composed of two parts. The first
part introduces the concepts of the design of digital systems using
contemporary field-programmable gate arrays (FPGAs)
with the main objective of extending topics that are traditionally included
within digital systems in a way that enables various design techniques to be
discussed, illustrated by examples, and supported by experiments with
relatively cheap prototyping boards that are widely available. It begins
with easily understandable introductory sections, continues with commonly
used digital circuits and gradually extends to more advanced topics covering
the novel techniques where parallelism is applied extensively involving not
only core reconfigurable logical elements but also a number of embedded
blocks (e.g. memories and digital signal processing slices) and interactions
with general-purpose and application-specific computing systems. Fully
synthesizable specifications in hardware-description language (VHDL, in
particular) are provided that are ready to be tested and incorporated in
engineering designs. A number of practical applications are discussed from
areas such as data processing and vector-based computations (e.g. Hamming
weight counters/comparators). The second part of the book covers more theoretical aspects of finite state
machines with the main objective of reducing FPGA basic resources,
minimizing the delays and achieving greater optimization of circuits and
systems.