zl程序教程

您现在的位置是:首页 >  其他

当前栏目

FPGA按键消抖(高级篇)

2023-03-14 22:57:56 时间

一. 硬件介绍


FPGA开发板

一个按键

一个led灯


二. 功能介绍


可以满足三种不同要求的消抖方式

通过led灯测试三种消抖方式


三. 消抖方式介绍


mode 0 : 按键按下消抖后,算一次。

mode 1 : 按键按下消抖后,抬起,算一次。

mode 2 : 按键按下消抖后,每隔一段时间,算一次。

通过下面这个mode参数可以在例化的时候,选择对应的模式。


//模式
//0   按下生效,抬起,算一次
//1   按下抬起,算一次
//2 按下后,一段时间算一次
parameter   mode = 2;


四. 测试top文件介绍


mode 0 : 按下的时候,led状态取反
mode 1: 按下,抬起的时候,led状态取反
mode 2: 按下,每隔一段时间,led状态取反
module top(
    input    clk,
    input    rst_n,
    
    
    
  input     key,
  output    led
);
wire    okey;
reg led_reg;
assign   led = led_reg;
always@(posedge clk or negedge rst_n)
begin
    if(rst_n == 1'b0)
  led_reg <= 1'b0;
    else if(okey == 1'b1)
  led_reg <= ~led_reg;
    else
  led_reg <= led_reg;
end
btn_dis_shake  #(
    .mode   (1)
)
btn_dis_shake_HP(
    .clk    (clk),
    .rst_n  (rst_n),  
  .ikey    (key),
  .okey     (okey)
);
endmodule

公众号:FPGA之旅