ControlDesign (GCD Processor Classic and One Hot Method)
ControlDesign (GCD Processor Classic and One Hot Method)
Chapter 5. JPH.
Processor with DP and CU
Data Control
Signals Instructions
Datapath
Unit
Multiplexers MUX1
Register File
RF
CONTROL
UNIT
Multiplexers MUX2
F1 F2
A := A + B
Control
Signals Instructions
Datapath
Unit
p q r s MUX1
Select p-t
t
A+B
RF
Write A
A Read A
B Read B
CU
u v MUX2
Select u-w
w x y z Select v-x
A B
F1 F2
A+B Add
Overflow
Finite State Machine
Wikipedia
GCD Procedure
GCD Procedure
Conditions Actions
XR := 20; YR := 12; 20 12
XR > 0: XR > YR: XR := XR – YR = 8; 8 12
XR > 0: XR ≤ YR: YR := 8; XR := 12; XR := XR – YR = 4; 12 8
4 8
XR > 0: XR ≤ YR: YR := 4; XR := 8; XR := XR – YR = 4; 8 4
4 4
XR > 0: XR ≤ YR: YR := 4; XR := 4; XR := XR – YR = 0; 0 4
XR ≤ 0: Z := 4;
GCD Hardware
Reset
Z X Y
Control
Unit
Subtract
Multiplexers MUX Swap
Select XY
Load XR
Subtractor Comparators
(XR ≥ YR)
Datapath Unit (XR > 0)
GCD Hardware
Reset Begin
Z X Y
Control
Unit
Subtract
Multiplexers MUX Swap
Select XY
Load XR
Subtractor Comparators
(XR ≥ YR)
Datapath Unit (XR > 0)
GCD Hardware
Reset Begin
Z X Y
Control
Unit Select XY
Subtract
Multiplexers MUX Swap
Select XY
Load XR
Subtractor Comparators
(XR ≥ YR)
Datapath Unit (XR > 0)
GCD Hardware
Reset Begin
Z X Y
Control
Unit Select XY
Subtract
Multiplexers MUX Swap
Select XY
Load XR
Subtractor Comparators
(XR ≥ YR)
Datapath Unit (XR > 0)
GCD Hardware
Reset Begin
Z X Y
Control
Unit Select XY
Load XR
Subtract
Load YR
Multiplexers MUX Swap
Select XY
Load XR
Subtractor Comparators
(XR ≥ YR)
Datapath Unit (XR > 0)
GCD Control Unit
Inputs
Outputs
S0 (Begin) 0 0 1 1 1
GCD Hardware
Reset Begin
Z X Y
Subtract
Multiplexers MUX Swap
Select XY
Load XR
Subtractor Comparators
(XR ≥ YR)
Datapath Unit (XR > 0)
GCD Hardware
Reset Begin
Z X Y
Control
Unit
Subtract
Multiplexers MUX Swap
Select XY
Load XR
Subtractor Comparators
(XR ≥ YR)
Datapath Unit (XR > 0)
GCD Hardware
Reset Begin
Z X Y
Control CU Inputs
Unit
XR > 0
Subtract XR >= YR
Multiplexers MUX Swap
Select XY
Load XR
Subtractor Comparators
(XR ≥ YR)
Datapath Unit (XR > 0)
GCD Hardware
Reset Begin
Z X Y
Control CU Inputs
Unit
XR > 0
Subtract XR >= YR
Multiplexers MUX Swap
Select XY CU New State
Subtract
Load XR
Subtractor Comparators
(XR ≥ YR)
Datapath Unit (XR > 0)
GCD Hardware
Reset Begin
Z X Y
Control CU Inputs
Unit
XR > 0
Subtract XR >= YR
Multiplexers MUX Swap
Select XY CU New State
Swap
Load XR
Subtractor Comparators
(XR ≥ YR)
Datapath Unit (XR > 0)
GCD Hardware
Reset Begin
Z X Y
Control CU Inputs
Unit
XR > 0
Subtract XR >= YR
Multiplexers MUX Swap
Select XY CU New State
Exit
Load XR
Subtractor Comparators
(XR ≥ YR)
Datapath Unit (XR > 0)
GCD Control Unit
Inputs
Outputs
(XR > 0) (XR >= YR)
State 0- 10 11 Subtract Swap Select XY Load XR Load YR
S0 (Begin) S3 S1 S2 0 0 1 1 1
S1
10
S0
0X
S3
11
S2
S1 Swap
S2 Subtract
GCD Hardware
Reset Swap
Z X Y
Control CU Outputs
Unit
Subtract
Multiplexers MUX Swap
Select XY
Load XR
Subtractor Comparators
(XR ≥ YR)
Datapath Unit (XR > 0)
GCD Hardware
Reset Swap
Z X Y
CU Outputs
Control
Unit Swap
Load XR
Subtract
Multiplexers MUX Load YR
Swap
Select XY
Load XR
Subtractor Comparators
(XR ≥ YR)
Datapath Unit (XR > 0)
GCD Control Unit
Inputs
Outputs
(XR > 0) (XR >= YR)
State 0- 10 11 Subtract Swap Select XY Load XR Load YR
S0 (Begin) S3 S1 S2 0 0 1 1 1
S1 (Swap) 0 1 0 1 1
S1
10
S0 0X
S3
11
S1 Swap S2
S2 Subtract
GCD Hardware
Reset Swap
Z X Y
XR >= YR
Subtractor Comparators
(XR ≥ YR)
Datapath Unit (XR > 0) Subtract
GCD Hardware
Reset Swap
Z X Y
XR >= YR
Subtractor Comparators
(XR ≥ YR)
Datapath Unit (XR > 0) Subtract
GCD Control Unit
Inputs
Outputs
(XR > 0) (XR >= YR)
State 0- 10 11 Subtract Swap Select XY Load XR Load YR
S0 (Begin) S3 S1 S2 0 0 1 1 1
S1 (Swap) S2 S2 S2 0 1 0 1 1
S1
10
XX
S0
0X
S3
11
S2
GCD Hardware
Reset Subtract
Z X Y
Control CU Outputs
Unit
Subtract
Multiplexers MUX Swap
Select XY
Load XR
Subtractor Comparators
(XR ≥ YR)
Datapath Unit (XR > 0)
GCD Hardware
Reset Subtract
Z X Y
Control CU Outputs
Unit
Subtract
Subtract Load XR
Multiplexers MUX Swap
Select XY
Load XR
Subtractor Comparators
(XR ≥ YR)
Datapath Unit (XR > 0)
GCD Control Unit
Inputs
Outputs
(XR > 0) (XR >= YR)
State 0- 10 11 Subtract Swap Select XY Load XR Load YR
S0 (Begin) S3 S1 S2 0 0 1 1 1
S1 (Swap) S2 S2 S2 0 1 0 1 1
S2 (Subtract) 1 0 0 1 0
S1
10
XX
S0
0X
S3
11
S2
GCD Hardware
Reset Subtract
Z X Y
CU Next State?
Control
Unit CU Inputs
XR > 0
Subtract
XR >= YR
Multiplexers MUX Swap
Select XY
Swap
Load XR
XR >= YR
Subtractor Comparators
(XR ≥ YR)
Datapath Unit (XR > 0) Subtract
GCD Hardware
Reset Subtract
Z X Y
CU Next State?
Control
Unit CU Inputs
XR > 0
Subtract
XR >= YR
Multiplexers MUX Swap
Select XY
Swap
Load XR
XR >= YR
Subtractor Comparators
(XR ≥ YR)
Datapath Unit (XR > 0) Exit
GCD Control Unit
Inputs
Outputs
(XR > 0) (XR >= YR)
State 0- 10 11 Subtract Swap Select XY Load XR Load YR
S0 (Begin) S3 S1 S2 0 0 1 1 1
S1 (Swap) S2 S2 S2 0 1 0 1 1
S2 (Subtract) S3 S1 S2 1 0 0 1 0
S1
10
XX
S0
0X
S3
11 10
Exit State? S2
0X
GCD Control Unit – Truth Table
Inputs
Outputs
(XR > 0) (XR >= YR)
State 0- 10 11 Subtract Swap Select XY Load XR Load YR
S0 (Begin) S3 S1 S2 0 0 1 1 1
S1 (Swap) S2 S2 S2 0 1 0 1 1
S2 (Subtract) S3 S1 S2 1 0 0 1 0
S3 (End) S3 S3 S3 0 0 0 0 0
S1
10
XX
S0
0X
S3
11 10
S2
FSM 0X
Control Unit Design
● Hardwired Control
– Specific to the function of the processor (eg. GCD)
– CU design starts from the FSM
– Fast
– Classical Method
– One hot method
● Microprogrammed Control
– Uses control memory – can be reprogrammed to suit
the function
– Software controlled
Hardwired Control Design
Sequential
Status Logic Control
Signals Signals
Circuit
Instruction
Register
GCD Control Unit – Truth Table
Inputs
Outputs
(XR > 0) (XR >= YR)
State 0- 10 11 Subtract Swap Select XY Load XR Load YR
S0 (Begin) S3 S1 S2 0 0 1 1 1
S1 (Swap) S2 S2 S2 0 1 0 1 1
S2 (Subtract) S3 S1 S2 1 0 0 1 0
S3 (End) S3 S3 S3 0 0 0 0 0
S1
10
XX
S0
0X
S3
11 10
S2
FSM 0X
GCD – Excitation Table
XR > 0 XR ≥ YR Old State New State Subtract Swap Select XY Load XR Load YR
0 d S0 S3 0 0 1 1 1
0 d S1 S2 0 1 0 1 1
0 d S2 S3 1 0 0 1 0
0 d S3 S3 0 0 0 0 0
1 0 S0 S1 0 0 1 1 1
1 0 S1 S2 0 1 0 1 1
1 0 S2 S1 1 0 0 1 0
1 0 S3 S3 0 0 0 0 0
1 1 S0 S2 0 0 1 1 1
1 1 S1 S2 0 1 0 1 1
1 1 S2 S2 1 0 0 1 0
1 1 S3 S3 0 0 0 0 0
CU Design – Classical Method
● How many Flip flops are needed to realize an
n state FSM?
● D0 and D1 are FF present state outputs.
● D0+ and D1+ are FF next state outputs.
D1 D0
S0 = 0 0
Assign a number
S1 = 0 1
for each State
S2 = 1 0
S3 = 1 1
GCD – Excitation Table
XR > 0 XR ≥ YR D1 D0 New State Subtract Swap Select XY Load XR Load YR
0 d 0 0 S3 0 0 1 1 1
0 d 0 1 S2 0 1 0 1 1
0 d 1 0 S3 1 0 0 1 0
0 d 1 1 S3 0 0 0 0 0
1 0 0 0 S1 0 0 1 1 1
1 0 0 1 S2 0 1 0 1 1
1 0 1 0 S1 1 0 0 1 0
1 0 1 1 S3 0 0 0 0 0
1 1 0 0 S2 0 0 1 1 1
1 1 0 1 S2 0 1 0 1 1
1 1 1 0 S2 1 0 0 1 0
1 1 1 1 S3 0 0 0 0 0
GCD – Excitation Table
+ +
XR > 0 XR ≥ YR D1 D0 D1 D0 Subtract Swap Select XY Load XR Load YR
0 d 0 0 1 1 0 0 1 1 1
0 d 0 1 1 0 0 1 0 1 1
0 d 1 0 1 1 1 0 0 1 0
0 d 1 1 1 1 0 0 0 0 0
1 0 0 0 0 1 0 0 1 1 1
1 0 0 1 1 0 0 1 0 1 1
1 0 1 0 0 1 1 0 0 1 0
1 0 1 1 1 1 0 0 0 0 0
1 1 0 0 1 0 0 0 1 1 1
1 1 0 1 1 0 0 1 0 1 1
1 1 1 0 1 0 1 0 0 1 0
1 1 1 1 1 1 0 0 0 0 0
GCD – Classical Method
What
Whatare
arethe
theequations
equationsfor
foreach
eachof
ofthe
theoutputs
outputsin
inthe
theexcitation
excitationtable?
table?
Subtract= D 1⋅D̄0
̄ 1⋅D 0
Swap= D Load XR=D0⋅D1 ̄ 1⋅D̄ 0
Select XY = D Load YR= D̄ 1
CU Design – One Hot Method
D3 D2 D1 D0
S0 = 0 0 0 1
Assign a one hot combination
S1 = 0 0 1 0
for each State
S2 = 0 1 0 0
S3 = 1 0 0 0
S0 (Begin) S3 S1 S2 0 0 1 1 1
S1 (Swap) S2 S2 S2 0 1 0 1 1
S2 (Subtract) S3 S1 S2 1 0 0 1 0
S3 (End) S3 S3 S3 0 0 0 0 0
D 0+
D 1+
D 2+
D 3+
CU Design – One Hot Method
Inputs
Outputs
(XR > 0) (XR >= YR)
State 0- 10 11 Subtract Swap Select XY Load XR Load YR
S0 (Begin) S3 S1 S2 0 0 1 1 1
S1 (Swap) S2 S2 S2 0 1 0 1 1
S2 (Subtract) S3 S1 S2 1 0 0 1 0
S3 (End) S3 S3 S3 0 0 0 0 0
CU Design – One Hot Method
Inputs
Outputs
(XR > 0) (XR >= YR)
State 0- 10 11 Subtract Swap Select XY Load XR Load YR
S0 (Begin) S3 S1 S2 0 0 1 1 1
S1 (Swap) S2 S2 S2 0 1 0 1 1
S2 (Subtract) S3 S1 S2 1 0 0 1 0
S3 (End) S3 S3 S3 0 0 0 0 0
A Q M
OUTBUS
INBUS
COUNT7 Control
Unit
BEGIN
External Comparator c0
Control END ... Internal
c1 Control
Signals 7
CLOCK Signals
Count c10
Multiplier Flowchart
Begin
S0
S1 Yes COUNT7 = 1?
Q(0) = 0? No
A := 0
COUNT := 0 Yes
F := 0 No
M := INBUS
S3 Yes
Q(0) = 0? S7
A := A + M
F := M(7) and Q(0) or F OUTBUS := A
S2 No
S5
Q := INBUS A := A – M
S4 Q(0) := 0
A(7) := F S0
A(6:0).Q := A.Q(7:1) S6 End
COUNT := COUNT + 1
OUTBUS := Q
A := 0
Sign COUNT := 0
c10 Logic F := 0
M[7] M := INBUS
F Q[0]
c10 A Q M
c9
OUTBUS
INBUS
COUNT7 Control
Unit
BEGIN
External Comparator c0
Control END ... Internal
c1 Control
Signals 7
CLOCK c10 Signals
Count c10
S2
Multiplier Control Points
Q := INBUS
Sign
c10 Logic
M[7]
F Q[0]
c10 A Q M
c9
c8
OUTBUS
INBUS
COUNT7 Control
Unit
BEGIN
External Comparator c0
Control END ... Internal
c1 Control
Signals 7
CLOCK c10 Signals
Count c10
S3
Multiplier Control Points
A := A + M
Sign F := M(7) and Q(0) or F
c10 Logic
M[7]
F Q[0]
c10 A Q M
c3 c4
c2
c9
c8
OUTBUS
INBUS
COUNT7 Control
Unit
BEGIN
External Comparator c0
Control END ... Internal
c1 Control
Signals 7
CLOCK c10 Signals
Count c10
S4
Multiplier Control Points
A(7) := F
Sign A(6:0).Q := A.Q(7:1)
c0 Logic
c10 COUNT := COUNT + 1
c1 M[7]
F Q[0]
c10 A Q M
c3 c4
c2
c9
c8
OUTBUS
INBUS
COUNT7 Control
Unit
BEGIN
External Comparator c0
Control END ... Internal
c1 Control
Signals 7
CLOCK c10 Signals
Count c11 c10
S5
Multiplier Control Points
A := A – M
Sign Q(0) := 0
c0 Logic
c10 M[7]
c1 Q[0]
F
c10 A Q M
c3 c4
c2
c9
c8
OUTBUS
INBUS
COUNT7 Control
Unit
BEGIN
External Comparator c0
Control END ... Internal
c1 Control
Signals 7
CLOCK c10 Signals
Count c11 c10
S5
Multiplier Control Points
A := A – M
Sign Q(0) := 0
c0 Logic
c10 c5 M[7]
c1 Q[0]
F
c10 A Q M
c3 c4
c2
c9
c8
OUTBUS
INBUS
COUNT7 Control c5
Unit
BEGIN
External Comparator c0
Control END ... Internal
c1 Control
Signals 7
CLOCK c10 Signals
Count c11 c10
S6
Multiplier Control Points
OUTBUS := Q
Sign
c0 Logic
c10 c5 M[7]
c1 Q[0]
F
c10 A Q M
c3 c4
c2
c9
c8 c7
OUTBUS
INBUS
COUNT7 Control c5
Unit
BEGIN
External Comparator c0
Control END ... Internal
c1 Control
Signals 7
CLOCK c10 Signals
Count c11 c10
S7
Multiplier Control Points
OUTBUS := A
Sign
c0 Logic
c10 c5 M[7]
c1 Q[0]
F
c10 A Q M
c3 c4
c2
c6 c9
c8 c7
OUTBUS
INBUS
COUNT7 Control c5
Unit
BEGIN
External Comparator c0
Control END ... Internal
c1 Control
Signals 7
CLOCK c10 Signals
Count c11 c10
Multiplier Control Signals
c0 Set sign bit of A to F
A(7) := F S0
A(6:0).Q := A.Q(7:1) S6 c6
End
COUNT := COUNT + 1
OUTBUS := Q
S0 S0 S0 S0 S0 S1 S1 S1 S1 0 0 0 0 0 0 0 0 0 0 0 0 1
S1 S2 S2 S2 S2 S2 S2 S2 S2 0 0 0 0 0 0 0 0 0 1 1 0 0
S2 S4 S4 S3 S3 S4 S4 S3 S3 0 0 0 0 0 0 0 0 1 0 0 0 0
S3 S4 S4 S4 S4 S4 S4 S4 S4 0 0 1 1 1 0 0 0 0 0 0 0 0
S4 S4 S6 S3 S5 S4 S6 S3 S5 1 1 0 0 0 0 0 0 0 0 0 1 0
S5 S6 S6 S6 S6 S6 S6 S6 S6 0 0 1 1 1 1 0 0 0 0 0 0 0
S6 S7 S7 S7 S7 S7 S7 S7 S7 0 0 0 0 0 0 1 0 0 0 0 0 0
S7 S0 S0 S0 S0 S0 S0 S0 S0 0 0 0 0 0 0 0 1 0 0 0 0 0
S0 S0 S0 S0 S0 S1 S1 S1 S1 0 0 0 0 0 0 0 0 0 0 0 0 1
S1 S2 S2 S2 S2 S2 S2 S2 S2 0 0 0 0 0 0 0 0 0 1 1 0 0
S2 S4 S4 S3 S3 S4 S4 S3 S3 0 0 0 0 0 0 0 0 1 0 0 0 0
S3 S4 S4 S4 S4 S4 S4 S4 S4 0 0 1 1 1 0 0 0 0 0 0 0 0
S4 S4 S6 S3 S5 S4 S6 S3 S5 1 1 0 0 0 0 0 0 0 0 0 1 0
S5 S6 S6 S6 S6 S6 S6 S6 S6 0 0 1 1 1 1 0 0 0 0 0 0 0
S6 S7 S7 S7 S7 S7 S7 S7 S7 0 0 0 0 0 0 1 0 0 0 0 0 0
S7 S0 S0 S0 S0 S0 S0 S0 S0 0 0 0 0 0 0 0 1 0 0 0 0 0
S0 S0 S0 S0 S0 S1 S1 S1 S1 0 0 0 0 0 0 0 0 0 0 0 0 1
S1 S2 S2 S2 S2 S2 S2 S2 S2 0 0 0 0 0 0 0 0 0 1 1 0 0
S2 S4 S4 S3 S3 S4 S4 S3 S3 0 0 0 0 0 0 0 0 1 0 0 0 0
S3 S4 S4 S4 S4 S4 S4 S4 S4 0 0 1 1 1 0 0 0 0 0 0 0 0
S4 S4 S6 S3 S5 S4 S6 S3 S5 1 1 0 0 0 0 0 0 0 0 0 1 0
S5 S6 S6 S6 S6 S6 S6 S6 S6 0 0 1 1 1 1 0 0 0 0 0 0 0
S6 S7 S7 S7 S7 S7 S7 S7 S7 0 0 0 0 0 0 1 0 0 0 0 0 0
S7 S0 S0 S0 S0 S0 S0 S0 S0 0 0 0 0 0 0 0 1 0 0 0 0 0
Address
Control
Logic Memory
μInstruction
Register
Decoder
Instruction
Register
Microprogrammed Controller
External
address
External
conditions MUX Microprogram
μPC Counter
Increment
Condition
Select
CONTROL
MEMORY
(CM)
Microinstruction Format
0000 00 0000 0 0 0 0 0 0 0 0 0 1 1 0 0
0001 00 0000 0 0 0 0 0 0 0 0 1 0 0 0 0
0010 01 0100 0 0 0 0 0 0 0 0 0 0 0 0 0
0011 00 0000 0 0 1 1 1 0 0 0 0 0 0 0 0
0100 10 0010 1 1 0 0 0 0 0 0 0 0 0 1 0
0101 01 0111 0 0 0 0 0 0 0 0 0 0 0 0 0
0110 00 0000 0 0 1 1 1 1 0 0 0 0 0 0 0
0111 00 0000 0 0 0 0 0 0 1 0 0 0 0 0 0
1000 00 0000 0 0 0 0 0 0 0 1 0 0 0 0 0
1001 11 1001 0 0 0 0 0 0 0 0 0 0 0 0 1
Two's Complement Multiplier
Microprogrammed Control Unit
BEGIN Timing
Logic
0 00 Branch
Address
Q[0] 01
COUNT7 10 μPC Reset
11 Increment
1
Condition
Select CONTROL
MEMORY
2 (10 x 19 bits)
19
μIR
4 13
{ci}, END