这是我在做测试实验时根据单片机的延时实现按键消抖思想写的FPGA的按键循环自加代码模块:
module key_add(clk,rst,count);
input clk;
input rst;
output reg [2:0]count;
reg [28:0]delay;
reg i;
parameter counter=20000000;
always@(posedge clk)
if(delay==counter)
begin
delay<=1'b0;
if(!rst)
begin
case(i)
1'b0:begin
if(count==1) begin count<=1'b0; i<=1'b1;end
else begin count<=count+1'b1;i<=1'b1;end
end
1'b1:count<=count;
default:count<=count;
endcase
end
else i<=1'b0;
end
else delay<=delay+1'b1;
endmodule