-
信号通过传输线的传输后会引入毛刺(方波振铃效应):

-
可在信号输入数字电路解码之前进行滤波:
-
以下模块实现周期为2的去抖动位移寄存器:
bash
`timescale 1ns / 1ps
module FilterSig(
Clk,
nRst,
FiltSigIn,
FiltSigOut
);
input Clk, nRst;
input FiltSigIn;
output FiltSigOut;
reg [4:0] FiltSigInReg ;
always @(posedge Clk or negedge nRst)
if (!nRst) begin
FiltSigInReg <= 'd0 ;
end
else begin
FiltSigInReg <= {FiltSigInReg[3:0], FiltSigIn} ;
end
reg FiltSigOut ;
always @(posedge Clk or negedge nRst)
if (!nRst)
FiltSigOut <= 1'b0 ;
else if (FiltSigInReg[4:3] == 2'b11)
FiltSigOut <= 1'b1 ;
else if (FiltSigInReg[4:3] == 2'b00)
FiltSigOut <= 1'b0 ;
endmodule
- 以上的滤波位移寄存器时钟和解码滤波结果的时钟之间的关系:
- 最大滤除毛刺宽度 :
在连续 3 周期判定的逻辑下,如果输入信号上的高电平或低电平脉冲宽度小于 3 个Clk周期,它就绝不可能填满判定窗口,从而会被系统完全滤除。 - 时钟不能太快:如果时钟周期太短(频率太高),1个微小的毛刺就能维持 3 个时钟周期,滤波器就会把毛刺误当作有效信号放过去。 时钟不能太慢:如果时钟周期太长(频率太低),有效的信号可能还没来得及维持 3 个周期就结束了,系统会把有效信号当成毛刺滤掉。
- 时钟周期的定量关系 :设输入信号中需要滤除的电气噪声/机械抖动的最大持续时间为 T n o i s e T_{noise} Tnoise,输入信号的有效最小脉冲宽度为 T s i g T_{sig} Tsig。
T n o i s e 2 < T c l k < T s i g 3 \frac{T_{noise}}{2} < T_{clk} < \frac{T_{sig}}{3} 2Tnoise<Tclk<3Tsig
- 最大滤除毛刺宽度 :