Verilog实现产生任意占空比的PWM波

简介: Verilog实现产生任意占空比的PWM波

实现思路

实现方法很简单,使用一个计数器一直计数,然后和两个值进行比较,一个值是高电平时间htime,一个值是周期period,在小于htime期间,输出高电平;大于h_time期间,输出低电平,到达周期period时,计数器清零。

640.jpg


端口说明

  • clk:时钟信号
  • nreset:复位信号,低电平复位,输出为0
  • en:使能信号,高电平使能输出,低电平输出为0,
  • period:PWM的周期,如主时钟96M,产生4MHz的波形,则period = 96/4 = 24
  • htime:高电平的时间,如主时钟96M,产生4MHz,占空比25%的波形,则htime = 24 * 0.25 = 6
  • pwm:PWM波输出


源程序

pwm_gen.v

module pwm_gen(
input nreset,
input clk,
input en,
input [15:0] period,
input [15:0] h_time,
output reg pwm
);
reg [31:0] CNT;
always @ (posedge clk)
begin
    if(!nreset)
        CNT <= 0;
    else if(CNT >= period - 1 )
        CNT <= 0;
    else
        CNT <= CNT + 1;
end
always @ (posedge clk)
begin
    if(!nreset)
        pwm <= 0;
    else    //nreset = 1
    begin
        if(en == 0)
            pwm <= 0;
        else    //en = 1
        begin
            if(CNT <= h_time - 1)
                pwm <= 1;
            else
                pwm <= 0;
        end
    end
end
endmodule


实际应用

可产生任意占空的PWM波,若主时钟为96MHz。

  • 产生4MHz,50%占空比:period = 24,h_time = 12;
  • 产生3KHz,50%占空比:period = 32000,h_time = 16000;
  • 产生宽度10us,间隔100us的脉冲信号:period = 10560,h_time = 960;
目录
相关文章
|
算法 物联网 异构计算
m基于FPGA的4FSK调制解调系统verilog实现,包含testbench测试文件
m基于FPGA的4FSK调制解调系统verilog实现,包含testbench测试文件
124 0
|
3天前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的信号发生器verilog实现,可以输出方波,脉冲波,m序列以及正弦波,可调整输出信号频率
本项目基于Vivado2019.2实现信号发生器,可输出方波、脉冲波、m随机序列和正弦波。完整程序无水印,含详细中文注释与操作视频。FPGA技术使信号发生器精度高、稳定性强、功能多样,适用于电子工程、通信等领域。方波、脉冲波、m序列及正弦波的生成原理分别介绍,代码核心部分展示。
|
8月前
|
C语言
输出4种波形的函数信号发生器
设计了一款基于MCS-51单片机的函数信号发生器,能生成四种波形(正弦、方、三角、锯齿),频率范围10-100Hz,步进值0.1-10Hz。系统包括5V电源、AT89C51单片机、DAC0832、LM358、LCD1602、键盘和LED电路。通过按键切换波形、设定频率和步进值,LCD实时显示信息,LED指示波形类型。Proteus和Altium仿真验证了设计功能。
168 10
|
8月前
|
存储 算法 异构计算
m基于FPGA的多功能信号发生器verilog实现,包含testbench,可以调整波形类型,幅度,频率,初始相位等
使用Vivado 2019.2仿真的DDS信号发生器展示了正弦、方波、锯齿波和三角波的输出,并能调整幅度和频率。DDS技术基于高速累加器、查找表和DAC,通过频率控制字和初始相位调整产生各种波形。Verilog程序提供了一个TEST模块,包含时钟、复位、信号选择、幅度和频率控制输入,以生成不同波形。
223 18
|
8月前
|
Go 异构计算 Windows
LabVIEW由三角波产生PWM
LabVIEW由三角波产生PWM
63 2
|
8月前
|
搜索推荐 芯片
遥控车模的电机控制器
该项目基于CH32V103单片机和RTT构建了一个无刷电机无感矢量控制器,利用无感矢量控制实现低噪音、高线性和效率的电机运行。硬件包括主控(CH32V103开发板)、驱动(IR2101S驱动芯片)、逆变(三相全桥逆变电路,IRF540N MOS)和采样(差分电路)模块。软件部分涉及TIM和ADC配置、矢量控制及中断处理。项目提供示例代码和附件下载。
|
8月前
|
存储
常用电路符号
常用电路符号
132 0
|
8月前
|
芯片
关于JTAG的TRST信号的四则问题?
关于JTAG的TRST信号的四则问题?
274 0
|
算法 异构计算
m基于FPGA的256QAM调制信号产生模块verilog实现,包含testbench
m基于FPGA的256QAM调制信号产生模块verilog实现,包含testbench
321 0
|
算法 异构计算
m基于FPGA的1024QAM调制信号产生模块verilog实现,包含testbench
m基于FPGA的1024QAM调制信号产生模块verilog实现,包含testbench
379 0