Circuits that contain both combinational and sequential logic have a state => we call them state machines

The amount of states is finite => we call them finite state machines — FSM for short

Mealy FSMs

A Mealy state machine (named after George H. Mealy), has

  • A next state logic
    • A function of inputs and current state -> for the next state
  • State memory
    • A set of flip-flops that store the current state
  • Output logic
    • A function of inputs and current state -> to output as a result

In verilog, we have an always block for each part :

  • Next state => always @(*)
  • State memory => always @(posedge CLK)
  • Output logic => always @(*)

Moore FSM

A Moore state machine (named after Edward F. Moore), has

  • A next state logic
    • A function of the current state and inputs
  • State memory
    • A set of flip-flops that store the current state
  • Output logic
    • A function of the current state does not depend on inputs

In verilog, we model it in the same way — but make sure inputs don’t influence directly the outputs

State Machine Analysis

We often use diagrams to analyse state machines => state diagram

  • A graph that shows states and transitions between states

On a node we have edges (arrows), as well as the output variables