FPGA静态时序分析与约束(一)、理解亚稳态

系列文章目录

FPGA静态时序分析与约束(二)、时序分析
FPGA静态时序分析与约束(三)、读懂vivado时序报告


文章目录

  • 系列文章目录
  • 前言
  • 一、概述
  • 一、何为亚稳态?
  • 二、图解亚稳态
  • 三、什么时候亚稳态会导致系统失效?
  • 四、降低亚稳态发生概率的办法
  • 五、亚稳定性 MTBF 值的计算
  • 六、总结


前言

参考资料:Altera公司的官方发布的白皮书《Understanding Metastability in FPGAs》(提取码6Ese)

一、概述

亚稳定性(Metastability)是数字电路(含 FPGA)中导致系统失效的一种现象,当信号在非相关时钟域或异步时钟域之间传输时发生。本文叙述 FPGA 中的亚稳定性,讨论了它如何发生,如何导致系统失效。

数字电路的设计者通过对两次失效之间间隔的平均值(MTBF)进行计算,得到亚稳定性的定量描述,从而指示设计者采取适当的方法以减少发生失效的可能性(几率)。本文讲解了如何根据不同的器件和设计参数计算 MTBF,解释了 FPGA 厂商和 FPGA 设计者两方面是如何改善 MTBF 的。设计者运用相关的设计技术和优化方案,减少亚稳定失效的几率,使得系统的可靠性得以提高。

个人理解:亚稳态现象是在跨时钟域信号传输时不可避免的,作为设计者我们无法彻底消除亚稳态现象,只能尽可能地减少发生的概率。

一、何为亚稳态?

数字电路(例如 FPGA)中所有的寄存器都具有所设定的时序要求。根据该要求,每一个寄存器都可以正确地捕获它输入端口的数据,并激励输出信号至它的输出端口。为了保证这种操作的可靠,寄存器的输入信号必须在时钟沿之前的最小时间段保持稳定(寄存器建立时间 t s u t_{su} tsu),以及在时钟沿之后的最小时间段保持稳定(寄存器保持时间 t h t_h th)。然后在特定的时钟输出延迟 t c o t_{co} tco之后,寄存器产生有效的输出。如果某个信号的传输违背了上述建立时间 t s u t_{su} tsu和保持时间 t h t_h th的要求,该寄存器就有可能进入亚稳态。发生亚稳态时(某些时钟周期),寄存器的输出值会漂浮在高电平(高状态)和低电平(低状态)之间,这也就意味着指定的输出高状态和输出低状态会在 t c o t_{co} tco之后再度被延迟。

个人理解:寄存器的建立时间或保持时间不能得到满足时,寄存器有可能会进入亚稳态。亚稳态是一种电压的中间态,假设寄存器的输出电压大于2V输出高电平1,小于0.3V输出低电平0,那么电压处于0.3V到 2V 之间并且能够短时间稳定的状态就是亚稳态。这时候寄存器输出的数据延迟将大于tco

在同步电路系统中,输入信号总是满足寄存器的时序要求(设计必须),所以亚稳态不会发生。通常,若在无关时钟域电路或异步时钟域电路之间发生信号传输,亚稳态问题将会发生。此时,设计者不能保证这些信号能符合 tsu 和 th,这是因为这些信号可能在相对于目标域时钟的任何时刻到达。而这些信号中的任何一个若发生 t s u t_{su} tsu t h t_h th时序违规,将导致一次亚稳态输出。寄存器或者不符合时序要求进入亚稳态,或者符合时序要求回到稳态,这两种可能性兼而有之,而它们很大程度上取决于 FPGA 器件的制造工艺技术,以及运行时的条件。大多数情况下,寄存器将快速地返回到指定的稳定状态。
个人理解:根据FPGA制造工艺,寄存器进入亚稳态时会快速返回到稳定状态0或者1,随着制作工艺地提升,亚稳态回到稳态的时间越来越快

二、图解亚稳态

