Course
Description
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.
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 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.
Relationship to Existing
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 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, ECE 680
Physical VLSI Design and ECE 681 VLSI Design
Automation.