FPGA按键防抖动,最精简的写法只有10行

[复制链接]
楼主: lxAPP
手机看帖
扫描二维码
随时随地手机跟帖
mzhang198| | 2012-11-12 14:52 | 显示全部楼层
谢谢分享。 我已经在赛灵思官方的新浪微博分享给更多网友了!

使用特权

评论回复
GoldSunMonkey| | 2012-11-12 21:53 | 显示全部楼层
:)恭喜LxAPP

使用特权

评论回复
litaohqqt| | 2012-11-15 13:37 | 显示全部楼层
module Key_syn
{//in
        clk,
        rst,
        key_press,
        //out
        key_out
}

//==========================================================================
//Input and output declaration
//==========================================================================
input        clk;
input        rst;
input        key_press;

output key_out;

//==========================================================================
//Wire and reg declaration
//==========================================================================
reg[2:0] syn_key1_reg;
reg[15:0] cnt;
//==========================================================================

always@(posedge clk)// 50M
   syn_key1_reg <= {syn_key1_reg[1:0],key1};


always@(posedge clk)
   if(rst)
         cnt <= 0;
   else if(syn_key1_reg[2:1] = 2'b10)   
          cnt <= 50000;
   else if(if(cnt > 0 ) )  //增加个判断,防止空跑      
          cnt <= cnt - 1;

always@(cnt,syn_key1_reg)
  if((cnt == 1) && (syn_key1_reg[1] == 1'b0))
        key_out = 1'b1;
   else
        key_out = 1'b0;


endmodule

使用特权

评论回复
nianzhong| | 2012-11-19 22:57 | 显示全部楼层
**********************************
M的,用FPGA来完成读键盘功能,是在纯粹瞎玩嘛。
*****拿驴来垦荒,拿牛来磨摸*****
nongfuxu 发表于 2012-10-18 08:24

系统上用了fpga就无所谓了。呵呵

使用特权

评论回复
薇儿安蓝| | 2013-1-30 16:18 | 显示全部楼层

使用特权

评论回复
hawksabre| | 2013-1-30 20:07 | 显示全部楼层
帖子很经典   呵呵  顶一个   呵呵

使用特权

评论回复
hawksabre| | 2013-1-30 20:07 | 显示全部楼层
21ic的高手真多   呵呵   顶一个   呵呵

使用特权

评论回复
yjx1991321| | 2013-5-28 11:29 | 显示全部楼层
学习了!

使用特权

评论回复
GoldSunMonkey| | 2013-5-28 23:20 | 显示全部楼层
@hawksabre  怎么不常来啦。

使用特权

评论回复
FangTT| | 2013-5-29 23:42 | 显示全部楼层
不错啊

使用特权

评论回复
hoobaye| | 2013-7-26 13:38 | 显示全部楼层
费劲

使用特权

评论回复
GoldSunMonkey| | 2013-7-26 23:14 | 显示全部楼层
hoobaye 发表于 2013-7-26 13:38
费劲

什么费劲?兄弟

使用特权

评论回复
luyaker| | 2013-7-28 11:34 | 显示全部楼层
判断verilog代码的优劣不能凭行数吧,亲。

使用特权

评论回复
lizhezhe1988| | 2013-7-28 13:08 | 显示全部楼层
AppBaby 发表于 2012-10-17 15:34
reg key_reg1,key_reg2,key_out;
always @( posedge clk)//CLK 100Hz
    begin

100Hz怎么来,还要写分频代码吧,这样岂不麻烦了?

使用特权

评论回复
utopiaworld| | 2013-7-28 14:41 | 显示全部楼层
说说我的理解:
首先什么是抖动,我认为的抖动就是,在按键的时候管脚上的高低电平在一段时间内无法稳定,
读高电平进行计数,当高电平达到一定的值的时候,就认为是有键按下
c.jpg
b.jpg

使用特权

评论回复
GoldSunMonkey| | 2013-7-28 21:46 | 显示全部楼层
utopiaworld 发表于 2013-7-28 14:41
说说我的理解:
首先什么是抖动,我认为的抖动就是,在按键的时候管脚上的高低电平在一段时间内无法稳定,
...

感谢您的分享

使用特权

评论回复
hfjzy0702| | 2014-6-23 21:38 | 显示全部楼层
mark一下

使用特权

评论回复
stevenash_sun| | 2014-6-28 20:06 | 显示全部楼层
应该是检测到KEY1低电平,持续多少时间才认为是有效信号,这样才能去抖动

使用特权

评论回复
stevenash_sun| | 2014-6-28 20:08 | 显示全部楼层
litaohqqt 发表于 2012-11-15 13:37
module Key_syn
{//in
        clk,

NICE

使用特权

评论回复
520810| | 2014-6-29 23:01 | 显示全部楼层
电路抖动在高频采样时是个大问题,mark下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则