历史上的今天
返回首页

历史上的今天

今天是:2025年03月02日(星期日)

2018年03月02日 | 同步与异步复位以及相关的亚稳态状况与设计可靠性

2018-03-02 来源:eefocus

   异步复位 相比 同步 复位:

  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 don’t 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)。 

flip-flop 的例子

  书中用一个 amplifier,两个 switch,一个电容来模拟 flip-flop 的工作状态。电容用来保存电路的逻辑电平,两个 switch 状态的改变可以模拟数据的输入和 flip-flop 的工作状态。在flip-flop开始翻转之前,输入数据的逻辑电平存储在电容里,然后flip-flop通过一个switch S1断开与输入端的连接,同时通过 amplifier(带有一个正反馈环)开始进行内部的翻转机制。

  从输入端 switch S1断开,和正反馈环上的 switch S2闭合开始,amplifier 就处于一个幂指数形式的中间态,或者说是不稳定态(形象地说就是“工作中”),可以用如下式子表达:

  V(out)=V(in)exp[kt]。

  其中 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.  亚稳态的危害

  由于输出在稳定下来之前可能是毛刺、振荡、固定的某一电压值,因此亚稳态除了导致逻辑误判之外,输出 0~1 之间的中间电压值还会使下一级产生亚稳态,即导致 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 可减小亚稳态传递到下一级的机会,提高系统的 MTBF,如图 2 所示。

MTBF

  6.  总结

  亚稳态与设计可靠性有非常密切的关系,当前对很多设计来说,实现需要的功能并不困难,难的是提高系统的稳定性、可靠性,较小亚稳态发生的概率,并降低系统对亚稳态错误的敏感程度可以提高系统的可靠性。


  7.  Cures for metastability(摘自 johnson 所书)

   *  用反应更快的 flip-Flop,减少 metastability window。
    *  如图一,引入由同一时钟驱动的串接 DFF。

    *  降低采样频率,给 DFF 更多的时间避开 met astability window( 亚稳态 时间)。
    *  使用边沿变化快速的时钟信号。


  减少亚稳态出现的关键是器件使用比较好的工艺和时钟周期的余量大一些。好器件工艺的 resolution time会比较短,例如传统的 TTL 电路中,高速的 74F系列就比74LS好;时钟频率低一些,出现亚稳态时提供给输出稳定的时间也会多一些,这样可以减小亚稳态传播的机会。 同步 系统也存在亚稳态,但是相比异步系统来说,比较容易控制,只要 setup/hold time满足就可以,而对异步系统,这个简单的要求也不容易满足,这也是同步系统的优点之一。

  问题解答:

  处理异步输入时,可以使用 2级同步电路,为什么不用 3级或更多级别的电路呢?
答:2级从理论或实际使用都表明有足够的可靠性了,所以 3级没有必要。
 
  解释为什么第二个触发器 D端的电平仍未稳定的概率非常小:

  如果一个时钟周期>resolution time,即:使上一级寄存器有足够的时间摆脱亚稳态(满足了建立时间要求),但如果上一级 DFF 采样错误,那么下级 DFF 同样继承这个采样错误值,只是不会出现亚稳态,杜绝了亚稳态的传递。如果要稳定的正确采样,必须引入高速时钟,

  时钟频率为原数据频率的 3 倍以上,根据奈奎斯特采样定理需要两倍。


推荐阅读

史海拾趣

Captive Fastener公司的发展小趣事

随着环保意识的日益增强,Captive Fastener公司积极响应国家环保政策,推动生产方式的绿色转型。公司引进先进的环保生产设备和技术,减少生产过程中的污染排放。同时,公司还研发出可回收再利用的紧固件产品,为电子行业的可持续发展做出了贡献。

Deutsch公司的发展小趣事

Deutsch公司自创立之初,就注重技术创新和产品研发。在早期阶段,公司成功开发出一款具有突破性的电子元件,这款元件以其高性能和低成本迅速在市场上获得了认可。随着技术的不断进步,Deutsch公司不断推出创新产品,满足日益增长的市场需求。这些技术突破和产品创新不仅提升了公司的竞争力,也推动了整个电子行业的发展。

CSR plc(剑桥硅晶无线电)公司的发展小趣事

随着技术的不断进步和市场需求的日益多样化,CSR plc意识到单一的业务领域已无法满足公司的长远发展。于是,公司开始寻求多元化的发展道路。2007年,CSR plc成功收购了Nordnav Technologies和Cambridge Positioning Systems,开始进军GPS市场。这一战略转型不仅让公司的业务范围得到了极大的拓展,也使其在GPS领域取得了显著的成就。

芯邦(Chipsbank)公司的发展小趣事

