按钮去抖动

时间:2013-12-13 19:02:03

标签: button synchronization push vhdl keypad

正如标题所示,由于我不知道更正式的名称,我的问题是,当我按下4X4薄膜键盘中的按钮并且在按下它时,它会给系统增加太多输入。这似乎是一个愚蠢的问题,但我不希望任何硬件组件摆脱这个问题。我的意思是如果我有机会通过仅使用VHDL编码来解决它,我将非常高兴。为了澄清自己,我不希望任何类型的代码完成这项工作。我要问的是,我只想要一个方法名称。 (比如去除按钮)顺便说一句,我不想​​弄乱时钟,因为我已经分时钟来确定键盘上按下了哪个按钮。但如果它是唯一的解决方案,那么我没关系。

我想要的只是当用户持续按下键盘上的按钮(例如4)时,它应被视为一个输入,但如果用户再次按下它而不是一次一个,那么应该添加系统另外4个。最后,我知道这个问题非常微妙,因为我没有提供任何代码。而且你很容易注意到,我对这些东西都是新手。所以,很抱歉给您带来不便。任何帮助将不胜感激,提前感谢!

1 个答案:

答案 0 :(得分:1)

enter image description here您遇到的事情是由于所谓的按键弹跳,当按下和释放按键时,信号电平基本上是非常快速的变化。由于这些更改都已记录,因此输入会添加到您的案例中。

您需要包含一个关键的去抖方法,例如本link中说明的方法。可以通过增加采样间隔来去抖动,但更优雅的方法是使状态机一旦注册就避免重新注册输入。这将实现按下按键所需的效果,并且仍然只能注册一个输入。