专栏名称: EETOP
EETOP电子网(中国电子顶级开发网)是国内最顶级的电子行业工程师社区,涉及:嵌入式、智能硬件、半导体集成电路设计及制造等。 为您分享论坛精华内容、行业最新资讯、产品及技术 。 网址:www.eetop.cn bbs.eetop.cn
目录
相关文章推荐
51好读  ›  专栏  ›  EETOP

防止毛刺的时钟切换电路的设计思想

EETOP  · 公众号  · 硬件  · 2017-07-12 12:52

正文

以前有篇文章讲述了时钟切换的时候毛刺(glitch)带来的危害,以及如何设计防止毛刺发生的时钟切换电路。但是没有讲到电路设计的构思从何而来,大家看了之后知道直接用这个电路,但是假如不看这篇文章,自己从头设计还是无从下手。

在这里,换另外一个角度,通过电路设计技巧来阐述防毛刺时钟切换电路的设计思路。

希望看过之后,不用参考文章就能够自己设计出这个电路。

对于一个时钟切换电路,输入两个异步时钟 clk0、clk1,以及一个选择信号 sel。

(1)  假设不考虑 glitch,直接使用Mux 就可以完成切频。电路如下:


由于 clk0/clk1/sel 之间是异步关系,时钟切换会发生在任意时刻,有一定的概率会发生glitch. glitch 的危害文章里已经详述,这里不再重复。

(2) 由于 sel 和 clk0 和 clk1 都是不同步的,我们可以从 sel 同步的方向入手,假如 sel 需要和 clk0和 clk1 进行同步,那么 sel 必须分成两路,一个和 clk0 同步,一个和 clk1 同步,同步之后的 sel 讯号再和 clk0/clk1 gating 起来,就可以让问题简单化。为了将 sel 分成两路,并且 clk0/clk1 需要分别 gating, 那么可以将 mux 逻辑用and/or设计出来,如下:


当然此 Mux 电路还可以用两个 or 加上一个 and来实现,都可以。注意 G0 和 G1 两点就是分别对 clk0 和 clk1进行 gating. 将来会在 G0/G1 点插入同步 DFF.

(3)  将上面电路拆开成两部分,一部分电路通过 sel 产生 sel+和sel-两路,另一部分电路是 gating mux 电路, 如下:


只需要将 sel-接上 G0, sel+接上 G1 就是一个 mux电路。将电路分开,是为了后续技巧性的功能替换。

(4)  将 part0 电路换成同样功能的带反馈的组合电路(为何要这样做,属于电路设计直觉和技巧)。最常见带反馈的电路是 RS 触发器,因此可以将 part0 换成如下电路。


(5)  将 part0_a 或者part0_b 替换 part0 电路,功能不变。如下:


不过,此时插入同步DFF 的地方就多了一个选择,如果直接在G0, G1 插入同步 DFF, clk0 和 clk1 的 gating时间先后顺序不确定,还是有可能发生毛刺。而在 s0 和 s1 处插入同步

DFF, 正好利用反馈,让时钟切换按照安全的顺序进行:







请到「今天看啥」查看全文