直接在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
|
verilog写的一个简洁实用的PWM模块
最新推荐文章于 2024-08-28 19:05:03 发布