脉冲宽度调制(PWM)

`timescale 1ns / 1ps// PERIOD表示PWM占几个输入时钟周期;HTIME表示高电平占几个输入时钟周期;N表示计数器的位宽
module pwm #(parameter PERIOD = 10, HTIME = 3, N = 4) (input           	sys_clk,input       	sys_rst_n,output logic	o_pwm);logic   [N - 1 : 0] r_cnt;always_ff @(posedge sys_clk) beginif(!sys_rst_n)  r_cnt <= 0;else if (r_cnt ==PERIOD - 1)    r_cnt <= 0;else    r_cnt <= r_cnt + 1;endalways_ff @(posedge sys_clk) beginif(!sys_rst_n)  o_pwm <= 1'b0;else if (r_cnt ==HTIME - 1)    o_pwm<= 1'b1;else if (r_cnt ==HTIME - 2)    o_pwm<= 1'b1;else if (r_cnt ==HTIME - 3)    o_pwm<= 1'b1;else   o_pwm <= 1'b0;endendmodule


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部