异步复位设计中的亚稳态问题及其解决方案田志明,杨军,罗岚(东南大学国家专用集成电路系统工程技术研究中心,南京 210096)
摘 要:尽管异步复位是一种安全可靠复位电路的方法,但如果处理不当的话,异步复位释放可能会导致亚稳态(metastability)的问题。本文分析了这个问题产生的原因和后果,给出了一种可能的解决方案,在设计中加入复位同步器逻辑和复位分配缓冲树。这种方法综合了同步复位设计与异步复位设计的优点,解决了异步复位设计中的亚稳态问题。
关键词:异步复位;亚稳态;平均无故障时间
1 引言
复位的问题是ASIC设计中一个基本而又重要的问题。设计者可以选择采用同步复位或是异步复位。同步复位将综合出轻音乐上的触发器,对设计门数有所节约,对基本周期的仿真器来说,在同步复位下工作要容易得多[3];同步复位中,时钟起到了过滤复位信号小毛刺的作用。然而,同步复位需要一个脉宽沿展器来保证复位信号有一定脉冲宽度,以确保时钟的有效沿能采样到[6];设计者必须既使用悲观的仿真器对比乐观的仿真器,在仿真的过程中,复位信号有可能会被X态掩盖;如果ASIC或FPGA含有内部三态总线,为防止内部三态总线在芯片加电时的竞争,同步复位的芯片必须有一个上电异步复位[2]。而这些又是异步复位的优势,异步复位最大的优点是,数据通路就可以不依赖于时钟而确保清洁可控。

然而,异步复位也有其固有的缺陷。异步复位设计的DFT(可测性设计)与STA(静态时序分析)的复杂性要高于同步复位设计;但异步复位中最严重的问题是,如果异步复位信号在触发器时钟有效沿附近“释放”(复位信号从有效变为无效)的话,可能会导致触发器输出的亚稳态[1]。本文分析了这个问题产生的原因和后果,给出了一种可能的解决方案。
2 异步复位的问题
许多设计者使用异步复位是因为喜欢这样的想法,通过复位将他们的电路完全置于一种可控的状态。然而很多设计者仅仅只是使用异步复位,忽略了可能产生的问题。他们在可控的仿真环境下进行复位测试,一切工作正常,然而真实的系统却会间歇性的出错。设计者常常低估了真实系统中(不可控环境)的复位信号“释放”问题。而这个问题可能导致芯片进入未知的亚稳态,从而让所有的复位都失效。
2.1 亚稳态产生与影响
如图1所示,trecovery(recovery time)指的是原本有效的异步复位信号释放(对低电平有效的复位来说就是上跳沿)与紧跟其后的第一个时钟有效沿之间所必须的最小时间。tremoval(removal time)指的是时钟有效沿与紧跟其后的原本有效的异步复位信号变得无效之间所必须的最小时间。如果异步复位信号的上跳沿(以低电平有效为例)落在trecovery与tremoval的窗口之内,触发器的输出端的值将是不确定的,可能是高电平,可能是低电平,可能处于高低电平之间,也可能处于震荡状态),并且在未知的时刻会固定到高电平或低电平。这种状态就称为亚稳态。反映到仿真模型中,输出端的值是不定态X。图中tclk-q是触发器时钟端到Q端的延时,tMET是保证亚稳态不传播到下一级所允许的亚稳态持续的最大时间。
在同步复位的电路中,不存在上述问题。而在异步电路中,因为外部的复位信号和内部的时钟之间是毫无时间关系的,因此recovery/removal冲突是必然的,亚稳态必定会发生。当一个信号被寄存器锁存时,如果数据信号和时钟之间不满足setup/hold时间,输出端也会出现亚稳态,这不在本文的讨论范围之内[4]。
亚稳态对电路的逻辑功能的影响是明显的。亚稳态对电路还有物理上的影响。在CMOS的工艺中,晶体管只有在输出翻转时才会处于导通状态,有较大的导通电流,在输入稳定在高电平或低电平时,晶体管是不导通的,此时只有很小的漏电流。因为亚稳态的电平可能处于高低电平之间,因此会使得后一级的晶体管处于导通状态,消耗大量能量。
2.2 亚稳态的评估
出现亚稳态的平均时间常用平均无故障时间MTBF(Mean Time Between Failures)来表示[5]:
对单个触发器的MTBF由以下公式给出:

式中,tMET是保证亚稳态不传播到下一级所允许的亚稳态持续的最大时间;C1和C2是与触发器性质有关的常数;fCLOCK是时钟频率;fRESET是异步复位信号的变换频率;由式(1)可见MTBF对tMET的变化非常敏感,在典型的情况下MTBF是以年为单位的[4]。

