• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

N通道PWM占空比控制设计Verilog代码Quartus仿真

09/23 10:16
904
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-241029201640403.doc

共1个文件

名称:N通道PWM占空比控制设计Verilog代码Quartus仿真

软件:Quartus

语言:Verilog

代码功能:N通道PWM占空比控制

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1. 主要设计思路

主要设计思路:

PWM控制模块:输入0代表0.5ms,255代表2.5ms,0.5ms到2.5ms中间的2ms用8位控制信号控制,即256个分辨率指示,即2ms对应256,所以一个周期20ms对应2560。要在20ms(f=50Hz)内计数2560次,则计数时钟为128Khz(50*2560Hz),因此分频时钟=128KHz。然后根据占空比控制信号的值确定20ms周期内的高电平持续时间,即可控制pwm波形占空比。

分频模块:定义一个分频常数,当输入不同时钟时,只需要改变该常数即可。

2. 工程文件

3. 程序文件

顶层模块,N为通道数,可自由设置,程序默认设置为4通道。对应的log2_N就为2。

若N=8,log2_N就为3,以此类推。

分频模块

单通道PWM生成模块

4. 程序运行

5. 程序RTL图

6. Testbench

7. 仿真图

仿真设置不同地址和占空比的情况,地址ADDR 00~11切换,占空比duty_cycle累加变化。整体仿真图,

脉冲分频模块仿真图

cnt_para=10'd20;(DE1-SOC板子该参数修改为390,具体位置代码有注释)

单通道控制模块仿真图

计数到2559

部分代码展示:

module N_channel_ctrl
#(
parameter channel=4,//N通道
parameter log2_N=2//log2(N)
)
(
input clk,
input rse_n,//reset
input [7:0] duty_ctrl,//8位占空比控制信号
input load,
input [log2_N-1:0]address,//addressess;(log2(N)),N=channel
output [channel-1:0]PWM_out//输出PWM波形
);
parameter cnt_para=10'd20;//需根据具体输入时钟调整;若clk=50M,cnt_para=390,cnt_para=clk/128K
//parameter cnt_para=10'd390;//50MHZ--DE1-SOC
wire clk_enable;
reg [7:0] duty_ctrl_N [0 : channel-1];
integer n; 
//地址决定当前更新哪个通道的占空比参数
always@(posedge clk or negedge rse_n)
if(!rse_n)begin
for(n=0; n<channel; n=n+1) 
duty_ctrl_N[n]<=8'd0;//duty_ctrl_N初始化为0
end
else
if(load)
duty_ctrl_N[address]<=duty_ctrl;
else
;
//调用分频模块
divider 
#(
.cnt_para(cnt_para)//需根据具体输入时钟调整
)
i_divider(
. clk(clk),//输入时钟范围100M~128KHz
. clk_enable(clk_enable)//128KHz
);

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1282

  • 2-241029201640403.doc
    下载

相关推荐