名称:6路不同占空比的PWM波Verilog代码Quartus仿真
软件:Quartus
语言:Verilog
代码功能:基于Verilog语言,实现6路不同占空比的PWM输出,并且频率和占空比可调。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. Testbench
6. 仿真图
频率控制字对应的频率计算
f=clk*frq_word/512
其中Clk=50MHz
部分代码展示:
//PWM实现6路不同占空比的PWM输出,并且频率和占空比可调 module?PWM( input?clk,//时钟 input?reset,//复位,高电平有效 input?[7:0]frq_word_1,//频率控制字,0~255 input?[7:0]duty_word_1,//占空比控制字,0~100 input?[7:0]frq_word_2,//频率控制字,0~255 input?[7:0]duty_word_2,//占空比控制字,0~100 input?[7:0]frq_word_3,//频率控制字,0~255 input?[7:0]duty_word_3,//占空比控制字,0~100 input?[7:0]frq_word_4,//频率控制字,0~255 input?[7:0]duty_word_4,//占空比控制字,0~100 input?[7:0]frq_word_5,//频率控制字,0~255 input?[7:0]duty_word_5,//占空比控制字,0~100 input?[7:0]frq_word_6,//频率控制字,0~255 input?[7:0]duty_word_6,//占空比控制字,0~100 output?PWM_out_1,//输出PWM1 output?PWM_out_2,//输出PWM2 output?PWM_out_3,//输出PWM3 output?PWM_out_4,//输出PWM4 output?PWM_out_5,//输出PWM5 output?PWM_out_6//输出PWM6 ); //调用6路PWM模块 //调用第1路 PWM_chn?i1_PWM_chn( .?clk(clk),//时钟 .?reset(reset),//复位,高电平有效 .?frq_word(frq_word_1),//频率控制字,0~255 .?duty_word(duty_word_1),//占空比控制字,0~100 .?PWM_out(PWM_out_1)//输出PWM ); //调用第2路 PWM_chn?i2_PWM_chn( .?clk(clk),//时钟 .?reset(reset),//复位,高电平有效 .?frq_word(frq_word_2),//频率控制字,0~255 .?duty_word(duty_word_2),//占空比控制字,0~100 .?PWM_out(PWM_out_2)//输出PWM ); //调用第3路 PWM_chn?i3_PWM_chn( .?clk(clk),//时钟 .?reset(reset),//复位,高电平有效 .?frq_word(frq_word_3),//频率控制字,0~255 .?duty_word(duty_word_3),//占空比控制字,0~100 .?PWM_out(PWM_out_3)//输出PWM ); //调用第4路 PWM_chn?i4_PWM_chn( .?clk(clk),//时钟 .?reset(reset),//复位,高电平有效 .?frq_word(frq_word_4),//频率控制字,0~255 .?duty_word(duty_word_4),//占空比控制字,0~100 .?PWM_out(PWM_out_4)//输出PWM ); //调用第5路 PWM_chn?i5_PWM_chn( .?clk(clk),//时钟 .?reset(reset),//复位,高电平有效 .?frq_word(frq_word_5),//频率控制字,0~255 .?duty_word(duty_word_5),//占空比控制字,0~100 .?PWM_out(PWM_out_5)//输出PWM );
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=613
阅读全文