设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 834|回复: 0
收起左侧

Quartus Verilog HDL/FPGA 实现16位PWM波发生器模块 并演示65536级亮度的LED呼吸灯

[复制链接]
发表于 2022-8-29 08:20:44 | 显示全部楼层 |阅读模式
main.png
  1. module pwm_16bit(                        //1路16位PWM发生器模块 要几路调用几个
  2.         input clk,                                //时钟输入 PWM频率:时钟频率/65535
  3.         input cache,                        //PWM缓存更新方式:0:时钟周期更新 1:PWM周期更新
  4.         input [15:0] pwm,                //16位PWM占空比输入 0~65535
  5.         output reg out                        //PWM信号输出 占空比越高 高电平时间越高 (0或65535 无PWM,只输出高电平,0为低电平)
  6. );

  7. reg [15:0] i;                //PWM计数 0~65534
  8. reg [15:0] j;                //PWM占空比缓存

  9. always @(posedge clk) begin                //CLK上升沿
  10.                 if(i == 0 || cache == 0) begin
  11.                         j = pwm;
  12.                 end
  13.                 out <= (i < j);
  14.                 i = i + 1'b1;
  15.                 if(&i) begin
  16.                         i = 0;
  17.                 end
  18. end
  19. endmodule

  20. module main(
  21.         input clk,                //50Mhz Pin17
  22.         output led                //LED Pin3 (低电平点亮)
  23. );

  24. wire out;
  25. pwm_16bit u1(
  26.         .clk(clk),
  27.         .cache(1'b1),
  28.         .pwm(pwm),
  29.         .out(out)
  30. );
  31. assign led = ~out;
  32. reg [15:0] i;
  33. reg [15:0] pwm;        //当前占空比
  34. reg j = 1;                        //0:PWM减小 1:PWM增加

  35. always @(posedge clk) begin
  36.                 i = i + 1'b1;
  37.                 if(i >= 5000) begin
  38.                         i = 0;
  39.                         if(j) begin
  40.                                 pwm = pwm + 1'b1;
  41.                         end else begin
  42.                                 pwm = pwm - 1'b1;
  43.                         end
  44.                        
  45.                         if(!pwm || &pwm) begin
  46.                                 j <= !j;
  47.                         end

  48.                 end
  49. end

  50. endmodule
复制代码

相关帖子

您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-28 08:25 , Processed in 0.604035 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表