Professional Documents
Culture Documents
Sequential circuits
shift registers
counters
Design procedure
state diagrams
state transition table
next state functions
Combinational
Logic
State Inputs
Outputs
State Outputs
Storage Elements
Clock
001
In = 0
In = 1
100
111
In = 0
In = 1
110
5 states
5 self-transitions
6 other transitions between states
1 reset transition (from all states) to state S1
ERR
closed
not equal
& new
reset
not equal
& new
not equal
& new
S3
S1
S2
closed
closed
closed
mux=C1 equal mux=C2 equal mux=C3 equal
& new
& new
& new
not new
not new
OPEN
open
not new
Shift register
OUT1
IN
1
0
0
001
D Q
110
101
0
0
1
010
000
D Q
OUT3
CLK
100
1
D Q
OUT2
111
0
1
0
011
Counters
3-bit up-counter: 000, 001, 010, 011, 100, 101, 110, 111, 000, ...
3-bit down-counter: 111, 110, 101, 100, 011, 010, 001, 000, 111, ...
001
000
011
100
3-bit up-counter
111
010
110
101
Counter
D Q
OUT3
D Q
CLK
"1"
State encoding
Implementation
001
000
010
011
100
3-bit up-counter
111
110
101
present state
0
000
1
001
2
010
3
011
4
100
5
101
6
110
7
111
next state
001 1
010 2
011 3
100 4
101 5
110 6
111 7
000 0
10
Implementation
C2
0
0
1
1
0
0
1
1
N3
C1
0
1
0
1
0
1
0
1
C3
N3
0
0
0
1
1
1
1
0
N2
0
1
1
0
0
1
1
0
N1
1
0
1
0
1
0
1
0
N1 <= C1
N2 <= C1C2 + C1C2
<= C1 xor C2
N3 <= C1C2C3 + C1C3 + C2C3
<= (C1C2)C3 + (C1 + C2)C3
<= (C1C2)C3 + (C1C2)C3
<= (C1C2) xor C3
N2
C3
N1
C3
C1 0
C1 1
C1 0
VII - FiniteC2
Sta
C2 Gaetano B
Copyright 2004,
C2
11
In
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
C2
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
C3
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
N1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
N2
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
N3
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
100
0
1
0
101
0
001
N1 <= In
N2 <= C1
N3 <= C2
IN
CLK
OUT1
D Q
1
010
000
110
DQ
111
0
1
0
011
OUT2
OUT3
D Q
12
Complex counter
Step 2: derive the state transition table from the state transition diagram
000
110
010
101
011
Present
C
B
0
0
0
0
0
1
0
1
1
0
1
0
1
1
1
1
StateNext State
A
C+ B+ A+
0
0
1
0
1
0
0
1
1
1
1
0
1
0
1
1
1
0
0
0
0
0
1
note the
conditions2004,
that arise
from the
VII - Finite
Stadon'tcare
Copyright
Gaetano
Bunused state codes13
B+
C
0
A+
C
1
C
0
C+ <= A
B+ <= B + AC
A+ <= BC
14
C+
B+
C
0
C
0
B
Present
C
B
0
0
0
0
0
1
0
1
1
0
1
0
1
1
1
1
A+
StateNext State
A
C+ B+ A+
0
0
1
0
1
1
1
0
0
0
1
1
1
1
0
1
0
0
1
0
1
1
1
0
0
0
0
0
1
1
0
0
111
001
000
110
100
010
101
011
15
Self-starting counters
Start-up states
Self-starting solution
111
001
000
implementation
on previous slide
110
000
100
001
110
100
010
101
011
010
101
011
16
Activity
C=0
D=X
00
C=1
D=0
11
C=1
D=1
01
C=0
D=X
C=0
D=X
C=1
D=0
C=1
D=0
10
C=1
D=0
C=0
D=X
S1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
S0
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
C
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
D
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
N1
0
0
0
1
0
0
1
0
1
1
1
0
1
1
0
1
N0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
17
Activity (contd)
S1
S1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
S0
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
C
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
D
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
N1
0
0
0
1
0
0
1
0
1
1
1
0
1
1
0
1
N0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
C 1
1 D
0
0
S0
S1
C 1
0 D
1
N1 = CS1
+ CDS0S1 + CDS0S1
+ CDS0S1 + CDS0S1
= CS1
+ C(D(S1 S0) + D(S1 S0))
N0 = CS0 + CS0
S0
18
Counter/shift-register model
next state
outputs
values of flip-flops
Inputs
next state
logic
Next State
Current State
Outputs
19
next state
outputs
Inputs
output
logic
next state
logic
Outputs
Next State
Current State
20
output
logic
Outputs
next state
logic
Next State
Current State
Next State
State
Clock 0
21
22
Moore
inputs
combinational
logic for
next state
reg
logic for
outputs
outputs
state feedback
Mealy
inputs
logic for
outputs
combinational
logic for
next state
Synchronous Mealy
inputs
reg
state feedback
logic for
outputs
combinational
logic for
next state
outputs
outputs
reg
state feedback
Copyright
2004, Gaetano B
23
B/0
D/1
0
reset
0
1
A/0
1
1
C/0
1
E/1
current
reset input state
1
0
0
A
0
1
A
0
0
B
0
1
B
0
0
C
0
1
C
0
0
D
0
1
D
0
0
E
0
1
E
next
state
A
B
C
B
D
E
C
E
C
B
D
output
0
0
0
0
0
0
1
1
1
1
24
reset/0
0/1
1/1
1/0
current
reset input state
1
0
0
A
0
1
A
0
0
B
0
1
B
0
0
C
0
1
C
next
state
A
B
C
B
C
B
C
output
0
0
0
0
1
1
0
C
1/0
25
Inputs
output
logic
Outputs
next state
logic
Current State
26
N
Coin
Sensor
Vending
Machine
FSM
Open
Release
Mechanism
Clock
27
3 nickels
nickel, dime
dime, nickel
two dimes
S0
N
Reset
S1
inputs: N, D, reset
output: open chute
N
S3
assumptions:
N
S7
[open]
S2
D
S4
[open]
S5
[open]
D
S6
[open]
D
S8
[open]
28
Reset
0
5
N
D
10
N
D
10
N+D
15
[open]
15
inputs
D
0
0
0
1
1
0
1
1
0
0
0
1
1
0
1
1
0
0
0
1
1
0
1
1
next
N
0
5
10
5
10
15
10
15
15
15
output
state
0
0
0
0
0
0
0
0
0
open
29
next state
D1 D0
0 0
0 1
1 0
0 1
1 0
1 1
1 0
1 1
1 1
1 1
output
open
0
0
0
0
0
0
0
0
0
30
Mapping to logic
Q1
D1
0 0 1 1
0 1 1 1
D
X X 1 X
1 1 1 1
Q0
Q1
D0
Q1
Open
0 0 1 0
0 1 1 0
1 0 1 1
N
D
X X 1 X
0 1 1 1
0 0 1 0
N
D
Q0
X X 1 X
0 0 1 0
Q0
D1 = Q1 + D + Q0 N
D0 = Q0 N + Q0 N + Q1 N + Q1 D
OPEN = Q1 Q0
31
One-hot encoding
present state inputs
Q3 Q2 Q1 Q0 D N
0 0 0 1
0 0
0 1
1 0
1 1
0 0 1 0
0 0
0 1
1 0
1 1
0 1 0 0
0 0
0 1
1 0
1 1
1 0 0 0
- -
next state
D3 D2 D1 D0
0 0 0 1
0 0 1 0
0 1 0 0
- - - 0 0 1 0
0 1 0 0
1 0 0 0
- - - 0 1 0 0
1 0 0 0
1 0 0 0
- - - 1 0 0 0
output
open
0
0
0
0
0
0
0
0
0
1
D0 = Q0 D N
D1 = Q0 N + Q1 D N
D2 = Q0 D + Q1 N + Q2 D N
D3 = Q1 D + Q2 D + Q2 N + Q3
OPEN = Q3
32
Moore machine
Reset
0
[0]
Mealy machine
N D
N
D
5
[0]
N D
D/0
N D/0
10
N D/0
N/0
N D
N+D
15
[1]
N D/0
N/0
N
10
[0]
(N D + Reset)/0
Reset/0
D/1
N+D/1
Reset
15
Reset/1
33
Reset/0
N D/0
N/0
D/0
N D/0
10
N D/0
N/0
D/1
N+D/1
15
state
D0
0
1
0
1
0
1
0
1
1
output
open
0
0
0
0
0
1
0
1
1
Reset/1
Q1
Open
0 0 1 0
0 0 1 1
D
next
D1
0
0
1
0
1
1
1
1
1
X X 1 X
0 1 1 1
D0
D1
OPEN
Q0
Copyright
2004, Gaetano B
34
35
36
Q1
Open.d
0 0 1 0
0 0 1 1
D
1 0 1 1
0 1 1 1
Q0
0 0 1 1
N
D
X X 1 X
0 1 1 1
Q0
37
Mealy or Moore?
A
out
A
B
D
clock
Q
Q
out
out
Q
B
clock
Q
Q
38
Mealy or Moore?
out
A
Q
Q
D
clock
Q
Q
out
A
Q
B
Q
Q
Q
Q
Q
Q
clock
39
Flip-flops
FSMs
40
Example: reduce-1-string-by-1
Mealy
zero
[0]
0
1
0
0/0
one1
[0]
zero
[0]
0/0
1/0
one1
[0]
1/1
two1s
[1]
41
Moore machine
module reduce (clk, reset, in, out);
input clk, reset, in;
output out;
state assignment
(easy to change,
if in one place)
parameterzero=2b00;
parameterone1=2b01;
parametertwo1s=2b10;
reg out;
reg [2:1] state;
reg [2:1] next_state;
zero
[0]
1
// state variables
0
0
one1
[0]
1
two1s
[1]
42
crucial to include
all signals that are
input to state determination
always @(state)
case (state)
zero: out = 0;
one1: out = 0;
two1s: out = 1;
endcase
endmodule
43
zero
[0]
0/0
0/0
1/0
one1
[0]
1/1
44
45
46