异步复位设计中的亚稳态问题及其解决方案 来自: 书签论文网www.shu1000.com  
式(1)估计得出的结果只是对单个触发器而言。如果采用如图2所示的异步复位设计,没有任何防止亚稳态的措施,情况将会怎样呢? 
假设整个ASIC中有N个异步复位的触发器,每个触发器的复位信号都是与时钟信号异步,那么每个触发器的MTBF都由式(1)得出,则整个芯片的平均无故障时间MTBFC将是:

以现在芯片的集成度,一个设计中可能包括上百万个触发器,即N-106,MTBF。将以秒为单位。可见采用如图2所示的异步复位,而不采取任何措施的话,亚稳态的影响将非常大。
3 问题的解决
如前所述,同步电路中的亚稳态完全可以避免。异步电路中的亚稳态无法回避,只能力求将影响降到可容忍的范围内。解决这个问题的方法是采用如图3所示的复位同步电路。 
论文异步复位设计中的亚稳态问题及其解决方案来自

在如图3所示,第一级主复位触发器数据端输入绑定在高电平,随着异步复位信号的撤销,输入端的时钟采样被允许,输出端再输出到第二级主复位触发器,再经过一级时钟同步,得到一个主复位信号masterrst_n。主复位信号再通过复位分配缓冲树到达设计中的各个目的寄存器与触发器。
为什么图3所示的同步器电路能解决异步复位的问题呢?这归结于以下两点:①复位同步器的使用将异步复位信号变成与时钟同步的复位信号,同时使用两级触发器组成复位同步器又使得同步器本身发生亚稳态的可能大大减少;②复位分配缓冲树的使用纠正了主复位信号传播到各目的触发器的传播延时差异,保证复位信号传播的一致;
3.1 复位同步器
复位同步器的作用是产生一个稳定的与时钟同步的复位信号。要得到与时钟同步的信号不难,关键在于如何保证信号的稳定,即确保亚稳态的影响降到可容忍的地步。这就是采用两级触发器组成同步器的原因,下面将两级触发器的亚稳态进行评估。
一级触发器的平均无故障时间,记为MTBF(1),已经由式(1)得出,对于两级触发器,具体的方法就是采用如图3所示的两级触发器设计。两级触发器的平均无故障时间MTBF(2)为:

所以,第二级寄存器的平均无故障时间为:

显然MTBF(2)远大于MTBF(1),如前所述,MTBF(1)以年为单位,若MTBF(1)为100a,则MTBF(2)大约为10 000a。实际上如果一个产品要量产的话MTBF必须足够的大[4]。而采用两级触发器组成的复位同步器基本上将亚稳态问题降到了可以容忍的地步。
3.2 复位分配缓冲树
如图3所示,经由复位同步器产生出来的信号(主复位信号masterrst_n)已经是于时钟同步的信号了。但如何确保它到达芯片中的各个目的触发器时仍能保持与时钟的同步而不至产生亚稳态呢?这就需要复位分配缓冲树来保证。
复位分配缓冲树(或称复位树)与时钟树类似,除了增加驱动能力之外,主要目的在于平衡各个触发器复位端节点间的路径延。但与时钟信号相比,复位信号之间的延时差(skew)不是很严格,只要主复位信号的延迟足够短,使得复位信号在一个时钟周期之内传播到所有的负载端,就满足各个目标寄存器和触发器的恢复时间。
通过复位树保证设计内部除了主触发器之外的所有触发器的正确复位,因而整个芯片的平均无故障时间,

对比式(2),可以看出芯片的平均无故障时间大大减少了,故障的发生率降到了可以容忍的地步。
3.3 实例
在我们最近设计的一块嵌入式微处理器芯片中就采用了如上所述的异步复位策略,如图4所示。值得注意的是主触发器的时钟并没有直接引入时钟树根部的时钟,而是采用了稍后的时钟。这样做的目的是为了让主复位信号能够尽快的到达设计中的各个节点,易于保证其在一个时钟周期内完成[1]。 
4 结论

异步复位设计中的亚稳态问题及其解决方案 来自: 书签论文网www.shu1000.com  
尽管异步复位是一种理想复位电路的方法,但如果处理不当的话,异步复位设计中亚稳态问题将会非常严重。一种有效的使用异步复位设计的方法是,在设计中加入复位同步器与复位缓冲树。这种方法综合了同步复位设计与异步复位设计的优点,既实现了异步复位又将亚稳态的影响减小到了可容忍的地步,从而确保了正常的设计功能。

再来一个简单点的

亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。在这个稳定期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。

解决方法: 1 降低系统时钟频率 2 用反应更快的FF 3 引入同步机制,防止亚稳态传播 4 改善时钟质量,用边沿变化快速的时钟信号关键是器件使用比较好的工艺和时钟周期的裕量要大。亚稳态寄存用d只是一个办法,有时候通过not,buf等都能达到信号过滤的效果

转载于:https://www.cnblogs.com/fpga/archive/2009/09/19/1570036.html

