module key_debounce(
input clk,
input rst_n,
input key,
output reg key_flag,
output reg key_value
);
reg key_reg;
reg [19:0] cnt;
always @(posedge clk or negedge rst_n) begin
if(!rst_n) begin
cnt <= 0;
key_reg <= 1;
end
else begin
key_reg <= key;
if(key_reg != key)
cnt <= 20'd100000;
else
if(cnt > 0)
cnt <= cnt - 1;
else
cnt <= cnt;
end
end
always @(posedge clk or negedge rst_n) begin
if(!rst_n) begin
key_flag <= 0;
key_value <= 1;
end
else begin
if(cnt==20'd1) begin
key_flag <= 1;
key_value <= key;
end
else begin
key_flag <= 0;
key_value <= key_value;
end
end
end
endmodule
按键消抖代码
于 2023-06-01 11:52:15 首次发布