Course covers computer arithmetic as applied to the design of
general-purpose microprocessors, and application-specific integrated circuits for
cryptography, coding, and digital signal processing. The focus is on efficient
implementations of all basic arithmetic operations in three major domains: integers, real
numbers, and elements of the Galois Fields GF(2n). The course provides the way
of choosing between various hardware algorithms and architectures depending on the primary
optimization criteria, such as speed, area, and power consumption. The best algorithms for
implementing arithmetic operations in software and hardware are compared and contrasted.
An introduction to VHDL and CAD tools for logic synthesis
and simulation is given at the level necessary to
complete the course project.
Arithmetic operations are at the heart of almost all general-purpose and application-specific VLSI integrated circuits. The knowledge of computer arithmetic is indispensable for designers of digital circuits for computing, communications, and digital signal processing. Designers are often confronted with a non-easy choice among a variety of existing arithmetic algorithms and architectures. Decisions must be made as to which arithmetic operations should be implemented in hardware and which in software. This course will provide the background necessary to make these decisions in an informed, near-optimal way for a large variety of applications.
The primary objective of the course is to provide an understanding of algorithms used for efficient implementation of all basic arithmetic operations (addition, subtraction, multiplication, division, modular reduction, and exponentiation) in three major domains: sets of integers (both signed and unsigned), real numbers (fixed point and floating point) and Galois Fields GF(2n). The focus is on implementation of these operations in VLSI circuits with application to general-purpose computing, cryptography, coding, and digital signal processing. For the case of large operands, such as several hundred bits long numbers used in cryptography, alternative software algorithms are considered and contrasted with hardware solutions. Differences between the optimal way of implementing the same operation in software and hardware are shown and discussed.
The course will consist of the lecture, related homework assignments, and two or three short projects. Each project will involve implementing the same arithmetic operation in both hardware and software. Hardware implementations will involve developing the code in VHDL, Verilog, or schematic; debugging the code using a functional simulator; synthesizing it using available CAD tools; and estimating the speed and area of the circuit after synthesis. Software implementations will include developing and debugging the code in a high-level language, such as C or C++. The advantages and disadvantages of implementing a given operation in software and hardware will be discussed based on the project results.
The course is related to many existing courses; nevertheless it does not overlap substantially with any of them. It shows the detailed operation of the execution units of modern microprocessors discussed in ECE 611 Advanced Microprocessors. It provides implementation details for cryptographic algorithms presented in ECE 646 Cryptography and Computer-Network Security, and error-correcting codes presented in ECE 633 Coding Theory. It may be used as a background for ECE 644 Architectures and Algorithms for Image Processing. The course covers the design of VLSI circuits at the behavioral, register-transfer, and gate levels, and as such supplements existing VLSI courses - ECE 586 Digital Integrated Circuits, and ECE 680 Physical VLSI Design.