State & Finite State Machines Hakim Weatherspoon CS 3410, Spring 2012 Computer Science Cornell University See P&H Appendix C.7. C.8, C.10, C.11 Big Picture: Building a Processor memory +4 inst register file +4 =? PC control offset new pc alu cmp addr din dout memory target imm extend A Single cycle processor 2 Stateful Components Until now is combinatorial logic • Output is computed when inputs are present • System has no internal state • Nothing computed in the present can depend on what happened in the past! Inputs N Combinational circuit M Outputs Need a way to record data Need a way to build stateful circuits Need a state-holding device Finite State Machines 3 detect How can we store and change values? B enc 8 Ballots 3 7LED decode 7 How do we create vote counter machine (a) C (d) All the above A (b) A B Q (c) R (e) None S Q 4 Unstable Devices B C A 5 Bistable Devices • Stable and unstable equilibria? A A Simple Device B • In stable state, A = B 0 A 1 1 B A • How do we change the state? 0 B SR Latch Q R S Q S R 0 0 0 1 1 0 1 1 Q Q • Set-Reset (S-R) Latch • Stores a value Q and its complement SR Latch Q R S Q S R 0 0 • Set-Reset (S-R) Latch • Stores a value Q and its complement 0 1 • S=1 and R=1 ? 1 0 1 1 Q Q SR Latch Q R S Q R Q S Q S R Q Q 0 0 Q Q • Set-Reset (S-R) Latch • Stores a value Q and its complement 0 1 0 1 • S=1 and R=1 ? 1 0 1 0 1 1 ? ? (Unclocked) D Latch D Q D R S Q R Q S Q • Data (D) Latch – Easier to use than an SR latch – No possibility of entering an undefined state D Q Q 0 1 • When D changes, Q changes … immediately (…after a delay of 2 Ors and 2 NOTs) • Need to control when the output changes (Unclocked) D Latch D Q D R S Q R Q S Q • Data (D) Latch – Easier to use than an SR latch – No possibility of entering an undefined state D Q Q 0 0 1 1 1 0 • When D changes, Q changes … immediately (…after a delay of 2 Ors and 2 NOTs) • Need to control when the output changes Clocks • Clock helps coordinate state changes – Usually generated by an oscillating crystal – Fixed period; frequency = 1/period 1 0 Edge-triggering • Can design circuits to change on the rising or falling edge • Trigger on rising edge = positive edge-triggered • Trigger on falling edge = negative edge-triggered • Inputs must be stable just before the triggering edge input clock Clock Disciplines • Level sensitive – State changes when clock is high (or low) • Edge triggered – State changes at clock edge positive edge-triggered negative edge-triggered D Latch with Clock D S Q clk R Q S R Q Q 0 0 Q Q 0 0 1 0 1 1 0 1 0 1 1 forbidden clk D Q Q 0 Q Q 0 1 Q Q 1 0 0 1 1 1 1 0 15 D Latch with Clock D S Q clk R Q clk D Q Level Sensitive D Latch Clock high: set/reset (according to D) Clock low: keep state (ignore D) clk D Q Q 0 0 Q Q 0 1 Q Q 1 0 0 1 1 1 1 0 16 Edge-Triggered D Flip-Flop D Flip-Flop D D Q clk L Q X D cL c Q Q Q Edge-Triggered • Data is captured Q when clock is high • Outputs change only on falling edges • clk D X Q 17 Registers D0 D1 D2 Register • D flip-flops in parallel • shared clock • extra clocked inputs: write_enable, reset, … D3 4 clk 4-bit reg 4 18 Clock Methodology Clock Methodology • Negative edge, synchronous clk tcombinational compute tsetup thold save compute save compute – Signals must be stable near falling clock edge • • Positive edge synchronous Asynchronous, multiple clocks, . . . 19 Metastability and Asynchronous Inputs Q: What happens if select input changes near clock edge? A) Multiplexor selects input 0 B) Multiplexor selects input 1 C) Multiplexor chooses either input D) Unknown E) None above 1-bit reg 0 1 select Clk A: Google “Buridan’s Principle” by Leslie Lamport 20 An Example: What will this circuit do? Reset Run WE R 32-bit reg Decoder +1 Clk 21 Recap We can now build interesting devices with sensors • Using combinatorial logic We can also store data values • In state-holding elements • Coupled with clocks 22 Administrivia Make sure partner in same Lab Section this week Lab2 is out Due in one week, next Monday, start early Work alone But, use your resources • Lab Section, Piazza.com, Office Hours, Homework Help Session, • Class notes, book, Sections, CSUGLab No Homework this week 23 Administrivia Check online syllabus/schedule • http://www.cs.cornell.edu/Courses/CS3410/2012sp/schedule.html Slides and Reading for lectures Office Hours Homework and Programming Assignments Prelims (in evenings): • Tuesday, February 28th • Thursday, March 29th • Thursday, April 26th Schedule is subject to change 24 Collaboration, Late, Re-grading Policies “Black Board” Collaboration Policy • Can discuss approach together on a “black board” • Leave and write up solution independently • Do not copy solutions Late Policy • Each person has a total of four “slip days” • Max of two slip days for any individual assignment • Slip days deducted first for any late assignment, cannot selectively apply slip days • For projects, slip days are deducted from all partners • 20% deducted per day late after slip days are exhausted Regrade policy • Submit written request to lead TA, and lead TA will pick a different grader • Submit another written request, lead TA will regrade directly • Submit yet another written request for professor to regrade. 25 Finite State Machines detect Revisit Voting Machine Ballots 8 enc 3 7LED decode 7 How do we create a vote counter machine 27 Revisit Voting Machine 32 reg reg reg WE WE ... reg WE LED dec mux mux 32 32 +1 32 WE enc decoder (3-to-8) detect D 3 V 3 28 Finite State Machines An electronic machine which has • external inputs • externally visible outputs • internal state Output and next state depend on • inputs • current state 29 Abstract Model of FSM Machine is M = ( S, I, O, ) S: Finite set of states I: Finite set of inputs O: Finite set of outputs : State transition function Next state depends on present input and present state 30 Revisit Voting Machine 32 32 mux 32 reg reg reg WE WE ... reg WE LED dec mux 3 +1 32 WE enc detect decoder (3-to-8) 3 31 Automata Model Registers Finite State Machine • • • • Current State Input Comb. Logic Output Next State inputs from external world outputs to external world internal state combinational logic 32 FSM Example down/on input/output state down/on up/off B A start state up/off Legend up/off up/off C Input: up or down Output: on or off States: A, B, C, or D D down/off down/off 33 FSM Example down/on input/output state down/on up/off A start state up/off Legend B up/off up/off C down/off Input: = up or = down Output: = on or = off States: = A, = B, = C, or = D D down/off 34 FSM Example 1/1 i0i1i2…/o0o1o2… 01 00 S1S0 1/1 0/0 S1S0 Legend 0/0 0/0 10 Input: 0=up or 1=down 1/0 Output: 1=on or 1=off States: 00=A, 01=B, 10=C, or 11=D 0/0 11 1/0 35 Mealy Machine Registers General Case: Mealy Machine Current State Input Comb. Logic Output Next State Outputs and next state depend on both current state and input 36 Moore Machine Registers Special Case: Moore Machine Current State Comb. Logic Output Input Comb. Logic Next State Outputs depend only on current state 37 Moore Machine Example down input state out up B A on off start out up Legend up C up D off Input: up or down Output: on or off States: A, B, C, or D down on down down 38 Example: Digital Door Lock Digital Door Lock Inputs: • keycodes from keypad • clock Outputs: • “unlock” signal • display how many keys pressed so far 39 Door Lock: Inputs Assumptions: • signals are synchronized to clock • Password is B-A-B K A B K A B Meaning 0 0 0 Ø (no key) 1 1 0 ‘A’ pressed 1 0 1 ‘B’ pressed 40 Door Lock: Outputs Assumptions: • High pulse on U unlocks door D3D2D1D0 4 LED 8 dec U 41 Door Lock: Simplified State Diagram Ø Ø G1 ”1” “A” “B” G2 ”2” else “B” else G3 ”3”, U any Idle ”0” Ø else any B1 ”1” else B2 ”2” Ø else B3 ”3” Ø 42 Door Lock: Simplified State Diagram Ø Ø G1 ”1” “A” else “B” G2 ”2” else “B” G3 ”3”, U any Idle ”0” Ø else else B1 ”1” else B2 ”2” Ø Ø 43 Door Lock: Simplified State Diagram Ø Ø G1 ”1” “A” else “B” G2 ”2” else “B” Cur. State G3 ”3”, U any Output Idle ”0” Ø else else B1 ”1” else B2 ”2” Ø Ø 44 Door Lock: Simplified State Diagram Ø Ø G1 ”1” “A” else “B” G2 ”2” else Idle ”0” Ø else else B1 ”1” else B2 ”2” Ø Ø “B” Cur. State Idle G1 G2 G3 B1 B2 G3 ”3”, U any Output “0” “1” “2” “3”, U “1” “2” 45 Door Lock: Simplified State Diagram Ø Ø G1 ”1” “A” else “B” Cur. State G2 ”2” else “B” Input Next State G3 ”3”, U any Idle ”0” Ø else else B1 ”1” else B2 ”2” Ø Ø 46 Door Lock: Simplified State Diagram Ø Ø G1 ”1” “A” else “B” Idle ”0” Ø else else B1 ”1” else Ø Cur. State G2 Idle “B” ”2”Idle elseIdle G1 G1 G1 G2 G2 G2 B2 G3 ”2” B1 B1 ØB2 B2 Input Next State Ø G3 Idle ”3”, U “B” G1 “A” B1 any Ø G1 “A” G2 “B” B2 Ø B2 “B” G3 “A” Idle any Idle Ø B1 K B2 Ø B2 K Idle 47 State Table Encoding SCur. SState S0 2 1 0 Idle 0 0 0 G1 0 1 0 G2 1 0 0 G3 1 1 1 B1 0 0 1 B2 0 1 State K D3D2D1AD0B 0 Idle 0U0 1 G1 1 0 1 G2 0 1 G3 B1 B2 D3 0 0 0 0 0 0 DOutput 2 D1 D0 0 “0” 0 0 0 “1” 0 1 0 “2” 1 0 0“3”, 1 U1 0 “1” 0 1 0 “2” 1 0 U 0 0 0 1 0 0 4 S2 S 1 8 S0 Meaning dec 0 0 Ø 0(no key) 0 1 ‘A’0pressed R 0 0 1 ‘B’ pressed P 0 1 1 Q 1 0 0 1 0 1 Cur. S2 SState 1 S0 0 Idle 0 0 0 Idle 0 0 0 Idle 0 0 0 G1 0 1 0 G1 0 1 0 G1 0 1 0 G2 1 0 0 G2 1 0 0 G2 1 0 0 G3 1 1 1 B1 0 0 1 B1 0 0 1 B2 0 1 1 B2 0 1 K Input A B 0 Ø 0 0 1 “B” 0 1 1 “A” 1 0 0 Ø 0 0 1 “A” 1 0 1 “B” 0 1 0 Ø 0 0 1 “B” 0 1 1 “A” 1 0 x any x x 0 Ø 0 0 1 K x x 0 Ø 0 0 1 K x x S’ Next 2 S’State 1 S’0 0 Idle 0 0 0 G1 0 1 1 B1 0 0 0 G1 0 1 0 G2 1 0 1 B2 0 1 0 B2 1 0 0 G3 1 1 0 Idle 0 0 0 Idle 0 0 1 B1 0 0 1 B2 0 1 1 B2 0 1 0 Idle 0 0 48 3bit Reg S2-0 D3-0 4 dec Door Lock: Implementation U clk S2-0 A B S’2-0 C Strategy: (1) Draw a state diagram (e.g. Moore Machine) (2) Write output and next-state tables (3) Encode states, inputs, and outputs as bits (4) Determine logic equations for next state and outputs 49 Summary We can now build interesting devices with sensors • Using combinational logic We can also store data values • • • • Stateful circuit elements (D Flip Flops, Registers, …) Clock to synchronize state changes But be wary of asynchronous (un-clocked) inputs State Machines or Ad-Hoc Circuits 50