上一篇写了一个按键消抖,按键消抖需要一个计数器。可是有些信号是不需要这么负责的,仅仅是抖动而已。于是我在上一篇博文的基础上做了一点修改,于是有了这个信号消抖的程序
module sig_nojitter (
clock ,
rst_n ,
sig_in,
sig_out
);
input clock ,rst_n ;
input sig_in ;
output reg sig_out ; reg [:] sig_reg ;
wire sig_dy ;
always @ (posedge clock or negedge rst_n)
if (!rst_n)
sig_reg <= 'd0 ;
else
sig_reg <= {sig_reg[:],sig_in} ;
// 稳定判定
assign sig_dy = (sig_reg[:] == sig_reg[:]) ? 'd1 : 1'd0 ; always @ (posedge clock or negedge rst_n)
if (!rst_n)
sig_out <= 'd0 ;
else if (sig_dy)
sig_out<= sig_reg[] ; endmodule
很简短的一个程序,可以过滤掉出现max 8个脉冲抖动的信号 —— 根据需要进行修改。
欢迎加入: FPGA广东交流群:162664354
FPGA开发者联盟: 485678884
微信公众号:FPGA攻城狮之家