2323|0

693

帖子

7

TA的资源

版主

楼主
 

FPGA实验(四)基于HDL语言的PWM呼吸灯 [复制链接]

Verilog HDL语言学习一、PWM波呼吸灯(高四位和低四位灯光亮度对比,占空比固定)
  1. module PWM_LED(
  2.                                 input ext_clk_50M,
  3.                                
  4.                                 output reg[3:0]LED
  5.                                 );
  6. reg [31:0]cnt;
  7. reg [7:0]num;

  8. reg div_50_clk;
  9. always [url=home.php?mod=space&uid=775551]@[/url] (posedge ext_clk_50M)
  10. if(cnt == 32'd50)
  11. begin
  12.         cnt <= 0;
  13.         div_50_clk <= ~div_50_clk;
  14. end

  15. else cnt <= cnt + 32'd1;

  16. always @ (posedge ext_clk_50M)
  17. if(num == 8'd100)num <= 8'd0;

  18. else num <= num + 8'd1;

  19. always @ (posedge div_50_clk)
  20. if(num > 90)LED <= 4'b0000;
  21. else LED <= 4'b1111;

  22. endmodule
  23.        
复制代码



视频演示效果如下:
PWM呼吸灯(占空比固定).mp4 (1.05 MB, 下载次数: 6)


一、PWM波呼吸灯(占空比按键可调,状态机按键消抖处理)

  1. module PWM_LED(
  2.                                 input ext_clk_50M,
  3.                                 input key_in,
  4.                                 output reg[3:0]LED
  5.                                 );
  6. parameter s0 = 2'b00,s1 = 2'b01,s2 = 2'b10,s3 = 2'b11;
  7. reg key_out;
  8. reg[1:0]state;

  9. reg [31:0]cnt;
  10. reg [7:0]num;
  11. reg [7:0]flag;

  12. reg div_50_clk;

  13. always @ (posedge ext_clk_50M)
  14.                         case(state)
  15.                         s0:
  16.                                 begin
  17.                                 key_out <= 1'b1;
  18.                                 if(key_in == 1'b0) state <= s1;
  19.                                 else state <= s0;
  20.                                 end
  21.                         s1:
  22.                                 begin
  23.                                 if(key_in == 1'b0) state <= s2;
  24.                                 else state <= s0;
  25.                                 end
  26.                         s2:
  27.                                 begin
  28.                                 if(key_in == 1'b0) state <= s3;
  29.                                 else state <= s0;
  30.                                 end
  31.                         s3:
  32.                                 begin
  33.                                         if(key_in == 1'b0)
  34.                                         begin
  35.                                                 key_out <= 1'b0;
  36.                                                 state <= s3;
  37.                                         end
  38.                                 else
  39.                                         begin
  40.                                                 key_out <= 1'b1;
  41.                                                 state <= s0;
  42.                                         end
  43.                                 end
  44.                         default:state <= s0;
  45.                 endcase
  46.                
  47. always @ (negedge key_out)
  48. if(flag == 8'd100) flag <= 8'd0;
  49. else flag <= flag + 8'd10;

  50. always @ (posedge ext_clk_50M)
  51. if(cnt == 32'd50)
  52. begin
  53.         cnt <= 0;
  54.         div_50_clk <= ~div_50_clk;
  55. end

  56. else cnt <= cnt + 32'd1;

  57. always @ (posedge ext_clk_50M)
  58. if(num == 8'd100)num <= 8'd0;

  59. else num <= num + 8'd1;

  60. always @ (posedge div_50_clk)
  61. if(num > flag)LED <= 4'b0000;
  62. else LED <= 4'b1111;

  63. endmodule
  64.        
复制代码


视频演示效果如下:


PWM呼吸灯(状态机按键消抖PWM可调).mp4 (1.84 MB, 下载次数: 4)

工程文件分享如下:

3.1、PWM波呼吸灯(高四位和低四位对比).rar (352.29 KB, 下载次数: 0)

3.2、PWM波(锁定特定引脚74用示波器观看).rar (349.33 KB, 下载次数: 0)

3.3、PWM波呼吸灯(按键可调).rar (402.98 KB, 下载次数: 0)

希望能帮到大家,欢迎讨论!




此帖出自创意市集论坛
点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表