当前位置: 首页 > news >正文

FPGA时序分析与约束(2)——时序电路时序

一、前言

        在之前的内容中,我们介绍了组合电路的时序问题和可能导致的毛刺,强烈推荐在阅读前文的基础上再继续阅读本文, 前文链接:FPGA时序分析与约束(1)——组合电路时序

        这篇文章中,我们将继续介绍FPGA时序分析相关内容,本文介绍的是时序电路的时序问题。

二、时序电路时序

1、D触发器时序问题

1.1 回顾

        触发器(Filp Flop,FF)是一种只能存储一个二进制位(bit,比特)的存储单元,可以用作时序逻辑电路的记忆元件。FPGA逻辑单元中的D触发器(D-FF)是一种在时钟边沿将输入信号的变化传送到输出的边沿触发器。

dcc4dacec3174b3ba12a326233f73d33.jpeg

        D触发器的本质是由组合电路元件组成的。D、Q、CLK都有时序要求。

1.2 建立时间与保持时间

        CMOS工艺下的D-FF结构如下图所示:

51ea70c416a346b29eac6ccc2da0449e.jpeg

        先由传送门和两个反相器组成一个循环电路(锁存器),再由前后两级锁存器按主从结构连接而成。 这里的传输门起开关的作用,随着CLK的状态变化切换开关。只看输入的话,前级锁存器的值将会随着时钟输入的变化有序地传输到后级锁存器。为了防止时钟信号变化时输入信号发生冒险,从而使稳定的输入信号进入前级锁存器,前级锁存器的时钟相位应该与产生输入信号的电路时钟相反。

        D-FF电路原理图如下:

54c9ec01f6694f18b67435c33e8650de.jpeg

        当CLK=0(主锁存器工作)时,位于前级的主锁存器将输入D的值保存进来,后级的从锁存器维持上一个时钟周期的数据。由于此时前级和后级反相器环路之间的传输门是关闭状态,所以前级的信号不会传送到后级。

        当CLK=1(从锁存器工作)时,前级反相器环路中保存的数据会传输到后级,同时输入D信号会被隔绝在外。如果此时前级反相器环路中的信号没有循环一周以上,就会出现在0和1之间摇摆的中间电位,这就是所谓的亚稳态。由于亚稳态时间比延迟时间长,在该阶段读取数据可能会引入错误,所以我们就引入了建立时间(setup time)来约束在时钟上升沿到来前输入D保持稳定的时间。

        当CLK=1时,如果输入D在传送门关闭前就发生了变化,那么本该在下一个时钟周期读取的数据就提前进入了锁存器,就会引起反相器环路振荡或产生亚稳态。因此,在CLK=1之后也需要输入D维持一定的时间,我们称之为保持时间(hold time)约束。

b254f4e5a1a845d19b62ce63e159f688.jpeg

        所以总结一下就是:

建立时间 Setup time : 时钟沿到来前数据信号必须保持稳定的最短时间

保持时间 Hold time: 时钟沿到来后数据信号必须保持稳定的最短时间 

然后我们可以得到Aperture time : 时钟沿附近数据信号必须保持稳定的最短时间

1.3 触发器输出时序

        Contamination delay clock-to-q(tccq):在时钟沿过后,Q开始变化的最早的时间

        Propagation delay clock-to-q (tpcq)  :  在时钟沿过后,Q停止变化的最晚的时间

e008dd391d0c456ea62abe3b1ed785cf.jpeg

1.4 时序系统分析

        多个触发器被连接到组合电路中,必须要满足每一个寄存器的时序要求:

37a43f49aef94224bef26f24ba6b0015.jpeg

        以上图为例,需要满足R1,R2两个寄存器的时序要求。也就要求确保R2的正确输入时序。也就要求满足R2的建立时间要求和保持时间要求。

341489996aad455ca9c9d8942f17c1f0.jpeg

        这就意味着在两个触发器之间的组合逻辑电路需要有一个最小的时间延迟和一个最大的时间延迟:

(1)时间延迟太小(传播太快):违反R2的保持时间;

(2)时间延迟太大(传播太慢):违反R2的建立时间。

 1.4.1 建立约束

       在STA领域,建立是指在要求时间之前检查最新数据是否可用。因此,可以在任意终点进行建立检查——而不仅仅是触发器。即使在输出端也要进行建立检查。

        建立可以用如下更加通用的方式进行定义:数据需要在一些参考事件之前建立并使之可用。对于触发器,参考事件是时钟触发。对于其他终点,参考事件是“期望数据在那一点可用的时间。”

        安全时间取决于R1到R2的最大时间延迟,到达R2的输入信号必须在时钟沿到来前的建立时间内保持稳定(eq?T_%7Bc%7D为时钟周期,eq?t_%7Bpcq%7D为Q停止变化的时间,eq?t_%7Bpd%7D为组合电路输出结束变化的时间)

3451e5e49a80460c874602f081f4eaea.jpeg

