Lab-08

Design of 101 non-overlapping sequence detector using Moore FSM

// Code your design here
module moore101nov(dout,din,rst,clk);
  input rst,clk,din;
  output reg dout;
  reg [1:0] state;
  parameter s0=0,s1=1,s2=2,s3=3;
  initial dout=0;
  initial state=0;
  always @(posedge clk)
    begin
      if(rst)
        begin
          state=0;
          dout=0
        end
      else
        case(state)
          s0: begin
            if(din)
              state=s1;
            else
              state=s0;
             end
          s1: begin
            if(din)
              state=s1;
            else
              state=s2;
             end
        s2: begin
            if(din)
              state=s3;
            else
              state=s0;
             end
         s3: state=s0;
        endcase
    end
always @(state) begin
    case(state)
      s0: dout=0;
      s1: dout=0;
      s2: dout=0;
      s3: dout=1;
    endcase
  end
endmodule


//testbench
// Code your testbench here
// or browse Examples
module moore101_tb();
  reg din,clk,rst;
  wire dout;
  moore101nov L00(dout,din,rst,clk);
  initial begin
    $dumpfile("dump.vcd");
    $dumpvars;
    clk=0;
    rst=1;
    din=0;
    #10;
    rst=0;
    din=0;#10;
    din=1;#10;
    din=0;#10;
    din=1;#10;
    din=0;#10;
    din=0;#10;
    din=1;#10;
    din=0;#10;
    din=1;#10;
    din=0;#10;
    din=1;#10;
    din=0;#10;
    din=0;#100;
    $finish;   
  end
  always #5 clk=!clk;
endmodule