一、原理
二、硬件配置
IO配置:
三、代码实现
module PWM(
input sys_clk,
input sys_rst_n,
output pwm_out
);
parameter en=1;
parameter [31:0] period=50000000; //pwm频率设置: = period = 本地时钟频率 / 期望pwm频率
//例如:50Mhz / 1hz = 50 000 000
parameter [31:0] pulse_width=25000000; //pwm占空比设置 %(pulse_width/period)
reg [31:0] cnt;
reg wave;
always @(posedge sys_clk or negedge sys_rst_n) begin
if(!sys_rst_n)
cnt <= 0;
else if(cnt<period-1 && en)
cnt <= cnt + 1;
else
cnt <= 0;
end
always @(posedge sys_clk or negedge sys_rst_n) begin
if(!sys_rst_n)
wave <= 0;
else if(cnt<pulse_width && en)
wave <= 1;
else
wave <= 0;
end
assign pwm_out = wave;
endmodule