0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA设计中的亚稳态解析

电子发烧友论坛 来源:FPGA技术江湖 2023-09-19 15:18 次阅读

欢迎大侠来到FPGA技术江湖新栏目今日说“法”,当然,在这里我们肯定不是去研究讨论法律法规知识,那我们讨论什么呢,在这里我们讨论的是产品研发以及技术学习时一些小细节小方法等,欢迎大家一起学习交流。今天带来让FPGA设计中的亚稳态“无处可逃”,话不多说,上货。

说起亚稳态,首先我们先来了解一下什么叫做亚稳态。亚稳态现象:信号在无关信号或者异步时钟域之间传输时导致数字器件失效的一种现象。

接下来主要讨论在异步时钟域之间数据传输所产生的亚稳态现象,以及如何降低亚稳态现象发生的概率(只能降低,不能消除),这在FPGA设计(尤其是大工程中)是非常重要的。

亚稳态的产生:所有的器件都定义了一个信号时序要求,只有满足了这个要求,才能够正常的在输入端获取数据,在输出端输出数据。正常的数据传递是:在触发时钟沿前必须有一小段时间(Tsu)用来稳定输入信号(0 or 1),触发时钟沿之后需要有一小段特定的时间(Th)再次稳定一下,最后再经过一个特定的始终到输出延时(Tco)后才有效。如果数据的传递过程违反了这个时间约束,那么寄存器输出就会出现亚稳态,此时输出的数据是不稳定的(在0和1之间游荡)。但是这种现象并不是绝对的,但是我们在实际设计中应当尽量避免这种现象。下面我们来循序渐进的分析一下。

背景

1、亚稳态发生原因

在FPGA系统中,如果数据传输中不满足触发器的Tsu和Th不满足,或者复位过程中复位信号的释放相对于有效时钟沿的恢复时间(recovery time)不满足,就可能产生亚稳态,此时触发器输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状态,在这段时间里Q端在0和1之间处于振荡状态,而不是等于数据输入端D的值。这段时间称为决断时间(resolution time)。经过resolution time之后Q端将稳定到0或1上,但是稳定到0或者1,是随机的,与输入没有必然的关系。

2、亚稳态发生场合

只要系统中有异步元件,亚稳态就是无法避免的,亚稳态主要发生在异步信号检测、跨时钟域信号传输以及复位电路等常用设计中。

3、亚稳态危害

由于产生亚稳态后,寄存器Q端输出在稳定下来之前可能是毛刺、振荡、固定的某一电压值。在信号传输中产生亚稳态就会导致与其相连其他数字部件将其作出不同的判断,有的判断到“1”有的判断到“0”,有的也进入了亚稳态,数字部件就会逻辑混乱。在复位电路中产生亚稳态可能会导致复位失败。怎么降低亚稳态发生的概率成了FPGA设计需要重视的一个注意事项。

理论分析

1、信号传输中的亚稳态

在同步系统中,输入信号总是系统时钟同步,能够达到寄存器的时序要求,所以亚稳态不会发生。亚稳态问题通常发生在一些跨时钟域信号传输以及异步信号采集上。

它们发生的原因如下:

(1)在跨时钟域信号传输时,由于源寄存器时钟和目的寄存器时钟相移未知,所以源寄存器数据发出数据,数据可能在任何时间到达异步时钟域的目的寄存器,所以无法保证满足目的寄存器Tsu和Th的要求;

(2)在异步信号采集中,由于异步信号可以在任意时间点到达目的寄存器,所以也无法保证满足目的寄存器Tsu和Th的要求;

当数据在目的寄存器Tsu-Th时间窗口发生变化,也即当数据的建立时间或者保持时间不满足时,就可能发生亚稳态现象。如下图亚稳态产生示意图所示。

f9512be6-569d-11ee-939d-92fbcf53809c.png


由图可知,当产生亚稳态后Tco时间后会有Tmet(决断时间)的振荡时间段,当振荡结束回到稳定状态时为“0”或者“1”,这个是随机的。因此,会对后续电路判断造成影响。

2、复位电路的亚稳态

2.1、异步复位电路
在复位电路设计中,复位信号基本都是异步的,常用异步复位电路Verilog描述如下:

f9638b6a-569d-11ee-939d-92fbcf53809c.png


综合出来复位电路模型如下图异步复位电路模型所示:

f96ebf9e-569d-11ee-939d-92fbcf53809c.png


