今天终于检查完最后一个数字逻辑实验了,我亲爱的开发板啊。课上和同学讨论发现大家的按键防抖都比较复杂,而我前几天自己写了个非常简单的防抖器,几个实验下来用着感觉还不错;所以,也许大家可以讨论讨论?
这个防抖器配合状态机可以实现:
按下按钮从当前状态精确地跳转到下一状态。
这个防抖器的主要功能是:
当按钮被按下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
好久没更新博客了,最近还真的挺忙的。感觉数据结构要凉。有一个消息,那家我很喜欢的牛角沱车站麦当劳关了——这家半空中的麦当劳曾经可以看到整个江面。