FPGA时序分析与约束(2)——时序电路时序
一、前言
在之前的内容中,我们介绍了组合电路的时序问题和可能导致的毛刺,强烈推荐在阅读前文的基础上再继续阅读本文, 前文链接:FPGA时序分析与约束(1)——组合电路时序
这篇文章中,我们将继续介绍FPGA时序分析相关内容,本文介绍的是时序电路的时序问题。
二、时序电路时序
1、D触发器时序问题
1.1 回顾
触发器(Filp Flop,FF)是一种只能存储一个二进制位(bit,比特)的存储单元,可以用作时序逻辑电路的记忆元件。FPGA逻辑单元中的D触发器(D-FF)是一种在时钟边沿将输入信号的变化传送到输出的边沿触发器。
D触发器的本质是由组合电路元件组成的。D、Q、CLK都有时序要求。
1.2 建立时间与保持时间
CMOS工艺下的D-FF结构如下图所示:
先由传送门和两个反相器组成一个循环电路(锁存器),再由前后两级锁存器按主从结构连接而成。 这里的传输门起开关的作用,随着CLK的状态变化切换开关。只看输入的话,前级锁存器的值将会随着时钟输入的变化有序地传输到后级锁存器。为了防止时钟信号变化时输入信号发生冒险,从而使稳定的输入信号进入前级锁存器,前级锁存器的时钟相位应该与产生输入信号的电路时钟相反。
D-FF电路原理图如下:
当CLK=0(主锁存器工作)时,位于前级的主锁存器将输入D的值保存进来,后级的从锁存器维持上一个时钟周期的数据。由于此时前级和后级反相器环路之间的传输门是关闭状态,所以前级的信号不会传送到后级。
当CLK=1(从锁存器工作)时,前级反相器环路中保存的数据会传输到后级,同时输入D信号会被隔绝在外。如果此时前级反相器环路中的信号没有循环一周以上,就会出现在0和1之间摇摆的中间电位,这就是所谓的亚稳态。由于亚稳态时间比延迟时间长,在该阶段读取数据可能会引入错误,所以我们就引入了建立时间(setup time)来约束在时钟上升沿到来前输入D保持稳定的时间。
当CLK=1时,如果输入D在传送门关闭前就发生了变化,那么本该在下一个时钟周期读取的数据就提前进入了锁存器,就会引起反相器环路振荡或产生亚稳态。因此,在CLK=1之后也需要输入D维持一定的时间,我们称之为保持时间(hold time)约束。
所以总结一下就是:
建立时间 Setup time : 时钟沿到来前数据信号必须保持稳定的最短时间
保持时间 Hold time: 时钟沿到来后数据信号必须保持稳定的最短时间
然后我们可以得到Aperture time : 时钟沿附近数据信号必须保持稳定的最短时间
1.3 触发器输出时序
Contamination delay clock-to-q(tccq):在时钟沿过后,Q开始变化的最早的时间
Propagation delay clock-to-q (tpcq) : 在时钟沿过后,Q停止变化的最晚的时间
1.4 时序系统分析
多个触发器被连接到组合电路中,必须要满足每一个寄存器的时序要求:
以上图为例,需要满足R1,R2两个寄存器的时序要求。也就要求确保R2的正确输入时序。也就要求满足R2的建立时间要求和保持时间要求。
这就意味着在两个触发器之间的组合逻辑电路需要有一个最小的时间延迟和一个最大的时间延迟:
(1)时间延迟太小(传播太快):违反R2的保持时间;
(2)时间延迟太大(传播太慢):违反R2的建立时间。
1.4.1 建立约束
在STA领域,建立是指在要求时间之前检查最新数据是否可用。因此,可以在任意终点进行建立检查——而不仅仅是触发器。即使在输出端也要进行建立检查。
建立可以用如下更加通用的方式进行定义:数据需要在一些参考事件之前建立并使之可用。对于触发器,参考事件是时钟触发。对于其他终点,参考事件是“期望数据在那一点可用的时间。”
安全时间取决于R1到R2的最大时间延迟,到达R2的输入信号必须在时钟沿到来前的建立时间内保持稳定(为时钟周期,
为Q停止变化的时间,
为组合电路输出结束变化的时间)
1.4.2 保持约束
类似地,保持是指在当前信号的稳定性要求满足后,检查最新地数据可以干扰当前信号的最早时间。因此,和建立一样,可以在任意终点进行保持检查,包括在输出端——不仅仅是触发器。
保持可以用如下更通用的方式来定义:一些参考事件后,数据需要保持和不干涉。对于触发器,参考事件是时钟触发。对于其他终点,参考事件是“允许数据在此点变化的时间。”
安全时间取决于R1到R2的最小时间延迟,到达R2的输入信号D2必须在时钟沿到来后的保持时间内保持稳定(为Q开始变化的时间,
为组合电路输出开始变化的时间)
也就是说为了满足我们的设计不出现时序违规的情况,两个触发器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数据可视化是一种将大量数据转化为视觉形式的过程,使得用户可以更容易地理解和分析数据。然而,传统的报表制作过程往往需要手动操作,不仅耗时还容易出错。为了解决这个问题,BI数据可视化工具通常会提供一些自动化的数据更新功能…...

fiddler抓包拦截请求转发到其他地址
使用Fiddler拦截请求转发到指定地址方便于本地调试,不需要进行打包切换地址,可以加快问题的确定修复效果 内容: 1:首先给app进行设置代理抓包内容,给进行 https://blog.csdn.net/qq_43717814/article/details/84317038…...
【Shell编程】| if 判断
最近在编写一些测试程序的时候,对if的使用较为片面,很多小的功能都需要去各个地方百度查询,极为不便,因此也想着空闲时候,对if进行详细总结,一来加深印象,二来是为了打造一个if语句的最详细的使…...

Java手动引入Maven依赖的Jar包
🙈作者简介:练习时长两年半的Java up主 🙉个人主页:程序员老茶 🙊 ps:点赞👍是免费的,却可以让写博客的作者开心好久好久😎 📚系列专栏:Java全栈,…...

计算机毕设 基于大数据的社交平台数据爬虫舆情分析可视化系统
文章目录 0 前言1 课题背景2 实现效果**实现功能****可视化统计****web模块界面展示**3 LDA模型 4 情感分析方法**预处理**特征提取特征选择分类器选择实验 5 部分核心代码6 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕…...
conda取消自动进入base环境
安装conda后取消命令行前出现的base,则默认进入了conda环境,如果想取消每次启动自动激活conda的基础环境。 方法一 每次在命令行通过conda deactivate退出base环境回到系统自带的环境 如果再进入的话: conda deactivate 方法二 1&#…...

【文生图】Stable Diffusion XL 1.0模型Full Fine-tuning指南(U-Net全参微调)
文章目录 前言重要教程链接以海报生成微调为例总体流程数据获取POSTER-TEXTAutoPosterCGL-DatasetPKU PosterLayoutPosterT80KMovie & TV Series & Anime Posters 数据清洗与标注模型训练模型评估生成图片样例宠物包商品海报护肤精华商品海报 一些TipsMata:…...

STM32笔记—DMA
目录 一、DMA简介 二、DMA主要特性 三、DMA框图 3.1 DMA处理 3.2 仲裁器 3.3 DMA通道 扩展: 断言: 枚举: 3.4 可编程的数据传输宽度、对齐方式和数据大小端 3.5 DMA请求映像 四、DMA基本结构 4.1 DMA_Init配置 4.2 实现DMAADC扫描模式 实现要求…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...

自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...