当前位置:

OFweek电子工程网

接口/总线/驱动/时钟/开关

正文

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

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

  OFweek电子工程网讯 以前有篇文章讲述了时钟切换的时候毛刺(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, 正好利用反馈,让时钟切换按照安全的顺序进行:

  (a)。 先 gating 住之前选择的时钟

  (b)。 然后再放开将要选择的时钟

  在(a)和(b)之间,输出时钟一直都是无效状态(对于2and + 1or 的 mux 来说,无效状态就是 0)

  (6) 按照上面的分析,得到电路如下:

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

  注意几点:

  (1) 对 s0插入的 DFF 需要用 clk0 作为时钟, 对于 s1插入的 DFF 需要用 clk1 作为时钟。

  (2)后一级的 DFF 必须使用 clock 下降沿,因为是用 AND 门进行 gating(如果用上升沿,则更容易出现毛刺)。如果换成 2 个 OR+1个 AND 的 MUX, 则必须用上升沿。

  (3)必须插入两级 DFF 防止 metal stable, 前一级可以用上升沿,也可以用下降沿,用上升沿是为了节省时间。

  (4)所有的 DFF 复位值都是 0,即让 clk_out 处于无效状态。

  (5)必须满足先 gating 后放开的顺序,如果不满足,可以在G0/G1 处各插入一个反相器。(用 part0_b搭配 part1 的时候需要插入反相器,如下图)

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

  (6)搭配不同的 part0电路和part1 电路,经过稍许修改,都可以完成防毛刺切频电路的设计。

责任编辑:Trista
免责声明: 本文仅代表作者个人观点,与 OFweek电子工程网 无关。其原创性以及文中陈述文字和内容未经本站证实, 对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅 作参考,并请自行核实相关内容。

我来说两句

(共0条评论,0人参与)

请输入评论

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

文章纠错
x
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码: