按键的抖动与消除,【Verilog HDL 训练】第 09 天(按键消抖)"/>
c语言实现按键的抖动与消除,【Verilog HDL 训练】第 09 天(按键消抖)
5月7日
按键防抖
1. 用verilog实现按键抖动消除电路,抖动小于15ms,输入时钟12MHz。
在编写Verilog代码之前,先分析下一些前提问题,首先是几个按键(1个,多个),我们以1个和三个为例;
其次是算下按键按下后计数多少后,采样按键值,这个需要简单的运算:输入时钟为12MHz,也就是大约80ns的周期,那么去除15ms的抖动,需要计数多少次呢?
经过计算,大约180000次,换成16进制为:2BF20,如此以来,计数器20位足够保险了。
有了以上的准备工作了,我们开始编写一个按键的按键消抖程序了:
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2019/05/07 19:29:37
// Design Name:
// Module Name: key
//
//
module key(
input clk,
input rst_n,
input sw_in,
output reg sw_out
);
//按键本身值为1,按下按键后键值为0.
reg sw_in_r0;
always @ (posedge clk or negedge rst_n) begin
if(!rst_n) begin
s
更多推荐
c语言实现按键的抖动与消除,【Verilog HDL 训练】第 09 天(按键消抖)
发布评论