1.4.2 保持约束

       类似地,保持是指在当前信号的稳定性要求满足后,检查最新地数据可以干扰当前信号的最早时间。因此,和建立一样,可以在任意终点进行保持检查,包括在输出端——不仅仅是触发器。

        保持可以用如下更通用的方式来定义:一些参考事件后,数据需要保持和不干涉。对于触发器,参考事件是时钟触发。对于其他终点,参考事件是“允许数据在此点变化的时间。”

        安全时间取决于R1到R2的最小时间延迟,到达R2的输入信号D2必须在时钟沿到来后的保持时间内保持稳定(eq?t_%7Bccq%7D为Q开始变化的时间,eq?t_%7Bcd%7D为组合电路输出开始变化的时间)

fe9dc02ab539414d92b5fef1ad0a248d.jpeg

ff4d80c7accf4094aad8352bf8f4e188.jpeg

        也就是说为了满足我们的设计不出现时序违规的情况,两个触发器R1,R2之间的组合电路被设置了一个最大时间延迟和一个最小时间延迟。组合电路的时延在这个范围之内。

1.4.3 其他分析

        建立检查可以确保移动最慢的数据也能及时达到并满足建立的标准。因此,数据路径可以计算最大延迟。因此,它也被称为最大分析(max analysis)。由于建立检查考虑了最晚的数据,所以也称为晚期分析(late analysis)。

        类似地,保持检查可以确保即使是移动最快的数据也不应该干扰其他数据,同时期望数据保持稳定。因此,数据路径计算最小延迟。因此,它也被称为最小分析(min analysis)。由于保持检查考虑了最早到达地数据,所以也称之为早期分析(early analysis)。

        STA的建立-保持分析也被称为最大-最小分析或者早期-晚期分析。

        除了建立或者保持分析外,STA还进行脉冲宽度、恢复、撤销分析等。

1.4.4 裕度

        建立裕度 = 数据建立要求 - 最后一个到达的信号

        保持裕度 = 最早达到的信号 - 数据稳定要求

        正裕度意味着时序已经得到满足,而负裕度意味着时序尚未得到满足。根据所使用工具的不同,报告的确切格式将不同。但是,对于任何工具而言,它们都将通过路径跟踪延迟(建立分析的最大值和保持分析的最小值),并跟踪信号所要求的时间。然后,它将比较两个数值并给出裕度值(正或负)。路径延迟或要求时间的计算还考虑了时钟路径的延迟,该延迟用于触发起点处的数据启动和终点处的数据捕捉。

三、总结

        本文我们介绍了时序电路中的时序问题,这是我们进行进一步时序分析内容学习的重要理论基础,首先我们介绍了D触发器相关内容,着重说明了建立时间和保持时间的含义和产生原因,然后引入了触发器的输出时序,最后介绍了时序电路系统的设计约束。

        在后续的文章中,我们计划进一步讨论关于时钟的相关内容,毕竟除了组合逻辑电路和时序逻辑电路,我们现实中的时钟也是存在时延的。

相关文章:

FPGA时序分析与约束(2)——时序电路时序

一、前言 在之前的内容中,我们介绍了组合电路的时序问题和可能导致的毛刺,强烈推荐在阅读前文的基础上再继续阅读本文, 前文链接:FPGA时序分析与约束(1)——组合电路时序 这篇文章中,我们将继续…...

明御安全网关任意文件上传漏洞复现

简介 安恒信息明御安全网关(NGFW) 秉持安全可视、简单有效的理念,以资产为视角的全流程防御的下一代安全防护体系,并融合传统防火墙、入侵防御系统、防病毒网关、上网行为管控、VPN网关、威胁情报等安全模块于一体的智慧化安全网关。 较低版本的系统存…...

JVM虚拟机:如何查看自己的JVM默认的垃圾回收器

只需要在程序运行的时候指定下面的参数就可以看到当前自己的JVM默认的垃圾回收器是什么?如下所示: 如上所示,默认使用的是G1回收器,这是我的电脑,因为我的电脑安装jdk的版本是1.9 如果你的jdk的版本是1.8,那…...

目标检测YOLO系列从入门到精通技术详解100篇-【目标检测】机器视觉

目录 前言 几个高频面试题目 像素和像元如何选择?...

设计模式——建造者模式

