EE121Lec11 - My FIT (my.fit.edu)

EE121
John Wakerly
Lecture #11
Sequential-circuit design
Sequential-circuit synthesis
1
State-machine design and synthesis
The creative part, like
writing a program
Turning the crank, like
a compiler does
• Example: Design a combination lock with two
inputs, X1 and X2. Open for the sequence
X1, X2, X2 (one input per clock).
2
• Example: Design a combination lock with two
inputs, X1 and X2. Open for the sequence
X1, X2, X2 (one input per clock).
State
X1 X2
-------------------------- ----------------------------------------------Meaning
Name
00
01
10
11 UNLOCK
-------------------------- ----------------------------------------------Start
A
A
A
B
A (B) 0
Got X1
B
A
C
A
A (C) 0
Got X1,X2
C
A
D
A
A (D) 0
Got X1,X2,X2 D
A
A (D)
B
A
1
• Specification ambiguities are resolved in the
state table.
3
State Assignment
• Can minimize number of states (see text), but
hardly anyone bothers anymore.
• Need to assign state-variable combinations to
states.
– Minimum number of variables for n states is log2 n
– Using more than minimum number may be
advantageous in some situations, e.g., one variable
per state (“one-hot”) (see text).
– Example -- 4 states, 2 state variables (Q1,Q2):
A ==> 00
B ==> 01
C ==> 10
D ==> 11
Up to this point is “art”, the
rest is just “turning the crank.”
4
Transition table
• Substitute state-variable combinations for
states in the state table.
State
X1 X2
-------------------------- ----------------------------------------------Meaning
Q1 Q2
00
01
10
11 UNLOCK
-------------------------- ----------------------------------------------Start
00
00
00
01
00
0
Got X1
01
00
10
00
00
0
Got X1,X2
10
00
11
00
00
0
Got X1,X2,X2 1 1
00
00
01
00
1
---------------------------------------------Q1 Q2
5
Transition equations; circuit
• Transition table specifies each state variable
(Q1, Q2) as a combinational logic function
of Q1, Q2, X1, X2.
– Find a realization of each function by your favorite
means -- ad hoc, minimal sum-of-products, etc.
• Build the circuit.
Q1
Q1
D
Q
D
Q
Q1
UNLOCK
Q2
X1
X2
Q2
Q2
CLK
6
state_diagram LOCKST
state A: if X1&!X2 then
state B: if !X1&X2 then
state C: if !X1&X2 then
state D: if X1&!X2 then
Design using
ABEL state
diagrams
Different order
LOCKST
A
B
C
D
LOCKST
A
B
C
D
[Q1,Q2];
[ 0, 0];
[ 0, 1];
[ 1, 0];
[ 1, 1];
else
else
else
else
equations
UNLOCK = (LOCKST==D);
State assignment
=
=
=
=
=
B
C
D
B
One-hot assignment
=
=
=
=
=
[Q1,Q2];
[ 0, 0];
[ 0, 1];
[ 1, 1];
[ 1, 0];
LOCKST
A
B
C
D
=
=
=
=
=
[Q1,Q2,Q3,Q4];
[ 1, 0, 0, 0];
[ 0, 1, 0, 0];
[ 0, 0, 1, 0];
[ 0, 0, 0, 1];
7
A;
A;
C;
A;
Another design example (from text)
• Design a machine with inputs A and B and
output Z that is 1 if:
– A had the same value at the two previous ticks
– B has been 1 since the last time the above was true
8
State assignment
• There are 6,720 different state assignments of
5 states to 3 variables.
– And there are even more using 4 or more variables
• Here are a few “obvious” or “interesting” ones:
9
Transition/output table
(decomposed assignment)
• Simple textual substitution
• With D flip-flops, excitation table is identical to
transition table.
10
Develop
excitation
equations
• Assume unused states have next-state = 000
11
Same example using ABEL
• Note about reset inputs:
– You always need a “power-on” reset input for a
sequential circuit.
– Previous example did not use synchronous reset
because of manual-synthesis complexity.
– Asynchronous reset is sometimes used (PR and
CLR inputs of flip-flops).
12
“State
Diagram”
This essentially
mimics the
state table.
13
State assignment
• Note definition of “extra” states.
14
Odds ’n’ ends
• Good behavior for extra states
• Clock and output equations
• Alternative state assignments are easy
– Modify state definitions and possibly output pins
and extra states.
– Unspecified states go to 0,0,…0.
15
ABEL-derived excitation equations
• Equivalent to what was derived by hand, with
the addition of the RESET input.
16
And now for something completely different...
• ABEL’s language features can be used to
enable a different, “hybrid” approach.
• Use one register to keep track of the previous
value of A; use a state machine for the rest.
Records previous value of A
17
Simpler, more natural state machine
• Really an example of “state-machine
decomposition.”
18
Equations and state assignments
19
Wrap-up
• Next time: PLD-based state-machine design
examples
• Discussion of Lab #5
• How to deal with pushbuttons, edge detection,
etc.
20