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 two projects. Each 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 ASIC Design.