原创 两种按键防抖动方法

2012-3-4 20:25 2325 8 8 分类: FPGA/CPLD

一、module key                /*此按键消抖方法,如果按键时间足够长的话会触发两次
                                     就像计算机的键盘按着不放会一直触发的,

                                     这也是符合人们习惯的,若用来驱动led,会出现闪烁状*/
(
 input clk_50Hz,
 input key_in,
 output key_out 
);
reg [2:0] cnt;
always@(posedge clk_50Hz)
begin
 if(!key_in)
  cnt<=cnt+1'b1;
 else
  cnt<=1'b0;
end
assign key_out=cnt[0]&&cnt[1]&&cnt[2];
endmodule

二、module key_jitter             /*此种消抖方法,使用3个D触发器,实现方  便                                  只有按键弹起,停止计数,适用性强,按键弹起,led灭*/
(
 input clk,
 input pink,
 output reg pink_out
);
reg [2:0] shifter; 
always @(posedge clk) 
begin 
 shifter[2:1]<=shifter[1:0]; 
 shifter[0]<=pink; 
end 
always @(posedge clk) 
begin 
 if(shifter[2:0]==3'b000) 
   pink_out<=1'b0; 
 else if(shifter[2:0]==3'b111) 
   pink_out<=1'b1; 
 else 
   pink_out<=pink_out; 
end 
endmodule
 

两种方法均需要适用较低的扫描频率

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
8
关闭 站长推荐上一条 /3 下一条