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

异步复位设计中的亚稳态问题及其解决方案田志明,杨军,罗岚(东南大学国家专用集成电路系统工程技术研究中心,南京 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux添加nginx,linux下安装Nginx1.16.0的教程详解

因为最近在倒腾linux,想安装新版本的nginx,找了一圈教程没有找到对应的教程,在稍微倒腾了一会之后终于成功的安装了最新版。服务器环境为centos,接下来是详细步骤:安装必要依赖插件?创建文件夹并切换过去?下载安装包…

深度|2030年8亿人会失业!图解机器人如何取代你的工作

来源:财看见-腾讯财经(ID:qqckj2017)未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括:建立AI智能系统智商评测体系&#xff0…

Java使用Itext5.5.10进行pdf签章

来源:Java使用Itext5.5.10进行pdf签章_liumengya007007的博客-CSDN博客_itext 签章 啰嗦 说到PDF数字签名签章,这个其实也是数字证书信息安全的应用范畴,关于数字证书和数字签名,网上有很多解释说明,但讲解都多不够详…

Python的bool类型

写习惯了C#的代码,在想要将一个字符串False转换为bool型的时候,很自然的写了如下的Python代码: 看到上面的结果了没?是True。突然记起Python中除了、""、0、()、[]、{}、None为False之外,其他的都是True。也…

linux qt程序编译出错,QTcreator编译出错

作为移植性很好的QT图形开发工具,他支持windows,linux,FBS,macos,Symbian等OS,在windows下的QT程序在安装了QTcreator后很快就编译出来了,可是在我的redhat enterprise5 安装后,一个hello,world!却报错了错…

C++ Programmer's Cookbook C++基础和C++高级

From:http://www.cppblog.com/mzty/archive/2007/08/13/29922.html ------------------------------------------------------------------------------------------ C随笔分类列表(基础): VS Studio: VS快捷键:http://www.cppb…

工业机器人发展趋势分析 未来营收规模达到百亿级水平

来源:前瞻产业研究院摘要:工业机器人是打造自动化工厂的重要组成,可有效提高效率生产、降低成本和控制质量。工业机器人是面向工业领域的多关节机械手或多自由度的机器装置,它能自动执行工作,是靠自身动力和控制能力来实现各种功能的一种机器。工业机器人…

【itext学习之路】--5.对pdf进行盖章/签章/数字签名

来源:【itext学习之路】-------(第五篇)对pdf进行盖章/签章/数字签名_tomatocc的博客-CSDN博客_itext 数字签名 在上一篇文章中,我们学习了使用itext对pdf增加图片水印和文本水印,那么这篇文章我们将要学习更高级一点…

jquery radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中,及其相关...

获取一组radio被选中项的值var item $(input[nameitems][checked]).val();获取select被选中项的文本var item $("select[nameitems] option[selected]").text();select下拉框的第二个元素为当前选中值$(#select_id)[0].selectedIndex 1;radio单选组的第二个元素为…

c++11 标准模板(STL)(std::pair)(七)访问 pair 的一个元素

定义于头文件 <utility> std::pair 是一个结构体模板&#xff0c;其可于一个单元存储两个相异对象。 pair 是 std::tuple 的拥有两个元素的特殊情况。 访问 pair 的一个元素 std::get(std::pair) template< size_t I, class T1, class T2 > typename std::tuple…

python selenium 用法 和 Chrome headless

From: http://cuiqingcai.com/2599.html Selenium教程&#xff1a;https://www.yiibai.com/selenium selenium 官方参考文档&#xff1a;https://selenium-python.readthedocs.io/index.html Selenium Documentation&#xff1a;https://www.seleniumhq.org/docs Selenium 与 …

linux ssh 时间设置,Linux下设置SSH Server设置时间链接限制(示例代码)

OpenSSH基于安全的理由&#xff0c;如果用户连线到SSHServer后闲置一段时间&#xff0c;SSH Server会在超过特定时间后自动终止SSH连线。本人习惯长时间连接&#xff0c;需要做如下修改&#xff1a;1、打开ssh配置文件&#xff1a;# vim /etc/ssh/sshd_config加入如下两个参数保…

【itext学习之路】--1.创建一个简单的pdf文档

来源&#xff1a;https://blog.csdn.net/tomatocc/article/details/80666011 iText是著名的开放源码的站点sourceforge一个项目&#xff0c;是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档&#xff0c;而且可以将XML、Html文件转化为PDF文件 本教程中…

redis linux服务,linux服务之redis

rediswget http://download.redis.io/releases/redis-4.0.6.tar.gzcd redis-4.0.6makecd src/./redis-server./redis-cli先启动server&#xff0c;再用cli去连接&#xff0c;开两个终端窗口[rootlocalhost src]# ./redis-cliCould not connect to Redis at 127.0.0.1:6379: Con…

并发服务器设计思路,参考apache学习UDP和QoS,研究成果

研究了快1个月的服务器架构&#xff0c;把研究成果记录一下。参考的有&#xff1a;Apache vlc ACE ftp我主要需要其中的并发处理&#xff0c;内存管理&#xff0c;TCP/UDP.QoS&#xff0c;速度限制等方面的内容&#xff0c;所以着重说这几方面。首先看一下Apache的基本框图&…

一文看懂NB-IoT!

来源&#xff1a;物联江湖(iot521) 作者&#xff1a;王一鸣一直以来&#xff0c;人们通过相应的终端&#xff08;电脑、手机、平板等&#xff09;使用网络服务&#xff0c;“个人”一直是网络的用户主体。个人对网络质量的要求“高”且“统一”&#xff1a;玩网络游戏必需要低…

安装、配置 Java JDK 和 JRE,并卸载自带 OpenJDK

JRE 和 JDK 的区别是什么&#xff1f;&#xff1a;https://www.zhihu.com/question/20317448 如何配置 Java 环境变量&#xff1a;https://jingyan.baidu.com/article/fd8044fa2c22f15031137a2a.html Windows 10 配置Java 环境变量&#xff1a;https://www.runoob.com/w3cnote…

软件测试面试题linux,linux基础面试题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼linux的用户管理useradd 用户名&#xff0c;添加用户【案例】useradd xiaomingpasswd 用户名&#xff0c;为新用户设密码【案例】passwd xiaoming&#xff0c;修改小明的密码userdel 用户名&#xff0c;删除用户【案例】userdel xi…

将十进制数转为N进制的方法

设有一个数 A,比如 A15 ,转为四进制数应当表示为33.原理如下:1.A除N,2.A模N.3.保存A模N的值。4.循环1&#xff0c;2。直到 A除N的值等于0;Codeclass NumerationConverter { /// <summary> /// 将十进制度数转为四进制 /// </summary> …

人工智能即将冲击与改变现有的医疗方式

来源呢&#xff1a;千家网从1960年代初&#xff0c;学术界陆续展开对于人工智能的研究&#xff0c;一直到目前的机器学习、深度学习等观念&#xff0c;所带来的第三波人工智能浪潮。对于医疗领域来说&#xff0c;在1970年代初期&#xff0c;人工智能就已经被应用在各项检查&…