实现方法如下:
//
//
// Engineer: mankaichuang
// Create Date: 2020/11/20 13:37:09
// Module Name: key_debounce
// Description: 一种按键去抖动的方法
//
//
`timescale 1ns / 1ps
module key_debounce(
input sys_clk, //系统时钟
input sys_rst_n, //复位
input key, //输入按键
output reg keyvalue, //按键值
output reg keyflag //按键成功标志
);
reg[19:0] cnt; //计数器
reg key_reg; //按键键值寄存器
always @(posedge sys_clk or negedge sys_rst_n) begin
if(!sys_rst_n) begin //复位的时候,按键值默认为1,计数器清零
key_reg <= 1'b1;
cnt <= 20'd0;
end
else begin //进入正常工作状态
if(key_reg != key) begin //如果key值变化了
// cnt <= 20'd100_0000; //设置计数初始值,下个时钟周期开始计数(一般消抖延时