Digital Design with the Verilog HDL
Chapter 6 Finite State Machine
Binh Tran-Thanh
Department of Computer Engineering
Faculty of Computer Science and Engineering
Ho Chi Minh City University of Technology
May 26, 2023
1 / 29
Sequential Machine - Definition
State of a sequential machine contains current information (t)
Next state (t + 1) depends on the current state (t) and inputs
The number of states in a sequential machine finite ⇒ Finite State
Machine - FSM
Input Next-state Next state Present state
Memory
Logic
Feedback of present state
Block Diagram of a sequential machine
2 / 29
Synchronous Sequential Machine
Synchronous State Machine uses clock to synchronize input states
Clock is symmetric or asymmetric
Clock cycle must be larger than time required for state
transaction calculation
Synchronous FSMs:
Number of states
Using clock to control state transaction
3 / 29
FSM Models & Types
Explicit
Declares a state register that stores the FSM state
May not be called “state” –might be a counter!
Implicit
Describes state implicitly by using multiple event controls
Moore
Outputs depend on state only (synchronous)
Mealy
Outputs depend on inputs and state (asynchronous)
Outputs can also be registered (synchronous)
4 / 29
Mealy machine vs. Moore machine
Block Diagram of a Mealy sequential machine
Input Next-state State Output Output
Combina- register Combina-
tional Logic (Memory) tional Logic
Clock
Feedback of present state
Block Diagram of a Moore sequential machine
Input Next-state State Output Output
Combina- register Combina-
tional Logic (Memory) tional Logic
Clock
Feedback of present state 5 / 29
State Transaction Graph
Finite state machine can be described:
State transaction graph, State transaction table
Time chart
Abstract state machine
Finite state machine is a directed graph
Vertices show states (+outputs if Moore-style machine)
Edges show transactions from state to state
Edges’ name
Mealy machine: input/output
Moore machine: input
6 / 29
State Diagram: Mealy
Outputs Y and Z are 0, unless specified otherwise.
We don’t care about the value of b in S0, or the value of a in S1, or
either a or b in S2.
reset = 1
a,b = 0,x/ a,b = 1,x/ a,b = x,0/
Y,Z = 0,0 S0 S1 Y,Z = 0,0
Y,Z = 0,1
a,b = x,1/
a,b = x,x/ Y,Z = 1,1
Y,Z = 0,0
S2
7 / 29
State Diagram: Moore
Outputs Y and Z are 0, unless specified otherwise.
If an input isn’t listed for a transition, we don’t careabout its value for
that transition
reset = 1
a=0 a=1 b=0
S0 S1
Y=1
b=1
S2
Z=1
8 / 29
Example - Mealy
State transition graph
reset
State transition table
S0
0/1 1/0 Next state/ output
State input
0 1
1/0
S1 S2 S0 S1/1 S2/0
S1 S3/1 S4/0
0/1 0/0 1/1
S2 S4/0 S4/1
0/1 S3 S5/0 S5/1
S3 S4 S4 S5/1 S6/0
0/0 1/1 1/0 S5 S0/0 S0/1
S6 S0/1 -/-
1/1 0/1
S5 S6
0/0
9 / 29
Example
Next state/ output
1/0 0/1 State input
0 1
S2 S0 S1
S0 S1/0 S2/1
1/1 0/0 S1 S0/1 -
S2 - S0/0
Next state/ output
0
S0/0 S1/0 State input
0 1
1 1 0 0 S0 S1/0 S3/1
S1 S2/1 -
S3/1 S2/1 S2 - S0/1
1 S3 S1/0 S3/0
10 / 29
Constraints
Each vertex describes only one state
Each edge describes exactly one transaction from current state to the
next state
Each vertex has all out-going edges
At one edge, there is only one out-going edge at one time
11 / 29
BCD to Excess-3 code Converter
Decimal BCD Excess-3
digit
0 0000 0011
1 0001 0100
2 0010 0101 Excess-3 is self-complementing
3 0011 0110 610 = 01102
4 0100 0111 6excess−3 = 01102 + 00112 = 10012
5 0101 1000
6 0110 1001
7 0111 1010
8 1000 1011
9 1001 1100
12 / 29
Input/output Relation
Input-output bit stream in a BCD to Excess-3 serial code converter
13 / 29
State Transaction Graph – State Transaction Table
State transition graph (Mealy)
reset
State transition table (Mealy)
S0
0/1 1/0 Next state/ output
State input
0 1
1/0
S1 S2 S0 S1/1 S2/0
S1 S3/1 S4/0
0/1 0/0 1/1
S2 S4/0 S4/1
0/1 S3 S5/0 S5/1
S3 S4 S4 S5/1 S6/0
0/0 1/1 1/0 S5 S0/0 S0/1
S6 S0/1 -/-
1/1 0/1
S5 S6
0/0
14 / 29
State Encoding
States are stored by FFs
7 states, using 3 FFs
State Next state output
State assignment q2 q1 q0 q2+ q1+ q0+
q2 q1 q0 State Input Input
000 S0 0 1 0 1
001 S1 000 (S0) 001 101 1 0
010 S6 001 (S1) 111 011 1 0
011 S4 101 (S2) 011 011 0 1
100 - 111 (S3) 110 110 0 1
101 S2 011 (S4) 110 010 1 0
110 S5 110 (S5) 000 000 0 1
111 S3 010 (S6) 000 - 1 -
100 (- ) - - - -
15 / 29
Simplify State Transaction Function
q0 Bin q0 Bin
q2 q1 00 01 11 10 q2 q1 00 01 11 10
00 1 1 1 1 00 0 0 1 1
01 0 x 0 0 01 0 x 1 1
11 0 0 0 0 11 0 0 1 1
10 x x 1 1 0 10 x x 1 1
q0+ = q1 q1+ = q0
q0 Bin q0 Bin
q2 q1 00 01 11 10 q2 q1 00 01 11 10
00 0 1 0 1 00 1 0 0 1
01 0 x 0 1 01 1 x 0 1
11 0 0 1 1 11 0 1 1 0
10 x x 0 0 10 x x 1 0
0 0 0 0 0 0 0
q2 = q1 q0 Bin + q2 q0 Bin + q2 q1 q0 Bout = q2 Bin + q2 Bin
16 / 29
Implementing BCD to Excess-3 Converter
17 / 29
FSM Example: Serial-Line Code Converter
3 signals:
Clock
Handshaking signal
Data
Well-known encoding algorithms:
NRZ
NRZI: if input is 1, the previous output value is inversed while 0 input
keeps output unchanged
RZ: if input is 1, output is 1 during the first half cycle and 0 during the
second half cycle while 0 input produces 0 output
Manchester: if input is 0, output is 0 during the first half cycle and 1
during the second half cycle while 1 input produces 1 output during the
first half and 0 output during the second half
18 / 29
Serial Encoding Examples
Clock 2’s frequency is double clock 1’s frequency to implement the
NRZI, RZ, and Manchester encoding algorithms
19 / 29
Mealy FSM for Serial Encoding
The Manchester algorithm Next state/ output
Waiting state (S0) State input
Just receiving 1 state (S2) 0 1
Just receiving 0 state (S1)
S0 S1/0 S2/1
1/0 0/1 S1 S0/1 -
S2 - S0/0
S2 S0 S1
1/1 0/0 State Next state output
q1 q0 q1+ q0+
Input Input
state q1 q0
0 1 0 1
S0 00 00 (S0) 01 10 0 1
S1 01 01 (S1) 00 00 1 -
S2 10 10 (S2) 00 00 - 0
20 / 29
Implementing the Mealy FSM
Bin Bin Bin
q1 q0 0 1 q1 q0 0 1 q1 q0 0 1
00 0 1 00 1 0 00 0 1
01 0 0 01 0 0 01 1 1
11 - - 11 - - 11 - -
10 0 0 10 0 0 10 0 0
0 0 0 0 0 0 0
q1+ = q1 q0 Bin q0+ = q1 q0 Bin Bout = q1 q0 + q1 Bin
21 / 29
Moore FSM for Serial Encoding
The Manchester Algorithm
S0: starting/second half of the cycle receiving 1, the output is 0
S1: first half of the cycle receiving 0, the output is 0
S2: second half of the cycle receiving 0, the output is 1
S3: first half of the cycle receiving 1, the output is 1
Next state/ output State Next state output
State q1 q0 q1+ q0+
0
input
S0/0 S1/0 Input
0 1
0 1
1 1 0 0 S0 S1/0 S3/1 00 (S0) 01 11 0
S3/1 S2/1 S1 S2/1 - 01 (S1) 10 - 0
1
S2 - S0/1 11 (S3) - 00 1
S3 S1/0 S3/0 10 (S2) 01 11 1
22 / 29
Implementing the Moore FSM
Bin Bin
0 1 q0 0 1
q1 q0
00 0 1 0 0 0
01 1 x 1 1 1
11 - 0 Bout = q0
10 0 1
0 0
q1+ = q0 Bin + q1 q0
Bin
q1 q0 0 1
00 1 1
01 0 -
11 - 0
10 1 1 0
q0+ = q0 23 / 29
Simplify Equivalent States
Two states are equivalent:
Output and the next states are the same in all inputs (c1)
Can be combined together without any changed behavior (c2)
Reducing two equivalent states reduces hardware cost
Each FSM has one and only one simplest equivalent FSM
Next state output
State Input Input
0 1 0 1
S0 S6 S3 0 0
S1 S1 S6 0 1
S2 S2 S5 0 1
S3 S7 S3 0 1
S4 S7 S2 0 0
S5 S7 S2 0 0
S6 S0 S1 0 0
S7 S4 S3 0 0
24 / 29
Simplify Equivalent States example
1/1 0/0
S1 S6 S0 Next state output
1/0 0/0
1/0 State Input Input
0/0 0 1 0 1
S0 S6 S3 0 0
1/1 S1 S1 S6 0 1
S4 S3
1/0 S2 S2 S5 0 1
0/0 0/0 S3 S7 S3 0 1
S4 S7 S2 0 0
1/1 S5 S7 S2 0 0
0/0
S2 S5 S7 S6 S0 S1 0 0
0/0 S7 S4 S3 0 0
1/0
0/0
25 / 29
Simplify Equivalent States Algorithm
Step 1: Find basic equivalent states (c1)
1/1 0/0 1/1 0/0
S1 S6 S0 S1 S6 S0
1/0 0/0 1/0 0/0
1/0 1/0
0/0 0/0
1/1 1/1
S4 S3 S4 S3
1/0 1/0
0/0 0/0 0/0 0/0
1/1 1/1
0/0 0/0
S2 S5 S7 S2 S7
0/0
1/0
0/0 0/0
26 / 29
Simplify Equivalent States Algorithm
Step 2: Create a possible equivalent states table (c2)
Let impossible equivalent cells be empty
Fill conditions upon which two corresponding states can be equivalent
27 / 29
Simplify Equivalent States Algorithm
Step 3: Consider equivalent conditions of any two states, delete
corresponding cell if the cell contains any inequivalent couple
1/1
S4 S3
1/0
0/0 0/0
1/1
0/0
S2 S7
0/0
28 / 29