不一样的信号消抖——你们遇到的都是伪消抖

上一篇写了一个按键消抖,按键消抖需要一个计数器。可是有些信号是不需要这么负责的,仅仅是抖动而已。于是我在上一篇博文的基础上做了一点修改,于是有了这个信号消抖的程序

 1 module sig_nojitter (
 2                     clock ,
 3                     rst_n ,
 4                     sig_in,
 5                     sig_out
 6                     );
 7 input             clock ,rst_n ; 
 8 input             sig_in ; 
 9 output     reg        sig_out ; 
10 
11 reg     [7:0]     sig_reg ; 
12 wire             sig_dy ; 
13 always @ (posedge clock or negedge rst_n)
14     if (!rst_n)
15             sig_reg     <= 8'd0 ; 
16     else 
17             sig_reg     <= {sig_reg[6:0],sig_in} ; 
18 // 稳定判定
19 assign sig_dy = (sig_reg[7:4] == sig_reg[3:0]) ? 1'd1 : 1'd0 ; 
20 
21 always @ (posedge clock or negedge rst_n)
22     if (!rst_n)
23             sig_out     <= 1'd0 ; 
24     else  if (sig_dy)
25             sig_out<= sig_reg[7] ; 
26 
27 endmodule 

很简短的一个程序,可以过滤掉出现max 8个脉冲抖动的信号 —— 根据需要进行修改。

 

欢迎加入: FPGA广东交流群:162664354

      FPGA开发者联盟: 485678884

微信公众号:FPGA攻城狮之家

 

posted on 2016-08-29 15:30  清霜一梦  阅读(830)  评论(0编辑  收藏  举报