verilog模拟仿真按键消抖

本文介绍了如何使用Verilog实现按键消抖功能,通过Quartus II 13和ModelSim-Alter仿真软件进行验证。主要内容包括vr_key_module模块的设计,该模块用于模拟按键抖动;顶层模块和debounce模块的构建;RTL视图展示以及仿真结果分析,其中Q_Sig信号模拟了按键抖动的状态变化。完整工程源码可在作者的GitHub仓库中找到。

用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为模拟产生按键抖动

完整工程请访问个人https://github.com/zsylov/vr_debounce

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值