为了进一步扩大业务规模,提升研发实力,芯邦科技于2023年成功在上交所科创板上市,并计划募资6亿元用于投建移动存储控制芯片等项目。这一举措不仅为芯邦提供了更多的资金支持,也为其未来的发展奠定了坚实的基础。

ADATA公司的发展小趣事

芯邦科技自成立以来,一直致力于半导体技术的研发与创新。在指纹识别领域,芯邦于2018年推出了业界首款超低成本、超低功耗的指纹识别控制芯片,该芯片集成了指纹传感器、算法处理器、蓝牙、主控和flash等模块,为指纹识别技术在非手机领域的广泛应用提供了强有力的技术支撑。这一创新不仅展示了芯邦在半导体设计领域的实力,也为其在指纹识别市场赢得了先机。

ACEINNA公司的发展小趣事

在全球半导体市场竞争日益激烈的背景下,芯邦科技面临着来自国际巨头的挑战。然而,公司凭借在半导体设计领域的深厚积累和不断创新的精神,逐步形成了自己的核心竞争力。同时,芯邦也积极寻求与国际合作伙伴的合作机会,共同推动半导体产业的发展。

以上五个故事简要概述了芯邦科技在电子行业中的发展起来的关键节点和里程碑事件。这些故事不仅展现了芯邦科技在技术创新、产品线拓展、资本运作、市场表现和国际竞争等方面的努力和成就,也预示着公司未来发展的广阔前景和无限可能。

问答坊 | AI 解惑

MATLAB第七课-向量图

compass指令@ [ 本帖最后由 gaoxiao 于 2009-6-16 22:59 编辑 ]…

查看全部问答>

HJ-2G AVR单片机学习笔记全部33课(配有视频教程)

HJ-2G AVR单片机学习笔记全部33课(配有视频教程) 第一部 1天入门AVR单片机学习笔记 第1课:AVR单片机学习基本流程 第2课: AVR单片机程序烧写方法 第3课:程序编写编译环境 第4课:简单C语言基础知识 第二部 10天学会AVR单片机学 ...…

查看全部问答>

multibin的magic number

最近在做multibin....但是我很困惑他的网络端口上读到的magic number是什么。。。是bin的B000FF.还是nb0的N000FF.multibin他的每个文件时跟NK.bin的格式一摸一样吗?…

查看全部问答>

AVR 对感应器实时数据采集保存,实现无线传输。

    正在学习AVR单片机C语言,想用单片机做一个小工具进行感应器触发时间采集和温度采集,时间最好能到ms级,存储数据格式为 2009-03-20-18:33:235, 23.4度, 每天有4000组数据,存在u盘上面(500)块,最终想做到用无线实时传输方式传 ...…

查看全部问答>

西安杨工c8051f单片机博客

欢迎使用我的产品,谢谢! 1. c8051f 单片机(c2 ,jtag)和at89s5x单片机(isp)二合一串口编程下载线,速度极快,支持3伏(c8051f 单片机),5伏(at89s5x单片机)电源,设计新颖,可靠稳定,成本低廉!!!目前通过实际验证可编程下载的芯片:c8051 ...…

查看全部问答>

定时器中断调试不出来,郁闷啊~

#include<msp430x44x.h>volatile int tick=0;//被不同线程访问void main(void){WDTCTL=WDTPW+WDTHOLD;//关看门狗IE2=BTIE;//使能基本定时器中断BTCTL=BTSSEL+BT_fCLK2_DIV256;//设置控制寄存器_EINT();//使能中断指令ENIT后面的指令总会被执行 ...…

查看全部问答>

RAW block 篇

Raw block memory 管理的优点是没有内存碎片,速度很快,缺点是只能分配固定长度的块大小。支持分配不到内存睡眠的机制。非常适合时间要求高的实时任务。 1        RAW_U16  raw_block_pool_create(MEM_POOL *pool_ ...…

查看全部问答>

TI 电源设计小贴士 22

欢迎来到电源设计小贴士!随着现在对更高效、更低成本电源解决方案需求的强调,我们创建了该专栏,就各种电源管理课题提出一些对您有帮助的小技巧。该专栏面向各级设计工程师。无论您是从事电源业务多年还是刚刚步入电源领域,您都可以在这里找到一 ...…

查看全部问答>

急,求一个c2000控制舵机转动的程序,拜托大家了

rt 我用的f28027 要实现控制八个舵机转动的程序 如果没有的话控制一个舵机的也可以。非常感谢!…

查看全部问答>

open1081 学习分享

本帖最后由 uncle13 于 2014-10-27 11:19 编辑 1. open1801MDK+Jlink开发环境搭建一、系统环境:PC(win8.1)、Jlink(mini jlink也可以)、开发工具MDK-ARM V5.10.0.0 这里重点强调下MDK版本,如果你和我的一样是V5.0,那么估计默认是无法使用 ...…

查看全部问答>