上一篇写了一个按键消抖,按键消抖需要一个计数器。可是有些信号是不需要这么负责的,仅仅是抖动而已。于是我在上一篇博文的基础上做了一点修改,于是有了这个信号消抖的程序
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攻城狮之家