本帖最后由 lq4080 于 2010-11-4 23:21 编辑
module fen(
clkin,
reset,
firen1,
firen2,
firen3,
counter1,
counter2,
counter3
);
input clkin;
input reset;
output firen1,firen2,firen3;
output [14:0] counter1,counter2,counter3;
reg firen1,firen2,firen3;
reg [14:0] counter1,counter2,counter3;
//20ms:20000, P:6667,N:13333 30du:1667 counter:23334
always @(posedge clkin)
begin
if(reset)
begin
counter1 <= 15'D0;
counter2 <= 15'D0;
counter3 <= 15'D0;
end
else
begin
if(counter1 >= 15'D19999)
counter1 <= 0;
else
counter1 <= counter1 + 15'D1;
if(counter1 == 15'D1666)
counter2 <= 0;
else
counter2 <= counter2 + 15'D1;
if(counter2 == 15'D1666)
counter3 <= 0;
else
counter3 <= counter3 + 15'D1;
end
end
always @(negedge clkin)
begin
if(counter1 < 15'D6667)
firen1 <= 1;
else
firen1 <= 0;
if(counter2 < 15'D6667)
firen2 <= 1;
else
firen2 <= 0;
if(counter3 < 15'D6667)
firen3 <= 1;
else
firen3 <= 0;
end
endmodule
|