This eTEACH player requires that you have Flash 8 or above installed. If you do not, download the player from Adobe.

The next major heading marks the start of the presentation. Each next lower level heading thereafter marks the beginning of a slide. An audio control button that plays the audio track for the slide follows the contents and notes for each slide in the presentation. Pressing this button after the audio playback toggles pausing and resuming the playback. Before moving off the play audio button, complete listening to the audio track for the slide or pause the audio. Control + Shift + L increases volume. Control + Shift + Q decreases volume.

There is a table of contents for the presentation following the presentation. The table of contents can be used to access sections of the presentation in random order. Type Control + Shift + C to go to the table of contents.

When links to external resources are present in the presentation, a list of these resource links follows the table of contents. When following a link to a resource, you should remember which slide you were on. When you return to the main page, your screen-reader may not return you to that slide. You can use the table of contents or just click through the headings to return to the correct slide.

This presentation contains resources. Click here to proceed immediately to the resource list. A link to resources follows each slide.

If the presentation contains one or more quizzes, a button to take you to each quiz follows the slide at which the quiz is to occur. Each question in the quiz begins with a level three heading. The answer choices will be presented in a list. If your instructor has supplied a hint for the questions, it will follow the answers and is formatted as an anchor. The correct answer to the question follows the list of answers and the hint (if included). The correct answer is also formatted as an anchor.

Lecture 23 Registers and Register Transfers

Overview Registers and load enable Register transfer operations Micro-operations Arithmetic, logic, and shift Micro-operations on a single register Multiplexer-based transfers Shift registers

Registers Register a collection of binary storage elements Sequential logic which can be defined by a state table Stores a vector of binary values Frequently used to perform simple data storage and data movement and processing operations

Register Design Models Designing with registers? Add predefined combinational circuits to registers Example: To count up, connect the register flip-flops to an incrementer Design individual cells using the state diagram/state table model and combine them into a register A 1-bit cell has just two states Output is usually the state variable

Register Storage Expectations: A register can store information for multiple clock cycles To store or load information should be controlled by a signal Reality: A D flip-flop register loads information on every clock cycle Realizing expectations: Use a signal to block the clock to the register, Use a signal to control feedback of the output of the register back to its inputs, or Use other SR or JK flip-flops which for (0,0) applied store their state Load is a frequent name for the signal that controls register storage and loading Load = 1: Load the values on the data inputs Load = 0: Store the values in the register

Registers with Clock Gating Load signal is used to enable the clock signal to pass through if 1 and prevent the clock signal from passing through if 0. Example: For Positive Edge-Triggered or Negative Pulse Master-Slave Flip-flop: What logic is needed for gating? What is the problem? Clock Load Gated Clock to FF Clock Skew of gated clocks with respect to clock or each other Gated Clock = Clock + Load Do not use clock gating in this course!

A more reliable way to selectively load a register: Run the clock continuously, and Selectively use a load control to change the register contents. Example: 2-bit register with Load Control: For Load = 0, loads register contents (hold current values) For Load = 1, loads input values (load new values) Hardware more complex than clock gating, but free of timing problems Registers with Load-Controlled Feedback C D Q C D Q Clock In0 In1 A1 A0 Y1 Y0 Load 2-to-1 Multiplexers

Register Transfer Operations Register Transfer Operations The movement and processing of data stored in registers Three basic components: set of registers operations control of operations Elementary Operations -- load, count, shift, add, bitwise "OR", etc. Elementary operations called micro-operations

Register Notation Letters and numbers denotes a register (ex. R2, PC, IR) Parentheses ( ) denotes a range of register bits (ex. R1(1), PC(7:0), AR(L)) Arrow () denotes data transfer (ex. R1 R2, PC(L) R0) Comma separates parallel operations Brackets [ ] Specifies a memory address For example R0 M[AR] R 7 6 5 4 3 2 1 0 15 8 7 0 15 0 PC(H) PC(L) R2

Conditional Transfer If (K1 =1) then (R2 R1) is shortened to K1: (R2 R1) where K1 is a control variable specifying a conditional execution of the micro-operation. R1 R2 K 1 Clock Load n Clock K1 Transfer Occurs Here No Transfers Occur Here

Micro-operations Types of micro-operations: Transfer - move data from one set of registers to another Arithmetic - perform arithmetic on data in registers Logic - manipulate data or use bitwise logical operations Shift - shift data in registers Arithmetic operations + Addition Subtraction * Multiplication / Division Logical operations Logical OR Logical AND Logical Exclusive OR Not

Example Micro-operations Add the content of R1 to the content of R2 and place the result in R1. R1 R1 + R2 Multiply the content of R1 by the content of R6 and place the result in PC. PC R1 * R6 Exclusive OR the content of R1 with the content of R2 and place the result in R1. R1 R1 R2

Example Micro-operations (Continued) Take the 1's Complement of the contents of R2 and place it in the PC. PC R2 On condition K1 OR K2, the content of R1 is Logic bitwise Ored with the content of R3 and the result placed in R1. (K1 + K2): R1 R1 R3 NOTE: "+" (as in K1 + K2) and means OR. In R1 R1 + R3, + means plus.