寄存器在时钟沿对数据信号进行采样的过程看作是一个球落到山顶上,如图所示。
在这里插入图片描述
山的两侧代表稳定状态:信号传输后信号的旧数据值和新数据值。山顶代表亚稳态
图中球停留在山顶正中的情况在真实电路中实际不会发生,球总会在山顶微微地偏向一边,继而滚落到山底,快速地到滑落至山丘底部的那侧的稳定状态,球离山顶越远,它在底部达到稳定状态的速度就越快。
个人理解:寄存器在进入亚稳态一段时间后会回复到正常的状态,但是有可能回到高电平1也有可能回到低电平0

  1. 如果数据变化发生在时钟沿右侧的 t h t_h th之后,好像球跌落至山丘的“旧值”这边,此时输出信号保持为原先的旧值。
  2. 当寄存器的输入数据变化发生在当前时钟沿左侧的 t s u t_{su} tsu之前,以及前一个时钟沿右侧的 t h t_h th之后,则好像球跌落至山丘的“新值”一边,此时输出信号保持为变化后的新值。
  3. 当寄存器的数据变化时刻违背 t s u t_{su} tsu t h t_h th时,这就好像球从山顶向两边跌落。球开始跌落的时刻越接近山的顶部,它返回底部的时间就越长,这就使得从数据变化时钟沿至输出稳定状态的延迟将大于 t c o t_{co} tco。(如下图所示)

个人理解:如果数据变化在采样寄存器th之后,那么采样寄存器将采样到数据变化之前的旧值,继而经过一个tco延迟后,采样寄存器输出数据旧值。同理,如果数据变化在采样寄存器tsu之前,那么采样寄存器将采样到数据变化后的新值,经过一个tco延迟后,采样寄存器输出数据新值 。如果数据变化在tsu之后,th之前,那么采样寄存器将进入亚稳态,数据可能输出0可能输出1,寄存器输出时间大于tco

在这里插入图片描述
在这里插入图片描述

寄存器进入亚稳态输出示意图

三、什么时候亚稳态会导致系统失效?

如果数据输出信号是在下一个寄存器捕获它之前就已滑落至一个稳定的状态,此时的亚稳态信号并不会给系统带来负面影响。但是如果亚稳态输出信号不能在它到达下一个寄存器之前滑落到低或高的稳定状态,它将导致系统失效。这仍然可使用球和山丘来解释,当球跌落至山底的时间超过所允许的时间(允许的时间是指时序分析中,对应寄存器路径中的这些寄存器的正的 t c o t_{co} tco)。当亚稳态信号没有在允许的时间段内滑落至稳定状态,将发生逻辑混乱和失效,此时目标寄存器将出现相互矛盾的逻辑状态,那就是说,对于相同的亚稳态信号,不同的寄存器将会捕获到不同的值。

个人理解:如果发生亚稳态的寄存器输出信号在下个时钟沿采样到之前,就滑落到稳定状态,那么系统不会失效,如果在下个时钟沿来临时,还在亚稳态,那么后级的寄存器将会逻辑混乱,不同的寄存器捕获的可能是不同的值,此时系统将会失效

四、降低亚稳态发生概率的办法

当信号在非相关时钟域电路或异步时钟域电路之间传输时,引用该信号前,必须要将该信号同步到新的时钟域。新时钟域的第一个寄存器则成为同步寄存器。为了使异步信号传输的亚稳定性所导致的失效尽可能的最小,电路设计者通常会在目标时钟域使用一个寄存器序列(同步寄存器链或同步器),以达到再同步的目的。同步寄存器链将该信号再次同步到新的目标时钟域。这些寄存器提供额外的时间,用于那些可能出现的亚稳态信号,使得这些亚稳态信号能够在它们被引用(捕获)前滑落至一个已知值(0 或 1)

