Catalog description  

Covers computer arithmetic as applied to the design of general-purpose microprocessors and application-specific integrated circuits for cryptography, coding, and digital signal processing. Focuses on efficient implementations of all basic arithmetic operations in three major domains: integers, real numbers, and elements of Galois Fields GF(2n). Illustrates tradeoffs among various hardware algorithms and architectures depending on primary optimization criteria, such as speed, area, and power consumption. Demonstrates the use of software implementations as a source of test vectors for verification of hardware implementations and for evaluating hardware versus software speed-up.

Is this course needed?

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.

Course objectives

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.


Format of the course

The course will consist of the lecture, related homework assignments, and the project. The project will involve developing the code in VHDL or Verilog, debugging the code using a functional simulator; synthesizing it using FPGA CAD tools; and estimating the speed and area of the circuit after synthesis, placing and routing.


Relationship to other courses

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 699 Digital Signal Processing Hardware Architectures. 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, ECE 680 Physical VLSI Design, and ECE 681 VLSI Design for ASICs.