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

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

3天内不再提示

FPGA系统中三种方式减少亚稳态的产生

FPGA设计论坛 来源:未知 2023-06-03 07:05 次阅读


点击上方蓝字关注我们


1.1 亚稳态发生原因

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

1.2 亚稳态发生场合

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

1.3 亚稳态危害

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

2. 理论分析

2.1 信号传输中的亚稳态

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

它们发生的原因如下:

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

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

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

图3.1 亚稳态产生示意图

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

2.2 复位电路的亚稳态

2.2.1 异步复位电路

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

always @(posedge clk or negedge rst_n)

begin

if(!rst_n) a 《= 1’b0;

else a 《= b;

end

综合出来复位电路模型如图3.2所示:

图3.2 异步复位电路模型

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

图3.3 异步复位时序

2.2.2 同步复位电路的亚稳态

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

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

always @(posedge clk)

begin

if(!rst_n) a 《= 1’b0;

else a 《= b;

end

综合出硬件电路如图3.4所示。

图3.4 同步复位电路

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

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

图3.5 同步复位电路时序图

2.3 亚稳态产生概率以及串扰概率

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

2.3.1 亚稳态发生概率

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

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

概率 = (建立时间 + 保持时间)/ 采集时钟周期 (公式3-1)

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

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

同理采用300M时钟对一个外部信号进行采集,那产生亚稳态的概率为:1ns/3.3ns = 30%

如果采用三相相位差为120°的时钟对一个外部信号进行采集,那产生亚稳态的概率接近90%

所以在异步信号采集过程中,要想减少亚稳态发生的概率:

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

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

2.3.2 亚稳态的串扰概率

使用异步信号进行使用的时候,好的设计都会对异步信号进行同步处理,同步一般采用多级D触发器级联处理,如图3.6所示,采用三级D触发器对异步信号进行同步处理。

图3.6 三级寄存器同步

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

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

图3.7 三级寄存器消除亚稳态

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

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

图3.8 二级寄存器亚稳态

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

2.3.3 亚稳态振荡时间Tmet

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

3. 应用分析

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

(1) 对异步信号进行同步处理;

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

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

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

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

程序清单 4.1 双极寄存器提取边沿

input sig_nsyn;

wire sig_nsyn_p;

reg[1:0] sig_nsyn_r;

always @(posedge clk or negedge rst_n)

begin

if(!rst_n) sig_nsyn_r 《= 2’d0;

else sig_nsyn_r 《= { sig_nsyn_r [0], sig_nsyn };

end

assign sig_nsyn_p = sig_nsyn_r[0] & ~sig_nsyn_r[1];

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

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

程序清单 4.2 多级寄存器提取边沿信号

input sig_nsyn;

wire sig_nsyn_p;

reg[3:0] sig_nsyn_r;

always @(posedge clk or negedge rst_n)

begin

if(!rst_n) sig_nsyn_r 《= 2’d0;

else sig_nsyn_r 《= { sig_nsyn_r [2::0], sig_nsyn };

end

assign sig_nsyn_p = sig_nsyn_r[2] & ~sig_nsyn_r[3];

3.1.2 FIFO进行异步跨频数据处理

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

3.1.3 异步复位,同步释放

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

程序清单 4.3 异步复位处理

wire sys_rst_n;

reg [1:0] rst_r;

always @(posedge clk or negedge rst_n)

begin

if(!rst_n) rst_r 《= 2’d0;

else rst_r 《= {rst_r[0], 1’b1};

end

assign sys_rst_n = rst_r[1];

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






有你想看的精彩




至芯科技-FPGA就业培训来袭!你的选择开启你的高薪之路!5月30号西安中心开课、欢迎咨询!
采用FPGA和CMOS数字传感器实现图像监测系统的设计
使用外部 PLL 改善 FPGA 通信接口时钟抖动





扫码加微信邀请您加入FPGA学习交流群




欢迎加入至芯科技FPGA微信学习交流群,这里有一群优秀的FPGA工程师、学生、老师、这里FPGA技术交流学习氛围浓厚、相互分享、相互帮助、叫上小伙伴一起加入吧!


点个在看你最好看






原文标题:FPGA系统中三种方式减少亚稳态的产生

文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

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

    关注

    1631

    文章

    21806

    浏览量

    606725

