CALD Spring 2024 Lecture 2 Sequential Logic
CALD Spring 2024 Lecture 2 Sequential Logic
Lecture # 02
Sequential Logic Circuits and Design
Muhammad Imran
Acknowledgement
2
Apple M1,
2021
Source: https://www.anandtech.com/show/16252/mac-mini-apple-m1-tested
A Large Fraction of Modern Systems is Memory
6
A lot of
Storage DRAM SRAM DRAM Storage
https://download.intel.com/newsroom/kits/40thanniversary/gallery/images/Pentium_4_6xx-die.jpg
Intel Pentium 4, 2000
Circuits that Can Store Information
Introduction
10
Sequential Circuit
outputs
inputs
Combinational
Circuit
Storage
Element
Capturing Data
Basic Element: Cross-Coupled Inverters
12
Image source: Harris and Harris, Digital Design and Computer Architecture, 2nd Ed., p.110.
More Realistic Storage Elements
13
bitline bitline
wordline
SRAM cell
The Big Picture: Storage Elements
14
S
1
0 Q Input Output
1
0 R S Q
1 1 Qprev
1 0 1
1
0 0 1 0
R Q’ 0 0 Forbidden
1
0
The Gated D Latch
The Gated D Latch
19
S Q
Q’
R
The Gated D Latch
20
D S Q
Write
Enable
Q’
R
D S
Q
Write
Enable
Q’
R
Input Output
WE D Q
0 0 Qprev
0 1 Qprev
1 0 0
1 1 1
The Register
The Register
23
Wordline
Wordline
Address Decoder
Wordline
Address Decoder
Multiplexer
(together w/ decoder)
Recall: Multiplexer (MUX), or Selector
32
S S=0
a b A 0
A
C C
Writing to Memory
33
Addr[0]
Di[2] Di[1] Di[0]
WE
Addr[1:0]
Di[2] Di[1] Di[0]
WE
Address Decoder
Multiplexer D[2] D[1] D[0]
(together w/ decoder)
Example: Reading Location 3
38
Image source: Patt and Patel, “Introduction to Computing Systems”, 3rd ed., page 78.
Recall: Decoder (II)
39
❑ It could be an
instruction in the 1
program and the
processor needs to
decide what action to 0
take (based on
instruction opcode)
Recall: A 4-to-1 Multiplexer
40
Aside: Implementing Logic Functions Using Memory
Recall: A Bigger Memory Array – (4 locations X 3 bits)
42
Addr[1:0]
Di[2] Di[1] Di[0]
WE
Address Decoder
Multiplexer
(together w/ decoder) D[2] D[1] D[0]
Memory-Based Lookup Table Example
43
▪ Let’s implement a function that outputs ‘1’ when there are at least
two ‘1’s in a 3-bit input In Hardware (e.g., FPGA):
In C: Data Inputs
int count = 0; 000 0
for(int i = 0; i < 3; i++) { Configuration Memory
count += input & 1; 001 0
input = input >> 1;
} 010 0
if(count > 1) return 1; 011 1
output (1 bit)
return 0; 100 0
switch(input){ 101
case 0: 1
case 1:
case 2: 110 1
case 4:
return 0; 111 1
default:
return 1;} 3
input (3 bits)
Sequential Logic Circuits
Sequential Logic Circuits
47
Combinational Sequential
Only depends on current inputs Opens depending on past inputs
https://www.easykeys.com/228_ESP_Combination_Lock.aspx
https://www.fosmon.com/product/tsa-approved-lock-4-dial-combo
State
48
▪ In order for this lock to work, it has to keep track (remember) of the
past events!
▪ If passcode is R13-L22-R3, sequence of states to unlock:
A. The lock is not open (locked), and no relevant operations have
been performed
B. Locked but user has completed R13
C. Locked but user has completed R13-L22
D. Unlocked: user has completed R13-L22-R3
A B C D
Changing State: The Notion of Clock (I)
52
A B C D
1
CLK:
0
Changing State: The Notion of Clock (I)
53
A B C D
1
CLK:
0
▪ Five elements:
1. A finite number of states
▪ State: snapshot of all relevant elements of the system at the
time of the snapshot
2. A finite number of external inputs
3. A finite number of external outputs
4. An explicit specification of all state transitions
▪ How to get from one state to another
5. An explicit specification of what determines each external
output value
Finite State Machines (FSMs)
59
CLK
M next
next k state k state output N
inputs state outputs
logic
logic
state register
At the beginning of the clock cycle, next state is latched into the state register
Finite State Machines (FSMs) Consist of:
60
CLK
▪ Sequential Circuits
▪ State register(s)
S’ S
▪ Store the current state and
Next Current
▪ Load the next state at the clock edge State State
▪ Output logic
▪ Generates the outputs Output
Logic
CL Outputs
Finite State Machines (FSMs) Consist of:
61
CLK
▪ Sequential Circuits
▪ State register(s)
S’ S
▪ Store the current state and
Next Current
▪ Provide the next state at the clock edge State State
▪ Output logic
▪ Generates the outputs Output
Logic
CL Outputs
State Register Implementation
62
1
CLK:
0
Register
Input:
Recall the D Q
Gated D Latch
CLK = WE
1
CLK:
0
Register
Input:
Register
Output:
The Problem with Latches
64
Recall the D Q
Gated D Latch
CLK = WE
1
CLK:
0
Register
Input:
Register
Output:
Undesirable!
The Problem with Latches
65
Recall the D Q
Gated D Latch
CLK = WE
▪ read the current state throughout the entire current clock cycle
AND
▪ not write the next state values into the storage elements until the
beginning of the next clock cycle
The D Flip-Flop
67
CLK
1
CLK:
0
◼ When the clock is low, 1st latch propagates D to the input of the 2nd (Q unchanged)
◼ Only when the clock is high, 2nd latch latches D (Q stores D)
❑ At the rising edge of clock (clock going from 0->1), Q gets assigned D
The D Flip-Flop
68
D CLK Q
__
Q
D Flip-Flop
1
CLK:
0
◼ At the rising edge of clock (clock going from 0->1), Q gets assigned D
◼ At all other times, Q is unchanged
The D Flip-Flop
69
D CLK Q
__
We can use D Flip-Flops
Q
to implement the state register
D Flip-Flop
1
CLK:
0
◼ At the rising edge of clock (clock going from 0->1), Q gets assigned D
◼ At all other times, Q is unchanged
Rising-Clock-Edge Triggered Flip-Flop
70
▪ Multiple
CLK
parallel D flip-flops, each of which storing 1 bit
D0 D Q Q0
CLK
D1 D Q Q1
4 4
D3:0 Q3:0
D2 D Q Q2
Image source: Patt and Patel, “Introduction to Computing Systems”, 3rd ed., tentative page 95.
Finite State Machines (FSMs)
73
Moore FSM
CLK
M next
next k state k state output N
inputs state outputs
logic
logic
Mealy FSM
CLK
M next
next k state k state output N
inputs state outputs
logic
logic
Finite State Machines (FSMs)
74
CLK
M next
next k state k state output N
inputs state outputs
logic
logic
Mealy FSM
CLK
M next
next k state k state output N
inputs state outputs
logic
logic
Finite State Machine Example
75
Bravado
Dining
▪ State can change every 5 seconds Hall
▪ Except if green and traffic, stay green LB
LA TB
LA
Academic TA TA Ave.
Labs TB LB Dorms
Blvd.
From H&H Section 3.4.1 Fields
Finite State Machine Black Box
76
TA Traffic LA
Light
TB Controller LB
Reset
Finite State Machine Transition Diagram
77
Reset
Bravado
Dining S0
Hall LA: green
LB LB: red
LA TB
LA
Academic TA TA Ave.
Labs TB LB Dorms
Blvd.
Fields
Finite State Machine Transition Diagram
78
Dining S0 TA S1
Hall LA: green LA: yellow
LB LB: red LB: red
LA TB
LA
Academic TA TA Ave.
Labs TB LB Dorms S3 S2
LA: red LA: red
LB: yellow LB: green
Blvd.
TB
Fields TB
Finite State Machine Transition Diagram
79
Dining S0 TA S1
Hall LA: green LA: yellow
LB LB: red LB: red
LA TB
LA
Academic TA TA Ave.
Labs TB LB Dorms S3 S2
LA: red LA: red
LB: yellow LB: green
Blvd.
TB
Fields TB
Finite State Machine Transition Diagram
80
Dining S0 TA S1
Hall LA: green LA: yellow
LB LB: red LB: red
LA TB
LA
Academic TA TA Ave.
Labs TB LB Dorms S3 S2
LA: red LA: red
LB: yellow LB: green
Blvd.
TB
Fields TB
Finite State Machine Transition Diagram
81
Dining S0 TA S1
Hall LA: green LA: yellow
LB LB: red LB: red
LA TB
LA
Academic TA TA Ave.
Labs TB LB Dorms S3 S2
LA: red LA: red
LB: yellow LB: green
Blvd.
TB
Fields TB
Finite State Machine:
State Transition Table
FSM State Transition Table
83
TA
Reset
S0 TA S1
LA: green LA: yellow
Current State Inputs Next State
LB: red LB: red
S TA TB S'
S0 0 X
S0 1 X
S1 X X
S2 X 0
S2 X 1 S3 S2
S3 X X LA: red LA: red
LB: yellow LB: green
TB
TB
FSM State Transition Table
84
TA
Reset
S0 TA S1
LA: green LA: yellow
Current State Inputs Next State
LB: red LB: red
S TA TB S'
S0 0 X S1
S0 1 X S0
S1 X X S2
S2 X 0 S3
S2 X 1 S2 S3 S2
S3 X X S0 LA: red LA: red
LB: yellow LB: green
TB
TB
FSM State Transition Table
85
TA
Reset
S0 TA S1
LA: green LA: yellow
Current State Inputs Next State
LB: red LB: red
S TA TB S'
S0 0 X S1
S0 1 X S0
S1 X X S2
S2 X 0 S3
S2 X 1 S2 S3 S2
S3 X X S0 LA: red LA: red
LB: yellow LB: green
State Encoding TB
S0 00 TB
S1 01
S2 10
S3 11
FSM State Transition Table
86
TA
Reset
S0 TA S1
Current State Inputs Next State
LA: green LA: yellow
S1 S0 TA TB S’1 S’0
LB: red LB: red
0 0 0 X 0 1
0 0 1 X 0 0
0 1 X X 1 0
1 0 X 0 1 1
1 0 X 1 1 0
S3 S2
1 1 X X 0 0
LA: red LA: red
LB: yellow LB: green
State Encoding TB
S0 00 TB
S1 01
S2 10
S3 11
FSM State Transition Table
87
TA
Reset
S0 TA S1
LA: green LA: yellow
LB: red LB: red
Current State Inputs Next State
S1 S0 TA TB S’1 S’0
0 0 0 X 0 1
0 0 1 X 0 0
0 1 X X 1 0
1 0 X 0 1 1 S3 S2
1 0 X 1 1 0 LA: red LA: red
1 1 X X 0 0 LB: yellow LB: green
TB
TB
State Encoding
S’1 = ? S0 00
S1 01
S2 10
S3 11
FSM State Transition Table
88
TA
Reset
S0 TA S1
LA: green LA: yellow
LB: red LB: red
Current State Inputs Next State
S1 S0 TA TB S’1 S’0
0 0 0 X 0 1
0 0 1 X 0 0
0 1 X X 1 0
1 0 X 0 1 1 S3 S2
1 0 X 1 1 0 LA: red LA: red
1 1 X X 0 0 LB: yellow LB: green
TB
TB
State Encoding
S’1 = (S1 ∙ S0) + (S1 ∙ S0 ∙ TB) + (S1 ∙ S0 ∙ TB) S0 00
S1 01
S2 10
S3 11
FSM State Transition Table
89
TA
Reset
S0 TA S1
LA: green LA: yellow
LB: red LB: red
Current State Inputs Next State
S1 S0 TA TB S’1 S’0
0 0 0 X 0 1
0 0 1 X 0 0
0 1 X X 1 0
1 0 X 0 1 1 S3 S2
1 0 X 1 1 0 LA: red LA: red
1 1 X X 0 0 LB: yellow LB: green
TB
TB
State Encoding
S’1 = (S1 ∙ S0) + (S1 ∙ S0 ∙ TB) + (S1 ∙ S0 ∙ TB) S0 00
S1 01
S’0 = ? S2 10
S3 11
FSM State Transition Table
90
TA
Reset
S0 TA S1
LA: green LA: yellow
LB: red LB: red
Current State Inputs Next State
S1 S0 TA TB S’1 S’0
0 0 0 X 0 1
0 0 1 X 0 0
0 1 X X 1 0
1 0 X 0 1 1 S3 S2
1 0 X 1 1 0 LA: red LA: red
1 1 X X 0 0 LB: yellow LB: green
TB
TB
State Encoding
S’1 = (S1 ∙ S0) + (S1 ∙ S0 ∙ TB) + (S1 ∙ S0 ∙ TB) S0 00
S1 01
S’0 = (S1 ∙ S0 ∙ TA) + (S1 ∙ S0 ∙ TB) S2 10
S3 11
FSM State Transition Table
91
TA
Reset
S0 TA S1
LA: green LA: yellow
LB: red LB: red
Current State Inputs Next State
S1 S0 TA TB S’1 S’0
0 0 0 X 0 1
0 0 1 X 0 0
0 1 X X 1 0
1 0 X 0 1 1 S3 S2
1 0 X 1 1 0 LA: red LA: red
1 1 X X 0 0 LB: yellow LB: green
TB
TB
State Encoding
S’1 = S1 xor S0 (Simplified)
S0 00
S1 01
S’0 = (S1 ∙ S0 ∙ TA) + (S1 ∙ S0 ∙ TB) S2 10
S3 11
Finite State Machine:
Output Table
FSM Output Table
93
TA
Reset
S0 TA S1
LA: green LA: yellow
LB: red LB: red
S3 S2
LA: red LA: red
LB: yellow LB: green
TB
TB
FSM Output Table
94
TA
Reset
S0 TA S1
LA: green LA: yellow
LB: red LB: red
Current State Outputs
S1 S0 LA LB
0 0 green red
0 1 yellow red S3 S2
LA: red LA: red
1 0 red green
LB: yellow LB: green
TB
1 1 red yellow
TB
Output Encoding
green 00
yellow 01
red 10
FSM Output Table
95
TA
Reset
S0 TA S1
LA: green LA: yellow
LB: red LB: red
Current State Outputs
S1 S0 LA1 LA0 LB1 LB0
0 0 0 0 1 0
0 1 0 1 1 0
1 0 1 0 0 0 S3 S2
1 1 1 0 0 1 LA: red LA: red
LB: yellow LB: green
TB
TB
LA1 = S1
Output Encoding
green 00
yellow 01
red 10
FSM Output Table
96
TA
Reset
S0 TA S1
LA: green LA: yellow
LB: red LB: red
Current State Outputs
S1 S0 LA1 LA0 LB1 LB0
0 0 0 0 1 0
0 1 0 1 1 0
1 0 1 0 0 0 S3 S2
1 1 1 0 0 1 LA: red LA: red
LB: yellow LB: green
TB
TB
LA1 = S1
Output Encoding
LA0 = S1 ∙ S0
green 00
yellow 01
red 10
FSM Output Table
97
TA
Reset
S0 TA S1
LA: green LA: yellow
LB: red LB: red
Current State Outputs
S1 S0 LA1 LA0 LB1 LB0
0 0 0 0 1 0
0 1 0 1 1 0
1 0 1 0 0 0 S3 S2
1 1 1 0 0 1 LA: red LA: red
LB: yellow LB: green
TB
TB
LA1 = S1
Output Encoding
LA0 = S1 ∙ S0
green 00
LB1 = S1
yellow 01
red 10
FSM Output Table
98
TA
Reset
S0 TA S1
LA: green LA: yellow
LB: red LB: red
Current State Outputs
S1 S0 LA1 LA0 LB1 LB0
0 0 0 0 1 0
0 1 0 1 1 0
1 0 1 0 0 0 S3 S2
1 1 1 0 0 1 LA: red LA: red
LB: yellow LB: green
TB
TB
LA1 = S1
Output Encoding
LA0 = S1 ∙ S0
green 00
LB1 = S1
yellow 01
LB0 = S1 ∙ S0
red 10
Finite State Machine:
Schematic
FSM Schematic: State Register
100
FSM Schematic: State Register
101
CLK
S'1 S1
S'0 S0
r
Reset
state register
FSM Schematic: Next State Logic
102
CLK
S'1 S1
TA S'0 S0
r
TB Reset
S1 S0
S’1 = S1 xor S0
CLK LA1
S'1 S1
LA0
TA S'0 S0
LB1
r
TB Reset
S1 S0 LB0
LA1 = S1
LA0 = S1 ∙ S0
LB1 = S1
LB0 = S1 ∙ S0
TA__
Reset
S0 TA S1
FSM Timing Diagram LA: green LA: yellow
LB: red LB: red
104
S3 S2
LA: red LA: red
LB: yellow __ LB: green
TB
TB
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Cycle 10
CLK
Reset
TA
TB
0 5 10 15 20 25 30 35 40 45 t (sec)
TA__
Reset
S0 TA S1
FSM Timing Diagram LA: green LA: yellow
LB: red LB: red
105
S3 S2
LA: red LA: red
LB: yellow __ LB: green
TB
TB
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Cycle 10
CLK
Reset
TA
TB
0 5 10 15 20 25 30 35 40 45 t (sec)
TA__
Reset
S0 TA S1
FSM Timing Diagram LA: green LA: yellow
LB: red LB: red
106
S3 S2
LA: red LA: red
LB: yellow __ LB: green
TB
TB
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Cycle 10
CLK
Reset
TA
TB
0 5 10 15 20 25 30 35 40 45 t (sec)
TA__
Reset
S0 TA S1
FSM Timing Diagram LA: green LA: yellow
LB: red LB: red
107
S3 S2
LA: red LA: red
LB: yellow __ LB: green
TB
TB
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Cycle 10
CLK
Reset
TA
TB
0 5 10 15 20 25 30 35 40 45 t (sec)
TA__
Reset
S0 TA S1
FSM Timing Diagram LA: green LA: yellow
LB: red LB: red
108
S3 S2
LA: red LA: red
LB: yellow __ LB: green
TB
TB
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Cycle 10
CLK
Reset
TA
TB
0 5 10 15 20 25 30 35 40 45 t (sec)
TA__
Reset
S0 TA S1
FSM Timing Diagram LA: green LA: yellow
LB: red LB: red
109
S3 S2
LA: red LA: red
LB: yellow __ LB: green
TB
TB
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Cycle 10
CLK
Reset
TA
TB
0 5 10 15 20 25 30 35 40 45 t (sec)
TA__
Reset
S0 TA S1
FSM Timing Diagram LA: green LA: yellow
LB: red LB: red
110
S3 S2
LA: red LA: red
LB: yellow __ LB: green
TB
TB
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Cycle 10
CLK
Reset
TA
TB
0 5 10 15 20 25 30 35 40 45 t (sec)
TA__
Reset
S0 TA S1
FSM Timing Diagram LA: green LA: yellow
LB: red LB: red
111
S3 S2
LA: red LA: red
LB: yellow __ LB: green
TB
TB
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Cycle 10
CLK
Reset
TA
TB
0 5 10 15 20 25 30 35 40 45 t (sec)
TA__
Reset
S0 TA S1
FSM Timing Diagram LA: green LA: yellow
LB: red LB: red
112
S3 S2
LA: red LA: red
LB: yellow __ LB: green
TB
TB
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Cycle 10
CLK
Reset
TA
TB
0 5 10 15 20 25 30 35 40 45 t (sec)
TA__
Reset
S0 TA S1
FSM Timing Diagram LA: green LA: yellow
LB: red LB: red
113
S3 S2
LA: red LA: red
LB: yellow __ LB: green
TB
TB
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Cycle 10
CLK
Reset
TA
TB
0 5 10 15 20 25 30 35 40 45 t (sec)
Finite State Machine:
State Encoding
FSM State Encoding
115
2. One-Hot Encoding:
▪ Each bit encodes a different state
▪ Uses num_states bits to represent the states
▪ Exactly 1 bit is “hot” for a given state
▪ Example state encodings: 0001, 0010, 0100, 1000
▪ Simplest design process – very automatable
▪ Maximizes # flip-flops, minimizes next state logic
FSM State Encoding (III)
117
3. Output Encoding:
▪ Outputs are directly accessible in the state encoding
3. Output Encoding:
▪ Outputs are directly accessible in the state encoding
CLK
M next
next k state k state output N
inputs state outputs
logic
logic
Mealy FSM
CLK
M next
next k state k state output N
inputs state outputs
logic
logic
Moore vs. Mealy FSM Examples
121
CLK
M next
next k state
k state output N
inputs state outputs
logic
logic
Mealy FSM
CLK
M next
next k state k state output N
inputs state outputs
logic
logic
Moore vs. Mealy FSM Examples
122
CLK
M next
next k state
k state output N
inputs state outputs
logic
logic
Mealy FSM
CLK
M next
next k state k state output N
inputs state outputs
logic
logic
State Transition Diagrams
123
Moore FSM 1
reset
1 1 0 1
S0 S1 S2 S3 S4
0 0 0 0 1
0
1 0 0
0
S0 S1 S2 S3
0/0 1/0 0/0
0/0
FSM Design Procedure
124
▪ Approach
▪ Start by defining the reset state and what happens from it – this is typically an easy
point to start from
▪ Then continue to add transitions and states
▪ Picking good state names is very important
▪ Building an FSM is like programming (but it is not programming!)
▪ An FSM has a sequential “control-flow” like a program with conditionals and goto’s
▪ The if-then-else construct is controlled by one or more inputs
▪ The outputs are controlled by the state or the inputs
▪ In hardware, we typically have many concurrent FSMs
Additional Content:
Different Types of Flip Flops
Enabled Flip-Flops
126
▪ Inputs: CLK, D, EN
▪ The enable input (EN) controls when new data (D) is stored
▪ Function:
▪ EN = 1: D passes through to Q on the clock edge
▪ EN = 0: the flip-flop retains its previous state
Internal
Circuit Symbol
EN CLK
0
D Q Q D Q
D 1
EN
Resettable Flip-Flop
127
Symbols
D Q
r
Reset
Resettable Flip-Flops
128
▪ Two types:
▪ Synchronous: resets at the clock edge only
▪ Asynchronous: resets immediately when Reset = 1
▪ Asynchronously resettable flip-flop requires changing the internal
circuitry of the flip-flop (see Exercise 3.10)
▪ Synchronously resettable flip-flop?
Internal
Circuit
CLK
D
D Q Q
Reset
Settable Flip-Flop
129
Symbols
D Q
s
Set