This document contains slides from a lecture on finite state machines and digital logic design. It discusses:
1) The differences between blocking and non-blocking assignments in Verilog and when each should be used (blocking for combinational logic, non-blocking for sequential logic).
2) Issues with asynchronous inputs in sequential circuits like setup and hold time violations and metastability. It recommends using synchronization registers to handle metastability.
3) Finite state machines and their use for modeling sequential circuits with centralized states. It provides examples of Moore and Mealy FSMs and how to derive the logic for an FSM from a state transition diagram.
This document contains slides from a lecture on finite state machines and digital logic design. It discusses:
1) The differences between blocking and non-blocking assignments in Verilog and when each should be used (blocking for combinational logic, non-blocking for sequential logic).
2) Issues with asynchronous inputs in sequential circuits like setup and hold time violations and metastability. It recommends using synchronization registers to handle metastability.
3) Finite state machines and their use for modeling sequential circuits with centralized states. It provides examples of Moore and Mealy FSMs and how to derive the logic for an FSM from a state transition diagram.
1. Evaluate a | b but defer assignment of x 2. Evaluate a^b^c but defer assignment of y 3. Evaluate b&(~c) but defer assignment of z 1. Evaluate a | b, assign result to x 2. Evaluate a^b^c, assign result to y 3. Evaluate b&(~c), assign result to z I. Blocking vs. Nonblocking Assignments Verilog supports two types of assignments within always blocks, with subtly different behaviors. Blocking assignment: evaluation and assignment are immediate Nonblocking assignment: all assignments deferred until all right-hand sides have been evaluated (end of simulation timestep) Sometimes, as above, both produce the same result. Sometimes, not! always @ (a or b or c) begin x = a | b; y = a ^ b ^ c; z = b & ~c; end always @ (a or b or c) begin x <= a | b; y <= a ^ b ^ c; z <= b & ~c; end 4. Assign x, y, and z with their new values 6.111 Fall 2007 Lecture 6, Slide 2 Why two ways of assigning values? Conceptual need for two kinds of assignment (in always blocks): a b c x y a b a = b b = a x = a & b y = x | c Blocking: Evaluation and assignment are immediate a <= b b <= a x <= a & b y <= x | c Non-Blocking: Assignment is postponed until all r.h.s. evaluations are done When to use: Sequential Circuits Combinational Circuits ( only in always blocks! ) 6.111 Fall 2007 Lecture 6, Slide 3 Assignment Styles for Sequential Logic Will nonblocking and blocking assignments both produce the desired result? module nonblocking(in, clk, out); input in, clk; output out; reg q1, q2, out; always @ (posedge clk) begin q1 <= in; q2 <= q1; out <= q2; end endmodule D Q D Q D Q in out q1 q2 clk Flip-Flop Based Digital Delay Line module blocking(in, clk, out); input in, clk; output out; reg q1, q2, out; always @ (posedge clk) begin q1 = in; q2 = q1; out = q2; end endmodule 6.111 Fall 2007 Lecture 6, Slide 4 Use Nonblocking for Sequential Logic D Q D Q D Q in out q1 q2 clk always @ (posedge clk) begin q1 <= in; q2 <= q1; out <= q2; end At each rising clock edge, q1, q2, and out simultaneously receive the old values of in, q1, and q2. always @ (posedge clk) begin q1 = in; q2 = q1; out = q2; end At each rising clock edge, q1 = in. After that, q2 = q1 = in; After that, out = q2 = q1 = in; Finally out = in. Blocking assignments do not reflect the intrinsic behavior of multi-stage sequential logic Guideline: use nonblocking assignments for sequential always blocks D Q in out clk q1 q2 6.111 Fall 2007 Lecture 6, Slide 5 x <= a & b; 0 1 0 1 1 x<=0 Assignment completion 0 1 0 0 1 Use Blocking for Combinational Logic Nonblocking assignments do not reflect the intrinsic behavior of multi-stage combinational logic While nonblocking assignments can be hacked to simulate correctly (expand the sensitivity list), its not elegant Guideline: use blocking assignments for combinational always blocks (Given) Initial Condition Blocking Behavior a b c x y 1 1 0 1 1 (Given) Initial Condition a b c x y Deferred 1 1 0 1 1 Nonblocking Behavior always @ (a or b or c) begin x <= a & b; y <= x | c; end always @ (a or b or c) begin x = a & b; y = x | c; end a b c x y a changes; always block triggered 0 1 0 1 1 x = a & b; 0 1 0 0 1 y = x | c; 0 1 0 0 0 a changes; always block triggered 0 1 0 1 1 y <= x | c; 0 1 0 1 1 x<=0, y<=1 6.111 Fall 2007 Lecture 6, Slide 6 II. Single-clock Synchronous Circuits Single-clock Synchronous Discipline: No combinational cycles Only care about value of combinational circuits just before rising edge of clock Period greater than every combinational delay Change saved state after noise- inducing logic transitions have stopped! Well use Flip Flops and Registers groups of FFs sharing a clock input in a highly constrained way to build digital systems. Single clock signal shared among all clocked devices 6.111 Fall 2007 Lecture 6, Slide 7 Clocked circuit for on/off button module onoff(clk,button,light); input clk,button; output light; reg light; always @ (posedge clk) begin if (button) light <= ~light; end endmodule D Q BUTTON LIGHT CLK 0 1 Q D LE CLK LOAD-ENABLED REGISTER SINGLE GLOBAL CLOCK Does this work with a 1Mhz CLK? 6.111 Fall 2007 Lecture 6, Slide 8 Asynchronous Inputs in Sequential Systems What about external signals? Sequential System Clock Cant guarantee setup and hold times will be met! When an asynchronous signal causes a setup/hold violation... Clock Q D I Transition is missed on first clock cycle, but caught on next clock cycle. II Transition is caught on first clock cycle. ? III Output is metastable for an indeterminate amount of time. Q: Which cases are problematic? 6.111 Fall 2007 Lecture 6, Slide 9 Asynchronous Inputs in Sequential Systems All of them can be, if more than one happens simultaneously within the same circuit. Idea: ensure that external signals directly feed exactly one flip-flop D Q Sequential System Clock This prevents the possibility of I and II occurring in different places in the circuit, but what about metastability? D Q D Q Q0 Clock Clock Q1 Async Input Clocked Synchronous System 6.111 Fall 2007 Lecture 6, Slide 10 Handling Metastability Preventing metastability turns out to be an impossible problem High gain of digital devices makes it likely that metastable conditions will resolve themselves quickly Solution to metastability: allow time for signals to stabilize How many registers are necessary? Depends on many design parameters(clock speed, device speeds, ) In 6.111, a pair of synchronization registers is sufficient D Q Complicated Sequential Logic System Clock D Q D Q Can be metastable right after sampling Very unlikely to be metastable for >1 clock cycle Extremely unlikely to be metastable for >2 clock cycle 6.111 Fall 2007 Lecture 6, Slide 11 III. 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 Combinational Logic Flip- Flops Q D CLK inputs + present state outputs + next state n n 6.111 Fall 2007 Lecture 6, Slide 12 Example 1: Light Switch LIGHT = 0 LIGHT = 1 BUTTON=1 BUTTON=1 BUTTON=0 BUTTON=0 State transition diagram D Q BUTTON LIGHT CLK 0 1 Combinational logic Register Logic diagram 6.111 Fall 2007 Lecture 6, Slide 13 Example 2: 4-bit Counter +1 clk count 4 4 Logic diagram # 4-bit counter module counter(clk, count); input clk; output [3:0] count; reg [3:0] count; always @ (posedge clk) begin count <= count+1; end endmodule Verilog 6.111 Fall 2007 Lecture 6, Slide 14 Example 2: 4-bit Counter 1 0 +1 enb clk count 4 4 Logic diagram # 4-bit counter with enable module counter(clk,enb,count); input clk,enb; output [3:0] count; reg [3:0] count; always @ (posedge clk) begin count <= enb ? count+1 : count; end endmodule Verilog Could I use the following instead? if (enb) count <= count+1; 6.111 Fall 2007 Lecture 6, Slide 15 Example 2: 4-bit Counter 0 1 0 1 0 +1 enb clr clk count 4 4 Isnt this a lot like Exercise 1 in Lab 2? Logic diagram # 4-bit counter with enable and synchronous clear module counter(clk,enb,clr,count); input clk,enb,clr; output [3:0] count; reg [3:0] count; always @ (posedge clk) begin count <= clr ? 4b0 : (enb ? count+1 : count); end endmodule Verilog 6.111 Fall 2007 Lecture 6, Slide 16 Two Types of FSMs Moore and Mealy FSMs : different output generation outputs y k = f k (S) inputs x 0 ...x n Moore FSM: Comb. Logic CLK n Flip- Flops Comb. Logic D Q present state S n next state S + inputs x 0 ...x n Mealy FSM: S Comb. Logic CLK Flip- Flops Comb. Logic D Q n S + n outputs y k = f k (S, x 0 ...x n ) direct combinational path! 6.111 Fall 2007 Lecture 6, Slide 17 Design Example: Level-to-Pulse A level-to-pulse converter produces a single-cycle pulse each time its input goes high. Its a synchronous rising-edge detector. Sample uses: Buttons and switches pressed by humans for arbitrary periods of time Single-cycle enable signals for counters Level to Pulse Converter L P CLK Whenever input L goes from low to high... ...output P produces a single pulse, one clock period wide. 6.111 Fall 2007 Lecture 6, Slide 18 High input, Waiting for fall 11 P = 0 L=1 L=0 00 Low input, Waiting for rise P = 0 01 Edge Detected! P = 1 L=1 L=0 L=0 L=1 State transition diagram is a useful FSM representation and design aid: Step 1: State Transition Diagram Block diagram of desired system: D Q Level to Pulse FSM L P unsynchronized user input Synchronizer Edge Detector This is the output that results from this state. (Moore or Mealy?) P = 0 11 Binary values of states L=0 if L=0 at the clock edge, then stay in state 00. L=1 if L=1 at the clock edge, then jump to state 01. D Q CLK 6.111 Fall 2007 Lecture 6, Slide 19 Step 2: Logic Derivation 00 Low input, Waiting for rise P = 0 01 Edge Detected! P = 1 11 High input, Waiting for fall P = 0 L=1 L=1 L=0 L=0 L=1 L=0 1 0 1 0 1 0 L In 0 0 1 1 0 0 P Out 1 0 1 0 1 0 S 0 + 1 0 1 0 0 0 S 1 + 1 1 0 0 0 0 S 1 Next State Curren t State 1 1 1 1 0 0 S 0 Combinational logic may be derived using Karnaugh maps X 1 1 0 1 X 0 0 0 0 10 11 01 00 X 1 1 1 1 X 0 0 0 0 10 11 01 00 S 1 S 0 L S 1 S 0 L for S 1 + : for S 0 + : 0 1 1 X 0 0 1 0 S 1 for P: S 0 Comb. Logic CLK n Flip- Flops Comb. Logic D Q S n S + L P S 1 + = LS 0 S 0 + = L P = S 1 S 0 Transition diagram is readily converted to a state transition table (just a truth table) 6.111 Fall 2007 Lecture 6, Slide 20 Moore Level-to-Pulse Converter Moore FSM circuit implementation of level-to-pulse converter: outputs y k = f k (S) inputs x 0 ...x n Comb. Logic CLK n Flip- Flops Comb. Logic D Q present state S n next state S + D Q S 1 + = LS 0 S 0 + = L P = S 1 S 0 D Q S 0 S 1 CLK S 0 + S 1 + L P Q Q 6.111 Fall 2007 Lecture 6, Slide 21 1. When L=1 and S=0, this output is asserted immediately and until the state transition occurs (or L changes). 2. While in state S=1 and as long as L remains at 1, this output is asserted. L=1 | P=0 L=1 | P=1 P=0 0 Input is low 1 Input is high L=0 | P=0 L=0 | P=0 Design of a Mealy Level-to-Pulse Since outputs are determined by state and inputs, Mealy FSMs may need fewer states than Moore FSM implementations S Comb. Logic CLK Flip- Flops Comb. Logic D Q n S + n direct combinational path! P L State Clock Output transitions immediately. State transitions at the clock edge. 1 2 6.111 Fall 2007 Lecture 6, Slide 22 Mealy Level-to-Pulse Converter Mealy FSM circuit implementation of level-to-pulse converter: 1 0 1 0 L In 0 0 1 0 P Out 1 0 1 0 S + Next State Pres. State 1 1 0 0 S D Q S CLK S + L P Q S FSMs state simply remembers the previous value of L Circuit benefits from the Mealy FSMs implicit single- cycle assertion of outputs during state transitions 0 Input is low 1 Input is high L=1 | P=1 L=0 | P=0 L=1 | P=0 L=0 | P=0 6.111 Fall 2007 Lecture 6, Slide 23 Moore/Mealy Trade-Offs 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: Compared to a Moore FSM, a Mealy FSM might... Be more difficult to conceptualize and design Have fewer states P L State Clock Mealy: immediate assertion of P P L State[0] Clock Moore: delayed assertion of P 6.111 Fall 2007 Lecture 6, Slide 24 Light Switch Revisited D Q BUTTON LIGHT CLK 0 1 D Q Q Level-to-Pulse FSM Light Switch FSM