用verilog实现按键消抖,工具采用quartus II13 仿真软件采用ModelSim-Alter其中主要分为
其中vr_key_module主要产生虚拟的按键抖动功能。
顶层模块
module vr_debounce(
input Sys_clk,
input Sys_reset,
input Pin_in,
output Pin_out
);
wire Q_Sig;
vir_key_module U1 (
.sclk(Sys_clk),
.rst_n(Sys_reset),
.In_Sig(Pin_in),
.Q_Sig(Q_Sig)
);
debouce U2(
.Sys_clk(Sys_clk),
.Sys_reset(Sys_reset),
.Pin_in(Q_Sig),
.Pin_out(Pin_out)
);
endmodule
debounce模块
module debouce(
input Sys_clk,
input Sys_reset,
input Pin_in,
output Pin_out
);
wire H2L_Sig;
wire L2H_Sig;
detect detect_inst(
.Sys_clk(Sys_clk), //12MHz
.Sys_reset(Sys_reset),
.Pin_in(Pin_in),
.H2L_Sig(H2L_Sig),
.L2H_Sig(L2H_Sig)
);
delay delay_inst(
.Sys_clk(Sys_clk),//12Mhz
.H2L_sig(H2L_Sig),
.L2H_sig(L2H_Sig),
.Sys_reset(Sys_reset),
.Pin_out(Pin_out)
);
endmodule
RTL视图
仿真结果
其中Q_Sig为模拟产生按键抖动
本文介绍了如何使用Verilog实现按键消抖功能,通过Quartus II 13和ModelSim-Alter仿真软件进行验证。主要内容包括vr_key_module模块的设计,该模块用于模拟按键抖动;顶层模块和debounce模块的构建;RTL视图展示以及仿真结果分析,其中Q_Sig信号模拟了按键抖动的状态变化。完整工程源码可在作者的GitHub仓库中找到。
182

被折叠的 条评论
为什么被折叠?



