这一期做的是对按键按下时间的检测,在这一期本人犯了一个低级到不能再低级的错误,标志位(flash_done)没清零,然后仿真的时候标志位初始值为零所以最开始仿真的现象是对的,但是下载到FPGA板子上之后却始终没有相应的现象。。。。
本期要实现的功能是,对按键按下的时间进行检测,按键按下时间小于1s时单个led翻转5次,按键按下时间大于1s小于2s时单个led翻转10次,按键按下时间大于2s时四个led翻转20次。
01
按键消抖的状态机
按键消抖的详细讲解已在之前的文章中有详细讲解,这里只是对修改的部分做简单阐述。
![46bf9bc3765a0489b5009b1827edb30c.png](https://i-blog.csdnimg.cn/blog_migrate/7f58ce6212cd7b8273f60661de1aa5a2.png)
首先这部分是判断按键的上升沿和下降沿,always处的赋值是为了消除亚稳态以及保留按键的上一时刻状态做对比,方便判断上升沿和下降沿。然后assign处便是判断上升沿和下降沿的条件语句,pedge作为上升沿的条件是上一时刻(key_temp[3])为低电平与当前时刻(key_temp[2])为高电平;nedge作为下降沿的条件是上一时刻为高电平与当前时刻为低电平。
![49f7dc261aa7539dfb7189d81c1a7d3f.png](https://i-blog.csdnimg.cn/blog_migrate/0a3fa6a6ba0fd3617212f338b43b0521.png)
此部分为计数