最近在学到异步时钟切换不产生毛刺的做法,有这么一张图异步时钟切换不产生毛刺的做法
我们假设初始状态是select=1,此时A=1,B=1,C=1,D=0,A1=B1=C1=0,D1=1;可知此时时钟是选择的clk1;

我们假设初始状态是select=1,此时A=1,B=1,C=1,D=0,A1=B1=C1=0,D1=1;可知此时时钟是选择的clk1;
当select=0时,A=0,由于有D触发器的作用,所以C和B仍为1,且D=0;所以A1~D1不变,当clk1上升沿来临后,B=A=0,再来一个上升沿,C也等于0,D=1;clk1输出的与门被关闭,outclk=0(这是这张图的愿意,但其实这样做仍然无法避免毛刺,后面会解释);由于D=1且~select=1;A1=1;过两个clk0上升沿后clk0接替clk1输出,既outclk=clk0。这个方法通过D触发器的滤波达到去除毛刺想法是非常好的(原谅我学不久,虽然听过触发器可以用来滤波,不过还是想不出来这种点子),但是我得到的仿真结果(quartus+modelsim)却依然有毛刺