Electronics Digital Circuits and Systems: 1229137

Code :

module abc(si,clock,reset,do

    );

input clock;

input reset;

input si;

output reg do;

parameter  Zero=3’b000,

  x1=3’b001,

  x2=3’b011,

  x3=3’b010,

  x4=3’b110;

  x5=3’b111;

reg [2:0] cs, ns;

always @(posedge clock, posedge reset)

begin

 if(reset==1)

 cs <= Zero;

 else

 cs <= ns;

end 

always @(current_state,si)

begin

 case(cs)

 Zero:begin

  if(si==1)

   ns <= x1;

  else

   ns<= Zero;

 end

 One:begin

  if(si==0)

   ns<= x2;

  else

   ns<= x1;

 end

 OneZero:begin

  if(si==0)

   ns<= Zero;

  else

   ns<= x3;

 end 

 x3:begin

  if(si==0)

   ns<= x2;

  else

   ns<= x4;

 end

 x5:begin

  if(si==0)

   ns<= x2;

  else

   ns<= x5;

 end

 default:ns<= Zero;

 endcase

end

always @(current_state)

begin

 case(current_state)

 Zero:   do <= 0;

 X1:   do <= 0;

 X2:  do <= 0;

 X3:  do <= 0;

 X4:  do <= 1;

 default:  do <= 0;

 endcase

end 

endmodule