异步复位设计中的亚稳态问题及其解决方案相关推荐

  1. FPGA异步时钟设计中的同步策略

    1 引言    基于FPGA的数字系统设计中大都推荐采用同步时序的设计,也就是单时钟系统.但是实际的工程中,纯粹单时钟系统设计的情况很少,特别是设计模块与外围芯片的通信中,跨时钟域的情况经常不可避免. ...

  2. FPGA异步复位设计代码

    1.1 FPGA异步复位设计代码 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA异步复位设计代码: 5)结束语. 1.1.2 本节引言 "不积跬步,无 ...

  3. 关于ASP.NET MVC开发设计中出现的问题与解决方案汇总 【持续更新】

    关于ASP.NET MVC开发设计中出现的问题与解决方案汇总 [持续更新] 参考文章: (1)关于ASP.NET MVC开发设计中出现的问题与解决方案汇总 [持续更新] (2)https://www. ...

  4. 【转】同步与异步复位以及相关的亚稳态状况与设计可靠性

    异步复位相比同步复位: 1.   通常情况下(已知复位信号与时钟的关系),最大的缺点在于异步复位导致设计变成了异步时序电路,如果复位信号出现毛刺,将会导致触发器的误动作,影响设计的稳定性. 2.   ...

  5. 数字IC设计中的亚稳态问题

    亚稳态: 亚稳态是由于违背了触发器的建立时间和保持时间而产生的: 同步系统中输入信号总是满足触发器的时序要求,所以不会发生亚稳态: 异步设计中,由于数据和时钟的关系不是固定的,因此会出现违反建立时间和 ...

  6. 异步复位同步释放 打两拍

    同步复位问题:复位信号持续时间太短,在clk下没采集到就没了. 异步复位问题:释放时可能会出现亚稳态(见最后两张图). 文章目录 1. 异步复位 2. 同步复位 3. 异步复位同步释放 今天好好理一理 ...

  7. 关于“异步复位,同步复位,异步复位同步释放”的理解

    文章目录 1. 异步复位 2. 同步复位 3. 异步复位同步释放 今天好好理一理异步复位,同步复位,以及亚稳态中的异步复位同步释放. 1. 异步复位 一般让复位信号低电平有效 复位信号不受时钟的控制, ...

  8. 浅谈同步复位与异步复位

    浅谈同步复位与异步复位 1.FPGA设计中的复位方式是同步复位与异步复位.接下来将看看两者的概念和在实际设计中的区别以及各自的优缺点. 1.1 异步复位: 它指无论时钟沿是否到来,只要复位信号有效,就 ...

  9. FPGA中复位设计总结

    复位 首先FPGA的复位,对于大部分设计而言,是很简单的.简单在于,只要按照固定方法:按键按下,复位有效一次,相关信号复位.这能解决大部分的问题.而对于其他大规模的复位设计,则需要对细节深究. 方式 ...

最新文章

  1. laravel 框架的 csrf
  2. QTP中字符串替换函数
  3. 监听手指是否离开屏幕android_Flutter事件监听
  4. 飞鸽传书做一个意志坚定的程序员
  5. 数据分析需要权衡哪些要素?
  6. 小功能大用处 ---- 一键检测各服务器是否存活
  7. html右下角固定广告,jQuery右下角悬浮广告
  8. latex 插图 上下放_专辑插图中上下文中的文本
  9. Ubuntu 18.04 开机开启小键盘数字键numlock灯
  10. java blob 保存文件_java将文件保存为二进制流到oracle表中的blob字段 | 学步园
  11. 轻便易用的三维建模软件
  12. Quartz组件介绍
  13. unity+高通vuforia开发增强现实(AR)教程(三)
  14. 角速度与rpm两者如何转换
  15. 基于遗传算法(GA)进化的小游戏
  16. Java map去空值
  17. 暑假到了,如何有效保护眼睛?盘点保护视力的护眼台灯
  18. 经典SQL学习笔记 (九)-比赛信息数据库练习
  19. 无线Wifi密码之PIN破解篇(WPA)
  20. 面试官问:用户钱付了,订单还是显示未支付,怎么解决?

热门文章

  1. LeetCode 1817. 查找用户活跃分钟数(哈希)
  2. Java 给编译器看的注释--Annotation
  3. LeetCode 1695. 删除子数组的最大得分(前缀和+哈希+双指针)
  4. LeetCode 956. 最高的广告牌(DP)
  5. LeetCode MySQL 1084. 销售分析III
  6. LeetCode 428. 序列化和反序列化 N 叉树(DFS)
  7. LeetCode 765. 情侣牵手(贪心)
  8. Log4j框架配置文件
  9. mysql 选择特定的表_MySQL选择具有多个特定列的所有表
  10. python混沌时间序列分析_用Python进行时间序列分析