Digital Hardware: 2008-2009
Lecturer | |
Degrees | |
Term | Trinity Term 2009 (16 lectures) |
Overview
This course covers the fundamentals of the electronic circuits that are used to build computers. Beginning with the functions of individual transistors, and building towards a complete implementation of a simple processor, the course explains in a structured way how complex behaviours are built up from simpler parts. Students will gain an understanding of the factors that affect the performance of hardware, and how these factors change with changes of scale, for example in the size of the data that a computer system handles. They will also gain experience in the important technique of hierarchical specification, implementation and proof of correctness using logic and data representation.Learning outcomes
After studying this course, undergraduates will be able to:
- Design small combinational and sequential circuits from logic gates.
- Understand the design of simple architectures processors.
- Implement simple programs in assembly language.
- Understand the characteristics and limitations of computer arithmetic.
- Distinguish between specification and implementation, and appreciate the use of rigorous correctness arguments.
Synopsis
- Overview; propositional and predicate logic; disjunctive normal form.
- Adequacy of {AND, OR, NOT}; K-maps; adequacy of NAND.
- Transistors; inverter; nand; nor; exor; and; or.
- Multiplexer; demultiplexer; decoder; programmable logic array.
- BCD example; shifter; adders; arithmetic-logic unit.
- Vector ALU; ripple-carry adder; look-ahead adder.
- State; latches; flip flops; sequential circuits.
- 3-bit counter; data representation; hazards.
- Registers; random-access memory; register-transfer design.
- Processor; the fetch-execute cycle; control unit.
- Microcode; implementation of MIPS; branch instructions.
- Alternative architectures.
- Data representation.
- Signed and unsigned integer arithmetic.
- Floating-point arithmetic.
- Revision.
There will be one practical on simulating a carry-look ahead adder in Hugs. There are no pre-requisites for this course. A MIPS simulator may be used, plus the carry-look ahead adder in Hugs.
Syllabus
Simple design of combinational and sequential circuits; standard design elements. Computer arithmetic for integers and floating-point numbers; basic error analysis. Register transfer level design of a simple microprocessor. Simple programming in assembly language. Rôle of assemblers, compilers and linkers. Memory hierarchy.Reading list
- S.A. Ward and R.H. Halstead, Computation Structures, MIT Press, 1990.
- A.S. Tanenbaum, Structured Computer Organisation, Prentice-Hall International, Third Edition, 1990.
- M.M. Mano, Digital Design, Prentice-Hall International, 1984.
- T. H. Cormen, E. E. Leiserson and R. L. Rivest, Introduction to Algorithms, first edition only, The MIT Press, 1990.
- J. L. Hennessy and D. A. Patterson, Computer Organisation and Design: the hardware/software interface, Morgan-Kaufmann, 2005 (Third edition).
Taking our courses
This form is not to be used by students studying for a degree in the Department of Computer Science, or for Visiting Students who are registered for Computer Science courses
Other matriculated University of Oxford students who are interested in taking this, or other, courses in the Department of Computer Science, must complete this online form by 17.00 on Friday of 0th week of term in which the course is taught. Late requests, and requests sent by email, will not be considered. All requests must be approved by the relevant Computer Science departmental committee and can only be submitted using this form.