43
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

Embed Size (px)

Citation preview

Page 1: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

State Machines

Anselmo Lastra

Page 2: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

2 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Topics

• How to design machines that go through a sequence of events

• Basically close this loop

Page 3: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

3 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Lab Preview

• Digital lock• You’ll need clock• Will provide code for slowing

clock♦ Next slide♦ There are better ways to change clock

speed. Will discuss later.

Page 4: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

4 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Counter

module cntr(output out, input clk);

reg [31:0] count;

always @ (posedge clk) count <= count + 1;

assign out = count[22];

endmodule

What does this do?

Page 5: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

5 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Button and Debouncing

• Button normally high• Mechanical switches can

“bounce”♦ Go H and L a number of times

• We’ll want to♦ debounce♦ synchronize

Page 6: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

6 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Flip-Flop for pushbutton

module button_test( output q, input btn, input clk );

reg q;

always @ (posedge clk)begin

if(btn == 1)q <= 1;

elseq <= 0;

end

endmodule

What is this?

Page 7: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

7 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Simple Module to Begin With

module led_on(output s6, input button, input clk);

wire clkb; //opt

cntr C1(clkb, clk);button_test B1(s6, ~button, clkb);

endmodule

• clk to board clock, P88• button to pushbutton, P93

• Why ~button?• s6 to one of LED segments

Page 8: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

8 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Things to Think About

• Can I press button and not light LED?• What happens if I hold button down

for a long time?• What effect will changing period of

clkb have?♦ On LED♦ On button debouncing

• What does it mean to “press the button”?♦ Think carefully about this

Page 9: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

9 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Analysis of Sequential Circuits

• Earlier we learned how to analyze combinational circuits

• Now extend to synchronous sequential♦ Include time

• We’ll use state tables and state diagrams

Page 10: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

10 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Input Equations

• Can describe inputs to FF with logic equations

)( BXAXDA

XADB

XBAY )(

Page 11: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

11 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Time is Implied

• Note that last circuit used the♦ Previous state to determine next state♦ State and inputs to determine outputs

• Synchronous circuit• When are transitions?

• So timing is discrete

Page 12: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

12 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

State Table

• Just truth table with state added

)( BXAXDA XADB XBAY )(

Page 13: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

13 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Another Table

• Same info, different layout style

Page 14: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

14 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Sequential Circuit Types

• Moore model – outputs depend on states

• Mealy model – outputs also depend on inputs

Page 15: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

15 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

State Diagram

• Alternative representation for state table

• Moore-> State/OutputInputs

Page 16: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

16 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Mealy Model

• Output depends on input and state Input/Output

Page 17: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

17 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

State Table vs. Diagram

• Same information• Table is perhaps easier to fill in

from description• Diagram is perhaps easier to

understand♦ You can label states with English

description

Page 18: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

18 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Design Procedure

• Take problem description and refine it into a state table or diagram

• Assign codes to the states• Write Verilog♦ See example in a moment♦ Designing with gates and FFs more

involved because you have to derive input and output functions

Page 19: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Good Place to go off on a Tangent

Page 20: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

20 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Example – Sequence Recognizer

• Circuit has input, X, and output, Z

• Recognizes sequence 1101 on X♦ Specifically, if X has been 110 and next

bit is 1, make Z high

Page 21: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

21 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

How to Design States

• States remember past history• Clearly must remember we’ve

seen 110 when next 1 comes along

• Tell me one necessary state

Page 22: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

22 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Beginning State

• Some state, A• If 1 appears, move to next state

BInput / Output

Page 23: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

23 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Second 1

• New state, C• To reach C, must have seen 11

Page 24: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

24 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Next a 0

• If 110 has been received, go to D

• Next 1 will generate a 1 on output Z

Page 25: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

25 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

What else?

• What happens to arrow on right?

• Must go to some state.• Where?

Page 26: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

26 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

What Sequence?

• Here we have to interpret problem

• We’ve just seen 01♦ Is this beginning of new 1101?♦ Or do we need to start over w/ another 1?

• They decide that it’s beginning (01…)

Page 27: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

27 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Cover every possibility

• Well, must have every possibility out of every state

• In this case, just two: X = 0 or 1• You fill in other cases

Page 28: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

28 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Fill in

Page 29: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

29 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Answer From Book

Page 30: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

30 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

State Minimization

• When we make state diagram, do we need all those states?

• Some may be redundant• State minimization procedures

can be used♦ We won’t cover now

Page 31: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

31 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

How to code in Verilog

• Instead of learning how to hand design (Sections 4-6 and 4-7)

• Learn how to code this in Verilog

Page 32: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

32 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Verilog Case Statement

• Similar to sequence of if/then/else case (expression)

case: statements; other case: statements; default: statements; // optional

endcase

• Example in a moment

Page 33: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

33 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Parameter – Just Shorthand

module seq_rec_v(CLK, RESET, X, Z);input CLK, RESET, X;output Z;reg [1:0] state, next_state;

parameter A = 2'b00, B = 2'b01, C = 2 'b10, D = 2'b11;

Notice that we’ve assigned codes to the states – more later

Page 34: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

34 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Next State

always @(X or state)begin

case (state) A: if (X == 1)

next_state <= B; else

next_state <= A; B: if(X) next_state <= C;else next_state <=

A; C: if(X) next_state <= C;else next_state <=

D; D: if(X) next_state <= B;else next_state <=

A;endcase

end

The last 3 cases do same thing.Just sparse syntax.

Page 35: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

35 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

On Reset or CLK

always @(posedge CLK or posedge RESET)beginif (RESET == 1)

state <= A;else

state <= next_state;end

Notice that state only gets updatedon posedge of clock (or on reset)

Page 36: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

36 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Output

always @(X or state)begincase(state)

A: Z <= 0;B: Z <= 0;C: Z <= 0;D: Z <= X ? 1 : 0;

endcaseend

Page 37: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

37 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Synthesis of Latches

• Sometimes unexpected latches created

• always will try to synthesize FFif (select) out <= A;♦ To save old value if select != 1

• If cover all possibilities, no FFif (select) out <= A;

else out <= B;

Page 38: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

38 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Comment on Book Code

• Could shorten• Don’t need next_state, for example

♦ Can just set state on clock♦ Note that the two are a little different in function

• Don’t need three always clauses♦ Although it’s easier to have combinational code

to set output be separate

• Template helps synthesizer♦ Check to see whether your state machines were

recognized

Page 39: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

39 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Read

• 7-1 and 7-11• Lab♦ I’d suggest spending time thinking

about the lock

Page 40: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

40 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Today

• Simple state machines♦ How to code them in Verilog

• Next Week♦ More on state machine styles♦ Registers♦ Counters♦ Info for next lab

• VGA timing

Page 41: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

41 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

Page 42: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

42 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

BACKUP

Page 43: The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL State Machines Anselmo Lastra

43 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL

One Shot

• Help me analyze this one

• What does it do?