module Debounce #
(parameter KEY_WIDTH = 1,//按键个数
parameter CNT_NUM = 19'd240000 //20ms的计数
)
(
input clk, //system clock
input rst_n, //system reset
input [KEY_WIDTH-1:0] key, //button input,按键输入
output reg [KEY_WIDTH-1:0] key_edge, //按键消抖
output wire[KEY_WIDTH-1:0] key_pulse, //Debounce pulse output ,按键脉冲输出
output reg [KEY_WIDTH-1:0] key_state, //Debounce state output,按键状态输出
output [10:0] empty
);
assign empty = 11'h7ff;
reg [KEY_WIDTH-1:0] key_r,key_r_pre;
always @(posedge clk or negedge rst_n)
if (!rst_n) begin
key_r <= {KEY_WIDTH{1'b1}};
key_r_pre<= {KEY_WIDTH{1'b1}};
end
else begin
key_r <= key;key_r_pre <= key_r;
end
//Detect the edge of key