[X]关闭

按键消抖的问题

文档创建者:suwm2016
浏览次数:4774
最后更新:2016-01-14
 
                        input ext_clk_25m,        //外部输入25MHz时钟信号
                        input ext_rst_n,        //外部输入复位信号,低电平有效
                        input[0:0] switch,        //拨码开关SW3输入,ON -- 低电平;OFF -- 高电平
                        input key_upup,key_down,        //up和down两个导航按键输入,未按下为高电平,按下后为低电平
                );

//-------------------------------------
//按键抖动判断逻辑
wire key;        //所有按键值相与的结果,用于按键触发判断
reg[3:0] keyr;  //按键值key的缓存寄存器

assign key = key_upup & key_down;

always @(posedge ext_clk_25m or negedge ext_rst_n)
    if (!ext_rst_n) keyr <= 4'b1111;
    else keyr <= {keyr[2:0],key};

wire key_neg = ~keyr[2] & keyr[3];        //有按键被按下       
wire key_pos = keyr[2] & ~keyr[3];        //有按键被释放


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

发表评论已发布 7

suwm2016

发表于 2016-1-12 12:04:19 | 显示全部楼层

上面的图片中为啥要取 keyr[2] 和 keyr[3]

uisrc

发表于 2016-1-12 12:09:40 | 显示全部楼层

去除亚稳态,有时候也作为同步延迟处理
越努力越幸运!加油!

suwm2016

发表于 2016-1-12 12:19:57 | 显示全部楼层

admin 发表于 2016-1-12 12:09
去除亚稳态,有时候也作为同步延迟处理

为什么要取 2和3呢

suwm2016

发表于 2016-1-12 12:21:13 | 显示全部楼层

admin 发表于 2016-1-12 12:09
去除亚稳态,有时候也作为同步延迟处理

我感觉 不管什么时候那俩都是 低电平

贾文洋

发表于 2016-1-12 19:11:11 | 显示全部楼层

你没能很好的理解,这种取2和3类似于打一拍,增强可靠性,打一拍!延迟一拍!

uisrc

发表于 2016-1-12 22:05:25 | 显示全部楼层

用ISIM 仿真下就行了,这种低端问题要自己多动手去找,这么基础,高手给你解释你不一定可以理解
越努力越幸运!加油!

贾文洋

发表于 2016-1-14 10:47:16 | 显示全部楼层

module key_filter(
        input clk,
                  input rst_n,
                  input key_in,
                  output reg key_flag,
                  output reg key_state);
                  //鐘舵
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则