1 PWM调控
可调占空比本质上就是计数+译码,计数器从0计到period-1,是pwm的整个周期。
译码器实现:在计数值小于pulse_width的时输出高电平,否则输出低电平。
从而实现可调节的占空比。
2 代码
module pwm(
input clk,
input reset_n,
output out
);
parameter en=1;
parameter [31:0] period=33333; //pwm频率设置: = period = 本地时钟频率 / 期望pwm频率
//例如:50Mhz / 1.5k = 33333.33
parameter [31:0] pulse_width=15000; //pwm占空比设置 %(pulse_width/period)
reg [31:0] cnt;
reg wave;
always @(posedge clk or negedge reset_n) begin
if(!reset_n)
cnt <= 0;
else if(cnt<period-1 && en)
cnt <= cnt + 1;
else
cnt <= 0;
end
always @(posedge clk or negedge reset_n) begin
if(!reset_n)
wave <= 0;
else if(cnt<pulse_width && en)
wave <= 1;
else
wave <= 0;
end
assign out = wave;
endmodule