OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2956|回复: 3

[ALTERA] 最近写的按键检测代码,请大家指导

[复制链接]

19

主题

296

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1873
金钱
1873
注册时间
2013-7-29
在线时间
276 小时
发表于 2023-3-30 08:26:22 | 显示全部楼层 |阅读模式
module key_led(
    input      sys_clk,
         input      sys_rst_n,
         input      key_in,
         output reg key_out
);

    parameter TotalNum=5'd31;
         reg [4:0] cnt;
         wire end_cnt;
         wire add_cnt;
         
         always@(posedge sys_clk or negedge sys_rst_n) begin
             if(!sys_rst_n)
                     cnt<=1'b0;
                  else     //按键平时是高电平
                          cnt<=add_cnt? (end_cnt? 1'b0:cnt+1'b1):1'b0;
         end
         
         assign add_cnt=!key_in;
         assign end_cnt=add_cnt&&(cnt==TotalNum);
         
         always@(posedge sys_clk or negedge sys_rst_n) begin
             if(!sys_rst_n)
                     key_out<=1'b0;
                  else
           key_out<=end_cnt;
         end
endmodule

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

93

主题

745

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1838
金钱
1838
注册时间
2012-9-16
在线时间
284 小时
发表于 2023-3-30 09:56:06 | 显示全部楼层
纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
回复 支持 反对

使用道具 举报

19

主题

296

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1873
金钱
1873
注册时间
2013-7-29
在线时间
276 小时
 楼主| 发表于 2023-4-19 14:28:33 | 显示全部楼层
象牙塔 发表于 2023-3-30 09:56
所以问题是什么?

没问题,只想让大家指导下,给我学习提些意见。刚开始学习,写程序时还是C的思路。
回复 支持 反对

使用道具 举报

19

主题

296

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1873
金钱
1873
注册时间
2013-7-29
在线时间
276 小时
 楼主| 发表于 2023-4-21 10:14:21 | 显示全部楼层
module key_led(
    input      sys_clk,
         input      sys_rst_n,
         input      key_in,
         output reg key_out
);

    parameter TotalNum=5'd31;
         reg [4:0] cnt;
         wire end_cnt;
         wire add_cnt;
         
         always@(posedge sys_clk or negedge sys_rst_n) begin
             if(!sys_rst_n)
                     cnt<=1'b0;
                  else cnt<=add_cnt? (end_cnt? cnt:cnt+1'b1):1'b0;
         end
         
         assign add_cnt=!key_in;
         assign end_cnt=add_cnt&&(cnt==TotalNum);
         
         always@(posedge sys_clk or negedge sys_rst_n) begin
             if(!sys_rst_n)
                     key_out<=1'b0;
                  else
           key_out<=cnt==TotalNum-1;
         end
endmodule
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-10-4 06:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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