如下图异步复位时序所示,为复位电路复位时序图。如果异步复位信号的撤销时间在Trecovery(恢复时间)和Tremoval(移除时间)之内,那势必造成亚稳态的产生,输出在时钟边沿的Tco后会产生振荡,振荡时间为Tmet(决断时间),最终稳定到“0”或者“1”,就会可能造成复位失败。

f979ff58-569d-11ee-939d-92fbcf53809c.png



2.2、同步复位电路的亚稳态

在复位电路中,由于复位信号是异步的,因此,有些设计采用同步复位电路进行复位,并且绝大多数资料对于同步复位电路都认为不会发生亚稳态,其实不然,同步电路也会发生亚稳态,只是几率小于异步复位电路。


如下面verilog代码对同步复位电路的描述。

f98da5a8-569d-11ee-939d-92fbcf53809c.png


综合出硬件电路如下图同步复位电路所示。

f9a02336-569d-11ee-939d-92fbcf53809c.png


在此,我们不讨论同步复位的消耗资源问题,只讨论同步复位的亚稳态产生情况。

当输入端Din为高电平,而且复位信号的撤销时间在clk的Tsu和Th内时候,亚稳态就随之产生了。如下图同步复位电路时序图所示,当复位撤销时间在clk的Tsu和Th内,输入数据为“1”,通过和输入数据相与后的数据也在clk的Tsu和Th内,因此,势必会造成类似异步信号采集的亚稳态情况。

f9afe12c-569d-11ee-939d-92fbcf53809c.png


3、亚稳态产生概率以及串扰概率
在实际的FPGA电路设计中,常常人们想的是怎么减少亚稳态对系统的影响,很少有人考虑怎么才能减少亚稳态发生几率,以及亚稳态串扰的概率问题。


3.1、亚稳态发生概率
由上面分析得知,系统亚稳态发生的都是由于clk的Tsu和Th不满足,又或者是复位信号的移除和恢复时间不满足。常用FPGA器件的Tsu+Th约等于1ns,复位移除和恢复时间相加约等于1ns。

当异步信号不是一组数据,或者信号量较少,那就需要对异步信号进行同步处理,例如对一个异步脉冲信号进行采集,只要脉冲信号变化发生在时钟Tsu和Th窗口内,那就很可能会产生亚稳态,亚稳态产生的概率大概为:

概率 = (建立时间 + 保持时间)/ 采集时钟周期

由上述公式可以看出,随着clk频率的增加,亚稳态发生的几率是增加的。

例如,为系统采用100M时钟对一个外部信号进行采集,采集时钟周期为10ns,那采集产生亚稳态的概率为:1ns/10ns = 10%

同理采用300M时钟对一个外部信号进行采集,那产生亚稳态的概率为:1ns/3.3ns = 30%。如果采用三相相位差为120°的时钟对一个外部信号进行采集,那产生亚稳态的概率接近90%。所以在异步信号采集过程中,要想减少亚稳态发生的概率:

(1) 降低系统工作时钟,增大系统周期,亚稳态概率就会减小;

(2) 采用工艺更好的FPGA,也就是Tsu和Th时间较小的FPGA器件。

3.2、亚稳态的串扰概率
使用异步信号进行使用的时候,好的设计都会对异步信号进行同步处理,同步一般采用多级D触发器级联处理,如下图三级寄存器同步所示,采用三级D触发器对异步信号进行同步处理。

f9bdc1f2-569d-11ee-939d-92fbcf53809c.png


这种模型大部分资料都说的是第一级寄存器产生亚稳态后,第二级寄存器稳定输出概率为90%,第三极寄存器稳定输出的概率为99%,如果亚稳态跟随电路一直传递下去,那就会另自我修护能力较弱的系统直接崩溃。接下来我们分析这种串扰的概率问题。

如下图三级寄存器消除亚稳态所示为一个正常第一级寄存器发生了亚稳态,第二级、第三极寄存器消除亚稳态时序模型。

f9c88f06-569d-11ee-939d-92fbcf53809c.png


由上图可以看出,当第一个寄存器发生亚稳态后,经过Tmet的振荡稳定后,第二级寄存器能采集到一个稳定的值。但是为什么第二级寄存器还是可能会产生亚稳态呢?

由于振荡时间Tmet是受到很多因素影响的,所以Tmet时间有长有短,所以当Tmet时间长到大于一个采集周期后,那第二级寄存器就会采集到亚稳态。如下图二级寄存器亚稳态所示。

