//
//	状态机与时钟分频
`timescale 1ns/1ns

module huawei7(
	input wire clk  ,
	input wire rst  ,
	output reg clk_out
);
//	reg	clk_2,	clk_4;

reg	[3:0]	state, n_state;
//	独热编码
parameter	s0	= 4'b0001,
			s1	= 4'b0010,
			s2	= 4'b0100,
			s4	= 4'b1000;

//*************code***********//
//	输出
always@(posedge clk or negedge rst)		begin
	if(!rst)
		clk_out <= 1'b0;
	else if(state == s0)		// state == s1 通过,但是 s0反而不行,这是测试上的问题
		clk_out	<= 1'b1;
	else 
		clk_out	<= 1'b0;

end

//	状态跳转
always@(posedge clk or negedge rst)		begin
	if(!rst)
		state	<= s0;
	else
		state	<= n_state;
end
//	状态计数跳转.
always@(state)	begin
			case(state)		//	4个状态机4分频,相等 4进制计数器
				s0:		n_state	= s1;
				s1:		n_state = s2;
				s2:		n_state	= s4; 
				s4:		n_state	= s0;
				default:
					state	= s0;
			endcase
end


/*
//	输出结果,被替换掉.
always@(posedge clk or negedge rst)	begin
	if(!rst)	begin
		clk_2	<= 0;
		clk_4	<= 0;
		clk_out	<= 0;
		end
	else if(n_state == s1)//	使用n_state,不延迟1个clk,直接4分频
		clk_2 	<= clk;		//	下面这个也可以实现输出结果,验证通过,但是在牛客网测试板块不行
	else if(n_state == s2)
		clk_4	<= clk_2;
	else if(n_state == s4)
		clk_out	<= clk_4;
	else	begin
		clk_2	<= 0;
		clk_4	<= 0;
		clk_out	<= 0;
		end
end
*/
//*************code***********//
endmodule