FPGA设计时序分析二、建立/恢复时间
目录
一、背景知识
1.1 理想时序模型
1.2 实际时序模型
1.2.1 时钟不确定性
1.2.2 触发器特性
二、时序分析
2.1 时序模型图
2.2 时序定性分析
一、背景知识
之前的章节提到,时钟对于FPGA的重要性不亚于心脏对于人的重要性,所有的逻辑运算都离开时钟的驱动。那是不是只要有时钟就可以正常运行?答案是否定的,时钟是不能随意的,一个工程设计是否逻辑正常,还需要有正确的时序分析结果。
1.1 理想时序模型
对于一个信号电平1要从寄存器FF1传输到FF2,波形如右图,CLK1成为发送时钟,CLK2为捕获时钟,本例中发送时钟和捕获时钟来自相同的时钟源,实际可不同。在clk1的上升沿位置,信号开始传入,然后从Q直接输出,输出波形为FF1_Q,在第二个周期,电平1要被CLK2的上升沿捕获从而从FF2的Q输出,波形为FF2_Q。
时序分析,即分析两个寄存器间的时序效果,提到时序就离不开你无法忽视而且必须理解透彻的4个概念:setup建立时间、holdup保持时间、recovery恢复时间、removal去除时间。信号可分为3类:时钟信号,控制信号,数据信号,控制信号又包括使能信号,复位信号。setup/holdup描述的是时钟信号和数据信号的关系,recovery/removal描述的是时钟信号和复位信号的关系。
1.2 实际时序模型
在实际的模型中,有两个重点考虑的因素:时钟,触发器
1.2.1 时钟不确定性
时钟存在不确定性,包括时钟时延,时钟偏斜,时钟抖动
时钟时延:时钟在线路上传输存在时延
时钟偏斜:时钟经过不同路径到达寄存器的时间不同,存在时间差,即为时钟偏斜
时钟抖动:时钟的频率无法保持任何时刻间都完全一致,存在变化,这种变为称为时钟抖动
时钟边沿切换:理想的时钟信号,在上升沿和下降沿状态的切换是瞬间完成的,实际上上升沿和下降沿是一个变化的过程,也是需要一定的时间。
1.2.2 触发器特性
触发器从逻辑功能上分为RS触发器,D触发器,JK触发器,从触发形式也可分为边沿触发和电平触发。根据触发器的真值表可明确看出区别,在实际使用时主要都是D触发器,D触发器也是由RS触发器改造而成的。D触发器自身特性是导致存在setup和holdup的根本原因,下图为边沿触发的D触发器内部结构图,由6个与非门组成。
输入为CLK和D,有F4和F5的输出反馈回到F3和F6的输入,而这其中,就存在一定的要求:在时钟上升沿到来前,数据需提前到达,提前到达的最小时间为setup时间,这样数据D才能有效被捕获到,此外,数据和时钟依次到达后,数据信号还需稳定一段时间,该时间的最小值即为holdup时间,否则触发器的输出将不可预知。
注:setup和holdup时间为器件的硬件特性,也即该值为固定值,时序分析时两值为常数。
二、时序分析
2.1 时序模型图
以触发器FF1到触发器FF2间的时序路径为例进行分析,可抽象为下图流程。
clk1:启动时钟,数据data存入FF1
clk2:捕获时钟,FF2用clk2进行Q1的输出数据,为方便理解,clk1和clk2为周期相同的同步时钟
Td:数据data传输到FF1输入端口D1的传输时延Td
Tclk1:时钟clk1传输到FF1时钟端口的时延
Tco:数据data从FF1的输入端口D1到输出端口Q1的时延,也即FF1数据处理时间
Tcomb:数据从Q1到D2中组合逻辑处理的时延
Tnet:数据从Q1到D2中传输过程中的线路传输时延
Tclk2:时钟clk2传输到FF2时钟端口的时延
Tsetup:触发器FF2的建立时间,数据如果要从D2端口被FF2稳定检测到,则要比时钟clk2边沿至少提前Tsetup到达
Tholdup:触发器FF2的保持时间,数据如果要从D2端口被FF2捕获到,则在时钟clk2边沿到达后还得维持状态至少Tholdup时间后,数据才真正被FF2存储进去
T:clk1和clk2的时钟周期相同,都为T,周期不同的分析类似。
2.2 时序定性分析
时钟分析原则:在一个时钟周期内,捕获寄存器FF2上,数据到达时间要比时钟提前至少Tsetup,在时钟到达后,数据至少要保持状态Tholdup时长的时间才能准确存入寄存器中。
时钟波形图如下图
数据到达时间:Tdata=Tclk1+Tco+Tcomb+Tnet
时钟到达时间:Tclk=T+Tclk2
建立时间满足条件:Tsetup<=T+Tclk-Tdata=T+Tclk2-(Tclk1+Tco+Tcomb+Tnet)
公式变换:T>=Tco+Tcomb+Tnet+Tsetup+Tclk1-Tclk2
公式含义:数据传输时延+时钟偏斜+setup时间需小于等于一个周期的时间
保持时间满足条件:Tholdup<=Tdata-Tclk=Tclk1+Tco+Tcomb+Tnet-Tclk2
公式变换:Tclk1+Tco+Tcomb+Tnet>=Tclk2+Tholdup
公式含义:数据从触发器FF1传输到触发器FF2的时延小于等于FF2的时钟延时加上holdup时间,因为对FF2来说,数据data从FF1到达FF2的D端口后,维持Tdata后即会被下一个data覆盖。
对于setup公式还有一个容易引起疑问的地方,就是setup时间到达时间加上了一个时钟周期T,这个要注意波形图中标注的分析的时间起点,最终setup、holdup是针对数据D1从FF1传输到FF2的输入端口D2后进行的,数据从D1到Q1是需要耗费一个周期,因此需要增加一个周期T。
另外,对于modelsim仿真的波形会发现时钟上升沿和数据的变化有时是完全对齐的,无需考虑保持时间和建立时间,这是因为仿真的波形为理想的波形。
相关文章:

