SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
Sequential Logic Implementation

! Models for representing sequential circuits
   "   Abstraction of sequential elements
   "   Finite state machines and their state diagrams
   "   Inputs/outputs
   "   Mealy, Moore, and synchronous Mealy machines
! Finite state machine design procedure
   "   Verilog specification
   "   Deriving state diagram
   "   Deriving state transition table
   "   Determining next state and output functions
   "   Implementing combinational logic




                 CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 1




Mealy vs. Moore Machines
! Moore: outputs depend on current state only
! Mealy: outputs depend on current state and inputs
! Ant brain is a Moore Machine
    " Output does not react immediately to input change
! We could have specified a Mealy FSM
    " Outputs have immediate reaction to inputs
    " As inputs change, so does next state, doesn’t commit until
      clocking event

                                                         L’ R / TL, F
                        L / TL
                                             A

                                                   react right away to leaving the wall


                             L’ R’ / TR, F
                 CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 2
Specifying Outputs for a Moore Machine

 ! Output is only function of state
        " Specify in state bubble in state diagram
        " Example: sequence detector for 01 or 10
                                                                                    current   next
                                                                 reset    input     state     state   output
                          0
                                                                 1        –         –         A
                                       1                         0        0         A         B       0
                      B/0                         D/1
                                                                 0        1         A         C       0
                  0                                              0        0         B         B       0
                                0                                0        1         B         D       0
reset
          A/0                                    1         0
                                                                 0        0         C         E       0
                                1                                0        1         C         C       0
                  1                                              0        0         D         E       1
                      C/0                            E/1         0        1         D         C       1
                                      0
                                                                 0        0         E         B       1
                          1                                      0        1         E         D       1

                              CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 3




 Specifying Outputs for a Mealy
 Machine
 ! Output is function of state and inputs
        " Specify output on transition arc between states
        " Example: sequence detector for 01 or 10

                                    0/0                                             current   next
                                                                 reset     input    state     state   output
                                                                 1         –        –         A       0
                                      B
                                                                 0         0        A         B       0
                          0/0
                                                                 0         1        A         C       0
        reset/0                                                  0         0        B         B       0
                      A         0/1        1/1
                                                                 0         1        B         C       1
                                                                 0         0        C         B       1
                          1/0                                    0         1        C         C       0
                                      C

                                    1/0


                              CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 4
Comparison of Mealy and Moore Machines
 ! Mealy Machines tend to have less states
         " Different outputs on arcs (n^2) rather than states (n)
 ! Moore Machines are safer to use
         " Outputs change at clock edge (always one cycle later)
         " In Mealy machines, input change can cause output change as soon as
           logic is done – a big problem when two machines are interconnected –
           asynchronous feedback
 ! Mealy Machines react faster to inputs
         " React in same cycle – don't need to wait for clock
         " In Moore machines, more logic may be necessary to decode state
           into outputs – more gate delays after

                                                                                                         Logic
inputs       Combinational                                                     inputs                                     outputs
                                                                                                           for
                logic                                                                                   outputs
                 for                                Logic                                       Combinational
              Next State             reg                         outputs                                          reg
                                                     for                                           logic for
                                                   outputs                                        Next State



                state feedback                                                                   state feedback

                                 CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 5




Mealy and Moore Examples

! Recognize A,B = 0,1
         " Mealy or Moore?


            A
                                                                 out
                                                      D      Q
            B
                                           clock
                                                             Q




                                                                           A
                                                                                        D   Q                           out

                                                                                            Q

                                                                           B
                                                                                        D   Q
                                                                       clock
                                                                                            Q




                                 CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 6
Mealy and Moore Examples (cont’d)

! Recognize A,B = 1,0 then 0,1
   " Mealy or Moore?
                                                                                            out

                                          A
                                                         D   Q

                                                             Q

                                          B
                                                         D   Q

                                                             Q
                                              clock



                                                                           out

       A
           D   Q                 D   Q

               Q                     Q

       B
           D   Q                 D   Q

               Q                     Q

   clock
                   CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 7




Registered Mealy Machine (Really Moore)

! Synchronous (or registered) Mealy Machine
   " Registered state AND outputs
   " Avoids ‘glitchy’ outputs
   " Easy to implement in programmable logic
! Moore Machine with no output decoding
   " Outputs computed on transition to next state rather than
     after entering
   " View outputs as expanded state vector


                                          output
                                                                                  Outputs
                                           logic
               Inputs
                                         next state
                                            logic


                                 Current State
                   CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 8
Verilog FSM - Reduce 1s Example

! Change the first 1 to 0 in each string of 1’s                                     zero
   " Example Moore machine implementation                                            [0]

                                                                                       1    0

   // State assignment                                                          0   one1
   parameter zero = 0, one1 = 1, two1s = 2;
                                                                                     [0]
   module reduce (out, clk, reset, in);                                   0            1
     output out;
                                                                                            1
     input clk, reset, in;
     reg out;                                                                       two1s
     reg [1:0] state;       // state register                                        [1]
     reg [1:0] next_state;




                 CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 9




Moore Verilog FSM (cont’d)
always @(in or state)
  case (state)
                                                                                    zero
    zero: begin // last input was a zero                                             [0]
      out = 0;
      if (in) next_state = one1;                                                       1    0
      else     next_state = zero;
    end                                                                         0   one1
                                                                                     [0]
    one1: begin // we've seen one 1
      out = 0;                                                            0            1
      if (in) next_state = two1s;                                                           1
      else     next_state = zero;                                                   two1s
    end                                                                              [1]
    two1s: begin // we've seen at least 2 ones
      out = 1;
      if (in) next_state = two1s;
      else     next_state = zero;
                                                                      include all signals
    end                                                               that are input to state
                                                                      and output equations
    default: begin // in case we reach a bad state
      out = 0;
      next_state = zero;
  endcase
                CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 10
Moore Verilog FSM (cont’d)
// Implement the state register
  always @(posedge clk)                                                                 zero
    if (reset) state <= zero;                                                            [0]
    else       state <= next_state;
                                                                                             1     0
endmodule
                                                                                  0     one1
                                                                                         [0]

                                                                            0                1
                                                                                                   1
                                                                                       two1s
                                                                                        [1]




                  CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 11




Mealy Verilog FSM for Reduce-1s Example
 module reduce (clk, reset, in, out);
   input clk, reset, in; output out;
   reg out; reg state;     // state register
                                                                                                 0/0
   reg next_state;
   parameter zero = 0, one = 1;                                                       zero

   always @(in or state)
     case (state)                                                       0/0             1/0
       zero: begin         // last input was a zero
               if (in) next_state = one;
               else      next_state = zero;                                           one1
               out = 0;                                                                          1/1
             end
       one:                // we've seen one 1
             if (in) begin
                         next_state = one;
                         out        = 1;
                       end
             else begin
                     next_state = zero;
                     out         = 0;
                   end
     endcase

   always @(posedge clk)
     if (reset) state <= zero;
     else       state <= next_state;

   endmodule      CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 12
                                                                                                       7
Synchronous Mealy Verilog FSM for
Reduce-1s Example
module reduce (clk, reset, in, out);
  input clk, reset, in; output out;
  reg out; reg state;     // state register
  reg next_state; reg next_out;                                                          0/0
  parameter zero = 0, one = 1;
                                                                                 zero
  always @(in or state)
    case (state)
      zero: begin         // last input was a zero                     0/0         1/0
              if (in) next_state = one;
              else      next_state = zero;
              next_out = 0;                                                      one1
            end
      one:                // we've seen one 1                                            1/1
            if (in) begin
                        next_state = one;
                        next_out    = 1;
                      end
            else begin
                    next_state = zero;
                    next_out     = 0;
                  end
    endcase
  always @(posedge clk)
      if (reset) begin
        state <= zero; out <= 0;
      end
      else begin
        state <= next_state; out <= next_out;
      end