同步寄存器链其定义是一个符合如下要求的寄存器序列(寄存器链):

  • 链中的所有寄存器或者使用相同的时钟源作为驱动时钟,或者使用具有相对相位关系的不同时钟源作为驱动时钟。
  • 链中的第一个寄存器的输入信号,或者来自一个非相关时钟域,或者来自一个异步时钟域。
  • 除链中最后一个寄存器外,所有寄存器的输出仅扇出至一个寄存器。
    如下图所示:
    在这里插入图片描述
    注意到任何一个异步输入信号,或那些在非相关时钟域之间传输的信号,都可能在相对于捕获寄存器时钟沿的任何一个时刻发生变迁。因此,设计者不能够预知这些变迁发生的序列,以及变迁发生前目标时钟域时钟沿的个数。例如,如果一个异步总线信号跨时钟域传输,并且被同步,这些数据信号将在不同的时钟沿上发生变迁,其结果就是,所接收到的总线的数值不正确。
    个人理解:多bit数据总线不能用同步寄存器链的方法同步,因为每为bit到达寄存器链的时间可能不同,所以每个同步寄存器链踩到的数据不同,所以后级寄存器接收到的数据不同

对于多bit情况,设计者必须习惯于采用例如双时钟 FIFO 这样的电路(DCFIFO)来存取数据和进行握手。FIFO 逻辑仅使用同步器传输转换两个时钟域之间的控制信号,而数据的读和写则使用双端口的存储器。Altera 提供的 DCFIFO 即是用于此目的,其中,对于那些跨时钟域的控制信号,提供了多级潜伏期设置和亚稳态的保护。另外,如果跨时钟域握手信号中的有异步信号,这些异步的握手信号将能够用于指示当前跨数据域的数据传输。此时,同步寄存器用于保证亚稳态现象不会影响到这些控制信号的接收,对于可能发生的任何亚稳态条件,信号数据都有足够的约算时间,使得在这些信号被使用前,亚稳态已经滑落至稳态。

五、亚稳定性 MTBF 值的计算

两次失效之间的平均时间,即 MTBF,是亚稳定性能的一个评估指标,它是由亚稳态所致的两次失效之间的平均间隔。一个较高的 MTBF 值表示一个更稳定的系统(例如,两次亚稳态失效之间的间隔达到数百或数千年)。所需要的 MTBF 值的大小,取决于系统的应用,例如,一个医学生命维持系统所需要的MTBF,就比一个视频娱乐系统的MTBF要高。亚稳定性MTBF值的增加,就意味着设备中信号传输时发生亚稳态问题的机会减小。无论是特定的信号传输的 MTBF,还是当前设计中全部信号传输的 MTBF,都可以依据设计参数和器件参数进行计算。同步寄存器链 MTBF 的计算使用下列公式和参数:

M T B F = e t m e t / C 2 C 1 × f c l k × f d a t a MTBF = \frac{e^{t_{met}/C_2}}{C_1×f_{clk}×f_{data}} MTBF=C1×fclk×fdataetmet/C2
其中:

  • 常数 C 1 C_1 C1 C 2 C_2 C2取决于器件工艺和操作环境
  • f c l k f_{clk} fclk f d a t a f_{data} fdata取决于设计,其中 f c l k f_{clk} fclk是接收异步信号时钟域的时钟频率,而 f c l k f_{clk} fclk是驱动异步数据信号的时钟频率。 f c l k f_{clk} fclk越快或 f d a t a f_{data} fdata越快,MTBF 值将越小(亚稳定性恶化)。
  • t m e t t_{met} tmet是空闲的亚稳定性约算时间,或者说它是从寄存器的 t c o t_{co} tco之后,到亚稳态信号滑落至已知值这个区间其时序分析的 Slack 值。同步寄存器链的 t m e t t_{met} tmet则是该链中各个寄存器输出时序的Slack 之和。

整个设计系统的 MTBF 值则可由设计系统中各个同步寄存器链的 MTBF 值确定。由于每一个同步器的失效率为 1/MTBF,因而整个设计系统的失效率可以由每个同步器的失效率累加而得到:
F a i l u r − r a t e d e s i g n = 1 M T B F d e s i g n = ∑ i = 1 S N 1 M T B F i Failur_-rate_{design} = \frac{1}{MTBF_{design}}=\sum_{i=1}^{SN}\frac{1}{MTBF_{i}} Failurratedesign=MTBFdesign1=i=1SNMTBFi1
式中:
Failure_ratedesign : 整个设计系统的失效率
S N SN SN : 设计系统中同步寄存器链(或同步器)的数量
M T B F d e s i g n MTBF_{design} MTBFdesign : 整个设计系统的 MTBF 值
M T B F i MTBF_i MTBFi: 每个同步寄存器链的 MTBF 值据此,整个设计系统的 MTBF 为: M T B F d e s i g n MTBF_{design} MTBFdesign = 1/Failure_rate d e s i g n _{design} design