原文标题:FPGA系统中三种方式减少亚稳态的产生

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    三种太赫兹波的产生方式

    本文简单介绍了三种太赫兹波的产生方式。 太赫兹波(THz)是一电磁波,在电磁波谱上位于红外与微波之间。太赫兹光子能量在1-10 meV范围之间,在光谱分析、医疗成像、移动通信方面都有
    的头像 发表于 02-17 09:09 28次阅读
    <b class='flag-5'>三种</b>太赫兹波的<b class='flag-5'>产生</b><b class='flag-5'>方式</b>

    systemd journal收集日志的三种方式

    随着 systemd 成了主流的 init 系统,systemd 的功能也在不断的增加,比如对系统日志的管理。Systemd 设计的日志系统好处多多,这里笔者就不再赘述了,本文笔者主要介绍 systemd journal 收集日
    的头像 发表于 10-23 11:50 378次阅读
    systemd journal收集日志的<b class='flag-5'>三种</b><b class='flag-5'>方式</b>

    Windows管理内存的三种主要方式

    Windows操作系统提供了多种方式来管理内存,以确保系统资源的有效利用和性能的优化。以下是关于Windows管理内存的三种主要方式的详细阐
    的头像 发表于 10-12 17:09 1489次阅读

    shell脚本执行的三种方式及区别

    在Linux系统中,Shell脚本是一非常实用的工具,用于自动化执行一系列命令。Shell脚本可以大大提高工作效率,简化复杂的任务。在这篇文章中,我们将介绍Shell脚本执行的三种方式
    的头像 发表于 08-30 15:24 1484次阅读

    常用的pwm跟踪控制方式是哪三种

    PWM(脉宽调制)跟踪控制是一广泛应用于电机控制、电源管理、通信等领域的技术。它通过调整脉冲的宽度来控制输出信号的占空比,从而实现对系统的精确控制。常用的PWM跟踪控制方式主要有三种
    的头像 发表于 08-14 10:34 1618次阅读

    计算机网络中的三种通信方式

    计算机网络中的三种通信方式,即单工通信、半双工通信和全双工通信,是理解和设计高效网络架构的基础。每种通信方式都有其独特的特性、应用场景及优缺点。以下是对这三种通信
    的头像 发表于 08-07 15:00 3287次阅读

    逆变电路的三种调压方式

    路的三种调压方式:脉宽调制(PWM)调压、相位控制调压和频率调制调压。 1. 脉宽调制(PWM)调压 脉宽调制是一通过改变脉冲宽度来调整输出电压的调压方式。在PWM调压中,逆变电路的
    的头像 发表于 08-02 16:59 2748次阅读

    交流电力控制电路三种控制方式

    交流电力控制电路是现代电力系统的重要组成部分,它涉及到对交流电的控制和调节。在实际应用中,交流电力控制电路的控制方式多种多样,但主要可以分为三种:电压控制、电流控制和功率控制。下面,我们将详细介绍
    的头像 发表于 06-16 11:19 4181次阅读

    数字电路中的亚稳态是什么

    在数字电路的设计与实现中,亚稳态是一个不可忽视的现象。它可能由多种因素引发,对电路的稳定性和可靠性产生严重影响。本文将深入探讨数字电路中亚稳态的概念、产生原因、影响以及应对策略,以期为
    的头像 发表于 05-21 15:29 1448次阅读

    555集成芯片的三种工作模式及区别

    555集成芯片是一个功能强大的模拟电路和数字电路结合的中规模集成电路,它主要有三种工作模式:单稳态模式、双稳态模式和无稳态模式。这三种模式在
    的头像 发表于 03-26 14:46 1911次阅读

    555集成芯片的无稳态模式有哪些应用场景

    555集成芯片在无稳态模式下具有广泛的应用场景。无稳态模式,也被称为振荡器模式,是555定时器三种工作模式中的一。在这种模式下,555定时器以振荡器的
    的头像 发表于 03-26 14:44 979次阅读

    fpga三种编程语言

    FPGA(现场可编程门阵列)的编程涉及到三种主要的硬件描述语言(HDL):VHDL(VHSIC Hardware Description Language)、Verilog以及SystemVerilog。这些语言在FPGA设计和
    的头像 发表于 03-15 14:36 1240次阅读

    简述斩波电路的三种控制方式

    斩波电路是一常见的电力电子器件,广泛应用于直流电压调节、电压变换、电流变换等领域。它可以实现对电流和电压的控制,以满足不同的电气设备的需求。斩波电路的控制方式主要有三种:脉宽调制控制、频率调制控制
    的头像 发表于 03-11 15:22 4664次阅读

    稳态多谐振荡器电路图分享

    稳态多谐振荡器是一无需任何外部输入即可产生连续方波输出的电子电路。它也被称为自由运行振荡器或张弛振荡器,因为它自行在两个不稳定状态之间切换。非稳态多谐振荡器是与单
    的头像 发表于 02-23 15:48 2741次阅读
    非<b class='flag-5'>稳态</b>多谐振荡器电路图分享

    稳态是什么意思?单稳态是什么意思?双稳态是什么意思?

    稳态是什么意思?单稳态是什么意思?双稳态是什么意思?怎么区分这三种? 无稳态是指系统没有达到稳
    的头像 发表于 02-18 16:26 2110次阅读