网站大量收购独家精品文档,联系QQ:2885784924

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

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
免毛刺时钟切换电路设计方法

免毛刺时钟切换电路设计方法 基于网上资料整理,并进一步作了分析。 这篇文章讲述了时钟切换的时候毛刺(glitch)带来的危害,以及如何设计防止毛刺发生的时 钟切换电路。但是没有讲到电路设计的构思从何而来,大家看了之后知道直接用这个电路, 但是假如不看这篇文章,自己从头设计还是无从下手。 在这里,我换另外一个角度,通过电路设计技巧来阐述防毛刺时钟切换电路的设计思路。希 望看过之后,不用参考文章就能够自己设计出这个电路。 对于一个时钟切换电路,输入两个异步时钟clk0、clk1 ,以及一个选择信号sel。 (1) 假设不考虑glitch ,直接使用Mux 就可以完成切频。电路如下: 由于clk0/clk1/sel 之间是异步关系,时钟切换会发生在任意时刻,有一定的概率会发生 glitch. glitch 的危害文章里已经详述,这里不再重复。 Glitch 可能导致无法满足setup 或 hold 时序要求而导致寄存器输出为不定态。 (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 电路换成同样功能的带反馈的组合电路(为何要这样做,属于电路设计直觉和 技巧。原因有2。其一,可以防抖。以part0_a 为例,Sel 从1 到0 的跳变,若仅为非常短 的glitch ,则可能sel+还来不及从1 到0 跳变,故sel-也保持为0 ,从而防止了输出因glitch 而抖动。其二,利用反馈,让时钟切换按照安全的顺序,即先关闭当前时钟,再打开目标时 钟。而不管关闭还是使能,都必须保证当前时钟或目标时钟的使能信号的跳变都是分别在时 钟为低电平期间进行的,防止产生时钟glitch。详细分析参见下文。)。最常见带反馈的电 路是 RS 触发器,因此可以将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 ,经两级DFF 同步(后一级其实可以选用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) 按照上面的分析,得到电路如下: 注意几点: (1) 对s0 插入的 DFF 需要用clk0 作为时钟, 对于s1 插入的DFF 需要用clk1 作为时钟。 (2) 后一级的 DFF 必须使用clock 下降沿,因为是用AND 门进行gating(如果用上升沿, 则更容易出现毛刺)。如果换成2 个OR+1 个AND 的MUX, 则必须用上升沿。 (3) 必须插入两级DFF 防止metal stable, 前一级可以用上升沿,也可以用下降沿

文档评论(0)

feixiang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档