当检测到按键为低电平时 cnt_20ms
计数器开始计数,当检测到按键为高电平时
cnt_20ms
计数器清零,计数到最大值保持,计数到最大值减一时拉高一个标志信号,表明按键被按下。
reg [31:0] cnt_20ms_1;
always @(posedge clk or negedge rst_n) begin
if (rst_n == 1'b0) begin
cnt_20ms_1 <= 32'd0;
end
else if ( key1 == 1'b1 ) begin
cnt_20ms_1 <= 32'd0;
end
else if ( key1 == 1'b0 ) begin
if ( cnt_20ms_1 == 32'd999_999 ) begin
cnt_20ms_1 <= cnt_20ms_1;
end
else begin
cnt_20ms_1 <= cnt_20ms_1 + 32'd1;
end
end
always @(posedge clk or negedge rst_n) begin
if (rst_n == 1'b0) begin
key1_press <= 1'b0;
end
else if (cnt_20ms_1 == 32'd999_998) begin
key1_press <= 1'b1;
end
else begin
key1_press <= 1'b0;
end
end