毛刺与亚稳态.doc_第1页
毛刺与亚稳态.doc_第2页
毛刺与亚稳态.doc_第3页
毛刺与亚稳态.doc_第4页
毛刺与亚稳态.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毛刺与亚稳态毛刺建立时间和保持时间图1建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(hold time)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间, 如果保持时间不够,数据同样不能被打入触发器。 如图1。 数据稳定传输必须满足建立和保持时间的要求,当然在一些情况下,建立时间和保持时间的值可以为零。 PLD/FPGA开发软件可以自动计算两个相关输入的建立和保持时间(如图2)竞争和冒险几乎所有关于数字电路的教材,都会提到数字电路中的竞争和冒险问题,但是这个问题往往被我们忽略。我们可以先来回顾一下关于竞争和冒险的一些基本概念。PLD内部毛刺产生的原因我们在使用分立元件设计数字系统时,由于PCB走线时,存在分布电感和电容,所以几纳秒的毛刺将被自然滤除,而在PLD内部决无分布电感和电容,所以在PLD/FPGA设计中,竞争和冒险问题将变的较为突出。FPGA中的冒险现象信号在FPGA器件内部通过连线和逻辑单元时,都有一定的延时。延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺、 工作电压、温度等条件的影响。信号的高低电平转换也需要一定的过渡时间。由于存在这两方面因素,多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑 的输出有先后顺序,并不是同时变化,往往会出现一些不正确的尖峰信号,这些尖峰信号称为毛刺。如果一个组合逻辑电路中有毛刺出现,就说明该电路存 在冒险。(与分立元件不同,由于PLD内部不存在寄生电容电感,这些毛刺将被完整的保留并向下一级传递,因此毛刺现象在PLD、FPGA设计中尤为突 出)图6.21给出了一个逻辑冒险的例子,从图6.22的仿真波 形可以看出,A、B、C、D四个输入信号经过布线延时以后,高低电平变换不是同时发生的,这导致输出信号OUT出现了毛刺。(我们无法保证所有连 线的长度一致,所以即使四个输入信号在输入端同时变化,但经过PLD内部的走线,到达或门的时间也是不一样的,毛刺必然产生)。可以概括的讲,只要输入信 号同时变化,(经过内部走线)组合逻辑必将产生毛刺。 将它们的输出直接连接到时钟输入端、清零或置位端口的设计方法是错误的,这可能会导致严重的后果。 所以我们必须检查设计中所有时钟、清零和置位等对毛刺敏感的输入端口,确保输入不会含有任何毛刺图6.21 存在逻辑冒险的电路示例图6.22 图6.21所示电路的仿真波形冒险往往会影响到逻辑电路的稳定性。时钟端口、清零和置位端口对毛刺信号十分敏感,任何一点毛刺都可能会使系统出错,因此判断逻辑电路中是否存在冒险以及如何避免冒险是设计人员必须要考虑的问题。判断一个逻辑电路在某些输入信号发生变化时是否会产生冒险,首先要判断信号是否会同时变化,然后判断在信号同时变化的时候,是否会产生冒险,这可以通过逻辑函数的卡诺图或逻辑函数表达式来进行判断。对此问题感兴趣的读者可以参考有关脉冲与数字电路方面的书籍和文章。如何处理毛刺我们可以通过改变设计,破坏毛刺产生的条件,来减少毛刺的发生。例如,在数字电路设计中,常常采用格雷码计数器取代普通的二进制计数器,这是因为格雷码计数器的输出每次只有一位跳变,消除了竞争冒险的发生条件,避免了毛刺的产生。毛刺并不是对所有的输入都有危害,例如D触发器的D输入端,只要毛刺不出现在时钟的上升沿并且满足数据的建立和保持时间,就不会对系统造成危害,我们可以说D触发器的D输入端对毛刺不敏感。 根据这个特性,我们应当在系统中尽可能采用同步电路,这是因为同步电路信号的变化都发生在时钟沿,只要毛刺不出现在时钟的沿口并且不满足数据的建立和保持时间,就不会对系统造成危害。 (由于毛刺很短,多为几纳秒,基本上都不可能满足数据的建立和保持时间)以 上方法可以大大减少毛刺,但它并不能完全消除毛刺,有时,我们必须手工修改电路来去除毛刺。我们通常使用采样的方法。 一般说来,冒险出现在信号发生电平转换的时刻,也就是说在输出信号的建立时间内会发生冒险,而在输出信号的保持时间内是不会有毛刺信号出现的。如果在输出 信号的保持时间内对其进行采样,就可以消除毛刺信号的影响。有两种基本的采样方法:一种方法是在输出信号的 保持时间内,用一定宽度的高电平脉冲与输出信号做逻辑与运算,由此获取输出信号的电平值。图6.23说明了这种方法,采样脉冲信号从输入引 脚SAMPLE引入。从图6.24的仿真波形上可以看出,毛刺信号出现在TEST引脚上,而OUT引脚上的毛刺已被消除了.图6.23 消除毛刺信号的方法之一图6.24 图6.23所示电路的仿真波形上 述方法的一个缺点是必须人为的保证sample信号必须在合适的时间中产生,另一种更常见的方法是利用D触发器的D输入端对毛刺信号不敏感的特点,在输出 信号的保持时间内,用触发器读取组合逻辑的输出信号,这种方法类似于将异步电路转化为同步电路。 图6.25给出了这种方法的示范电路,图6.26是仿真波形。图6.25 消除毛刺信号方法之二图6.26 图6.25所示电路的仿真波形在仿真时,我们也可能会发现在FPGA器件对外输出引脚上有输出毛刺,但由于毛刺很短,加上PCB本身的寄生参数,大多数情况下,毛刺通过PCB走线,基本可以自然被虑除,不用再外加阻容滤波。如 前所述,优秀的设计方案,如采用格雷码计数器,同步电路等,可以大大减少毛刺,但它并不能完全消除毛刺。 毛刺并不是对所有输入都有危害,例如D触发器的D输入端,只要毛刺不出现在时钟的上升沿并且满足数据的建立和保持时间,就不会对系统造成危害。因此我们可 以说D触发器的D输入端对毛刺不敏感。但对于D触发器的时钟端,置位端,清零端,则都是对毛刺敏感的输入端,任何一点毛刺就会使系统出错,但只要认真处 理,我们可以把危害降到最低直至消除。下面我们就对几种具体的信号进行探讨。时钟信号最关键的信号之一,有专门的论述,请参阅关于时钟问题的探讨清除和置位信号 清除和置位信号要求象对待时钟那样小心地考虑它们,因为这些信号对毛刺也是非常敏感的。正如使用时钟那样,最好的清除和置位是从器件的引脚单直接地驱动。 有一个主复位Reset引脚是常用的最好方法,主复位引脚给设计项目中每个触发器馈送清除或置位信号。几乎所有PLD器件都有专门的全局清零脚和全局置 位。如果必须从器件内产生清除或置位信号,则要按照“门控时钟”的设计原则去建立这些信号,确保输入无毛刺。 若采用门控清除或者门控置位,则单个引脚或者触发器作为清除或置位的源,而有其它信号作为地址或控制线。在清除或复位的有效期间,地址或控制线必须保持稳定图4213示出4个容许的清除和复位配置的实例。决不能用多级逻辑或包含竞争状态单级逻辑产生清除或置位信号。更详细的考虑见4.25节“竞争状态”。组合逻辑输出 当PLD输出引脚给出系统内其它部分的边沿敏感信号或电平敏感信号时,这些出信号必须象内部时钟、清除和置位信号一样小心地对待。只要可能就应在PLD输出端寄存那些对险象敏感的组合输出。如果你不能寄存险象敏感的输出,则应符合“门控时钟”中讨论的门控时钟的条件。决不能用多级逻辑驱动毛刺敏感的输出。异步输入信号 按照定义,异步输入不是总能满足(它们所馈送的触发器的)建立和保持时间的要求。因此,异步输入常常会把错误的数据锁存到触发器,或者使触发器进入亚稳定的状态,在该状态下,触发器的输出不能识别为l或0。如果没有正确地处理,亚稳性会导致严重的系统可靠性问题。 图42.14示出具有异步信号控制使能输入的二进制计数器。当使能输入违反计数;的建立时间或保持时间的约束条件时,计数器的每一位会有错误的动作。一 位在加法:数器而另一位在保持状态,造成计数器进入无效状态。此外,各位中的任何一位都可1变成亚稳定的,使电路的其它部分出现各种问题。 采用附加触发器同步使能信号的方法可保证不违反计数器的建立时间,从而解决可靠性的问题。图4215示出一种同步化的方法。虽然同步触发器仍会感受到 亚稳性,但它在下一个时钟边沿之前是稳定的。通常,为在EPLD中避免亚稳性问题,决不能把一个异步信号输出到器件内两个或更多的触发器中。同步异步输入 的另一种方法示于图4216。输入驱动一个触发器的时钟,该触发器的数据输入接到Vcc。这个电路对于检测短于一个时钟周期的异步事件是有用的。寄存异步输入信号亚 稳定状态。图4.410示出了一个具有异步输入的状态机。图乙410 带有异步输入的状态机图44。1l表明了如何通过增加输入寄存器,以确保满足状态机所要求的建立时间和保持时间。虽然增加的寄存器仍然要面对可能出现的 c违反建立和保持时间的现象,但是已防止状态寄存器进入亚稳态,状态机也不会进入未定义的状态亚稳态异步复位相比同步复位: 1. 通常情况下(已知复位信号与时钟的关系),最大的缺点在于异步复位导致设计变成了异步时序电路,如果复位信号出现毛刺,将会导致触发器的误动作,影响设计的稳定性。2. 同时,如果复位信号与时钟关系不确定,将会导致亚稳态情况的出现。下面先给出一个例子,然后就亚稳态进行重点讨论。Figure 1 shows an asynchronous race condition where a clock signal is used to reset a flip-flop. When SIG2 is low, the flip-flop is reset to a low state. On the rising edge of SIG2, the designer wants the output to change to the high state of SIG1. Unfortunately, since we dont know the exact internal timing of the flip-flop or the routing delay of the signal to the clock versus the reset input, we cannot know which signal will arrive first - the clock or the reset. This is a race condition. the clock rising edge appears first, the output will remain low. If the reset signal appears first, the output will go high. A slight change in temperature, voltage, or process may cause an ASIC that works correctly to suddenly work incorrectly.亚稳态的定义(说明):在 Howard Johnson 的High Speed Digital Design: A Handbook of Black Magic一书中,专门就逻辑电路的亚稳态作了专门的分析。由于 timing margine 不够,电路的输入没有能够上到所需要的逻辑电平高度,导致逻辑器内部不得不花费额外的时间使得输出达到所需的稳定逻辑状态,这个额外的时间,我们也叫作决断时间(resolution time)。在 Johnson举的例子里,逻辑器件的逻辑电平是用电容来维持的,如果时序不够,就好像给电容充电不足。Howard Johnson 在书中(P123 页3.11.2)用一个 flip-flop 的例子来说明亚稳态(metastable behavior)。书中用一个 amplifier,两个 switch,一个电容来模拟flip-flop 的工作状态。电容用来保存电路的逻辑电平,两个 switch 状态的改变可以模拟数据的输入和 flip-flop 的工作状态。在flip-flop开始翻转之前,输入数据的逻辑电平存储在电容里,然后flip-flop通过一个switch S1断开与输入端的连接,同时通过 amplifier(带有一个正反馈环)开始进行内部的翻转机制。从输入端 switch S1断开,和正反馈环上的 switch S2闭合开始,amplifier 就处于一个幂指数形式的中间态,或者说是不稳定态(形象地说就是“工作中”),可以用如下式子表达:V(out)=V(in)expkt。其中 V(in)表示输入逻辑的电平,V(out)表示输出的逻辑电平。k 是一个时间常数,它和 amplifier 的带宽以及正反馈环路有关。我们看到,如果 flip-flop 在用电容对输入电压采样的时间过短,也就是所谓的时序不够,就会导致 V(in)的值很小,对于 flip-flop 就需要花很长的时间使得输出逻辑 V(out)达到标准电平,也就是说电路处于中间态的时间变长,使得电路“反应”变迟钝。这就是我们所说的“亚稳态”。从 Johnoson 的一系列试验可以看出,随着 timing margine 不足程度的加深,逻辑电路“反应”会越来越慢,当超过一定的极限时候,逻辑电路就没有输出。可以说,电路亚稳态的存在,会给时序设计带来很多连锁反应。因此 ,对于高速逻辑电路的设计,充分的 timing margine 是必需的。以上是个人的一点体会心得,相关的理论分析和实例可以参阅 Howard Johnson的书。 亚稳态在设计中的问题分析1. 亚稳态与设计可靠性设计数字电路时大家都知道同步是非常重要的,特别当要输入一个信号到一个同步电路中,但是该信号由另一个时钟驱动时,这是要在接口处采取一些措施,使输入的异步信号同步化,否则电路将无法正常工作,因为输入端很可能出现亚稳态(Metastability),导致采样错误。这里我们对亚稳态的起因、危害、对可靠性的影响和消除仿真做一些介绍。2. 亚稳态发生的原因在同步系统中,如果触发器的 setup time / hold time 不满足,就可能产生亚稳态,此时触发器输出端 Q 在有效时钟沿之后比较长的一段时间处于不确定的状态,在这段时间里 Q 端会出现毛刺、振荡、或固定在某一电压值,而不一定等于数据输入端 D 的值。这段时间称为决断时间(resolution time)。经过 resolution time 之后 Q端将稳定到 0 或1上,但是究竟是0 还是 1,这是随机的,与输入没有必然的关系。亚稳态实质是介于”0”1”电平之间的一个状态。亚稳态是 FF的一个固有特性。正常采样也会有一个亚稳态时间。当建立保持时间满足时,FF 在经历采样、亚稳态后,进入一个正确的状态。如果建立保持时间不满足,那么FF会有一个相当长的亚稳态时间,最后随机进入一个固定态。3. 亚稳态的危害由于输出在稳定下来之前可能是毛刺、振荡、固定的某一电压值,因此亚稳态除了导致逻辑误判之外,输出 01 之间的中间电压值还会使下一级产生亚稳态,即导致 meta. stability的传播。逻辑误判(由于组合逻辑的 race,导致总线状态的不稳定)有可能通过电路的特殊设计减轻危害(如异步 FIFO中 Gray码计数器的作用,一次只变化一位),而亚稳态的传播则扩大了故障面,难以处理。4. 亚稳态的简单解决办法只要系统中有异步元件,亚稳态就是无法避免的,因此设计的电路首先要减少亚稳态导致错误的发生,其次要使系统对产生的错误不敏感。前者要靠同步来实现,而后者根据不同的设计应用有不同的处理办法。用同步来减少亚稳态发生机会的典型电路如图 1 所示。图 1 两级同步化电路在图 1 中,左边为异步输入端,经过两级触发器同步,在右边的输出将是同步的,而且该输出基本不存在亚稳态。其原理是即使第一个触发器的输出端存在亚稳态,经过一个 CLK 周期后,第二个触发器 D 端的电平仍未稳定的概率非常小,因此第二个触发器 Q 端基本不会产生亚稳态。注意,这里说的是“基本”,也就是无法“根除”,那么如果第二个触发器 Q出现了亚稳态会有什么后果呢?后果的严重程度是由你的设计决定的,如果系统对产生的错误不敏感,那么系统可能正常工作,或者经过短暂的异常之后可以恢复正常工作,例如设计异步 FIFO时使用格雷码计数器当读写地址的指针就是处于这方面的考虑。如果设计上没有考虑如何降低系统对亚稳态的敏感程度,那么一旦出现亚稳态,系统可能就崩溃了。5. 亚稳态与系统可靠性使用同步电路以后,亚稳态仍然有发生的可能,与此相连的是平均故障间隔时间MTBF(mean time between failure),亚稳态的发生概率与时钟频率无关,但是 MTBF与时钟有密切关系。 有文章提供了一个例子,某一系统在 20MHz 时钟下工作时,MTBF约为 50年,但是时钟频率提高到 40MHz 时,MTBF 只有 1 分钟!可见降低时钟频率可以大大减小亚稳态导致系统错误的出现,其原因在于,时钟周期如果尽可能的大于 resolution time 可减小亚稳态传递到下一级的机会,提高系统

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论