目录 建造者模式盖房项目需求基本介绍四个角色实例代码注意事项和细节抽象工厂模式 VS 建造者模式 建造者模式 盖房项目需求 传统方式:打地基,砌墙,封顶 盖房子步骤 public abstract class AbstractHouse {// 地基public abstract void b…...

Go语言用Colly库编写的图像爬虫程序

下面是一个使用Colly库编写的Go语言图像爬虫程序,该程序会爬取news.qq上的图片,并使用proxy_host:duoip和proxy_port:8000的爬虫IP服务器进行抓取。 package mainimport ("fmt""net/http""github.com/crawlab-collective/go-co…...

14.2 并发与竞争实验

一、原子操作实验 这节使用原子操作来实现对 LED 设备的互斥访问,也就是只有一个应用程序能使用 LED。 1.1 实验程序编写 因为是 12 章已经修改了设备树,所以这里暂时不用修改。 在 /linux/atk-mpl/Drivers 该目录下创建 7_atomic 子目录,并且…...

【MediaTek】T750实现Host 网络和Guest 网络隔离以及各个连接终端间隔离功能

T750 WiFi WiFi芯片MT7915AN Wi-Fi 标准IEEE 802.11a/b/g/n/ac/ax支持的速率802.11ax: 4 到 2400 Mbps802.11ac: 6.5 到 1732 Mbps802.11n: 6.5 到 600 Mbps802.11a/g:6 到 54 Mbps802.11b: 1 到 11 Mbps支持的信道2.4 GHz:1-135 GHz:36-64、100-144 和 149-165多输入多输…...

数字滤波器之高通滤波器设计

文章来源地址:https://www.yii666.com/blog/393376.html 通过在Z平面放置零极点的来设计数字滤波器 要求:设计一款高通滤波器,用在音频信号处理过程中,滤掉100Hz以下的信号。 实现方法:通过在Z平面放置零极点的来设…...

【leetcode】58.最后一个单词的长度

题目 最后一个单词的长度 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1: 输入:s “Hello World”…...

用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组

目录 一、冒泡排序 1.冒泡排序介绍 2.排序的思路 3.完整代码 二、折半查找 1.折半查找介绍 2.查找的思路 3.完整代码 三、逆序数组 1.逆序思路 2..完整代码 一、冒泡排序 冒泡排序是众多排序的一种,无论在C语言或者Java中都很常见,后续在数据…...

antd本地上传excel文件并读取文件的数据转为json

1.写一个上传 这里直接用upload组件即可 <Upload {...uploadProps} maxCount{1} accept{".xlsx"}><Button icon{<UploadOutlined />}>{${formatMessage({id: clk_upload}, {file: formatMessage({id: excel_file})})}}</Button></Uploa…...

BI数据可视化:不要重复做报表,只需更新数据

BI数据可视化是一种将大量数据转化为视觉形式的过程&#xff0c;使得用户可以更容易地理解和分析数据。然而&#xff0c;传统的报表制作过程往往需要手动操作&#xff0c;不仅耗时还容易出错。为了解决这个问题&#xff0c;BI数据可视化工具通常会提供一些自动化的数据更新功能…...

fiddler抓包拦截请求转发到其他地址

使用Fiddler拦截请求转发到指定地址方便于本地调试&#xff0c;不需要进行打包切换地址&#xff0c;可以加快问题的确定修复效果 内容&#xff1a; 1&#xff1a;首先给app进行设置代理抓包内容&#xff0c;给进行 https://blog.csdn.net/qq_43717814/article/details/84317038…...

【Shell编程】| if 判断

最近在编写一些测试程序的时候&#xff0c;对if的使用较为片面&#xff0c;很多小的功能都需要去各个地方百度查询&#xff0c;极为不便&#xff0c;因此也想着空闲时候&#xff0c;对if进行详细总结&#xff0c;一来加深印象&#xff0c;二来是为了打造一个if语句的最详细的使…...

Java手动引入Maven依赖的Jar包

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…...

计算机毕设 基于大数据的社交平台数据爬虫舆情分析可视化系统

文章目录 0 前言1 课题背景2 实现效果**实现功能****可视化统计****web模块界面展示**3 LDA模型 4 情感分析方法**预处理**特征提取特征选择分类器选择实验 5 部分核心代码6 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕…...

conda取消自动进入base环境

安装conda后取消命令行前出现的base&#xff0c;则默认进入了conda环境&#xff0c;如果想取消每次启动自动激活conda的基础环境。 方法一 每次在命令行通过conda deactivate退出base环境回到系统自带的环境 如果再进入的话&#xff1a; conda deactivate 方法二 1&#…...

【文生图】Stable Diffusion XL 1.0模型Full Fine-tuning指南(U-Net全参微调)

文章目录 前言重要教程链接以海报生成微调为例总体流程数据获取POSTER-TEXTAutoPosterCGL-DatasetPKU PosterLayoutPosterT80KMovie & TV Series & Anime Posters 数据清洗与标注模型训练模型评估生成图片样例宠物包商品海报护肤精华商品海报 一些TipsMata&#xff1a;…...

STM32笔记—DMA

目录 一、DMA简介 二、DMA主要特性 三、DMA框图 3.1 DMA处理 3.2 仲裁器 3.3 DMA通道 扩展: 断言&#xff1a; 枚举&#xff1a; 3.4 可编程的数据传输宽度、对齐方式和数据大小端 3.5 DMA请求映像 四、DMA基本结构 4.1 DMA_Init配置 4.2 实现DMAADC扫描模式 实现要求…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...