按键抖动消除 verilog

按键作为一种机械开关,在进行按键操作时,机械接触点的弹性及电压突变等原因,在机械开关合闭的时候会出现电压抖动,因此在实际的应用当中需要做一定的处理。

一般按键按下就是低电压,这种按键去抖动的关键就是获取稳定的低电压电平状态,因此,对于对于一个按键信号,可以用一个脉冲信号对其进行采样,如果连续三次采样都为低电平的话,就认为是按键被按下。其数字电路原型为下图

2011092923375429.png

 

其实,我们在做FPGA设计之前,就应该大概知道自己的coding  在FPGA芯片上面会映射成什么电路,这样写的代码才是可靠的,有了上面的原理图,那么Verilog代码就很容易了,如下:

input    wire    Clk      ;
input wire key_in ;
output wire key_out ;

reg key_dly1  ;
reg key_dly2  ;
reg key_dly3  ;

always @(posedge Clk)
begin
if(Rst_n == 1'b0)
begin
key_dly1 <= 1'b0;
key_dly2 <= 1'b0;
key_dly3 <= 1'b0;
end
else
begin
key_dly1 <= key_in ;
key_dly2 <= key_dly1;
key_dly3 <= key_dly2;
end
end


assign key_out = key_dly1 | key_dly2 | key_dly3;

对于复杂的电路我们也可以把他分解为每一个触发器,然后心里有个大概的硬件原理图,这样写代码才胸有成竹

转载于:https://www.cnblogs.com/nucfrank/archive/2011/09/29/2196032.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值