Chapter 4
Chapter 4
• Register Transfer
• Arithmetic Microoperations
• Logic Microoperations
• Shift Microoperations
MICROOPERATIONS (1)
MICROOPERATION (2)
Registers ALU
(R) (f)
1 clock cycle
R f(R, R)
DESIGNATION OF REGISTERS
• Registers and their contents can be viewed and represented in various ways
– A register can be viewed as a single entity:
MAR
– Registers may also be represented showing the bits of data they contain
Register Transfer Language
DESIGNATION OF REGISTERS
• Designation of a register
- a register
- portion of a register
- a bit of a register
• Common ways of drawing the block diagram of a
register
• The clock is not included as a variable in RTL
Register Showing individual bits
R1 7 6 5 4 3 2 1 0
15 0 15 8 7 0
R2 PC(H) PC(L)
Numbering of bits Subfields
Register Transfer
REGISTER TRANSFER
REGISTER TRANSFER
CONTROL FUNCTIONS
• Often actions need to only occur if a certain condition is true
• This is similar to an “if” statement in a programming language
• In digital systems, this is often done via a control signal, called
a control function
– If the signal is 1, the action takes place
• This is represented as:
P: R2 R1
Which means “if P = 1, then load the contents of register R1
into register R2”, i.e., if (P = 1) then (R2 R1)
Register Transfer
t t+1
Timing diagram
Clock
Load
Transfer occurs here
• The same clock controls the circuits that generate the control function and
the destination register
• Registers are assumed to use positive-edge-triggered flip-flops
Register Transfer
SIMULTANEOUS OPERATIONS
P: R3 R5, MAR IR
CONNECTING REGISTRS
Bus lines
B1 C1 D 1 B2 C2 D 2 B3 C3 D 3 B4 C 4 D 4
0 0 0 0
4 x1 4 x1 4 x1 4 x1
MUX MUX MUX MUX
x
select
y
4-line bus
Bus and Memory Transfers
Load
Reg. R0 Reg. R1 Reg. R2 Reg. R3
D 0 D1 D2 D 3
z E (enable)
Select 2x4
w
Decoder
S0 0
Select 1
S1 2
Enable 3
Bus and Memory Transfers
or
BUS R1, R2 BUS
MEMORY (RAM)
• Memory (RAM) can be thought as a sequential circuits containing some
number of registers
• These registers hold the words of memory
• Each of the r registers is indicated by an address
• These addresses range from 0 to r-1
• Each register (word) can hold n bits of data
• Assume the RAM contains r = 2k words. It needs the following
– n data input lines
– n data output lines data input lines
– k address lines n
– A Read control line
address lines
– A Write control line k
RAM
Read
unit
Write
n
data output lines
Bus and Memory Transfers
MEMORY TRANSFER
• Collectively, the memory is viewed at the register level as a device,
M.
• Since it contains multiple locations, we must specify which address
in memory we will be using
• This is done by indexing memory references
• Memory is usually accessed in computer systems by putting the
desired address in a special register, the Memory Address Register
(MAR, or AR)
• When memory is accessed, the contents of the MAR get sent to the
memory unit’s address lines
M
Read
AR Memory
unit Write
MEMORY READ
• To read a value from a location in memory and load it into a register, the register
transfer language notation looks like this:
R1 M[MAR]
• This causes the following to occur
– The contents of the MAR get sent to the memory address lines
– A Read (= 1) gets sent to the memory unit
– The contents of the specified address are put on the memory’s output data
lines
– These get sent over the bus to be loaded into register R1
Bus and Memory Transfers
MEMORY WRITE
MICROOPERATIONS
ARITHMETIC MICROOPERATIONS
• The basic arithmetic microoperations are
– Addition
– Subtraction
– Increment
– Decrement
C4 S3 S2 S1 S0
Binary Adder-Subtractor
B3 A3 B2 A2 B1 A1 B0 A0
C3 C2 C1 C0
FA FA FA FA
C4 S3 S2 S1 S0
Binary Incrementer
A3 A2 A1 A0 1
x y x y x y x y
HA HA HA HA
C S C S C S C S
C4 S3 S2 S1 S0
Arithmetic Microoperations
ARITHMETIC CIRCUIT
Cin
S1
S0
A0 X0 C0
S1 D0
S0 FA
B0 0 4x1 Y0 C1
1 MUX
2
3
A1 X1 C1
S1 FA D1
S0
B1 0 4x1 Y1 C2
1 MUX
2
3
A2 X2 C2
S1 FA D2
S0
B2 0 4x1 Y2 C3
1 MUX
2
3
A3 X3 C3
S1 D3
S0 FA
B3 0 4x1 Y3 C4
1 MUX
2
3 Cout
0 1
LOGIC MICROOPERATIONS
• Specify binary operations on the strings of bits in registers
– Logic microoperations are bit-wise operations, i.e., they work on the individual bits of
data
– useful for bit manipulations on binary data
– useful for making logical decisions based on the bit value
• There are, in principle, 16 different logic functions that can be defined
over two binary input variables
A B F0 F1 F2 … F13 F14 F15
0 0 0 0 0 … 1 1 1
0 1 0 0 0 … 1 1 1
1 0 0 0 1 … 0 1 1
1 1 0 1 0 … 1 0 1
• However, most systems only implement four of these
– AND (), OR (), XOR (), Complement/NOT
• The others can be created from combination of these
Logic Microoperations
Ai
0
Bi
1
4X1 Fi
MUX
2
3 Select
S1
S0
Function table
S1 S 0 Output -operation
0 0 F=AB AND
0 1 F = AB OR
1 0 F=AB XOR
1 1 F = A’ Complement
Logic Microoperations
– Selective-set AA+B
– Selective-complement AAB
– Selective-clear A A • B’
– Mask (Delete) AA•B
– Clear AAB
– Insert A (A • B) + C
– Compare AAB
– ...
Logic Microoperations
SELECTIVE SET
1 1 0 0 At
1010 B
1 1 1 0 At+1 (A A + B)
SELECTIVE COMPLEMENT
1 1 0 0 At
1010 B
0 1 1 0 At+1 (A A B)
SELECTIVE CLEAR
1 1 0 0 At
1010 B
0 1 0 0 At+1 (A A B’)
MASK OPERATION
1 1 0 0 At
1010 B
1 0 0 0 At+1 (A A B)
CLEAR OPERATION
• In a clear operation, if the bits in the same position in A and B are the
same, they are cleared in A, otherwise they are set in A
1 1 0 0 At
1010 B
0 1 1 0 At+1 (A A B)
Logic Microoperations
INSERT OPERATION
• An insert operation is used to introduce a specific bit pattern into A register, leaving the
other bit positions unchanged
• This is done as
– A mask operation to clear the desired bit positions, followed by
– An OR operation to introduce the new bits into the desired positions
– Example
» Suppose you wanted to introduce 1010 into the low order four bits of A:
1101 1000 1011 0001 A (Original)
1101 1000 1011 1010 A (Desired)
LOGICAL SHIFT
• In a logical shift the serial input to the shift is a 0.
CIRCULAR SHIFT
• In a circular shift the serial input is the bit that is shifted out
of the other end of the register.
0
CF
CF
Shift Microoperations
ARITHMETIC SHIFT
• An left arithmetic shift operation must be checked for the
overflow
0
sign
bit
S
MUX H0
0
1
A0
A1 S
MUX H1
0
A2 1
A3
S
MUX H2
0
1
S
MUX H3
0
1
Serial
input (IL)
Shift Microoperations
Arithmetic D i
Circuit
Select
Ci+1
0 4x1 Fi
1 MUX
2
3
Ei
Logic
Bi Circuit
Ai
Ai-1 shr
Ai+1 shl