通过状态机来控制8个led循环闪亮_状态机设计进阶训练

本文介绍了如何通过状态机实现对按键按下时间的检测,根据按键按下时间控制8个LED循环闪亮。具体包括按键消抖状态机的设计,LED时序与模式控制,以及LED控制的状态机实现。通过状态机,当按键按下时间小于1s时,单个LED翻转5次;1s到2s时,翻转10次;大于2s时,四个LED翻转20次。
摘要由CSDN通过智能技术生成

这一期做的是对按键按下时间的检测,在这一期本人犯了一个低级到不能再低级的错误,标志位(flash_done)没清零,然后仿真的时候标志位初始值为零所以最开始仿真的现象是对的,但是下载到FPGA板子上之后却始终没有相应的现象。。。。

本期要实现的功能是,对按键按下的时间进行检测,按键按下时间小于1s时单个led翻转5次,按键按下时间大于1s小于2s时单个led翻转10次,按键按下时间大于2s时四个led翻转20次。

01

按键消抖的状态机

按键消抖的详细讲解已在之前的文章中有详细讲解,这里只是对修改的部分做简单阐述。

46bf9bc3765a0489b5009b1827edb30c.png

首先这部分是判断按键的上升沿和下降沿,always处的赋值是为了消除亚稳态以及保留按键的上一时刻状态做对比,方便判断上升沿和下降沿。然后assign处便是判断上升沿和下降沿的条件语句,pedge作为上升沿的条件是上一时刻(key_temp[3])为低电平与当前时刻(key_temp[2])为高电平;nedge作为下降沿的条件是上一时刻为高电平与当前时刻为低电平。

49f7dc261aa7539dfb7189d81c1a7d3f.png

此部分为计数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值