endmodule        CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 13
                                                                                               7




Announcements

! Review Session Announcement
! First Midterm, Thursday, 15 February, 2-3:30 PM,
  125 Cory Hall
   " ??? Quiz-like Questions -- Please Read Them Carefully! They
     are not intended to be tricky; they should contain all the
     information you need to answer the question correctly
   " No calculators or other gadgets are necessary! Don’t bring
     them! No blue books! All work on the sheets handed out!
   " Do bring pencil and eraser please! If you like to unstaple the
     exam pages, then bring a stapler with you! Write your name
     and student ID on EVERY page in case they get separated --
     it has happened!
   " Don’t forget your two-sided 8.5” x 11” crib sheet!



                 CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 14
Announcements
! Examination, Th, 2-3:30 PM, 125 Cory Hall
   " Topics likely to be covered
       # Combinational logic: design and optimization (K-maps up to and including 6
         variables)
       # Implementation: Simple gates (minimum wires and gates), PLA structures
         (minimum unique terms), Muxes, Decoders, ROMs, (Simplified) Xilinx CLB
       # Sequential logic: R-S latches, flip-flops, transparent vs. edge-triggered
         behavior, master/slave concept
       # Basic Finite State Machines: Representations (state diagrams, transition
         tables), Moore vs. Mealy Machines, Shifters, Registers, Counters
       # Structural and Behavioral Verilog for combinational and sequential logic
       # Labs 1, 2, 3
       # K&B: Chapters 1, 2 (2.1-2.5), 3 (3.1, 3.6), 4 (4.1, 4.2, 4.3), 6 (6.1, 6.2.1,
         6.3), 7 (7.1, 7.2, 7.3)




                 CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 15




Example: Vending Machine

! Release item after 15 cents are deposited
! Single coin slot for dimes, nickels
! No change
                                             Reset



                                 N
                                            Vending         Open
                  Coin                      Machine                     Release
                 Sensor                       FSM                      Mechanism
                                 D




                                             Clock



                 CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 16
Example: Vending Machine (cont’d)
 ! Suitable Abstract Representation
     " Tabulate typical input sequences:                                              Reset
         #   3 nickels
         #   nickel, dime
                                                                                    S0
         #   dime, nickel
         #   two dimes                                                        N             D

     " Draw state diagram:
         # Inputs: N, D, reset                                           S1                     S2
         # Output: open chute                                     N           D             N        D
     " Assumptions:
         # Assume N and D asserted                                         S4               S5         S6
                                                             S3
           for one cycle                                                 [open]           [open]     [open]
         # Each state has a self loop                       N
           for N = D = 0 (no coin)
                                                             S7
                                                           [open]




                    CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 17




Example: Vending Machine (cont’d)

! Minimize number of states - reuse states whenever possible

                Reset                         present           inputs            next          output
                                              state             D    N            state         open
                                                0¢              0    0              0¢          0
                                                                0    1              5¢          0
              0¢                                                1    0            10¢           0
                                                                1    1            –             –
                N                               5¢              0    0              5¢          0
                                                                0    1            10¢           0
              5¢           D                                    1    0            15¢           0
                                                                1    1            –             –
                N                             10¢               0    0            10¢           0
                                                                0    1            15¢           0
     D                                                          1    0            15¢           0
              10¢
                                                                1    1            –             –
                                              15¢               –    –            15¢           1
                N+D
               15¢                                         symbolic state table
             [open]


                    CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 18
Example: Vending Machine (cont’d)

! Uniquely Encode States
              present state inputs             next   state   output
                Q1 Q0       D    N              D1    D0      open
                0 0         0    0              0     0       0
                            0    1              0     1       0
                            1    0              1     0       0
                            1    1              –     –       –
                0 1         0    0              0     1       0
                            0    1              1     0       0
                            1    0              1     1       0
                            1    1              –     –       –
                1 0         0    0              1     0       0
                            0    1              1     1       0
                            1    0              1     1       0
                            1    1              –     –       –
                1 1         –    –              1     1       1




            CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 19




Example: Vending Machine (cont’d)

! Mapping to Logic          D1
                                          Q1
                                                      D0
                                                                   Q1
                                                                            Open
                                                                                    Q1
                                 0 0 1 1                   0 1 1 0             0 0 1 0
                                 0 1 1 1                   1 0 1 1              0 0 1 0
                                               N                        N                 N
                                 X X X X                   X X X X              X X X X
                            D                         D                     D
                                 1 1 1 1                   0 1 1 1              0 0 1 0
                                     Q0                       Q0                  Q0




                                                           D1 = Q1 + D + Q0 N

                                                           D0 = Q0’ N + Q0 N’ + Q1 N + Q1 D

                                                           OPEN = Q1 Q0




            CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 20
Example: Vending Machine (cont’d)

! One-hot Encoding

    present state     inputs     next state output
    Q3 Q2 Q1 Q0       D N        D3 D2 D1 D0 open
     0 0 0 1          0 0        0 0 0 1         0                   D0 = Q0 D’ N’
                      0 1        0 0 1 0         0
                      1 0        0 1 0 0         0
                      1 1        - - - -         -                   D1 = Q0 N + Q1 D’ N’
    0 0   1     0     0 0        0 0 1 0         0
                      0 1        0 1 0 0         0                   D2 = Q0 D + Q1 N + Q2 D’ N’
                      1 0        1 0 0 0         0
                      1 1        - - - -         -
    0 1   0     0     0 0        0 1 0 0         0                   D3 = Q1 D + Q2 D + Q2 N + Q3
                      0 1        1 0 0 0         0
                      1 0        1 0 0 0         0                   OPEN = Q3
                      1 1        - - - -         -
    1 0   0     0     - -        1 0 0 0         1




                         CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 21




Equivalent Mealy and Moore State
Diagrams
!    Moore machine                                        Mealy machine
      " outputs associated with state                        outputs associated with transitions


              Reset            N’ D’ + Reset                              Reset/0            (N’ D’ + Reset)/0


                         0¢
                                       N’ D’                                               0¢        N’ D’/0
                         [0]
                        N                                                            N/0

               D         5¢                                                D/0
                                        N’ D’                                              5¢         N’ D’/0
                         [0]
                        N                                                            N/0
                         10¢
               D                        N’ D’                              D/1             10¢        N’ D’/0
                         [0]
                      N+D                                                        N+D/1
                         15¢
                                        Reset’                                             15¢        Reset’/1
                         [1]


                         CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 22
Moore Verilog FSM for Vending Machine
module vending (open, Clk, Reset, N, D);
  input Clk, Reset, N, D; output open;                                                        N’ D’ + Reset
  reg open; reg state;    // state register                                   Reset
  reg next_state;
  parameter zero = 0, five = 1, ten = 2, fifteen = 3;
                                                                                            0¢
                                                                                                      N’ D’
 always @(N or D or state)                                                                  [0]
   case (state)
     zero: begin                                                                        N
             if (D)      next_state          = five;
                                                                                D           5¢
             else if (N) next_state          = ten;                                                    N’ D’
             else        next_state          = zero;                                        [0]
             open = 0;
                                                                                        N
           end
     …                                                                                      10¢
     fifteen: begin                                                             D                      N’ D’
                                                                                            [0]
             if (!Reset) next_state          = fifteen;
             else        next_state          = zero;                                  N+D
             open = 1;
           end                                                                              15¢
endcase                                                                                                Reset’
                                                                                            [1]
 always @(posedge clk)
   if (Reset || (!N && !D)) state <= zero;
   else                     state <= next_state;

 endmodule

                    CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 23
                                                                                                       7




 Mealy Verilog FSM for Vending Machine
