欢迎来到天天文库
浏览记录
ID:57065991
大小:630.69 KB
页数:6页
时间:2020-07-31
《免毛刺时钟切换电路设计方法.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、免毛刺时钟切换电路设计方法基于网上资料整理,并进一步作了分析。这篇文章讲述了时钟切换的时候毛刺(glitch)带来的危害,以及如何设计防止毛刺发生的时钟切换电路。但是没有讲到电路设计的构思从何而来,大家看了之后知道直接用这个电路,但是假如不看这篇文章,自己从头设计还是无从下手。在这里,我换另外一个角度,通过电路设计技巧来阐述防毛刺时钟切换电路的设计思路。希望看过之后,不用参考文章就能够自己设计出这个电路。对于一个时钟切换电路,输入两个异步时钟clk0、clk1,以及一个选择信号sel。(1)假设不考虑g
2、litch,直接使用Mux就可以完成切频。电路如下:由于clk0/clk1/sel之间是异步关系,时钟切换会发生在任意时刻,有一定的概率会发生glitch.glitch的危害文章里已经详述,这里不再重复。Glitch可能导致无法满足setup或hold时序要求而导致寄存器输出为不定态。(2)由于sel和clk0和clk1都是不同步的,我们可以从sel同步的方向入手,假如sel需要和clk0和clk1进行同步,那么sel必须分成两路,一个和clk0同步,一个和clk1同步,同步之后的sel信号再和clk0
3、/clk1gating起来,就可以让问题简单化。为了将sel分成两路,并且clk0/clk1需要分别gating,那么可以将mux逻辑用and/or设计出来,如下:当然此Mux电路还可以用两个or加上一个and来实现,都可以。注意G0和G1两点就是分别对clk0和clk1进行gating.将来会在G0/G1点插入同步DFF.(3)将上面电路拆开成两部分,一部分电路通过sel产生sel+和sel-两路,另一部分电路是gatingmux电路,如下:只需要将sel-接上G0,sel+接上G1就是一个mux电路
4、。将电路分开,是为了后续技巧性的功能替换。(4)将part0电路换成同样功能的带反馈的组合电路(为何要这样做,属于电路设计直觉和技巧。原因有2。其一,可以防抖。以part0_a为例,Sel从1到0的跳变,若仅为非常短的glitch,则可能sel+还来不及从1到0跳变,故sel-也保持为0,从而防止了输出因glitch而抖动。其二,利用反馈,让时钟切换按照安全的顺序,即先关闭当前时钟,再打开目标时钟。而不管关闭还是使能,都必须保证当前时钟或目标时钟的使能信号的跳变都是分别在时钟为低电平期间进行的,防止产生
5、时钟glitch。详细分析参见下文。)。最常见带反馈的电路是RS触发器,因此可以将part0换成如下电路。(5)将part0_a或者part0_b替换part0电路,功能不变。如下:不过,此时插入同步DFF的地方就多了一个选择,如果直接在G0,G1插入同步DFF,clk0和clk1的gating时间先后顺序不确定,还是有可能发生毛刺。而在s0和s1处插入同步DFF,正好利用反馈,让时钟切换按照安全的顺序进行:(1)先gating住之前选择的时钟如下图,即通过在S1和S0插入两级DFF,保证:切换时钟时,
6、如从clk1切换到clk0时,sel从1到0跳变,S1=0,经两级DFF同步(后一级其实可以选用clkgatinglatch),G1才为0,并gating住之前选择的时钟clk1(即关停,hold住为0)。(2)然后再放开将要选择的时钟紧接上例,G1=0之后,S0才为1,即保证clk已被关停。因clk1和clk0为异步时钟,经两级同步后,G0才置为1,即所谓的“放开将要选择的时钟”。在(1)和(2)之间,输出时钟clk_out一直都是无效状态(对于2and+1or的mux来说,无效状态就是0)。(2)结
7、束后,即G0被置起后,才真正完成时钟的切换。(6)按照上面的分析,得到电路如下:注意几点:(1)对s0插入的DFF需要用clk0作为时钟,对于s1插入的DFF需要用clk1作为时钟。(2)后一级的DFF必须使用clock下降沿,因为是用AND门进行gating(如果用上升沿,则更容易出现毛刺)。如果换成2个OR+1个AND的MUX,则必须用上升沿。(3)必须插入两级DFF防止metalstable,前一级可以用上升沿,也可以用下降沿,用上升沿是为了节省时间。(4)所有的DFF复位值都是0,即让clk_o
8、ut处于无效状态。(5)必须满足先gating后放开的顺序,如果不满足,可以在G0/G1处各插入一个反相器。(用part0_b搭配part1的时候需要插入反相器,如下图)(6)搭配不同的part0电路和part1电路,经过稍许修改,都可以完成防毛刺切频电路的设计。甚至其他的一些变化。本质上都是:1)利用RS触发器,让时钟切换按照安全的顺序进行,即先关闭当前时钟,再打开目标时钟。2)Clk0和clk1是异步时钟,各自在RS触发器输出通道上的信
此文档下载收益归作者所有