免毛刺时钟切换电路设计方法

上传人:简****9 文档编号:101106634 上传时间:2019-09-26 格式:PDF 页数:6 大小:601.24KB
返回 下载 相关 举报
免毛刺时钟切换电路设计方法_第1页
第1页 / 共6页
免毛刺时钟切换电路设计方法_第2页
第2页 / 共6页
免毛刺时钟切换电路设计方法_第3页
第3页 / 共6页
免毛刺时钟切换电路设计方法_第4页
第4页 / 共6页
免毛刺时钟切换电路设计方法_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《免毛刺时钟切换电路设计方法》由会员分享,可在线阅读,更多相关《免毛刺时钟切换电路设计方法(6页珍藏版)》请在金锄头文库上搜索。

1、免毛刺时钟切换电路设计方法 基于网上资料整理,并进一步作了分析。 这篇文章讲述了时钟切换的时候毛刺(glitch)带来的危害,以及如何设计防止毛刺发生的时 钟切换电路。但是没有讲到电路设计的构思从何而来,大家看了之后知道直接用这个电路, 但是假如不看这篇文章,自己从头设计还是无从下手。 在这里,我换另外一个角度,通过电路设计技巧来阐述防毛刺时钟切换电路的设计思路。希 望看过之后,不用参考文章就能够自己设计出这个电路。 对于一个时钟切换电路,输入两个异步时钟 clk0、clk1,以及一个选择信号 sel。 (1) 假设不考虑 glitch,直接使用 Mux 就可以完成切频。电路如下: 由于 cl

2、k0/clk1/sel 之间是异步关系,时钟切换会发生在任意时刻,有一定的概率会发生 glitch. glitch 的危害文章里已经详述,这里不再重复。 Glitch 可能导致无法满足 setup 或 hold 时序要求而导致寄存器输出为不定态。 (2) 由于 sel 和 clk0 和 clk1 都是不同步的,我们可以从 sel 同步的方向入手,假如 sel 需要 和 clk0 和 clk1 进行同步,那么 sel 必须分成两路,一个和 clk0 同步,一个和 clk1 同步, 同步之后的 sel 信号再和 clk0/clk1 gating 起来,就可以让问题简单化。为了将 sel 分成两 路

3、,并且 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) 将 par

4、t0 电路换成同样功能的带反馈的组合电路(为何要这样做,属于电路设计直觉和 技巧。原因有 2。其一,可以防抖。以 part0_a 为例,Sel 从 1 到 0 的跳变,若仅为非常短 的 glitch, 则可能 sel+还来不及从 1 到 0 跳变, 故 sel-也保持为 0, 从而防止了输出因 glitch 而抖动。其二,利用反馈,让时钟切换按照安全的顺序,即先关闭当前时钟,再打开目标时 钟。 而不管关闭还是使能, 都必须保证当前时钟或目标时钟的使能信号的跳变都是分别在时 钟为低电平期间进行的,防止产生时钟 glitch。详细分析参见下文。)。最常见带反馈的电 路是 RS 触发器,因此可以将

5、part0 换成如下电路。 (5) 将 part0_a 或者 part0_b 替换 part0 电路,功能不变。如下: 不过,此时插入同步 DFF 的地方就多了一个选择, 如果直接在 G0, G1 插入同步 DFF, clk0 和 clk1 的 gating 时间先后顺序不确定,还是有可能发生毛刺。而在 s0 和 s1 处插入同步 DFF, 正好利用反馈,让时钟切换按照安全的顺序进行: (1) 先 gating 住之前选择的时钟 如下图,即通过在 S1 和 S0 插入两级 DFF,保证:切换时钟时,如从 clk1 切换到 clk0 时, sel 从 1 到 0 跳变, S1=0, 经两级 DF

6、F 同步 (后一级其实可以选用 clk gating latch) , 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)结束后,即 G0 被置起后,才真正完成时钟的切换。 (6) 按照上面的分析,得到

7、电路如下: 注意几点: (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 后放开的顺

8、序,如果不满足,可以在 G0/G1 处各插入一个反相器。 (用 part0_b 搭配 part1 的时候需要插入反相器,如下图) (6)搭配不同的 part0 电路和 part1 电路,经过稍许修改,都可以完成防毛刺切频电路的设 计。 甚至其他的一些变化。本质上都是: 1) 利用 RS 触发器,让时钟切换按照安全的顺序进行,即先关闭当前时钟,再打开目标时 钟。 2) Clk0 和 clk1 是异步时钟,各自在 RS 触发器输出通道上的信号需同步后再使用。区别 以上的示例,可增加同步 DFF 至 23 级。 3) 最后一个 DFF 和与门,本质上是一个 clk gating cell。 如下图,针对 2)和 3)作了标注。 Clock gating latch Clock gating latch 可增加为2级DFF同 步电路 可增加为2级DFF同 步电路 学霸版实现电路如下图: sel clk1 clk0 clkout Clk gating cell Clk gating cell 如上图,sel=0,选择 clk0;sel=1,选择 clk1。DFF 增加至 3 级,其中前两 级的同步输出,分别作为 clk gating cell 的使能端输入。同步 + clk gating + RS 触发器,三种手段实现 glitch free 时钟切换电路。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号