module vending (open, Clk, Reset, N, D);
  input Clk, Reset, N, D; output open;
                                                                            Reset/0           (N’ D’ + Reset)/0
  reg open; reg state;    // state register
  reg next_state; reg next_open;
  parameter zero = 0, five = 1, ten = 2, fifteen = 3;
                                                                                            0¢        N’ D’/0
  always @(N or D or state)
    case (state)
                                                                                      N/0
      zero: begin
              if (D) begin
                                                                             D/0            5¢         N’ D’/0
                 next_state = ten; next_open = 0;
              end
              else if (N) begin                                                       N/0
                 next_state = five; next_open = 0;
              end
              else begin                                                     D/1            10¢        N’ D’/0
                 next_state = zero; next_open = 0;
              end                                                                   N+D/1
            end
      …
                                                                                            15¢        Reset’/1
    endcase

 always @(posedge clk)
   if (Reset || (!N && !D)) begin state <= zero; open <= 0; end
   else begin state <= next_state; open <= next_open; end
 endmodule


                    CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 24
                                                                                                       7
Example: Traffic Light Controller

! A busy highway is intersected by a little used farmroad
! Detectors C sense the presence of cars waiting on the farmroad
   " with no car on farmroad, light remain green in highway direction
   " if vehicle on farmroad, highway lights go from Green to Yellow to Red,
     allowing the farmroad lights to become green
   " these stay green only as long as a farmroad car is detected but never
     longer than a set interval
   " when these are met, farm lights transition from Green to Yellow to
     Red, allowing highway to return to green
   " even if farmroad vehicles are waiting, highway gets at least a set
     interval as green
! Assume you have an interval timer that generates:
   "   a short time pulse (TS) and
   "   a long time pulse (TL),
   "   in response to a set (ST) signal.
   "   TS is to be used for timing yellow lights and TL for green lights

                 CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 25




Example: Traffic Light Controller
(cont’d)
! Highway/farm road intersection

                                   farm road


                                                         car sensors




                                                                                 highway




                 CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 26
Example: Traffic Light Controller
(cont’d)
! Tabulation of Inputs and Outputs
  inputs   description                        outputs    description
  reset    place FSM in initial state         HG, HY, HR assert green/yellow/red highway lights
  C        detect vehicle on the farm road    FG, FY, FR assert green/yellow/red highway lights
  TS       short time interval expired        ST         start timing a short or long interval
  TL       long time interval expired



! Tabulation of unique states – some light configurations
  imply others
  state    description
  S0       highway green (farm road red)
  S1       highway yellow (farm road red)
  S2       farm road green (highway red)
  S3       farm road yellow (highway red)




                     CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 27




Example: Traffic Light Controller
(cont’d)
! State Diagram                                                                      Reset
                                                               (TL•C)'


                                                                         S0
                                                                                 TS / ST
           S0: HG                                                 TL•C / ST
           S1: HY                            TS'          S1                          S3      TS'
           S2: FG
           S3: FY                                        TS / ST                 TL+C' / ST
                                                                         S2


                                                                    (TL+C')'




                     CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 28
Example: Traffic Light Controller
  (cont’d)
  ! Generate state table with symbolic states
  ! Consider state assignments                                          output encoding – similar problem
                                                                        to state assignment
                                                                        (Green = 00, Yellow = 01, Red = 10)

 Inputs               Present State            Next State                     Outputs
 C    TL    TS                                                                ST H                 F
 0    –     –                HG                      HG                       0    Green           Red
 –    0     –                HG                      HG                       0    Green           Red
 1    1     –                HG                      HY                       1    Green           Red
 –    –     0                HY                      HY                       0    Yellow          Red
 –    –     1                HY                      FG                       1    Yellow          Red
 1    0     –                FG                      FG                       0    Red             Green
 0    –     –                FG                      FY                       1    Red             Green
 –    1     –                FG                      FY                       1    Red             Green
 –    –     0                FY                      FY                       0    Red             Yellow
 –    –     1                FY                      HG                       1    Red             Yellow

     SA1:        HG = 00          HY = 01           FG = 11            FY = 10
     SA2:        HG = 00          HY = 10           FG = 01            FY = 11
     SA3:        HG = 0001        HY = 0010         FG = 0100          FY = 1000           (one-hot)

                        CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 29




  Traffic Light Controller Verilog
                                                                                 (TL•C)'               Reset
module traffic (ST, Clk, Reset, C, TL, TS);
  input Clk, Reset, C, TL, TS; output ST;
  reg ST; reg state;
  reg next_state; reg next_ST;                                                             S0
  parameter S0 = 0, S1 = 1, S2 = 2, S3 = 3;
                                                                       TL•C                         TS / ST
  always @(C or TL or TS or state)
     case (state)                                                                   TL+C / ST
       S0: if (!(TL && C)) begin
                  next_state = S0; next_ST = 0;                TS'          S1                              S3   TS'
            else if (TL || C) begin
                  next_state = S1; next_ST = 1;
              end
     …                                                                      TS / ST                 TL+C' / ST
    endcase
                                                                                           S2



 always @(posedge Clk)                                                                  (TL+C')'
   if (Reset) begin state <= S0; ST <= 0; end
   else begin state <= next_state; ST <= next_ST; end
    endmodule



                        CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 30
Logic for Different State Assignments
!    SA1
           NS1 = C•TL'•PS1•PS0 + TS•PS1'•PS0 + TS•PS1•PS0' + C'•PS1•PS0 + TL•PS1•PS0
           NS0 = C•TL•PS1'•PS0' + C•TL'•PS1•PS0 + PS1'•PS0
           ST = C•TL•PS1'•PS0' + TS•PS1'•PS0 + TS•PS1•PS0' + C'•PS1•PS0 + TL•PS1•PS0
           H1 = PS1                            H0 = PS1'•PS0
           F1 = PS1'                           F0 = PS1•PS0'
!    SA2
           NS1 = C•TL•PS1' + TS'•PS1 + C'•PS1'•PS0
           NS0 = TS•PS1•PS0' + PS1'•PS0 + TS'•PS1•PS0
           ST = C•TL•PS1' + C'•PS1'•PS0 + TS•PS1
           H1 = PS0                             H0 = PS1•PS0'
           F1 = PS0'                            F0 = PS1•PS0
!    SA3
           NS3 = C'•PS2 + TL•PS2 + TS'•PS3                NS2 = TS•PS1 + C•TL'•PS2
           NS1 = C•TL•PS0 + TS'•PS1                       NS0 = C'•PS0 + TL'•PS0 + TS•PS3

           ST = C•TL•PS0 + TS•PS1 + C'•PS2 + TL•PS2 + TS•PS3
           H1 = PS3 + PS2                       H0 = PS1
           F1 = PS1 + PS0                       F0 = PS3




                      CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 31




    Vending Machine Example Revisted
    (PLD mapping)
D0     = reset'(Q0'N + Q0N' + Q1N + Q1D)
D1     = reset'(Q1 + D + Q0N)                                                         CLK
OPEN   = Q1Q0
                                                                                                   Q0
                                                                                        DQ


                                                                                             Seq
                     N


                                                                                                   Q1
                                                                                        DQ


                                                                                             Seq
                     D


                                                                                                   Open
                                                                                        DQ


                                                                                             Com
                  Reset


                      CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 32
Vending Machine (cont’d)
 ! OPEN = Q1Q0 creates a combinational delay after Q1 and Q0
   change
 ! This can be corrected by retiming, i.e., move flip-flops and logic
   through each other to improve delay
 ! OPEN = reset'(Q1 + D + Q0N)(Q0'N + Q0N' + Q1N + Q1D)
          = reset'(Q1Q0N' + Q1N + Q1D + Q0'ND + Q0N'D)
 ! Implementation now looks like a synchronous Mealy machine
    " Common for programmable devices to have FF at end of logic




                   CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 33




Vending Machine (Retimed PLD
Mapping)
OPEN   = reset'(Q1Q0N' + Q1N + Q1D + Q0'ND + Q0N'D)
                                                                                   CLK


                                                                                                Q0
                                                                                     DQ


                                                                                          Seq
                   N


                                                                                                Q1
                                                                                     DQ


                                                                                          Seq
                   D


            OPEN                                                                                Open
                                                                                     DQ


                                                                                          Seq
              Reset


                   CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 34
