79 lines
1.1 KiB
Coq
79 lines
1.1 KiB
Coq
|
module jyh_4490_7_is(f2,f1,f0,clk,p,sta);
|
||
|
input p,sta,f0,clk;
|
||
|
output reg f2,f1;
|
||
|
|
||
|
reg flag,flag2;//counter enable flag
|
||
|
parameter TARGET=15000; //0.3ms
|
||
|
parameter TARGET2=5000; //0.1ms
|
||
|
reg [13:0] count;//2^14=16384
|
||
|
reg [14:0] count2;//2^15=32768
|
||
|
reg negf0; //whether f0 enter low level
|
||
|
initial begin
|
||
|
flag=0;
|
||
|
flag2=0;
|
||
|
count=0;
|
||
|
negf0=0;
|
||
|
end
|
||
|
|
||
|
always@(posedge clk)
|
||
|
begin
|
||
|
if(!f0)
|
||
|
negf0<=1;
|
||
|
if(f0&&negf0)
|
||
|
begin
|
||
|
negf0<=0;
|
||
|
flag<=1;
|
||
|
flag2<=1;
|
||
|
f1<=1;
|
||
|
f2<=1;
|
||
|
end
|
||
|
else
|
||
|
begin
|
||
|
//xinchong
|
||
|
if(count>=TARGET)
|
||
|
begin
|
||
|
flag<=0;
|
||
|
f1<=0;
|
||
|
end
|
||
|
|
||
|
//shaochong
|
||
|
if(p)
|
||
|
if(sta)
|
||
|
begin
|
||
|
if(count>=5*TARGET2)
|
||
|
begin
|
||
|
f2<=0;
|
||
|
flag2<=0;
|
||
|
//end of a circle
|
||
|
end
|
||
|
else if(count==4*TARGET2)
|
||
|
f2<=1;
|
||
|
end
|
||
|
if(count>=3*TARGET2)
|
||
|
begin
|
||
|
f2<=0;
|
||
|
if(!sta)
|
||
|
flag2<=0;
|
||
|
//end of a circle
|
||
|
end
|
||
|
else if(count>=2*TARGET2)
|
||
|
f2<=1;
|
||
|
else if(count>=TARGET2)
|
||
|
f2<=0;
|
||
|
else
|
||
|
f2<=f1;
|
||
|
|
||
|
|
||
|
//whether to add counter
|
||
|
if(flag)
|
||
|
count<=count+1;
|
||
|
else
|
||
|
count<=0;
|
||
|
if(flag2)
|
||
|
count2<=count+1;
|
||
|
else
|
||
|
count2<=0;
|
||
|
end
|
||
|
end
|
||
|
|
||
|
endmodule
|