Finite State Machines

Finite State Machines •  Finite State Machines (FSMs) are a useful abstraction for sequential circuits with centralized “states” of operation •  At ea...
16 downloads 1 Views 513KB Size
Finite State Machines •  Finite State Machines (FSMs) are a useful abstraction for sequential circuits with centralized “states” of operation •  At each clock edge, combinational logic computes outputs and next state as a function of inputs and present state

inputs

Finite State Machines

Combinational Logic

+ present state

•  Design methodology for sequential logic -- identify distinct states -- create state transition diagram -- choose state encoding -- write combinational Verilog for next-state logic -- write combinational Verilog for output signals •  Lots of examples

outputs + next state

n

n Q

Registers

D

CLK

Reminder: Lab #2 due tonight! Lab #3 tutorial Sun @ 7pm in 34-301 6.111 Fall 2009

Lecture 5

1

6.111 Fall 2009

Two Types of FSMs

•  A level-to-pulse converter produces a singlecycle pulse each time its input goes high.

•  Moore FSM: inputs x0...xn

Comb. Logic

n

2

Design Example: Level-to-Pulse

Moore and Mealy FSMs : different output generation next state S+

Lecture 5

•  It’s a synchronous rising-edge detector. Q

D

Comb. Logic

Registers

CLK

•  Sample uses:

outputs yk = fk(S)

–  Buttons and switches pressed by humans for arbitrary periods of time

n

–  Single-cycle enable signals for counters

present state S

•  Mealy FSM: direct combinational path!

inputs x0...xn

Comb. Logic

S+ n

D

Comb. Logic

Q

Registers

CLK

outputs yk = fk(S, x0...xn)

L Whenever input L goes from low to high...

n

Level to P Pulse Converter

CLK

...output P produces a single pulse, one clock period wide.

S 6.111 Fall 2009

Lecture 5

3

6.111 Fall 2009

Lecture 5

4

Valid State Transition Diagrams

Step 1: State Transition Diagram •  Block diagram of desired system: Synchronizer unsynchronized user input

D Q

L=1

Edge Detector

D Q

L

Level to Pulse FSM

00

L=0

P

CLK

“if L=1 at the clock edge, then jump to state 01.”

L=0

L=1

L=1

00

01

Low input, Waiting for rise

P=0

Edge Detected!

L=0

P=1

6.111 Fall 2009

L=1

This is the output that results from this state. (Moore or Mealy?)

L=0

•  Often a starting state is specified •  Each state specifies values for all outputs (Moore) 5

6.111 Fall 2009

Lecture 5

Choosing State Representation

6

Step 2: Logic Derivation Transition diagram is readily converted to a state transition table (just a truth table)

Choice #1: binary encoding

L=1

L=1

For N states, use ceil(log2N) bits to encode the state with each state represented by a unique combination of the bits. Tradeoffs: most efficient use of state registers, but requires more complicated combinational logic to detect when in a particular state.

L=0

00

P=0

Edge Detected!

L=0

L=1

11

01

Low input, Waiting for rise

P=1

High input, Waiting for fall

P=0

L=0

Current State

In

S1 S0 0 0 0 0 0 1 0 1 1 1 1 1

L 0 1 0 1 0 1

Next State

S1 0 0 0 1 0 1

+

S0 0 1 0 1 0 1

Out +

P 0 0 1 1 0 0

•  Combinational logic may be derived using Karnaugh maps

Choice #2: “one-hot” encoding

S1S0 for S1 : 00 01 11 10 +

L

For N states, use N bits to encode the state where the bit corresponding to the current state is 1, all the others 0. Tradeoffs: more state registers, but often much less combinational logic since state decoding is trivial.

6.111 Fall 2009

L=0

L=1

P=0

•  So for each state: for any combination of input values there’s exactly one applicable arc

P=0

Lecture 5

P=1

•  Arcs leaving a state are collectively exhaustive, i.e., for any combination of input values there’s at least one applicable arc

11 11

L=0

“if L=0 at the clock edge, then stay in state 00.”

High input, Waiting for fall

Edge Detected!

•  Arcs leaving a state are mutually exclusive, i.e., for any combination input values there’s at most one applicable arc

Binary values of states

High input, Waiting for fall

11

01

Low input, Waiting for rise

P=0

•  State transition diagram is a useful FSM representation and design aid:

L=1

Lecture 5

0 0 0 0 X 1 0 1 1 X

for S0+:

S 1S 0 00 01 11 10 L