Sequential Logic Implementation
Summary
! Models for representing sequential circuits
   "   Abstraction of sequential elements
   "   Finite state machines and their state diagrams
   "   Inputs/outputs
   "   Mealy, Moore, and synchronous Mealy machines
! Finite state machine design procedure
   "   Verilog specification
   "   Deriving state diagram
   "   Deriving state transition table
   "   Determining next state and output functions
   "   Implementing combinational logic




                 CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 35

Contenu connexe

Tendances

SPICE MODEL of uPC78M07A in SPICE PARK
SPICE MODEL of uPC78M07A in SPICE PARKSPICE MODEL of uPC78M07A in SPICE PARK
SPICE MODEL of uPC78M07A in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of uPC2415A in SPICE PARK
SPICE MODEL of uPC2415A in SPICE PARKSPICE MODEL of uPC2415A in SPICE PARK
SPICE MODEL of uPC2415A in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of uPC2408A in SPICE PARK
SPICE MODEL of uPC2408A in SPICE PARKSPICE MODEL of uPC2408A in SPICE PARK
SPICE MODEL of uPC2408A in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of uPC78L12T in SPICE PARK
SPICE MODEL of uPC78L12T in SPICE PARKSPICE MODEL of uPC78L12T in SPICE PARK
SPICE MODEL of uPC78L12T in SPICE PARKTsuyoshi Horigome
 
TB62206FGのスパイスモデル
TB62206FGのスパイスモデルTB62206FGのスパイスモデル
TB62206FGのスパイスモデルTsuyoshi Horigome
 
SPICE MODEL of uPC317 in SPICE PARK
SPICE MODEL of uPC317 in SPICE PARKSPICE MODEL of uPC317 in SPICE PARK
SPICE MODEL of uPC317 in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of uPC78N08H in SPICE PARK
SPICE MODEL of uPC78N08H in SPICE PARKSPICE MODEL of uPC78N08H in SPICE PARK
SPICE MODEL of uPC78N08H in SPICE PARKTsuyoshi Horigome
 
3相ACモーターのスパイスモデルの概要
3相ACモーターのスパイスモデルの概要3相ACモーターのスパイスモデルの概要
3相ACモーターのスパイスモデルの概要Tsuyoshi Horigome
 
SPICE MODEL of uPC78L10T in SPICE PARK
SPICE MODEL of uPC78L10T in SPICE PARKSPICE MODEL of uPC78L10T in SPICE PARK
SPICE MODEL of uPC78L10T in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of uPC78N24H in SPICE PARK
SPICE MODEL of uPC78N24H in SPICE PARKSPICE MODEL of uPC78N24H in SPICE PARK
SPICE MODEL of uPC78N24H in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of uPC78M12A in SPICE PARK
SPICE MODEL of uPC78M12A in SPICE PARKSPICE MODEL of uPC78M12A in SPICE PARK
SPICE MODEL of uPC78M12A in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of uPC78L05T in SPICE PARK
SPICE MODEL of uPC78L05T in SPICE PARKSPICE MODEL of uPC78L05T in SPICE PARK
SPICE MODEL of uPC78L05T in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of uPC78L12J in SPICE PARK
SPICE MODEL of uPC78L12J in SPICE PARKSPICE MODEL of uPC78L12J in SPICE PARK
SPICE MODEL of uPC78L12J in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of uPC2407A in SPICE PARK
SPICE MODEL of uPC2407A in SPICE PARKSPICE MODEL of uPC2407A in SPICE PARK
SPICE MODEL of uPC2407A in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of uPC78L06T in SPICE PARK
SPICE MODEL of uPC78L06T in SPICE PARKSPICE MODEL of uPC78L06T in SPICE PARK
SPICE MODEL of uPC78L06T in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of uPC78M24A in SPICE PARK
SPICE MODEL of uPC78M24A in SPICE PARKSPICE MODEL of uPC78M24A in SPICE PARK
SPICE MODEL of uPC78M24A in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of uPC24A12HF in SPICE PARK
SPICE MODEL of uPC24A12HF in SPICE PARKSPICE MODEL of uPC24A12HF in SPICE PARK
SPICE MODEL of uPC24A12HF in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of uPC2412A in SPICE PARK
SPICE MODEL of uPC2412A in SPICE PARKSPICE MODEL of uPC2412A in SPICE PARK
SPICE MODEL of uPC2412A in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of uPC24M07A in SPICE PARK
SPICE MODEL of uPC24M07A in SPICE PARKSPICE MODEL of uPC24M07A in SPICE PARK
SPICE MODEL of uPC24M07A in SPICE PARKTsuyoshi Horigome
 

Tendances (20)

SPICE MODEL of uPC78M07A in SPICE PARK
SPICE MODEL of uPC78M07A in SPICE PARKSPICE MODEL of uPC78M07A in SPICE PARK
SPICE MODEL of uPC78M07A in SPICE PARK
 
SPICE MODEL of uPC2415A in SPICE PARK
SPICE MODEL of uPC2415A in SPICE PARKSPICE MODEL of uPC2415A in SPICE PARK
SPICE MODEL of uPC2415A in SPICE PARK
 
SPICE MODEL of uPC2408A in SPICE PARK
SPICE MODEL of uPC2408A in SPICE PARKSPICE MODEL of uPC2408A in SPICE PARK
SPICE MODEL of uPC2408A in SPICE PARK
 
SPICE MODEL of uPC78L12T in SPICE PARK
SPICE MODEL of uPC78L12T in SPICE PARKSPICE MODEL of uPC78L12T in SPICE PARK
SPICE MODEL of uPC78L12T in SPICE PARK
 
TB62206FGのスパイスモデル
TB62206FGのスパイスモデルTB62206FGのスパイスモデル
TB62206FGのスパイスモデル
 
SPICE MODEL of uPC317 in SPICE PARK
SPICE MODEL of uPC317 in SPICE PARKSPICE MODEL of uPC317 in SPICE PARK
SPICE MODEL of uPC317 in SPICE PARK
 
SPICE MODEL of uPC78N08H in SPICE PARK
SPICE MODEL of uPC78N08H in SPICE PARKSPICE MODEL of uPC78N08H in SPICE PARK
SPICE MODEL of uPC78N08H in SPICE PARK
 
SPICE Model of TA7291P
SPICE Model of TA7291PSPICE Model of TA7291P
SPICE Model of TA7291P
 
3相ACモーターのスパイスモデルの概要
3相ACモーターのスパイスモデルの概要3相ACモーターのスパイスモデルの概要
3相ACモーターのスパイスモデルの概要
 
SPICE MODEL of uPC78L10T in SPICE PARK
SPICE MODEL of uPC78L10T in SPICE PARKSPICE MODEL of uPC78L10T in SPICE PARK
SPICE MODEL of uPC78L10T in SPICE PARK
 
SPICE MODEL of uPC78N24H in SPICE PARK
SPICE MODEL of uPC78N24H in SPICE PARKSPICE MODEL of uPC78N24H in SPICE PARK
SPICE MODEL of uPC78N24H in SPICE PARK
 
