首页 > 其他 > 详细

基于basys2的按键消抖

时间:2021-02-16 17:57:35      阅读:33      评论:0      收藏:0      [点我收藏+]

module key( clk,sys_rst_n,key_en,key_in);
input clk;
input sys_rst_n;
input key_in;

output key_en;

//这两段代码前面分别进行计数和在计数满产生一个高脉冲信号cnt_full
//20ms计数器
reg cnt_full;
reg [19:0] cnt;
always@(posedge clk or negedge sys_rst_n)
begin
if(!sys_rst_n)
cnt <= 20‘d0;
else if(cnt == 20‘d1000000-1) //20ms/20ns=1000_000
cnt <= 20‘d0;
else
cnt <= cnt + 1‘b1;
end
//计数满信号
always@(posedge clk or negedge sys_rst_n)
begin
if(!sys_rst_n)
cnt_full <= 1‘b0;
else if(cnt == 20‘d1000000-1)
cnt_full <= 1‘b1;
else
cnt_full <= 1‘b0;
end

//这两段代码就是来用实现取前后按键信号的
reg key_in_r;
reg key_in_r_next;
always@(posedge clk or negedge sys_rst_n)
begin
if(!sys_rst_n)
key_in_r_next <= 0;
else if(cnt_full)
key_in_r_next <= key_in;
else
key_in_r_next <= key_in_r_next;
end
always@(posedge clk or negedge sys_rst_n)
begin
if(!sys_rst_n)
key_in_r <= 0;
else
key_in_r <= key_in_r_next;
end

assign key_en = ~key_in_r & (key_in_r_next);

 


endmodule

基于basys2的按键消抖

原文:https://www.cnblogs.com/zqh1126/p/14406768.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!