简易的按钮防抖Verilog Basys3 数字逻辑实验

今天终于检查完最后一个数字逻辑实验了,我亲爱的开发板啊。课上和同学讨论发现大家的按键防抖都比较复杂,而我前几天自己写了个非常简单的防抖器,几个实验下来用着感觉还不错;所以,也许大家可以讨论讨论?

这个防抖器配合状态机可以实现:
按下按钮从当前状态精确地跳转到下一状态。

这个防抖器的主要功能是:
当按钮被按下0.1秒后才向外发出一个脉冲;这个脉冲可以用来操作状态机。注意,如果一直按着按钮,也只会发出越过0.1S时的一次脉冲。

module eftBt(//有效按键信号
clk, bt, effectiveBt
    );
    input clk, bt;
    output reg effectiveBt;
    reg [31:0] btCount;
    
        //按键处理
    always@(posedge clk)begin
        if(bt) btCount= btCount+1;
        else
            btCount= 32'b0;
    end
    
    always@(btCount) begin
        if(btCount== 32'd10_000_000) effectiveBt= 'b1;//注意,参数可调,只有这里会发出一次脉冲
        else effectiveBt= 'b0;
    end
endmodule

好久没更新博客了,最近还真的挺忙的。感觉数据结构要凉。有一个消息,那家我很喜欢的牛角沱车站麦当劳关了——这家半空中的麦当劳曾经可以看到整个江面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值