f9d463c6-569d-11ee-939d-92fbcf53809c.png

由上图可知,第二级也是一个亚稳态,所以在这种情况下,亚稳态产生了串扰,从第一级寄存器传到了第二级寄存器,同样也可能从第二级寄存器串扰到第三级寄存器。这样会让设计逻辑判断出错,产生亚稳态传输,可能导致系统死机奔溃。

3.3、亚稳态振荡时间Tmet

亚稳态震荡时间Tmet关系到后级寄存器的采集稳定问题,Tmet影响因素包括:器件的生产工艺、温度、环境以及寄存器采集到亚稳态离稳定态的时刻等。甚至某些特定条件,如干扰、辐射等都会造成Tmet增长。

应用分析

有亚稳态产生,我们就要对亚稳态进行消除,常用对亚稳态消除有三种方式:

对异步信号进行同步处理;

采用FIFO对跨时钟域数据通信进行缓冲设计;

对复位电路采用异步复位、同步释放方式处理。

1、对异步信号进行同步提取边沿

在异步通信或者跨时钟域通信过程中,最常用的就是对异步信号进行同步提取边沿处理。对一个异步信号进行提取上升沿通常采用如下例子所示。

举例:双极寄存器提取边沿

f9e89e5e-569d-11ee-939d-92fbcf53809c.png


这种边沿提取方式对于一个稳定的系统是不合适的,例如:当第一级寄存器采集到亚稳态,那势必造成sig_nsyn_p输出亚稳态,这样就会对采用sig_nsyn_p的信号进行判断的电路造成影响,甚至判断出错误的值。

根据上述介绍的亚稳态产生概率,如果在100M时种下那第一级寄存器产生亚稳态的概率约为10%,随着系统采集频率升高,那产生亚稳态的概率也会随之上升。因此,在进行异步信号跨频提取边沿时候,一般采用多进行一级寄存器消除亚稳态,可能在系统稳定性要求高的情况下,采用更多级寄存器来消除亚稳态,如下举例所示,即为采用4级寄存器消除亚稳态,相应的边沿信号产生的时间就晚了两个时钟周期。

举例:多级寄存器提取边沿信号

f9ef2b8e-569d-11ee-939d-92fbcf53809c.png


2、FIFO进行异步跨频数据处理
当数据流从一个时钟域到另一个时钟域的时候,绝大多数情况下都采用FIFO来作为中间缓冲,采用双时钟对数据缓冲,就可以避免亚稳态的发生。

3、异步复位,同步释放
对于复位情况下的亚稳态,常常是由于恢复时间和移除时钟不满足造成的,因此,最常用的处理方式是采用异步复位、同步释放。常用电路模型如所示。采用第二级寄存器输出作为全局复位信号输出。

举例:异步复位处理

f9fcbaec-569d-11ee-939d-92fbcf53809c.png


通过上面三种方式处理异步信号、异步数据、以及异步复位可有效的提高系统的稳定性。减少亚稳态的产生。

通过上述对亚稳态的分析以及各种模式的处理,相信各位大侠应该有所收获,今日说"法"到此结束,下篇再见,欢迎各位大侠投稿,交流学习,共同进步,祝一切安好!

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1626

    文章

    21665

    浏览量

    601803
  • FPGA设计
    +关注

    关注

    9

    文章

    428

    浏览量

    26483
  • 信号
    +关注

    关注

    11

    文章

    2779

    浏览量

    76625
  • 触发器
    +关注

    关注

    14

    文章

    1995

    浏览量

    61049
  • 亚稳态
    +关注

    关注

    0

    文章

    46

    浏览量

    13250

原文标题:今日说“法”:让FPGA设计中的亚稳态“无处可逃”

