问答 店铺
热搜: ZYNQ FPGA discuz

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

微信扫一扫 分享朋友圈

已有 7861 人浏览分享

开启左侧

按键消抖的问题

  [复制链接]
7861 7
                        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];        //有按键被释放


本帖子中包含更多资源

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

×

评论 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);
                  //鐘舵
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0

关注

1

粉丝

1

主题
精彩推荐
热门资讯
网友晒图
图文推荐

  • 微信公众平台

  • 扫描访问手机版