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

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 时序定性分析 一、背景知识 之前的章节提到&#xff0c;时钟对于FPGA的重要性不亚于心脏对于人的重要性&#xff0c;所有的逻辑运算都离开…...

oracle建立自动增长字段

oracle数据库与其他的数据库不太一样&#xff0c;比如在mysql里自动增长只要设定“auto_increment”即可。可是在oracle里就没有这种配置了。以oracle11g为例&#xff0c;建立自动增长的字段。操作如下&#xff1a; --创建表 create table USERINFO ( ID NUMBER , …...

【Git】远程仓库的创建、SSH协议克隆、拉取、推送

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

C#之泛型

目录 一、概述 二、C#中的泛型 继续栈的示例 三、泛型类 &#xff08;一&#xff09;声明泛型类 &#xff08;二&#xff09;创建构造类型 &#xff08;三&#xff09;创建变量和实例 &#xff08;四&#xff09;比较泛型和非泛型栈 四、类型参数的约束 &#xff08;一…...

Scrum敏捷开发管理流程+scrum工具免费

Leangoo领歌它覆盖了敏捷项目研发全流程&#xff0c;包括小型团队Scrum敏捷开发&#xff0c;规模化敏捷SAFe&#xff0c;Scrum of Scrums大规模敏捷。它提供了灵活的敏捷模板和极致的协作体验&#xff0c;可以让团队快速上手&#xff0c;快速落地Scrum敏捷开发管理。 首先建立产…...

【操作系统基础】Linux 中 /var/log/ 文件夹下通常有哪一些文件?分别的作用是什么?

在Linux系统中&#xff0c;/var/log/ 文件夹通常包含了系统日志文件&#xff0c;这些文件记录了系统的各种活动和事件&#xff0c;以便管理员进行故障排除和监控。 以下是/var/log/ 文件夹中常见的一些文件及其含义&#xff1a; auth.log&#xff1a;记录系统认证和授权相关的…...

【构造】CF1758 C

Problem - 1758C - Codeforces 题意&#xff1a; 思路&#xff1a; 思路&#xff1a; #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&#xff0c; 用 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&#xff1f; LayoutRebuilder是Unity UGUI中的一个组件&#xff0c;用于自动重建布局。它可以根据UI元素的变化&#xff0c;自动调整其子元素的位置和大小&#xff0c;以保持布局的一致性。 2. LayoutReb…...

深刻理解python特性-列表推导式和生成器表达式

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

Sentinel dashboard的使用;Nacos保存Sentinel限流规则

Sentinel dashboard的使用 往期文章 Nacos环境搭建Nacos注册中心的使用Nacos配置中心的使用Sentinel 容灾中心的使用 参考文档 Sentinel alibaba/spring-cloud-alibaba Wiki GitHub 限流结果 下载sentinel-dashboard github地址&#xff1a;Sentinel/sentinel-dashboar…...

vue学习之插值表达式{{}}与显示数据(v-text和v-html)

1. 记得导入 <!-- 在线导入 --> <!-- 开发环境版本&#xff0c;包含了用帮助的命令行警告 --> <script src"https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <!-- 生产环境版本&#xff0c;优化了尺寸和速度 --> <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真题机考题库大全-带答案&#xff08;持续更新)or2023华为OD统一考试&#xff08;AB卷&#xff09;题库清单-带答案&#xff08;持续更新&#xff09; 题目描述 某系统中有众多服务&#xff0c;每个服务用字符串&#xff08;只包含字母和数字&#xff0c;长度<…...

C++对C的加强(全)

目录 C对C的加强 命名空间 为什么要使用命名空间 怎么使用命名空间 命名空间的定义 命名空间的使用 使用域解析符 :: 使用using声明 内联命名空间 嵌套命名空间 随时将新的成员加入命名空间 命名空间中 函数的声明和实现分开 无名命名空间 命名空间取别名 使用u…...

ES6及以上新特性

ES6&#xff08;ECMAScript 2015&#xff09;及以上版本引入了许多新特性&#xff0c;每个版本都有不同的增强和改进。以下是 ES6 及以上版本的新特性的详细描述&#xff1a; ES6&#xff08;ECMAScript 2015&#xff09;&#xff1a; let 和 const 声明&#xff1a;引入块级作…...

伦敦金在非农双向挂单

对伦敦金投资有一定经验的投资者都知道&#xff0c;在非农时期&#xff0c;伦敦金市场会出现很大的波动&#xff0c;那么我们如何才能抓住这些波动呢&#xff1f;答案是很难的。但是&#xff0c;有些投资者在多年实践中发明了一种双向挂单的方法&#xff0c;这里和大家一切分享…...

【C语言】—— __attribute__((fallthrough))

__attribute__((fallthrough)) 是一个在编译器中使用的特性&#xff0c;用于指示在 switch 语句中的 case 标签中故意省略 break 语句时的意图。它告诉编译器&#xff0c;故意省略 break 是有意为之&#xff0c;而不是出现了错误或遗漏。 当使用 switch 语句时&#xff0c;通常…...

【深度学习】生成对抗网络Generative Adversarial Nets

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

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...

使用SSE解决获取状态不一致问题

使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件&#xff0c;这个上传文件是整体功能的一部分&#xff0c;文件在上传的过程中…...

软件工程 期末复习

瀑布模型&#xff1a;计划 螺旋模型&#xff1a;风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合&#xff1a;模块内部功能紧密 模块之间依赖程度小 高内聚&#xff1a;指的是一个模块内部的功能应该紧密相关。换句话说&#xff0c;一个模块应当只实现单一的功能…...

二维FDTD算法仿真

二维FDTD算法仿真&#xff0c;并带完全匹配层&#xff0c;输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...

2025.6.9总结(利与弊)

凡事都有两面性。在大厂上班也不例外。今天找开发定位问题&#xff0c;从一个接口人不断溯源到另一个 接口人。有时候&#xff0c;不知道是谁的责任填。将工作内容分的很细&#xff0c;每个人负责其中的一小块。我清楚的意识到&#xff0c;自己就是个可以随时替换的螺丝钉&…...