200 likes | 221 Views
EE121 John Wakerly Lecture #11. Sequential-circuit design Sequential-circuit synthesis. The creative part, like writing a program. Turning the crank, like a compiler does. State-machine design and synthesis.
E N D
EE121 John Wakerly Lecture #11 Sequential-circuit design Sequential-circuit synthesis
The creative part, like writing a program Turning the crank, like a compiler does State-machine design and synthesis • Example: Design a combination lock with two inputs, X1 and X2. Open for the sequence X1, X2, X2 (one input per clock).
(B) (C) (D) • Example: Design a combination lock with two inputs, X1 and X2. Open for the sequence X1, X2, X2 (one input per clock). • Specification ambiguities are resolved in the state table. State X1 X2 -------------------------- ----------------------------------------------- Meaning Name 00 01 10 11 UNLOCK -------------------------- ----------------------------------------------- Start A A A B A 0 Got X1 B A C A A 0 Got X1,X2 C A D A A 0 Got X1,X2,X2 D A A B A 1 (D)
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 log2n • 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.”
Transition table • Substitute state-variable combinations for states in the state table. State X1 X2 -------------------------- ----------------------------------------------- Meaning Q1 Q2 00 01 10 11 UNLOCK -------------------------- ----------------------------------------------- ---------------------------------------------- Q1Q2 Start 0 0 0 0 0 0 0 1 0 0 0 Got X1 0 1 0 0 1 0 0 0 0 0 0 Got X1,X2 1 0 0 0 1 1 0 0 0 0 0 Got X1,X2,X2 1 1 0 0 0 0 0 1 0 0 1
Q1 Q1 Q1 D D Q Q UNLOCK Q2 X1 Q2 X2 Q2 CLK 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.
State assignment Different order LOCKST = [Q1,Q2]; A = [ 0, 0]; B = [ 0, 1]; C = [ 1, 0]; D = [ 1, 1]; LOCKST = [Q1,Q2]; A = [ 0, 0]; B = [ 0, 1]; C = [ 1, 1]; D = [ 1, 0]; LOCKST = [Q1,Q2,Q3,Q4]; A = [ 1, 0, 0, 0]; B = [ 0, 1, 0, 0]; C = [ 0, 0, 1, 0]; D = [ 0, 0, 0, 1]; One-hot assignment Design using ABEL state diagrams state_diagram LOCKST state A: if X1&!X2 then B else A; state B: if !X1&X2 then C else A; state C: if !X1&X2 then D else C; state D: if X1&!X2 then B else A; equations UNLOCK = (LOCKST==D);
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
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:
Transition/output table(decomposed assignment) • Simple textual substitution • With D flip-flops, excitation table is identical to transition table.
Develop excitation equations • Assume unused states have next-state = 000
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).
“State Diagram” This essentially mimics the state table.
State assignment • Note definition of “extra” states.
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.
ABEL-derived excitation equations • Equivalent to what was derived by hand, with the addition of the RESET input.
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
Simpler, more natural state machine • Really an example of “state-machine decomposition.”
Wrap-up • Next time: PLD-based state-machine design examples • Discussion of Lab #5 • How to deal with pushbuttons, edge detection, etc.