`timescale 1ns/1ns
module seq_circuit(
input C ,
input clk ,
input rst_n,
output wire Y
);
reg [1:0]state;
reg [1:0]next_state;
always @(posedge clk or posedge rst_n)
if(rst_n==0)
state<=2'b00;
else
state<=next_state;
reg Y_reg;
always @(*)
begin
case (state)
2'b00:begin if(C==1)
begin next_state=2'b01; Y_reg=0; end
else begin next_state=2'b00; Y_reg=0;end
end
2'b01:begin if(C==1)
begin next_state=2'b01; Y_reg=0; end
else begin next_state=2'b11; Y_reg=0; end
end
2'b10:begin if(C==1)
begin next_state=2'b10; Y_reg=1; end
else begin next_state=2'b00; Y_reg=0; end
end
2'b11:begin if(C==1)
begin next_state=2'b10; Y_reg=1; end
else begin next_state=2'b11; Y_reg=1; end
end
default : begin next_state=2'b00; Y_reg=0; end
endcase
end
assign Y=Y_reg;
endmodule