This course is a prerequisite for ECAD (Part IB) and VLSI Design (Part II).

Aims

The aims of this course are to present the principles of combinational
and sequential digital logic design and optimisation at a gate level.
The use of transistors for interfacing and constructing gates is also
introduced.

Lectures

Introduction.
The parts of a simple computer. Binary and representation of integers
in binary. ASCII codes for characters. Switch logic.

Boolean algebra.
Truth tables and boolean algebra. Idealised logic gates and symbols.
DeMorgan's rules. Logic to perform addition with ripple carry.

Logic minimisation.
Normal forms. Boolean cubes and Karnaugh maps for boolean
optimisation.

Complexities of logic design.
Multilevel logic. An introduction to timing diagrams. Digital
signals in the analog world. Hazards and hazard elimination. Fast
carry propagation.

Flip-flops.
Memory elements, state and state diagrams. RS asynchronous
flip-flop. Synchronous flip-flops: D, T and JK flip-flops. Setup and
hold times.

Synchronous state machines.
Moore and Mealy finite state machines. Reset and self starting. State
transition diagrams.

Further state machines.
State assignment and unique state encoding. One hot encoding. State
minimisation.

Asynchronous state machines.
Fundamental mode machines and Muller C-elements. Asynchronous state
machines in terms of RS flip-flops.

Discrete components.
Revision of resistance, Ohm's law and capacitance. Characteristics of
diodes, NMOS and PMOS field effect transistors. NMOS and CMOS
inverters. Rise and fall times. Voltage followers.

Programmable logic.
The structure and use of programmable logic arrays (PLAs). A brief
introduction to FPGAs.

Memories and interfaces.
Use of SRAM and ROM: addressing, control signals, buses and tristate drivers.

Objectives

At the end of the course students should

understand the relationships between combination logic
and boolean algebra, and between sequential logic and finite state
machines

be able to design and minimise combinational logic

appreciate tradeoffs in complexity and speed of combinational
designs

understand how state can be stored in a digital logic
circuit

understand the difference between asynchronous and synchronous logic

know how to design a simple finite state machine from a specification
and be able to implement this in gates and edge triggered flip-flops

understand how to use MOS transistors

Recommended books

* Katz, R.H. (2004). Contemporary logic design.
Benjamin/Cummings. The 1994 edition is more than sufficient.
Hayes, J.P. (1993). Introduction to digital logic design.
Addison-Wesley.

Books for reference:

Mead, C. & Conway, L. (1980). Introduction to VLSI systems. Addison-Wesley (used in Part II VLSI).
Horowitz, P. & Hill, W. (1989). The art of electronics. Cambridge University Press (2nd ed.) (more analog).