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

从F到0 - From F to 0

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

Quartus Verilog HDL/FPGA 仿铁路卧铺小夜灯 通电灭灯,按下按键后LED全亮→半亮→熄灭

[复制链接]
发表于 2023-2-14 08:54:47 | 显示全部楼层 |阅读模式
main.png
  1. `define fosc 50000000                //晶振频率:单位HZ
  2. module main(
  3.         input clk,                        //有源晶振 Pin17
  4.         input key,                        //按键 (低电平按下) Pin144
  5.         output led                //LED (低电平点亮) Pin3
  6. );

  7. //分频1Khz时钟
  8. integer i;
  9. reg clk_1khz;
  10. always @(posedge clk) begin
  11.         i = i + 1;
  12.         if(i >= `fosc/1000/2) begin
  13.                 i = 0;
  14.                 clk_1khz <= !clk_1khz;
  15.         end
  16. end

  17. reg [7:0] keyms;                //按键按下时间计数 按下计数(加满为止),松开清零
  18. reg skey;                                //按键(低电平按下,已消抖)
  19. reg [1:0] j;                        //0:熄灭 1:全亮 ≥2:半亮(1Khz)
  20. initial j = 2'd0;
  21. initial skey = 1;
  22. assign led = (j == 0) ? 1'd1 : ((j == 1) ? 1'd0 : clk_1khz);

  23. always @(posedge clk_1khz) begin
  24.         if(key) begin                        //按键松开
  25.                 keyms = 8'd0;
  26.                 skey <= 1'd1;
  27.         end else begin                        //按键按下
  28.                 if(!(&keyms)) begin
  29.                         keyms = keyms + 8'd1;
  30.                         if(keyms >= 25) begin                //按键消抖25ms
  31.                                 skey <= 1'd0;
  32.                         end
  33.                 end
  34.         end
  35. end

  36. always @(negedge skey) begin
  37.         j = j + 2'd1;
  38.         if(j > 2) begin
  39.                 j = 2'd0;
  40.         end
  41. end
  42. endmodule

复制代码

相关帖子

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

本版积分规则

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

腾讯云安全认证

GMT+8, 2024-4-19 12:14 , Processed in 0.478027 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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