六、总结

当信号在无关时钟域之间传输或异步时钟域之间传输时发生亚稳态现象。两次亚稳态失效的平均时间与器件的工艺技术,设计性能和同步寄存器逻辑的时序 Slack 值有关。设计者使用恰当的设计技术增加同步寄存器链的 Slack 值,使得 t m e t t_{met} tmet增加,进而导致 MTBF 的增加,Altera 对其 FPGA 的 MTBF进行了参数化,并通过器件技术改进提高了亚稳态 MTBF。使用 Altera FPGA 的设计人员可以利用 Quartus II 软件功能来报告其设计的亚稳态 MTBF,并优化设计布局以增加 MTBF。

FPGA静态时序分析与约束(二)、时序分析

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

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

相关文章

k8s部署hadoop

(作者:陈玓玏) 配置和模板参考helm仓库:https://artifacthub.io/packages/helm/apache-hadoop-helm/hadoop 先通过以下命令生成yaml文件: helm template hadoop pfisterer-hadoop/hadoop > hadoop.yaml用kube…

Unity PS5开发 天坑篇 之 申请开发者与硬件部署01

腾了好几天终于把PS5开发机调试部署成功, 希望能帮到国内的开发者, 主机游戏PlayStation/Nintendo Switch都是比较闭塞的,开发者账号是必须的。 开发环境有两个部分,一是DEV Kit 开发机, TEST Kit测试机两部分组成,二是Unity的支持库(安装后…

最新开源解密版TwoNav网址导航系统源码

源码简介 2024最新开源解密版TwoNav网址导航系统源码去授权破解版 内置二十多套主题模板。 已去授权,最新开源解密版。TwoNav 是一款开源的书签(导航)管理程序,使用PHP SQLite 3开发,界面简洁,安装简单&…

FFmepg--音频编码流程--pcm编码为aac

文章目录 基本概念流程apicode(核心部分) 基本概念 从本地⽂件读取PCM数据进⾏AAC格式编码,然后将编码后的AAC数据存储到本地⽂件。 PCM样本格式:未经压缩的⾳频采样数据裸流 参数: Sample Rate : 采样频率Sample Size : 量化位数Number o…

Matlab进阶绘图第45期—蝴蝶气泡图

蝴蝶气泡图是一种特殊的柱泡图/气泡柱状图。 蝴蝶图一般由左右两个水平柱状图组合而成,其形如蝴蝶展翅,可以很直观地展示两种数据直接的差异。 而蝴蝶气泡图则是在两个水平柱状图每根柱子外侧额外添加大小不同的气泡,用于表示另外一个数据变…

使用IDEA2023创建传统的JavaWeb项目并运行与调试

日期:2024-0312 作者:dusuanyun 文档环境说明: OS:Deepin 20.9(Linux) JDK: OpenJDK21 Tomcat:10.1.19 IDEA: 2023.3.4 (Ultimate Edition) 本文档默认已经安装JDK及环境变量的配置。 关键词…

单片机设计-超声波视力保护仪的设计与实现

项目介绍 技术:C语言、单片机等 本设计利用超声波技术检测眼睛与书本的距离,调整看书位置,通过光敏检测判断环境光线强度是否适合阅读,并通过定时器设定阅读时长,以此解决人们由于看书姿势的错误,阅读环境…

R语言数据挖掘-关联规则挖掘(1)

一、分析目的和数据集描述 要分析的数据是美国一区域的保险费支出的历史数据。保险费用数据表的每列分别为年龄、性别、体重指数、孩子数量、是否吸烟、所在区域、保险收费。 本文的主要目的是分析在年龄、性别、体重指数、孩子数量、是否吸烟、所在区域中这些因素中&#xf…

webpack5零基础入门-8清空前次打包文件与处理图标字体资源

1.配置output中的clean属性为true output: {/**文件输出路径 绝对路径*///__dirname 表示当前文件的文件夹目录path: path.resolve(__dirname, dist),//所有文件的输出目录/**文件名 */filename: static/js/dist.js,//入口文件输出文件名clean: true,//在打包前将path整个目录内…

SSM SpringBoot vue智能手机参数分析平台

SSM SpringBoot vue智能手机参数分析平台 系统功能 首页 图片轮播 新闻资讯 手机信息 手机百科 登录注册 个人中心 后台管理 登录注册 个人中心 手机百科管理 用户管理 手机对比管理 配置管理 新闻资讯管理 手机信息管理 对比信息管理 我的收藏管理 开发环境和技术 开发语言…

安卓国产百度网盘与国外云盘软件onedrive对比

我更愿意使用国外软件公司的产品,而不是使用国内百度等制作的流氓软件。使用这些国产软件让我不放心,他们占用我的设备大量空间,在我的设备上推送运行各种无用的垃圾功能。瞒着我,做一些我不知道的事情。 百度网盘安装包大小&…

爬虫 某物流

目标地址 url "https://api.jdl.com/aging/feeInquiryNewByJDL" 加密参数 ciphertext和data 搜关键字ciphertext跟着栈走 很明显的DES加密 window globalconst e require(jsencrypt); // const e require(JSEncrypt) // e r(775).JSEncrypt // const t requi…

《ARM汇编与逆向工程》读书心得与实战体验

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 📘 一、引言 📝 二、…

信雅纳网络测试的二次开发集成:XOA(Xena Open-Source Automation)开源自动化测试

目录 XOA是什么 XOA CLI XOA Python API ​XOA Python Test Suite/测试套件 XOA Converter Source Code XOA是什么 XOA(Xena Open-Source Automation)是一个开源的测试自动化框架,追求“高效、易用、灵活”的跨操作系统的开发框架。能…

android studio的布局没有提示之SDK不匹配

我新建了一个项目,然后突然发现布局没有提示了: 我看了下我的build.gradle 我直接修改compileSdkVersion为30就能正常使用了

电源常用通讯电路详解

数字电源的采样和PWM驱动电路原理,通过这些技术,数字电源可以在内部形成控制闭环。但是要实现电源的控制和管理,还是需要与数字控制核心建立通讯连接。本期将带领大家了解数字电源常用的通讯电路。 一、常用的通讯方式 在前面数字电源与模拟…

TCP的三次握手和4次挥手

一、首先讲一下TCP的由来 最开始,人们考虑到将网络信息的呼唤与回应进行规范,达成一种公认的协议,就好像没有交通规则的路口设定交通规则。 人们设计出完美的OSI协议,这个协议包含七个层次由下到上分别是: 物理层&…

数据结构知识点汇总(持续更新版)

数据结构 一、绪论 检测知识: 1.1基本概念 以前的计算机 弹道计算机 现如今 主要运用于非数值的计算 基本概念和术语 数据:是信息的载体,描述客观事物属性的值,字符以及所有能输入到计算机中并被计算机程序识别和处理的符号的…

如何搭建“Docker Registry私有仓库,在CentOS7”?

1、下载镜像Docker Registry docker pull registry:2.7.1 2、运行私有库Registry docker run -d -p 5000:5000 -v ${PWD}/registry:/var/lib/registry --restartalways --name registry registry:2.7.1 3、拉取镜像 docker pull busybox 4、打标签,修改IP&#x…

原创 | 一文读懂高斯过程

作者:贾恩东 本文约2700字,建议阅读9分钟 本文将使用通俗易懂的语言引导读者入门高斯过程。 高斯过程(Gaussian Process)是机器学习中一个相当基础的概念,本文中笔者将使用通俗的语言让读者入门高斯过程。 高斯过程&am…