SPICE MODEL of uPC78M12A in SPICE PARK
SPICE MODEL of uPC78M12A in SPICE PARKSPICE MODEL of uPC78M12A in SPICE PARK
SPICE MODEL of uPC78M12A in SPICE PARK
 
SPICE MODEL of uPC78L05T in SPICE PARK
SPICE MODEL of uPC78L05T in SPICE PARKSPICE MODEL of uPC78L05T in SPICE PARK
SPICE MODEL of uPC78L05T in SPICE PARK
 
SPICE MODEL of uPC78L12J in SPICE PARK
SPICE MODEL of uPC78L12J in SPICE PARKSPICE MODEL of uPC78L12J in SPICE PARK
SPICE MODEL of uPC78L12J in SPICE PARK
 
SPICE MODEL of uPC2407A in SPICE PARK
SPICE MODEL of uPC2407A in SPICE PARKSPICE MODEL of uPC2407A in SPICE PARK
SPICE MODEL of uPC2407A in SPICE PARK
 
SPICE MODEL of uPC78L06T in SPICE PARK
SPICE MODEL of uPC78L06T in SPICE PARKSPICE MODEL of uPC78L06T in SPICE PARK
SPICE MODEL of uPC78L06T in SPICE PARK
 
SPICE MODEL of uPC78M24A in SPICE PARK
SPICE MODEL of uPC78M24A in SPICE PARKSPICE MODEL of uPC78M24A in SPICE PARK
SPICE MODEL of uPC78M24A in SPICE PARK
 
SPICE MODEL of uPC24A12HF in SPICE PARK
SPICE MODEL of uPC24A12HF in SPICE PARKSPICE MODEL of uPC24A12HF in SPICE PARK
SPICE MODEL of uPC24A12HF in SPICE PARK
 
SPICE MODEL of uPC2412A in SPICE PARK
SPICE MODEL of uPC2412A in SPICE PARKSPICE MODEL of uPC2412A in SPICE PARK
SPICE MODEL of uPC2412A in SPICE PARK
 
SPICE MODEL of uPC24M07A in SPICE PARK
SPICE MODEL of uPC24M07A in SPICE PARKSPICE MODEL of uPC24M07A in SPICE PARK
SPICE MODEL of uPC24M07A in SPICE PARK
 

En vedette

En vedette (20)

Sayısal Devreler 07, Feza BUZLUCA
Sayısal Devreler 07, Feza BUZLUCASayısal Devreler 07, Feza BUZLUCA
Sayısal Devreler 07, Feza BUZLUCA
 
Finite state machines
Finite state machinesFinite state machines
Finite state machines
 
Sayısal Devreler 06, Feza BUZLUCA
Sayısal Devreler 06, Feza BUZLUCASayısal Devreler 06, Feza BUZLUCA
Sayısal Devreler 06, Feza BUZLUCA
 
10 al 13 de mayo
10 al 13 de mayo10 al 13 de mayo
10 al 13 de mayo
 
Semana 8
Semana 8Semana 8
Semana 8
 
Semana 23
Semana 23Semana 23
Semana 23
 
Win trust lucky chain
Win trust lucky chainWin trust lucky chain
Win trust lucky chain
 
Semana 4
Semana 4Semana 4
Semana 4
 
Semana 27
Semana 27Semana 27
Semana 27
 
Agenda 25 al 29 de abril
Agenda 25 al 29 de abrilAgenda 25 al 29 de abril
Agenda 25 al 29 de abril
 
Alfatihah ayat 6348
Alfatihah ayat 6348Alfatihah ayat 6348
Alfatihah ayat 6348
 
Semana 37
Semana 37Semana 37
Semana 37
 
Semana 13
Semana 13Semana 13
Semana 13
 
טלי P.p
טלי P.pטלי P.p
טלי P.p
 
16%20 lecture
16%20 lecture16%20 lecture
16%20 lecture
 
Semana por la paz 2016
Semana por la paz 2016Semana por la paz 2016
Semana por la paz 2016
 
Semana 2
Semana 2Semana 2
Semana 2
 
Semana 26
Semana 26Semana 26
Semana 26
 
Mission: Space
Mission: SpaceMission: Space
Mission: Space
 
Semana 38
Semana 38Semana 38
Semana 38
 

Similaire à Sequential logic implementation

Fault tolerant and online testability
Fault tolerant and online testabilityFault tolerant and online testability
Fault tolerant and online testabilitySajib Mitra
 
SPICE MODEL of TC7SET00F in SPICE PARK
SPICE MODEL of TC7SET00F in SPICE PARKSPICE MODEL of TC7SET00F in SPICE PARK
SPICE MODEL of TC7SET00F in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of TC7SET00FU in SPICE PARK
SPICE MODEL of TC7SET00FU in SPICE PARKSPICE MODEL of TC7SET00FU in SPICE PARK
SPICE MODEL of TC7SET00FU in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of TC7SH08FE in SPICE PARK
SPICE MODEL of TC7SH08FE in SPICE PARKSPICE MODEL of TC7SH08FE in SPICE PARK
SPICE MODEL of TC7SH08FE in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of TC7SH08F in SPICE PARK
SPICE MODEL of TC7SH08F in SPICE PARKSPICE MODEL of TC7SH08F in SPICE PARK
SPICE MODEL of TC7SH08F in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of TC7SH08FU in SPICE PARK
SPICE MODEL of TC7SH08FU in SPICE PARKSPICE MODEL of TC7SH08FU in SPICE PARK
SPICE MODEL of TC7SH08FU in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of TC7SZ00AFE in SPICE PARK
SPICE MODEL of TC7SZ00AFE in SPICE PARKSPICE MODEL of TC7SZ00AFE in SPICE PARK
SPICE MODEL of TC7SZ00AFE in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of TC7SH02FS in SPICE PARK
SPICE MODEL of TC7SH02FS in SPICE PARKSPICE MODEL of TC7SH02FS in SPICE PARK
SPICE MODEL of TC7SH02FS in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of TC7S02FU in SPICE PARK
SPICE MODEL of TC7S02FU in SPICE PARKSPICE MODEL of TC7S02FU in SPICE PARK
SPICE MODEL of TC7S02FU in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of TC7S02F in SPICE PARK
SPICE MODEL of TC7S02F in SPICE PARKSPICE MODEL of TC7S02F in SPICE PARK
SPICE MODEL of TC7S02F in SPICE PARKTsuyoshi Horigome
 
Computer science study material
Computer science study materialComputer science study material
Computer science study materialSwarup Kumar Boro
 
SPICE MODEL of TC7S00F in SPICE PARK
SPICE MODEL of TC7S00F in SPICE PARKSPICE MODEL of TC7S00F in SPICE PARK
SPICE MODEL of TC7S00F in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of TC7S00FU in SPICE PARK
SPICE MODEL of TC7S00FU in SPICE PARKSPICE MODEL of TC7S00FU in SPICE PARK
SPICE MODEL of TC7S00FU in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of TC7SH02F in SPICE PARK
SPICE MODEL of TC7SH02F in SPICE PARKSPICE MODEL of TC7SH02F in SPICE PARK
SPICE MODEL of TC7SH02F in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of TC7SH02FU in SPICE PARK
SPICE MODEL of TC7SH02FU in SPICE PARKSPICE MODEL of TC7SH02FU in SPICE PARK
SPICE MODEL of TC7SH02FU in SPICE PARKTsuyoshi Horigome
 
SPICE MODEL of TC7S08FU in SPICE PARK
SPICE MODEL of TC7S08FU in SPICE PARKSPICE MODEL of TC7S08FU in SPICE PARK
SPICE MODEL of TC7S08FU in SPICE PARKTsuyoshi Horigome
 

