The Meyer Lectures on Digital Systems
Module 4: Computer Logic Circuits
Objectives and Outcomes
© 2013
Learning Outcome
an ability to analyze and design computer logic circuits
Learning Objectives
- compare and contrast three different signed number notations: sign and magnitude, diminished radix, and radix
- convert a number from one signed notation to another
- describe how to perform sign extension of a number represented using any of the three notation schemes
- perform radix addition and subtraction
- describe the various conditions of interest following an arithmetic operation: overflow, carry/borrow, negative, zero
- describe the operation of a half-adder and write equations for its sum (S) and carry (C) outputs
- describe the operation of a full adder and write equations for its sum (S) and carry (C) outputs
- design a “population counting” or “vote counting” circuit using an array of half-adders and/or fulladders
- design an N-digit radix adder/subtractor circuit with condition codes
- design a (signed or unsigned) magnitude comparator circuit that determines if A=B, A<B, or A>B
- describe the operation of a carry look-ahead (CLA) adder circuit, and compare its performance to that of a ripple adder circuit
- define the CLA propagate (P) and generate (G) functions, and show how they can be realized using a half-adder
- write the equation for the carry out function of an arbitrary CLA bit position
- draw a diagram depicting the overall organization of a CLA
- determine the worst case propagation delay incurred by a practical (PLD-based) realization of a CLA
- describe how a “group ripple” adder can be constructed using N-bit CLA blocks
- describe the operation of an unsigned multiplier array constructed using full adders
- determine the full adder arrangement and organization (rows/diagonals) needed to construct an NxM-bit unsigned multiplier array
- determine the worst case propagation delay incurred by a practical (PLD-based) realization of an NxM-bit unsigned multiplier array
- describe the operation of a binary coded decimal (BCD) “correction circuit”
- design a BCD full adder circuit
- design a BCD N-digit radix (base 10) adder/subtractor circuit
- define computer architecture, programming model, and instruction set
- describe the top-down specification, bottom-up implementation strategy as it pertains to the design of a computer
- describe the characteristics of a “two address machine”
- describe the contents of memory: program, operands, results of calculations
- describe the format and fields of a basic machine instruction (opcode and address)
- describe the purpose/function of each basic machine instruction (LDA, STA, ADD, SUB, AND, HLT)
- define what is meant by “assembly-level” instruction mnemonics
- draw a diagram of a simple computer, showing the arrangement and interconnection of each functional block
- trace the execution of a computer program, identifying each step of an instruction’s microsequence (fetch and execute cycles)
- distinguish between synchronous and combinational system control signals
- describe the operation of memory and the function of its control signals: MSL, MOE, and MWE
- describe the operation of the program counter (PC) and the function of its control signals: ARS, PCC, and POA
- describe the operation of the instruction register (IR) and the function of its control signals: IRL and IRA
- describe the operation of the ALU and the function of its control signals: ALE, ALX, ALY, and AOE
- describe the operation of the instruction decoder/microsequencer and derive the system control table
- describe the basic hardware-imposed system timing constraints: only one device can drive a bus during a given machine cycle, and data cannot pass through more than one flip-flop (register) per cycle
- discuss how the instruction register can be loaded with the contents of the memory location pointed to be the program counter and the program counter can be incremented on the same clock edge
- modify a reference ALU design to perform different functions (e.g., shift and rotate)
- describe how input/output instructions can be added to the base machine architecture
- describe the operation of the I/O block and the function of its control signals: IOR and IOW
- compare and contrast the operation of OUT instructions with and without a transparent latch as an integral part of the I/O block
- compare and contrast “jump” and “branch” transfer-of-control instructions along with the architectural features needed to support them
- distinguish conditional and unconditional branches
- describe the basis for which a conditional branch is “taken” or “not taken”
- describe the changes needed to the instruction decoder/microsequencer in order to dynamically change the number of instruction execute cycles based on the opcode
- compare and contrast the machine’s asynchronous reset (“START”) with the synchronous state counter reset (“RST”)
- describe the operation of a stack mechanism (LIFO queue)
- describe the operation of the stack pointer (SP) register and the function of its control signals: ARS, SPI, SPD, SPA
- compare and contrast the two possible stack conventions: SP pointing to the top stack item vs. SP pointing to the top stack item
- describe how stack manipulation instructions (PSH/POP) can be added to the base machine architecture
- discuss the consequences of having an unbalanced set of PSH and POP instructions in a given program
- discuss the reasons for using a stack as a subroutine linkage mechanism: arbitrary nesting of subroutine calls, passing parameters to subroutines, recursion, and reentrancy
- describe how subroutine linkage instructions (JSR/RTS) can be added to the base machine architecture
- analyze the effect of changing the stack convention utilized (SP points to top stack item vs. next available location) on instruction cycle counts