**
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(2^{n}). 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(2^{n}). 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 Design for ASICs*.