微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 关于亚稳态恢复到稳态的问题

关于亚稳态恢复到稳态的问题

时间:10-02 整理:3721RD 点击:
我们都知道采用多级触发器可以降低最后输出发生亚稳态的概率,但是一直有一个问题有疑惑:比如有一个3级同步器,一个亚稳态在FF2的输出变成了稳态,那我怎么知道这个稳定的状态就是前面FF1/D端输入本来要的数据呢?就是说FF1我想采的是1,但是发生了亚稳态,FF2/Q稳定下来后是0还是1呢?
求大神解惑!


3 级是DFF0/DFF1/DFF2 还是DFF1/DFF2/DFF3?



   123哈,不好意思没说清楚

亚稳态是因为有效沿时数据正在变化而发生的(如果是同步设计中出现那就是时序问题,异步设计中那就是电路设计要解决),有可能是正常的翻转也有可能是毛刺。那这时候怎么办呢!没怎么办,设计上不去管它!就是在数据变化时管它是0还是1,只要知道多个周期后肯定是稳态就行,或者是一组序列!所以慢到快用多级DFF,快到慢用FIFO。

从器件物理来说,“0”和“1”都有自己对应的电平范围,那从0/1变化过程中的中间态,对后级采样来说就是“非0非1”
MTBF = e (tr/τ)/ T0fa,用来描述亚稳态的概率,
tr :分辨时间(从时钟沿开始)
τ ,T0 :触发器参数
f :采样时钟频率
a :异步事件触发的频率
对于一个典型的0.25μm工艺的ASIC库中的一个触发器,我们取如下的参数:tr = 2.3ns, τ = 0.31ns, T0 = 9.6as, f=100MHZ, a = 10MHZ, MTBF = 2.01 days 即触发器每两天便可能出现一次亚稳态。这也就是我们需要采用两级或者三级同步原因。
但我个人的理解,“0/1”即使采在变化过程,对于数字逻辑来说,也是“非0即1”,那么亚稳态的意思就是,在变化的时候采用,不确定到底采到0还是1。 回到你的问题,DFF1发生亚稳态,也只是说在整个采样序列立, 到底是0多一个还是1多一个不确定。

我的理解是不能保证你一定采样到0或者1,只能保证这个信号本身稳定,如这个信号传输到后续多个D触发器,可以保证采样到同样的值

0或者1是不确定的,但是对你的结果没影响

我也遇到同样的问题,小编现在明白了吗,给我讲讲

简单点理解的话,类似与滤波,通过多级DFF将输入的异步信号中可能出现的毛刺滤除,从而得到相对干净的目标信号。



   为啥“只要知道多个周期后肯定是稳态就行”,如果输入是010,发生亚稳态后多级同步我就能一定能得到010吗?不会稳态到000这种状态吗?



   谢谢解答    我还是有疑问:如果输入是010,发生亚稳态后多级同步我就能一定能得到010吗?不会稳态到000这种状态吗?



   如果输入是010,发生亚稳态后多级同步我就能一定能得到010吗?不会稳态到000这种状态吗?

   为什么没影响?


可能得到000的

   谢谢,我大概明白了:多级同步器的目的是为了让前级处于亚稳态的信号最后稳定下来,但是会稳定成什么设计者也不知道,这就需要后续逻辑了。就是说同步器阻止亚稳态的传播,但是保证不了数据的正确性。是这样子的吧?


FPGA的τ ,T0如何提取,希望不吝赐教,从那个文档获取?如果有可以给出运算方式或者截图么?
   从器件物理来说,“0”和“1”都有自己对应的电平范围,那从0/1变化过程中的中间态,对后级采样来说就是“非0非1”
MTBF = e (tr/τ)/ T0fa,用来描述亚稳态的概率,
tr :分辨时间(从时钟沿开始)
τ ,T0 :触发器参数

f :采样时钟频率
a :异步事件触发的频率
对于一个典型的0.25μm工艺的ASIC库中的一个触发器,我们取如下的参数:tr = 2.3ns, τ = 0.31ns, T0 = 9.6as, f=100MHZ, a = 10MHZ, MTBF = 2.01 days 即触发器每两天便可能出现一次亚稳态。这也就是我们需要采用两级或者三级同步原因。
但我个人的理解,“0/1”即使采在变化过程,对于数字逻辑来说,也是“非0即1”,那么亚稳态的意思就是,在变化的时候采用,不确定到底采到0还是1。 回到你的问题,DFF1发生亚稳态,也只是说在整个采样序列立, 到底是0多一个还是1多一个不确定。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top