0 0 0 0 X 1 1 1 1 X 7

6.111 Fall 2009

L

Comb. Logic

S1+ = LS0 S 0+ = L

S+ n

D

Q

Comb. Logic

Registers

CLK

n

S

Lecture 5

P = S 1S 0

P S0

S1

for P:

0 1 0 0 X 1 1 0

8

Design of a Mealy Level-to-Pulse

Moore Level-to-Pulse Converter next state S+

inputs

Comb. Logic

x0...xn

direct combinational path!

Q

D

outputs yk = fk(S)

Comb. Logic

Registers

n CLK

Comb. Logic

n

S

•  Since outputs are determined by state and inputs, Mealy FSMs may need fewer states than Moore FSM implementations

P = S 1S 0

1. When L=1 and S=0, this output is asserted immediately and until the state transition occurs (or L changes).

Moore FSM circuit implementation of level-to-pulse converter: S0

L

CLK

+

D

S0

P

Q

CLK

D

S 1+

Q

Q Q

Comb. Logic

Q

D

Registers

n

present state S

S1+ = LS0 S 0+ = L

S+ n

L=0 | P=0

0

L P

L=1 | P=1

Input is low

2

Clock

1

Stat e

Input is high L=0 | P=0

S1

1

L=1 | P=0

Output transitions immediately. State transitions at the clock edge.

2. While in state S=1 and as long as L remains at 1, this output is asserted. 6.111 Fall 2009

Lecture 5

9

6.111 Fall 2009

Lecture 5

Mealy Level-to-Pulse Converter L=1 | P=1

0

Input is low

Pres. State

1

Input is high L=0 | P=0

L=0 | P=0

L=1 | P=0

Moore/Mealy Trade-Offs

In

Next State

Out

S

L

S+

P

0

0

0

0

0

1

1

1

1

0

0

0

1

1

1

0

•  How are they different?

–  Moore: outputs = f( state ) only –  Mealy outputs = f( state and input ) –  Mealy outputs generally occur one cycle earlier than a Moore: Moore: delayed assertion of P

Mealy FSM circuit implementation of level-to-pulse converter: L

S+ CLK

D

Q Q

S

P

S

•  FSM’s state simply remembers the previous value of L •  Circuit benefits from the Mealy FSM’s implicit single-cycle assertion of outputs during state transitions 6.111 Fall 2009

Lecture 5

10

Mealy: immediate assertion of P

L

L

P

P

Clock

Clock

State [0]

State

•  Compared to a Moore FSM, a Mealy FSM might... –  Be more difficult to conceptualize and design –  Have fewer states 11

6.111 Fall 2009

Lecture 5

12

Example: Intersection Traffic Lights

FSM Example GOAL: Build an electronic combination lock with a reset button, two number buttons (0 and 1), and an unlock output. The combination should be 01011.

•  Design a controller for the traffic lights at the intersection of two streets – two sets of traffic lights, one for each of the streets. •  Step 1: Draw starting state transition diagram. Just handle the usual green-yellow-red cycle for both streets. How many states? Well, how many different combinations of the two sets of lights are needed? •  Step 2: add support for a walk button and walk lights to your state transition diagram. •  Step 3: add support for a traffic sensor for each of the streets – when the sensor detects traffic the green cycle for that street is extended.

RESET “0” “1”

STEPS: 1.  Design lock FSM (block diagram, state transitions) 2.  Write Verilog module(s) for FSM

Example to be worked collaboratively on the board…

6.111 Fall 2009

Lecture 5

13

6.111 Fall 2009

Step 1A: Block Diagram

Button Enter Button 0 Button 1

fsm_clock

b0_in button b1_in

unlock reset

0

RESET Unlock = 0

Unlock LED

1

0

1 “0” Unlock = 0

1

“01” Unlock = 0 0

1 b0 state

button

14

RESET

fsm

reset button

Lecture 5

Step 1B: State transition diagram

lock Clock generator

UNLOCK

0

0

LED DISPLAY

“01011” Unlock = 1

1

“0101” Unlock = 0

1

“010” Unlock = 0

b1 0 6 states ! 3 bits

6.111 Fall 2009

Lecture 5

15

6.111 Fall 2009

Lecture 5

16

Step 2: Write Verilog

Step 2A: Synchronize buttons // // // //

module lock(input clk,reset_in,b0_in,b1_in, output out); // synchronize push buttons, convert to pulses

module button( input clk,in, output out ); reg r1,r2,r3; always @(posedge begin r1