Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Use a clock
Use combinational logic and one or more flip-
flops
Move from one state to another
Moore type outputs depend only on present state
Mealy type outputs depend on present state AND
inputs
Finite State Machines
Formal name
Functional behavior can be represented by a finite
number of states
W Combinational Combinational
Flip-flops circuit Z
circuit Q
Clock
W Combinational Combinational
Flip-flops circuit Z
circuit Q
Clock
Clockcycle: t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
w: 0 1 0 1 1 0 1 1 1 0 1
z: 0 0 0 0 0 1 0 0 1 1 0
2. State Diagram (cont.)
w=0 w=1
A B
z=0 z=0
w=0
Clockcycle: t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
w: 0 1 0 1 1 0 1 1 1 0 1
z: 0 0 0 0 0 1 0 0 1 1 0
2. State Diagram (cont.)
w=0 w=1
A B
z=0 z=0
w=0
w=0 w=1
C
z=1
w=1
Clockcycle: t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
w: 0 1 0 1 1 0 1 1 1 0 1
z: 0 0 0 0 0 1 0 0 1 1 0
3. State Table
Present Next state Output
state w = 0 w = 1 z
A A B 0
B A C 0
C A C 1
w=0 w=1
A B
z=0 z=0
w=0
w=0 w=1
C
z=1
w=1
5. State Assignment
w=0 w=1
A B Present Next state
z=0 z=0 state w = 0 w = 1 Output
z
w=0 y2y1 Y2Y1 Y2Y1
A 00 00 01 0
w=0 w=1 B 01 00 10 0
C C 10 00 10 1
11 dd dd d
z=1
w=1
D
Y1 y1
w
Combinational Combinational z
circuit circuit
Y2 y2
D
Clock
D
Y1 y1
w
Combinational Combinational z
circuit circuit
Y2 y2
D
Y1 Truth Table
y2 y1 w Y1
Clock 0 0 0 0
0 0 1 1
Present Next state 0 1 0 0
state w = 0 w = 1 Output
y2y1 Y2Y1 Y2Y1
z Y1 = w.y1.y2 0 1 1 0
A 00 00 01 0 1 0 0 0
B 01 00 10 0 1 0 1 0
C 10 00 10 1
11 dd dd d 1 1 0 d
1 1 1 d
D
Y1 y1
w
Combinational Combinational z
circuit circuit
Y2 y2
D
Y2 Truth Table
y2 y1 w Y2
Clock 0 0 0 0
y2 y1
w 00 01 11 10 0 0 1 0
Present Next state 0 0 0 d 0 0 1 0 0
state w = 0 w = 1 Output 1 0 1 d 1
y2y1 Y2Y1 Y2Y1
z 0 1 1 1
A 00 00 01 0 1 0 0 0
B 01 00 10 0
Y2 = w.y1+ w.y2
1 0 1 1
C 10 00 10 1
11 dd dd d = w(y1 + y2) 1 1 0 d
1 1 1 d
D
Y1 y1
w
Combinational Combinational z
circuit circuit
Y2 y2
D
z Truth Table
Clock y2 y1 z
y1 0 0 0
Present Next state y2 0 1 0 1 0
state w = 0 w = 1 Output 0 0 0 1 0 1
z
y2y1 Y2Y1 Y2Y1 1 1 d 1 1 d
A 00 00 01 0
B 01 00 10 0
C 10 00 10 1 z = y2
11 dd dd d
Y2 y2
7. Timing Diagram
D Q z
Y1 y1
w D Q
Clock
Resetn
t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
1
Clock 0
1
w
0
y1 1
0
y2 1
0
z 1
0
Example
Specify Desired Circuit
Swap R1 & R2 Using
R3 as a temporary
register
R2=> R3
R1 => R2
R3 => R1
Swapping started by a 1
clock cycle pulse on w
Indicate task complete
by setting Done = 1
R1out
R1in
w
R2out
Control R2in
circuit
R3out
Clock
R3in
Done
State Diagram
What are the inputs?
A No transfer
w=0
A No transfer
R2=> R3
R1 => R2 w=1
R3 => R1
w=0
A No transfer
R2=> R3
R1 => R2 w=1
R3 => R1
B R2out = 1, R3in = 1
w=0
A No transfer
R2=> R3
R1 => R2 w=1
R3 => R1
B R2out = 1, R3in = 1
w = 0/1
w=0
A No transfer
R2=> R3
R1 => R2 w=1
R3 => R1
B R2out = 1, R3in = 1
w = 0/1
C R1out = 1, R2in = 1
w=0
A No transfer
R2=> R3
R1 => R2 w=1
R3 => R1
B R2out = 1, R3in = 1
w = 0/1
C R1out = 1, R2in = 1
w = 0/1
w=0
A No transfer
R2=> R3
R1 => R2 w=1
R3 => R1
B R2out = 1, R3in = 1
w = 0/1
C R1out = 1, R2in = 1
w = 0/1
w=1
R2=> R3 B R2out = 1, R3in = 1
R1 => R2
R3 => R1 w = 0/1
w = 0/1
C R1out = 1, R2in = 1
w = 0/1
D R3out = 1, R1in = 1, Done = 1
A 00 00 01 0 0 0 0 0 0 0
B 01 10 10 0 0 1 0 0 1 0
C 10 11 11 1 0 0 1 0 0 0
D 11 00 00 0 1 0 0 1 0 1
Present Next state
state Outputs
A 00 00 01 0 0 0 0 0 0 0
B 01 10 10 0 0 1 0 0 1 0
C 10 11 11 1 0 0 1 0 0 0
D 11 00 00 0 1 0 0 1 0 1
Y1= Y2=
Present Next state
state Outputs
A 00 00 01 0 0 0 0 0 0 0
B 01 10 10 0 0 1 0 0 1 0
C 10 11 11 1 0 0 1 0 0 0
D 11 00 00 0 1 0 0 1 0 1
A 00 00 01 0 0 0 0 0 0 0
B 01 10 10 0 0 1 0 0 1 0
C 10 11 11 1 0 0 1 0 0 0
D 11 00 00 0 1 0 0 1 0 1
R1out =
R2in =
R1in =
R3out =
Done =
R2out =
R3in =
Present Next state
state Outputs
A 00 00 01 0 0 0 0 0 0 0
B 01 10 10 0 0 1 0 0 1 0
C 10 11 11 1 0 0 1 0 0 0
D 11 00 00 0 1 0 0 1 0 1
R 1 out
R 2 in
Y2 y2
D Q
y2
Q
R 2 out
R 3 in
FSM Model Variants
Moore-type
Outputs depend only on Present State
Mealy-type
Outputs depend on Present State AND
Inputs
Mealy State Model
Specify Desired Circuit
One input w
One output z
All changes occur on positive edge of clock
Output z = 1 if
During immediately preceding clock cycle the input w
was equal to 1 AND is currently equal to 1
Output z = 0 otherwise
Clockcycle: t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
w: 0 1 0 1 1 0 1 1 1 0 1
z: 0 0 0 0 1 0 0 1 1 0 0
New Machine (Mealy)
Clockcycle: t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
w: 0 1 0 1 1 0 1 1 1 0 1
z: 0 0 0 0 1 0 0 1 1 0 0
Reset
w = 0 z = 0 A
Clockcycle: t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
w: 0 1 0 1 1 0 1 1 1 0 1
z: 0 0 0 0 1 0 0 1 1 0 0
A A B
clk
w
z
Reset
w = 1 z = 0
w = 0 z = 0 A B
Clockcycle: t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
w: 0 1 0 1 1 0 1 1 1 0 1
z: 0 0 0 0 1 0 0 1 1 0 0
A A B A
clk
w
z
Reset
w = 1 z = 0
w = 0 z = 0 A B
w = 0 z = 0
Clockcycle: t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
w: 0 1 0 1 1 0 1 1 1 0 1
z: 0 0 0 0 1 0 0 1 1 0 0
A A B A B
clk
w
z
Reset
w = 1 z = 0
w = 0 z = 0 A B w = 1 z = 1
w = 0 z = 0
Clockcycle: t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
w: 0 1 0 1 1 0 1 1 1 0 1
z: 0 0 0 0 1 0 0 1 1 0 0
A A B A B B
clk
w
z
Reset
w = 1 z = 0
w = 0 z = 0 A B w = 1 z = 1
w = 0 z = 0
Clockcycle: t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
w: 0 1 0 1 1 0 1 1 1 0 1
z: 0 0 0 0 1 0 0 1 1 0 0
A A B A B B A
clk
w
z
Reset
w = 1 z = 0
w = 0 z = 0 A B w = 1 z = 1
w = 0 z = 0
Clockcycle: t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
w: 0 1 0 1 1 0 1 1 1 0 1
z: 0 0 0 0 1 0 0 1 1 0 0
A A B A B B A B
clk
w
z
Reset
w = 1 z = 0
w = 0 z = 0 A B w = 1 z = 1
w = 0 z = 0
Clockcycle: t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
w: 0 1 0 1 1 0 1 1 1 0 1
z: 0 0 0 0 1 0 0 1 1 0 0
A A B A B B A B B
clk
w
z
Reset
w = 1 z = 0
w = 0 z = 0 A B w = 1 z = 1
w = 0 z = 0
Clockcycle: t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
w: 0 1 0 1 1 0 1 1 1 0 1
z: 0 0 0 0 1 0 0 1 1 0 0
A A B A B B A B B B
clk
w
z
Reset
w = 1 z = 0
w = 0 z = 0 A B w = 1 z = 1
w = 0 z = 0
Clockcycle: t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
w: 0 1 0 1 1 0 1 1 1 0 1
z: 0 0 0 0 1 0 0 1 1 0 0
A A B A B B A B B B A
clk
w
z
Reset
w = 1 z = 0
w = 0 z = 0 A B w = 1 z = 1
w = 0 z = 0
During present clock cycle output value on arc from Present State node
Note difference from Moore model in where output is shown output changes
asynchronously
State Table & State Assignment
Q
w
Y2 y2
D Q
Clock Q
Resetn
Y1 y1
D Q
z
Q
w
Y2 y2
D Q
Clock Q
Resetn
Next State
Present
Output
How many states? state
z
Create Present State/Next
State/Output table
Y1 y1
D Q
z
Q
w
Y2 y2
D Q
Clock Q
Resetn
Next State
Present
Output
state w = 0 w = 1
y2y1 z
Y2Y1 Y2Y1
00 00 01 0
01 00 10 0
10 00 11 0
11 00 11 1
Exercise#1: Counter Using
Sequential State Machine
Counting Sequence is
0,1,2,,6,7,0,1,
Input w
If w = 0 present count remains the same
If w = 1 count is incremented
Create State Diagram
Create State Table
Create State Assignments
Exercise#2: FSM with Two Inputs
Inputs w1 and w2
Outputs z
If w1 = w2 during any four consecutive
clock cycles z = 1
Otherwise z = 0
w1 0110111000110
w2 1110101000111
z 0000100001110
Homework
8.3 & 8.5 (Brown)
Create
State Diagram
State Table
State Assignment Table