FPGA设计时序分析二、建立/恢复时间
目录 一、背景知识 1.1 理想时序模型 1.2 实际时序模型 1.2.1 时钟不确定性 1.2.2 触发器特性 二、时序分析 2.1 时序模型图 2.2 时序定性分析 一、背景知识 之前的章节提到,时钟对于FPGA的重要性不亚于心脏对于人的重要性,所有的逻辑运算都离开…...
oracle建立自动增长字段
oracle数据库与其他的数据库不太一样,比如在mysql里自动增长只要设定“auto_increment”即可。可是在oracle里就没有这种配置了。以oracle11g为例,建立自动增长的字段。操作如下: --创建表 create table USERINFO ( ID NUMBER , …...

【Git】远程仓库的创建、SSH协议克隆、拉取、推送
目录 一、创建远程仓库 二、HTTPS协议克隆仓库 三、SSH协议克隆仓库 四、向远程仓库推送 五、从远程仓库拉取 六、忽略特殊文件 七、配置命令别名 一、创建远程仓库 首先我们可以从GitHub或者Gitee中创建自己的个人仓库 工作台 - Gitee.comhttps://gitee.com/ 二、HTT…...

C#之泛型
目录 一、概述 二、C#中的泛型 继续栈的示例 三、泛型类 (一)声明泛型类 (二)创建构造类型 (三)创建变量和实例 (四)比较泛型和非泛型栈 四、类型参数的约束 (一…...
Scrum敏捷开发管理流程+scrum工具免费
Leangoo领歌它覆盖了敏捷项目研发全流程,包括小型团队Scrum敏捷开发,规模化敏捷SAFe,Scrum of Scrums大规模敏捷。它提供了灵活的敏捷模板和极致的协作体验,可以让团队快速上手,快速落地Scrum敏捷开发管理。 首先建立产…...
【操作系统基础】Linux 中 /var/log/ 文件夹下通常有哪一些文件?分别的作用是什么?
在Linux系统中,/var/log/ 文件夹通常包含了系统日志文件,这些文件记录了系统的各种活动和事件,以便管理员进行故障排除和监控。 以下是/var/log/ 文件夹中常见的一些文件及其含义: auth.log:记录系统认证和授权相关的…...

【构造】CF1758 C
Problem - 1758C - Codeforces 题意: 思路: 思路: #include <bits/stdc.h>#define int long longusing namespace std;const int mxn2e510; const int mxe2e510;int N,x; int ans[mxn];void solve(){cin>>N>>x;if(N%x!0)…...

【etcd】docker 启动单点 etcd
etcd: v3.5.9 etcd-browser: rustyx/etcdv3-browser:latest 本文档主要描述用 docker 部署单点的 etcd, 用 etcd-browser 来查看注册到 etcd 的 key 默认配置启动 docker run -d --name ai-etcd --networkhost --restart always \-v $PWD/etcd.conf.yml:/opt/bitn…...
【单链表OJ题:反转链表】
题目来源 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* reverseList(struct ListNode* head){struct ListNode* current head;struct ListNode* newnode NULL;while(current!NULL){struc…...
Unity UGUI的LayoutRebuilder的介绍及使用
Unity UGUI的LayoutRebuilder的介绍及使用 1. 什么是LayoutRebuilder? LayoutRebuilder是Unity UGUI中的一个组件,用于自动重建布局。它可以根据UI元素的变化,自动调整其子元素的位置和大小,以保持布局的一致性。 2. LayoutReb…...

深刻理解python特性-列表推导式和生成器表达式
哈喽大家好,今天给大家介绍两个Python中特性-列表推导式和生成器表达式 今天我想向你介绍python语言的两个非常有用的特性:列表推导式和生成器表达式。这两个特性都可以让你用一行简洁的代码来创建一个序列,而不需要写循环或者函数。但是它们…...

Sentinel dashboard的使用;Nacos保存Sentinel限流规则
Sentinel dashboard的使用 往期文章 Nacos环境搭建Nacos注册中心的使用Nacos配置中心的使用Sentinel 容灾中心的使用 参考文档 Sentinel alibaba/spring-cloud-alibaba Wiki GitHub 限流结果 下载sentinel-dashboard github地址:Sentinel/sentinel-dashboar…...
vue学习之插值表达式{{}}与显示数据(v-text和v-html)
1. 记得导入 <!-- 在线导入 --> <!-- 开发环境版本,包含了用帮助的命令行警告 --> <script src"https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <!-- 生产环境版本,优化了尺寸和速度 --> <scri…...

2,认识N(logN)的排序【p3】
认识N( logN} 的排序 2.1归并排序2.1.1代码实现归并排序2.1.1.1自己c实现归并排序2.1.1.2gptc实现归并排序2.1.1.3总结2.1.1.4比较行为 2.1.2归并排序使用master公式2.1.3归并排序的扩展2.1.3.1小和问题2.1.3.2逆序对问题 2.2快排、荷兰国旗问题2.2.1问题一2.2.2问题二(荷兰国旗…...
华为机考--服务失效判断--带答案
新2023年华为OD真题机考题库大全-带答案(持续更新)or2023华为OD统一考试(AB卷)题库清单-带答案(持续更新) 题目描述 某系统中有众多服务,每个服务用字符串(只包含字母和数字,长度<…...

C++对C的加强(全)
目录 C对C的加强 命名空间 为什么要使用命名空间 怎么使用命名空间 命名空间的定义 命名空间的使用 使用域解析符 :: 使用using声明 内联命名空间 嵌套命名空间 随时将新的成员加入命名空间 命名空间中 函数的声明和实现分开 无名命名空间 命名空间取别名 使用u…...
ES6及以上新特性
ES6(ECMAScript 2015)及以上版本引入了许多新特性,每个版本都有不同的增强和改进。以下是 ES6 及以上版本的新特性的详细描述: ES6(ECMAScript 2015): let 和 const 声明:引入块级作…...

伦敦金在非农双向挂单
对伦敦金投资有一定经验的投资者都知道,在非农时期,伦敦金市场会出现很大的波动,那么我们如何才能抓住这些波动呢?答案是很难的。但是,有些投资者在多年实践中发明了一种双向挂单的方法,这里和大家一切分享…...
【C语言】—— __attribute__((fallthrough))
__attribute__((fallthrough)) 是一个在编译器中使用的特性,用于指示在 switch 语句中的 case 标签中故意省略 break 语句时的意图。它告诉编译器,故意省略 break 是有意为之,而不是出现了错误或遗漏。 当使用 switch 语句时,通常…...

【深度学习】生成对抗网络Generative Adversarial Nets
序言 本文是GAN网络的原始论文,发表于2014年,我们知道,对抗网络是深度学习中,CNN基础上的一大进步; 它最大的好处是,让网络摆脱训练成“死模型”到固定场所处去应用,而是对于变化的场景…...

接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...