文章出处:【微信号:gh_9b9470648b3c,微信公众号:电子发烧友论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA亚稳态——让你无处可逃

    1. 应用背景1.1亚稳态发生原因在FPGA系统,如果数据传输不满足触发器的Tsu和Th不满足,或者复位过程复位信号的释放相对于有效时
    发表于 01-11 11:49

    FPGA亚稳态——让你无处可逃

    本帖最后由 eehome 于 2013-1-5 09:55 编辑 1. 应用背景1.1亚稳态发生原因在FPGA系统,如果数据传输不满足触发器的Tsu和Th不满足,或者复位过程
    发表于 04-25 15:29

    FPGA触发器的亚稳态认识

    返回到低电平, 这和输入的数据无关。且在亚稳态的过程,触发器的输出可能在震荡,也可能徘徊在一个固定的中间电平上。我们来看一个真实案例。见图3. 在这个案例,我们测试一个FPGA
    发表于 12-04 13:51

    亚稳态问题解析

    亚稳态是数字电路设计中最为基础和核心的理论。同步系统设计的多项技术,如synthesis,CTS,STA等都是为了避免同步系统产生亚稳态。异步系统,更容易产生
    发表于 11-01 17:45

    简谈FPGA学习中亚稳态现象

    亚稳态现象发生的概率(只能降低,不能消除),这在FPGA设计(尤其是大工程)是非常重要的。亚稳态的产生:所有的器件都定义了一个信号时序要求,只有满足了这个要求,才能够正常的在输入端获
    发表于 08-01 09:50

    FPGA亚稳态现象是什么?

    说起亚稳态,首先我们先来了解一下什么叫做亚稳态亚稳态现象:信号在无关信号或者异步时钟域之间传输时导致数字器件失效的一种现象。
    发表于 09-11 11:52

    FPGA复位电路中产生亚稳态的原因

    亚稳态概述01 亚稳态发生原因在 FPGA 系统,如果数据传输不满足触发器的 Tsu 和 Th 不满足,或者复位过程
    发表于 10-19 10:03

    FPGA--复位电路产生亚稳态的原因

    FPGA 系统,如果数据传输不满足触发器的 Tsu 和 Th 不满足,或者复位过程复位信号的释放相对于有效时钟沿的恢复时间(recovery time)不满足,就可能产生
    发表于 10-22 11:42

    FPGA,同步信号、异步信号和亚稳态的理解

    性的培训诱导,真正的去学习去实战应用,这种快乐试试你就会懂的。话不多说,上货。在FPGA,同步信号、异步信号和亚稳态的理解PGA(Field-Programmable Gate Array),即现场
    发表于 02-28 16:38

    今日说“法”:让FPGA设计亚稳态“无处可逃”

    ,有好的灵感以及文章随笔,欢迎投稿,投稿请标明笔名以及相关文章,投稿接收邮箱:1033788863@qq.com。今天带来让FPGA设计亚稳态“无处可逃”,话不多说,上货。 说起亚稳态
    发表于 04-27 17:31

    基于FPGA亚稳态参数测量方法

    基于FPGA亚稳态参数测量方法_田毅
    发表于 01-07 21:28 0次下载

    关于FPGA设计亚稳态及其缓解措施的分析和介绍

    在进行FPGA设计时,往往只关心“0”和“1”两种状态。然而在工程实践,除了“0”、“1”外还有其他状态,亚稳态就是其中之一。亚稳态是指触发器或锁存器无法在某个规定时间段内达到一个可
    发表于 10-06 09:42 1241次阅读
    关于<b class='flag-5'>FPGA</b>设计<b class='flag-5'>中</b>的<b class='flag-5'>亚稳态</b>及其缓解措施的分析和介绍

    简谈FPGA学习中亚稳态现象

    大家好,又到了每日学习的时间了,今天我们来聊一聊FPGA学习亚稳态现象。 说起亚稳态,首先我们先来了解一下什么叫做亚稳态
    的头像 发表于 06-22 14:49 3420次阅读
    简谈<b class='flag-5'>FPGA</b>学习中<b class='flag-5'>亚稳态</b>现象

    如何理解FPGA设计的打拍(寄存)和亚稳态

    可能很多FPGA初学者在刚开始学习FPGA设计的时候(当然也包括我自己),经常听到类似于”这个信号需要打一拍、打两拍(寄存),以防止亚稳态问题的产生“这种话,但是对这个打拍和亚稳态问题
    的头像 发表于 02-26 18:43 7739次阅读
    如何理解<b class='flag-5'>FPGA</b>设计<b class='flag-5'>中</b>的打拍(寄存)和<b class='flag-5'>亚稳态</b>

    什么是亚稳态?如何克服亚稳态

    亚稳态在电路设计是常见的属性现象,是指系统处于一种不稳定的状态,虽然不是平衡状态,但可在短时间内保持相对稳定的状态。对工程师来说,亚稳态的存在可以带来独特的性质和应用,如非晶态材料、晶体缺陷等
    的头像 发表于 05-18 11:03 4620次阅读