直接在value里面输入1-98就可以改变占空比,实现PWM调制。改变PRE_DIV参数,可以根据不同clk设置不同的PWM频率。
再次分享。
module pwm_ctlr#(parameter pre_div=1000)(
input clk,
input [6:0] value,
output reg pwm
);
reg [20:0] delay_cntr ;always @ (posedge clk )delay_cntr <= (delay_cntr==(pre_div-1))?0:(delay_cntr +1);
reg [6:0] c;
always @(posedge clk) if (delay_cntr==0) c<=(c==99)?0:(c+1);
always @(posedge clk) if (c==0)pwm <=1;else if (c==value) pwm <=0;
endmodule
module test_fans_ctlr(
input clk,
output pwm,pwm1
);
pwm_ctlr fans_ctlr(
.clk(clk),
.value(50),
.pwm(pwm)
);
assign pwm1=pwm;
endmodule