IFT 211: Digital Logic Design

Learning Outcomes
At the end of this course, students will be able to:

  1. explain why everything is data, including instructions, in computers;
  2. describe how negative integers, fixed-length numbers, and non-numeric data are
    represented;
  3. convert numerical data from one format to another;
  4. describe computations as a system characterised by a known set of configurations with
    transitions from one unique configuration (state) to another (state);
  5. describe the distinction between systems whose output is only a function of their input
    (combinational) and those with memory/history (sequential);
  6. describe a computer as a state machine that interprets machine instructions;
  7. articulate that there are many equivalent representations of computer functionality,
    including logical expressions and gates, and be able to use mathematical expressions to
    describe the functions of simple combinational and sequential circuits; and
  8. design the basic building blocks of a computer: arithmetic-logic unit (gate-level), registers
    (gate-level), central processing unit (register transfer-level), and memory (register
    transfer-level).

    Course Contents
    Introduction to information representation and number systems. Boolean algebra and
    switching theory. Manipulation and minimisation of completely and incompletely specified
    Boolean functions. Physical properties of gates: fan-in, fan-out, propagation delay, timing
    diagrams and tri-state drivers. Combinational circuits design using multiplexers, decoders,
    comparators and adders. Sequential circuit analysis and design, basic flip-flops, clocking and
    timing diagrams. Registers, counters, RAMs, ROMs, PLAs, PLDs, and FPGAs.
    Lab Work: Simple combinational gates (AND, OR, NOT, NAND, NOR); Combinational circuits
    design using multiplexers, decoders, comparators and adders. Sequential circuit analysis and
    design using basic flip-flops (S-R, J-K, D, T flip-flops); Demonstration of registers, counters,
    RAMs, ROMs, PLAs, PLDs, and FPGAs.