简洁的PWM控制器

直接在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,FPGA,ZYNQ7)