**
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 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*.