//reg0 = in_frequence;
//if(in_frequence && !reg0)
//error_out=1 表示in_frequence一直为h,即有错。
//out_signal =1,表示in_frequence一直为100k的方波,
//out_signal =0,表示in_frequence一直为L,即信号被遮断
module test_frequence(clk1 , reset1 , door_control , in_frequence , error_out , out_signal);
parameter min_data = 5 , max_data = 48;//36;//12; //8;
input clk1;
input reset1,door_control,in_frequence;
output error_out,out_signal;
//output [31:0] count;
reg flag_high;
reg reg0;
reg error_out,out_signal;
reg [31:0] count;
always @ (posedge clk1)
begin
if(!reset1)
begin
error_out <= 0; //
out_signal <= 1; //
count <= 0; // clear 0
reg0 <= 0;
flag_high <= 0;
end
else //完成复位
begin
if(door_control == 1) //门控信号为H
begin
//reg0 <= in_frequence; //
//flag_high <= 1; //
if(in_frequence && !reg0)
begin
count <= count + 1;
end
else
begin
//nc
end
reg0 <= in_frequence; //
flag_high <= 1; //
end
else //门控信号为L,开始计算频率
if(flag_high == 1)
begin
if((count < max_data) && (count > min_data))
begin
error_out <= 0; //
out_signal <= 1; //表示in_frequence一直为100k的方波,
end
else
begin
error_out <= 1;
out_signal <= 0;
end
count <= 0; //clear 0
flag_high <=0; //clear 0
end
else //flag_high =0
begin
//nc
end
end
end
endmodule
|