zoukankan      html  css  js  c++  java
  • 按键抖动消除 verilog

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

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

    其实,我们在做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;

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

  • 相关阅读:
    Hive、Presto、Kylin、Impala、Sparksql、Druid 区别
    HIVE vs HBASE
    mysql vs mongodb
    关于MCU 开门狗要求
    JAVA转OC j2objc
    DTD文件映射
    装饰者模式(Decorator)
    Spring Boot 概述
    C语言也会短路?盘点C语言中那些令人匪夷所思的情况!
    程序员的天梯排行榜!你的理想高度在哪里?
  • 原文地址:https://www.cnblogs.com/nucfrank/p/2196032.html
Copyright © 2011-2022 走看看