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

[复制链接]
25640|65
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 | 显示全部楼层
说说我的理解:
首先什么是抖动,我认为的抖动就是,在按键的时候管脚上的高低电平在一段时间内无法稳定,
读高电平进行计数,当高电平达到一定的值的时候,就认为是有键按下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
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下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部