Similaire à Sequential logic implementation (20)

Bca i sem de lab
Bca i sem  de labBca i sem  de lab
Bca i sem de lab
 
Fault tolerant and online testability
Fault tolerant and online testabilityFault tolerant and online testability
Fault tolerant and online testability
 
Lect23 Engin112
Lect23 Engin112Lect23 Engin112
Lect23 Engin112
 
SPICE MODEL of TC7SET00F in SPICE PARK
SPICE MODEL of TC7SET00F in SPICE PARKSPICE MODEL of TC7SET00F in SPICE PARK
SPICE MODEL of TC7SET00F in SPICE PARK
 
SPICE MODEL of TC7SET00FU in SPICE PARK
SPICE MODEL of TC7SET00FU in SPICE PARKSPICE MODEL of TC7SET00FU in SPICE PARK
SPICE MODEL of TC7SET00FU in SPICE PARK
 
Plc 2
Plc 2Plc 2
Plc 2
 
Sequential Logic
Sequential LogicSequential Logic
Sequential Logic
 
SPICE MODEL of TC7SH08FE in SPICE PARK
SPICE MODEL of TC7SH08FE in SPICE PARKSPICE MODEL of TC7SH08FE in SPICE PARK
SPICE MODEL of TC7SH08FE in SPICE PARK
 
SPICE MODEL of TC7SH08F in SPICE PARK
SPICE MODEL of TC7SH08F in SPICE PARKSPICE MODEL of TC7SH08F in SPICE PARK
SPICE MODEL of TC7SH08F in SPICE PARK
 
SPICE MODEL of TC7SH08FU in SPICE PARK
SPICE MODEL of TC7SH08FU in SPICE PARKSPICE MODEL of TC7SH08FU in SPICE PARK
SPICE MODEL of TC7SH08FU in SPICE PARK
 
SPICE MODEL of TC7SZ00AFE in SPICE PARK
SPICE MODEL of TC7SZ00AFE in SPICE PARKSPICE MODEL of TC7SZ00AFE in SPICE PARK
SPICE MODEL of TC7SZ00AFE in SPICE PARK
 
SPICE MODEL of TC7SH02FS in SPICE PARK
SPICE MODEL of TC7SH02FS in SPICE PARKSPICE MODEL of TC7SH02FS in SPICE PARK
SPICE MODEL of TC7SH02FS in SPICE PARK
 
SPICE MODEL of TC7S02FU in SPICE PARK
SPICE MODEL of TC7S02FU in SPICE PARKSPICE MODEL of TC7S02FU in SPICE PARK
SPICE MODEL of TC7S02FU in SPICE PARK
 
SPICE MODEL of TC7S02F in SPICE PARK
SPICE MODEL of TC7S02F in SPICE PARKSPICE MODEL of TC7S02F in SPICE PARK
SPICE MODEL of TC7S02F in SPICE PARK
 
Computer science study material
Computer science study materialComputer science study material
Computer science study material
 
SPICE MODEL of TC7S00F in SPICE PARK
SPICE MODEL of TC7S00F in SPICE PARKSPICE MODEL of TC7S00F in SPICE PARK
SPICE MODEL of TC7S00F in SPICE PARK
 
SPICE MODEL of TC7S00FU in SPICE PARK
SPICE MODEL of TC7S00FU in SPICE PARKSPICE MODEL of TC7S00FU in SPICE PARK
SPICE MODEL of TC7S00FU in SPICE PARK
 
SPICE MODEL of TC7SH02F in SPICE PARK
SPICE MODEL of TC7SH02F in SPICE PARKSPICE MODEL of TC7SH02F in SPICE PARK
SPICE MODEL of TC7SH02F in SPICE PARK
 
SPICE MODEL of TC7SH02FU in SPICE PARK
SPICE MODEL of TC7SH02FU in SPICE PARKSPICE MODEL of TC7SH02FU in SPICE PARK
SPICE MODEL of TC7SH02FU in SPICE PARK
 
SPICE MODEL of TC7S08FU in SPICE PARK
SPICE MODEL of TC7S08FU in SPICE PARKSPICE MODEL of TC7S08FU in SPICE PARK
SPICE MODEL of TC7S08FU in SPICE PARK
 

