EDABOSS电子论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 621|回复: 7

[咨询求助] 消除按键抖动有什么方法?

[复制链接]

7

主题

7

回帖

43

E币

技术员

Rank: 2

积分
21
发表于 2019-10-30 13:48:13 | 显示全部楼层 |阅读模式
不知道消除按键抖动有什么方法?
怎么能从按键按下(电平由低到高)的抖动脉冲里提取出一个clk呢?
或是有什么更好的方法(verilog的)?
积分规则
回复

使用道具 举报

249

主题

12

回帖

81

E币

助理工程师

Rank: 3Rank: 3

积分
510
发表于 2019-10-30 16:15:54 | 显示全部楼层
从抖动中提取脉冲可能很难!抖动脉冲的宽度与你按键的速度有关。这样处理,当按键按下时,如果有脉冲时,就自动产生一个脉冲就行了!
回复 支持 反对

使用道具 举报

7

主题

7

回帖

43

E币

技术员

Rank: 2

积分
21
 楼主| 发表于 2019-10-30 16:16:06 | 显示全部楼层
怎么能只产生一个脉冲呢?
按键的脉冲那么宽,
按键按下到抬起的过程中
可能已经多个脉冲了呀
回复 支持 反对

使用道具 举报

141

主题

15

回帖

368

E币

助理工程师

Rank: 3Rank: 3

积分
297
发表于 2019-10-30 16:23:40 | 显示全部楼层
最传统的方法是用RS触发器,看一些单片机的书都应该有介绍。
回复 支持 反对

使用道具 举报

7

主题

7

回帖

43

E币

技术员

Rank: 2

积分
21
 楼主| 发表于 2019-10-30 16:24:22 | 显示全部楼层
可是RS触发器的方式RS端口都要使用,而现在电路已经定了,按键端口只是一个简单的上拉电阻加按键而已,好像不能使用RS触发器的方式了吧?
回复 支持 反对

使用道具 举报

141

主题

15

回帖

368

E币

助理工程师

Rank: 3Rank: 3

积分
297
发表于 2019-10-30 16:24:42 | 显示全部楼层
那就在FPGA内部用计数器,直到输入信号的高电平或低电平维持一定的时间后,才认为信号有效。
回复 支持 反对

使用道具 举报

8

主题

4

回帖

19

E币

技术员

Rank: 2

积分
20
发表于 2019-10-30 16:26:04 | 显示全部楼层

如果有一个较高的工作频率源,可以使用该时钟来采样按键,比如时钟为30ns,可以作一个很小的状态机来作debounce处理,比如可设为能采样连续采到100个高电平为有效按键,这样可以滤掉脉宽为3us的毛刺
回复 支持 反对

使用道具 举报

249

主题

12

回帖

81

E币

助理工程师

Rank: 3Rank: 3

积分
510
发表于 2019-10-30 16:26:35 | 显示全部楼层

如果是手动按键,反应最快是40us左右,把采样频率定为40HZ(电话按键采样频率),FIFO后再用大数裁决之,不知是否可行
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|EDABOSS电子论坛

GMT+8, 2024-4-20 09:30 , Processed in 0.042077 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表