Control Expressions The control expression for an operation appears to the left of the operation and is separated from it by a colon Control expressions specify the logical condition for the operation to occur Control expression values of: Logic "1" -- the operation occurs. Logic "0" -- the operation is does not occur. Example: X K1 : R1 R1 + R2 X K1 : R1 R1 + R2 + 1 Variable K1 enables the add or subtract operation. If X =0, then X =1 so X K1 = 1, activating the addition of R1 and R2. If X = 1, then X K1 = 1, activating the addition of R1 and the two's complement of R2 (subtract).

Arithmetic Micro-operations From Table 7-3: Note that any register may be specified for source 1, source 2, or destination. These simple micro-operations operate on the whole word Symbolic Designation Description R0 ¬ R1 + R2 Addition R0 ¬ R1 Ones Complement R0 ¬ R1 + 1 Two's Complement R0 ¬ R2 + R1 + 1 R2 minus R1 (2's Comp) R1 ¬ R1 + 1 Increment (count up) R1 ¬ R1 1 Decrement (count down)

Logical Micro-operations From Table 7-4: Symbolic Designation Description R0 ¬ R1 Bitwise NOT R0 ¬ R1 Ú R2 Bitwise OR (sets bits) R0 ¬ R1 Ù R2 Bitwise AND (clears bits) R0 ¬ R1 Å R2 Bitwise EXOR (complements bits)

Logical Micro-operations (continued) Let R1 = 10101010, and R2 = 11110000 Then after the operation, R0 becomes:

Shift Micro-operations From Table 7-5: Let R2 = 11001001 Then after the operation, R1 becomes: Symbolic Designation Description R1 ¬ sl R2 Shift Left R1 ¬ sr R2 Shift Right R1 Operation 10010010 R1 ¬ sl R2 01100100 R1 ¬ sr R2 Note: These shifts "zero fill". Sometimes a separate flip-flop is used to provide the data shifted in, or to catch the data shifted out. Other shifts are possible (rotates, arithmetic) (see Chapter 11).

Register Transfer Structures Multiplexer-Based Transfers One of multiple inputs selected Bus-Based Transfers Multiple inputs are selected by a shared multiplexer driving a bus that feeds inputs to multiple registers Three-State Bus Multiple inputs are selected by 3-state drivers with outputs connected to a bus that feeds multiple registers Other Transfer Structures Use multiple multiplexers, multiple buses, and combinations of all the above

Mux-based covered here Other three will be covered in the next lecture (lecture 24)

Multiplexer-Based Transfers Multiplexers connected to register inputs produce flexible transfer structures (Note: Clocks are omitted for clarity) The transfers are: K1: R0 R1 K2 K1: R0 R2 Load R0 n MUX S K 2 0 1 Load Load n n K 1 R2 R1

Shift Registers Shift Registers move data laterally within the register toward its MSB or LSB position In the simplest case, the shift register is simply a set of D flip-flops connected in a row like this: Data input, In, is called a serial input or the shift right input. Data output, Out, is often called the serial output. The vector (A, B, C, Out) is called the parallel output.

Shift Registers (continued) The behavior of the serial shift register is given in the listing on the lower right T0 is the register state just before the first clock pulse occurs T1 is after the first pulse and before the second. Initially unknown states are denoted by ? D Q D Q D Q D Q In Clock CP A B C Out CP In A B C Out T0 0 ? ? ? ? T1 1 0 ? ? ? T2 1 1 0 ? ? T3 0 1 1 0 ? T4 1 T5 1 T6 1 0 1 1 0 1 0 1 1 1 1 0 1

ROW T4: 10110 Row T5: 11011 Row T6: 11101

Parallel Load Shift Registers By adding a mux between each shift register stage, data can be shifted or loaded If SHIFT is low, A and B are replaced by the data on DA and DB lines, else data shifts right on each clock. By adding more bits, we can make n-bit parallel load shift registers. A parallel load shift register with an added hold operation that stores data unchanged is given in Figure 7-10 of the text. D Q D Q A B CP SHIFT IN DA DB

By placing a 4-input multiplexer in front of each D flip-flop in a shift register, we can implement a circuit with shifts right, shifts left, parallel load, hold. Shift registers can also be designed to shift more than a single bit position right or left Shift register can be designed to shift a variable number of bit positions specified by a variable called a shift amount. Shift Registers with Additional Functions

Summary Registers and load enable Register transfer operations Micro-operations Arithmetic, logic, and shift Micro-operations on a single register Multiplexer-based transfers Shift registers

- Overview (Slide 2)
- Registers (Slide 3)
- Register Design Models (Slide 4)
- Register Storage (Slide 5)
- Registers with Clock Gating (Slide 6)
- Register with Load-Controlled Feedback (Slide 7)
- Register Transfer Operations (Slide 8)
- Register Notation (Slide 9)
- Conditional Transfers (Slide 10)
- Micro-operations (Slide 11)
- Example Micro-operations (Slide 12)
- Control Expressions (Slide 14)
- Arithmetic Micro-operations (Slide 15)
- Logical Micro-operations (Slide 16)
- Logical Micro-operations (examples) (Slide 17)
- Shift Micro-Operations (Slide 18)
- Register Transfer Structures (Slide 19)
- Multiplexer-based Transfers (Slide 20)
- Shift Registers (Slide 21)
- Shift Register Simulation (Slide 22)
- Parallel Load Shift Register (Slide 23)
- Shift Registers with Additional Functions (Slide 24)
- Summary (Slide 25)

The object immediately following this sentence is the media player.