Sequential logic implementation

  • 1. Sequential Logic Implementation ! Models for representing sequential circuits " Abstraction of sequential elements " Finite state machines and their state diagrams " Inputs/outputs " Mealy, Moore, and synchronous Mealy machines ! Finite state machine design procedure " Verilog specification " Deriving state diagram " Deriving state transition table " Determining next state and output functions " Implementing combinational logic CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 1 Mealy vs. Moore Machines ! Moore: outputs depend on current state only ! Mealy: outputs depend on current state and inputs ! Ant brain is a Moore Machine " Output does not react immediately to input change ! We could have specified a Mealy FSM " Outputs have immediate reaction to inputs " As inputs change, so does next state, doesn’t commit until clocking event L’ R / TL, F L / TL A react right away to leaving the wall L’ R’ / TR, F CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 2
  • 2. Specifying Outputs for a Moore Machine ! Output is only function of state " Specify in state bubble in state diagram " Example: sequence detector for 01 or 10 current next reset input state state output 0 1 – – A 1 0 0 A B 0 B/0 D/1 0 1 A C 0 0 0 0 B B 0 0 0 1 B D 0 reset A/0 1 0 0 0 C E 0 1 0 1 C C 0 1 0 0 D E 1 C/0 E/1 0 1 D C 1 0 0 0 E B 1 1 0 1 E D 1 CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 3 Specifying Outputs for a Mealy Machine ! Output is function of state and inputs " Specify output on transition arc between states " Example: sequence detector for 01 or 10 0/0 current next reset input state state output 1 – – A 0 B 0 0 A B 0 0/0 0 1 A C 0 reset/0 0 0 B B 0 A 0/1 1/1 0 1 B C 1 0 0 C B 1 1/0 0 1 C C 0 C 1/0 CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 4
  • 3. Comparison of Mealy and Moore Machines ! Mealy Machines tend to have less states " Different outputs on arcs (n^2) rather than states (n) ! Moore Machines are safer to use " Outputs change at clock edge (always one cycle later) " In Mealy machines, input change can cause output change as soon as logic is done – a big problem when two machines are interconnected – asynchronous feedback ! Mealy Machines react faster to inputs " React in same cycle – don't need to wait for clock " In Moore machines, more logic may be necessary to decode state into outputs – more gate delays after Logic inputs Combinational inputs outputs for logic outputs for Logic Combinational Next State reg outputs reg for logic for outputs Next State state feedback state feedback CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 5 Mealy and Moore Examples ! Recognize A,B = 0,1 " Mealy or Moore? A out D Q B clock Q A D Q out Q B D Q clock Q CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 6
  • 4. Mealy and Moore Examples (cont’d) ! Recognize A,B = 1,0 then 0,1 " Mealy or Moore? out A D Q Q B D Q Q clock out A D Q D Q Q Q B D Q D Q Q Q clock CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 7 Registered Mealy Machine (Really Moore) ! Synchronous (or registered) Mealy Machine " Registered state AND outputs " Avoids ‘glitchy’ outputs " Easy to implement in programmable logic ! Moore Machine with no output decoding " Outputs computed on transition to next state rather than after entering " View outputs as expanded state vector output Outputs logic Inputs next state logic Current State CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 8
  • 5. Verilog FSM - Reduce 1s Example ! Change the first 1 to 0 in each string of 1’s zero " Example Moore machine implementation [0] 1 0 // State assignment 0 one1 parameter zero = 0, one1 = 1, two1s = 2; [0] module reduce (out, clk, reset, in); 0 1 output out; 1 input clk, reset, in; reg out; two1s reg [1:0] state; // state register [1] reg [1:0] next_state; CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 9 Moore Verilog FSM (cont’d) always @(in or state) case (state) zero zero: begin // last input was a zero [0] out = 0; if (in) next_state = one1; 1 0 else next_state = zero; end 0 one1 [0] one1: begin // we've seen one 1 out = 0; 0 1 if (in) next_state = two1s; 1 else next_state = zero; two1s end [1] two1s: begin // we've seen at least 2 ones out = 1; if (in) next_state = two1s; else next_state = zero; include all signals end that are input to state and output equations default: begin // in case we reach a bad state out = 0; next_state = zero; endcase CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 10
  • 6. Moore Verilog FSM (cont’d) // Implement the state register always @(posedge clk) zero if (reset) state <= zero; [0] else state <= next_state; 1 0 endmodule 0 one1 [0] 0 1 1 two1s [1] CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 11 Mealy Verilog FSM for Reduce-1s Example module reduce (clk, reset, in, out); input clk, reset, in; output out; reg out; reg state; // state register 0/0 reg next_state; parameter zero = 0, one = 1; zero always @(in or state) case (state) 0/0 1/0 zero: begin // last input was a zero if (in) next_state = one; else next_state = zero; one1 out = 0; 1/1 end one: // we've seen one 1 if (in) begin next_state = one; out = 1; end else begin next_state = zero; out = 0; end endcase always @(posedge clk) if (reset) state <= zero; else state <= next_state; endmodule CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 12 7
  • 7. Synchronous Mealy Verilog FSM for Reduce-1s Example module reduce (clk, reset, in, out); input clk, reset, in; output out; reg out; reg state; // state register reg next_state; reg next_out; 0/0 parameter zero = 0, one = 1; zero always @(in or state) case (state) zero: begin // last input was a zero 0/0 1/0 if (in) next_state = one; else next_state = zero; next_out = 0; one1 end one: // we've seen one 1 1/1 if (in) begin next_state = one; next_out = 1; end else begin next_state = zero; next_out = 0; end endcase always @(posedge clk) if (reset) begin state <= zero; out <= 0; end else begin state <= next_state; out <= next_out; end endmodule CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 13 7 Announcements ! Review Session Announcement ! First Midterm, Thursday, 15 February, 2-3:30 PM, 125 Cory Hall " ??? Quiz-like Questions -- Please Read Them Carefully! They are not intended to be tricky; they should contain all the information you need to answer the question correctly " No calculators or other gadgets are necessary! Don’t bring them! No blue books! All work on the sheets handed out! " Do bring pencil and eraser please! If you like to unstaple the exam pages, then bring a stapler with you! Write your name and student ID on EVERY page in case they get separated -- it has happened! " Don’t forget your two-sided 8.5” x 11” crib sheet! CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 14
  • 8. Announcements ! Examination, Th, 2-3:30 PM, 125 Cory Hall " Topics likely to be covered # Combinational logic: design and optimization (K-maps up to and including 6 variables) # Implementation: Simple gates (minimum wires and gates), PLA structures (minimum unique terms), Muxes, Decoders, ROMs, (Simplified) Xilinx CLB # Sequential logic: R-S latches, flip-flops, transparent vs. edge-triggered behavior, master/slave concept # Basic Finite State Machines: Representations (state diagrams, transition tables), Moore vs. Mealy Machines, Shifters, Registers, Counters # Structural and Behavioral Verilog for combinational and sequential logic # Labs 1, 2, 3 # K&B: Chapters 1, 2 (2.1-2.5), 3 (3.1, 3.6), 4 (4.1, 4.2, 4.3), 6 (6.1, 6.2.1, 6.3), 7 (7.1, 7.2, 7.3) CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 15 Example: Vending Machine ! Release item after 15 cents are deposited ! Single coin slot for dimes, nickels ! No change Reset N Vending Open Coin Machine Release Sensor FSM Mechanism D Clock CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 16
  • 9. Example: Vending Machine (cont’d) ! Suitable Abstract Representation " Tabulate typical input sequences: Reset # 3 nickels # nickel, dime S0 # dime, nickel # two dimes N D " Draw state diagram: # Inputs: N, D, reset S1 S2 # Output: open chute N D N D " Assumptions: # Assume N and D asserted S4 S5 S6 S3 for one cycle [open] [open] [open] # Each state has a self loop N for N = D = 0 (no coin) S7 [open] CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 17 Example: Vending Machine (cont’d) ! Minimize number of states - reuse states whenever possible Reset present inputs next output state D N state open 0¢ 0 0 0¢ 0 0 1 5¢ 0 0¢ 1 0 10¢ 0 1 1 – – N 5¢ 0 0 5¢ 0 0 1 10¢ 0 5¢ D 1 0 15¢ 0 1 1 – – N 10¢ 0 0 10¢ 0 0 1 15¢ 0 D 1 0 15¢ 0 10¢ 1 1 – – 15¢ – – 15¢ 1 N+D 15¢ symbolic state table [open] CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 18
  • 10. Example: Vending Machine (cont’d) ! Uniquely Encode States present state inputs next state output Q1 Q0 D N D1 D0 open 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 1 – – – 0 1 0 0 0 1 0 0 1 1 0 0 1 0 1 1 0 1 1 – – – 1 0 0 0 1 0 0 0 1 1 1 0 1 0 1 1 0 1 1 – – – 1 1 – – 1 1 1 CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 19 Example: Vending Machine (cont’d) ! Mapping to Logic D1 Q1 D0 Q1 Open Q1 0 0 1 1 0 1 1 0 0 0 1 0 0 1 1 1 1 0 1 1 0 0 1 0 N N N X X X X X X X X X X X X D D D 1 1 1 1 0 1 1 1 0 0 1 0 Q0 Q0 Q0 D1 = Q1 + D + Q0 N D0 = Q0’ N + Q0 N’ + Q1 N + Q1 D OPEN = Q1 Q0 CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 20
  • 11. Example: Vending Machine (cont’d) ! One-hot Encoding present state inputs next state output Q3 Q2 Q1 Q0 D N D3 D2 D1 D0 open 0 0 0 1 0 0 0 0 0 1 0 D0 = Q0 D’ N’ 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 - - - - - D1 = Q0 N + Q1 D’ N’ 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 D2 = Q0 D + Q1 N + Q2 D’ N’ 1 0 1 0 0 0 0 1 1 - - - - - 0 1 0 0 0 0 0 1 0 0 0 D3 = Q1 D + Q2 D + Q2 N + Q3 0 1 1 0 0 0 0 1 0 1 0 0 0 0 OPEN = Q3 1 1 - - - - - 1 0 0 0 - - 1 0 0 0 1 CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 21 Equivalent Mealy and Moore State Diagrams ! Moore machine Mealy machine " outputs associated with state outputs associated with transitions Reset N’ D’ + Reset Reset/0 (N’ D’ + Reset)/0 0¢ N’ D’ 0¢ N’ D’/0 [0] N N/0 D 5¢ D/0 N’ D’ 5¢ N’ D’/0 [0] N N/0 10¢ D N’ D’ D/1 10¢ N’ D’/0 [0] N+D N+D/1 15¢ Reset’ 15¢ Reset’/1 [1] CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 22
  • 12. Moore Verilog FSM for Vending Machine module vending (open, Clk, Reset, N, D); input Clk, Reset, N, D; output open; N’ D’ + Reset reg open; reg state; // state register Reset reg next_state; parameter zero = 0, five = 1, ten = 2, fifteen = 3; 0¢ N’ D’ always @(N or D or state) [0] case (state) zero: begin N if (D) next_state = five; D 5¢ else if (N) next_state = ten; N’ D’ else next_state = zero; [0] open = 0; N end … 10¢ fifteen: begin D N’ D’ [0] if (!Reset) next_state = fifteen; else next_state = zero; N+D open = 1; end 15¢ endcase Reset’ [1] always @(posedge clk) if (Reset || (!N && !D)) state <= zero; else state <= next_state; endmodule CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 23 7 Mealy Verilog FSM for Vending Machine module vending (open, Clk, Reset, N, D); input Clk, Reset, N, D; output open; Reset/0 (N’ D’ + Reset)/0 reg open; reg state; // state register reg next_state; reg next_open; parameter zero = 0, five = 1, ten = 2, fifteen = 3; 0¢ N’ D’/0 always @(N or D or state) case (state) N/0 zero: begin if (D) begin D/0 5¢ N’ D’/0 next_state = ten; next_open = 0; end else if (N) begin N/0 next_state = five; next_open = 0; end else begin D/1 10¢ N’ D’/0 next_state = zero; next_open = 0; end N+D/1 end … 15¢ Reset’/1 endcase always @(posedge clk) if (Reset || (!N && !D)) begin state <= zero; open <= 0; end else begin state <= next_state; open <= next_open; end endmodule CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 24 7
  • 13. Example: Traffic Light Controller ! A busy highway is intersected by a little used farmroad ! Detectors C sense the presence of cars waiting on the farmroad " with no car on farmroad, light remain green in highway direction " if vehicle on farmroad, highway lights go from Green to Yellow to Red, allowing the farmroad lights to become green " these stay green only as long as a farmroad car is detected but never longer than a set interval " when these are met, farm lights transition from Green to Yellow to Red, allowing highway to return to green " even if farmroad vehicles are waiting, highway gets at least a set interval as green ! Assume you have an interval timer that generates: " a short time pulse (TS) and " a long time pulse (TL), " in response to a set (ST) signal. " TS is to be used for timing yellow lights and TL for green lights CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 25 Example: Traffic Light Controller (cont’d) ! Highway/farm road intersection farm road car sensors highway CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 26
  • 14. Example: Traffic Light Controller (cont’d) ! Tabulation of Inputs and Outputs inputs description outputs description reset place FSM in initial state HG, HY, HR assert green/yellow/red highway lights C detect vehicle on the farm road FG, FY, FR assert green/yellow/red highway lights TS short time interval expired ST start timing a short or long interval TL long time interval expired ! Tabulation of unique states – some light configurations imply others state description S0 highway green (farm road red) S1 highway yellow (farm road red) S2 farm road green (highway red) S3 farm road yellow (highway red) CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 27 Example: Traffic Light Controller (cont’d) ! State Diagram Reset (TL•C)' S0 TS / ST S0: HG TL•C / ST S1: HY TS' S1 S3 TS' S2: FG S3: FY TS / ST TL+C' / ST S2 (TL+C')' CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 28
  • 15. Example: Traffic Light Controller (cont’d) ! Generate state table with symbolic states ! Consider state assignments output encoding – similar problem to state assignment (Green = 00, Yellow = 01, Red = 10) Inputs Present State Next State Outputs C TL TS ST H F 0 – – HG HG 0 Green Red – 0 – HG HG 0 Green Red 1 1 – HG HY 1 Green Red – – 0 HY HY 0 Yellow Red – – 1 HY FG 1 Yellow Red 1 0 – FG FG 0 Red Green 0 – – FG FY 1 Red Green – 1 – FG FY 1 Red Green – – 0 FY FY 0 Red Yellow – – 1 FY HG 1 Red Yellow SA1: HG = 00 HY = 01 FG = 11 FY = 10 SA2: HG = 00 HY = 10 FG = 01 FY = 11 SA3: HG = 0001 HY = 0010 FG = 0100 FY = 1000 (one-hot) CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 29 Traffic Light Controller Verilog (TL•C)' Reset module traffic (ST, Clk, Reset, C, TL, TS); input Clk, Reset, C, TL, TS; output ST; reg ST; reg state; reg next_state; reg next_ST; S0 parameter S0 = 0, S1 = 1, S2 = 2, S3 = 3; TL•C TS / ST always @(C or TL or TS or state) case (state) TL+C / ST S0: if (!(TL && C)) begin next_state = S0; next_ST = 0; TS' S1 S3 TS' else if (TL || C) begin next_state = S1; next_ST = 1; end … TS / ST TL+C' / ST endcase S2 always @(posedge Clk) (TL+C')' if (Reset) begin state <= S0; ST <= 0; end else begin state <= next_state; ST <= next_ST; end endmodule CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 30
  • 16. Logic for Different State Assignments ! SA1 NS1 = C•TL'•PS1•PS0 + TS•PS1'•PS0 + TS•PS1•PS0' + C'•PS1•PS0 + TL•PS1•PS0 NS0 = C•TL•PS1'•PS0' + C•TL'•PS1•PS0 + PS1'•PS0 ST = C•TL•PS1'•PS0' + TS•PS1'•PS0 + TS•PS1•PS0' + C'•PS1•PS0 + TL•PS1•PS0 H1 = PS1 H0 = PS1'•PS0 F1 = PS1' F0 = PS1•PS0' ! SA2 NS1 = C•TL•PS1' + TS'•PS1 + C'•PS1'•PS0 NS0 = TS•PS1•PS0' + PS1'•PS0 + TS'•PS1•PS0 ST = C•TL•PS1' + C'•PS1'•PS0 + TS•PS1 H1 = PS0 H0 = PS1•PS0' F1 = PS0' F0 = PS1•PS0 ! SA3 NS3 = C'•PS2 + TL•PS2 + TS'•PS3 NS2 = TS•PS1 + C•TL'•PS2 NS1 = C•TL•PS0 + TS'•PS1 NS0 = C'•PS0 + TL'•PS0 + TS•PS3 ST = C•TL•PS0 + TS•PS1 + C'•PS2 + TL•PS2 + TS•PS3 H1 = PS3 + PS2 H0 = PS1 F1 = PS1 + PS0 F0 = PS3 CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 31 Vending Machine Example Revisted (PLD mapping) D0 = reset'(Q0'N + Q0N' + Q1N + Q1D) D1 = reset'(Q1 + D + Q0N) CLK OPEN = Q1Q0 Q0 DQ Seq N Q1 DQ Seq D Open DQ Com Reset CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 32
  • 17. Vending Machine (cont’d) ! OPEN = Q1Q0 creates a combinational delay after Q1 and Q0 change ! This can be corrected by retiming, i.e., move flip-flops and logic through each other to improve delay ! OPEN = reset'(Q1 + D + Q0N)(Q0'N + Q0N' + Q1N + Q1D) = reset'(Q1Q0N' + Q1N + Q1D + Q0'ND + Q0N'D) ! Implementation now looks like a synchronous Mealy machine " Common for programmable devices to have FF at end of logic CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 33 Vending Machine (Retimed PLD Mapping) OPEN = reset'(Q1Q0N' + Q1N + Q1D + Q0'ND + Q0N'D) CLK Q0 DQ Seq N Q1 DQ Seq D OPEN Open DQ Seq Reset CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 34
  • 18. Sequential Logic Implementation Summary ! Models for representing sequential circuits " Abstraction of sequential elements " Finite state machines and their state diagrams " Inputs/outputs " Mealy, Moore, and synchronous Mealy machines ! Finite state machine design procedure " Verilog specification " Deriving state diagram " Deriving state transition table " Determining next state and output functions " Implementing combinational logic CS 150 - Spring 2007 – Lec #7: Sequential Implementation – 35