`timescale 1ns/1ns
/*两段式*/
module sequence_test1(
	input wire clk  ,
	input wire rst  ,
	input wire data ,
	output reg flag
);
//*************code***********//
parameter idle=0,s0=1,s1=2,s2=3,s3=4,s4=5;
reg [2:0]cs,ns;
always@(posedge clk or negedge rst)begin
	if(!rst)cs<=idle;
	else cs<=ns;
end
always@(*)begin
	case(cs)
	idle: begin
		ns=data?s0:idle;
		flag=0;
	end
	s0:begin
		ns=data?s0:s1;
		flag=0;
	end
	s1:begin
		ns=data?s2:idle;
		flag=0;
	end
	s2:begin
		ns=data?s3:s1;
		flag=0;
	end
	s3:begin
		ns=data?s4:s1;
		flag=0;
	end
	s4:begin
		ns=data?s0:idle;
		flag=1;
	end
	default:begin
	ns=idle;flag=0;end
	endcase
end
//*************code***********//
endmodule