FPGA设计时序分析二、建立/恢复时间

news2024/11/26 13:50:19

目录

一、背景知识

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仿真的波形会发现时钟上升沿和数据的变化有时是完全对齐的,无需考虑保持时间和建立时间,这是因为仿真的波形为理想的波形。

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

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

相关文章

[start] m40 test

software & update 470 drive version # cd /etc/apt # mv sources.list sources.list.bak # sudo vi /etc/apt/sources.list # 默认注释了源码镜像以提高 apt update 速度&#xff0c;如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ ja…

供应商管理平台:高效整合资源,提升供应链效能

随着全球市场竞争的不断升级&#xff0c;企业对供应商管理的重要性越来越重视。而供应商管理平台作为一种高效整合资源、提升供应链效能的工具&#xff0c;对于企业来说意义深远。本文将围绕供应商管理平台的概念、优势以及应用&#xff0c;探讨其在提升供应商管理和优化供应链…

面向对象编程:多态性的理论与实践

文章目录 1. 修饰词和访问权限2. 多态的概念3. 多态的使用现象4. 多态的问题与解决5. 多态的意义 在面向对象编程中&#xff0c;多态是一个重要的概念&#xff0c;它允许不同的对象以不同的方式响应相同的消息。本文将深入探讨多态的概念及其应用&#xff0c;以及在Java中如何实…

Docker 网络端口映射 四大网络模式

Docker 网络端口映射 Docker 网络实现原理 Docker使用Linux桥接&#xff0c;在宿主机虚拟一个Docker容器网桥(docker0)&#xff0c;Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址&#xff0c;称为Container-IP&#xff0c;同时Docker网桥是每个容器的默认网…

爆肝整理,接口测试方法总结+常问面试题(答案)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 理想的测试流程 …

flask路由添加参数

flask路由添加参数 在 Flask 中&#xff0c;可以通过两种方式在路由中添加参数&#xff1a;在路由字符串中直接指定参数&#xff0c;或者通过 request 对象从请求中获取参数。 在路由字符串中指定参数&#xff1a;可以将参数直接包含在路由字符串中。参数可以是字符串、整数、…

8-js高级-6(promise)

一 Promise 的理解和使用 1 Promise 是什么? 理解 抽象表达: Promise 是一门新的技术(ES6 规范)Promise 是 JS 中进行异步编程的新解决方案 (备注&#xff1a;旧方案是单纯使用回调函数) 具体表达: 从语法上来说: Promise 是一个构造函数从功能上来说: promise 对象用来…

vue3 实现排序按钮

需求背景解决效果index.vue 需求背景 需要实现一个复用性&#xff0c;是提供表单顺倒排序的按钮 解决效果 index.vue <!--/*** author: liuk* date: 2023/7/25* describe: 排序按钮*/--> <template><div class"sort-fn"><span :class"[…

记一次完整体系的攻防演练

准备工作&#xff1a; 1&#xff0c;在客户的内网环境部署一个Windows7系统&#xff0c;在这个系统上把finecms这个应用部署上去。把finecms安装之后&#xff0c;和客户沟通&#xff0c;把这个应用的地址映射到公网上去。 2&#xff0c;其次&#xff0c;没有条件的话&#xff0…

蓝桥杯上岸必背!!!(第七期 最短路算法)

第七期&#xff1a;最短路算法&#x1f525; &#x1f525; &#x1f525; 蓝桥杯热门考点模板总结来啦✨ 你绝绝绝绝绝绝对不能错过的常考最短路算法模板 &#x1f4a5; ❗️ ❗️ ❗️ 大家好 我是寸铁✨ 还没背熟模板的伙伴们背起来 &#x1f4aa; &#x1f4aa; &…

SpringBoot整合JavaMail

SpringBoot整合JavaMail 简单使用-发送简单邮件 介绍协议 导入坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>添加配置 spring:mail:host: smtp.qq.co…

JVM系统优化实践(23):GC生产环境案例(6)

您好&#xff0c;这里是「码农镖局」CSDN博客&#xff0c;欢迎您来&#xff0c;欢迎您再来&#xff5e; 在互联网大厂中&#xff0c;对每天亿级流量的日志进行清洗、整理是非常常见的工作。在某个系统中&#xff0c;需要对用户的访问日志做脱敏处理&#xff0c;也就是清洗掉姓名…

day41-Verify Account Ui(短信验证码小格子输入效果)

50 天学习 50 个项目 - HTMLCSS and JavaScript day41-Verify Account Ui&#xff08;短信验证码小格子输入效果&#xff09; 效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name&qu…

Shell脚本实战——对MySQL进行分库分表备份

一、查看当前数据库以及数据表 如何除去Datebase标题字样以及系统自带的数据库呢&#xff1f;可以使用以下命令 mysql -uroot -p#BenJM123 -e show databases -N | egrep -v "information_schema|mysql|performance_schema|sys"剩下的两个就是用户自己创建的表啦&am…

分享一个JSON插件

文章目录 知识回顾使用方法 知识回顾 看官们&#xff0c;最近在使用Flutter做网络相关的操作&#xff0c;主要是Http请求操作&#xff0c;请求结果基本上都是JSON格式&#xff0c;因此需要把JSON格式转换成Dart语法的数据模型。如果手动编写的话会占用时间而且容易出错。因此&…

UCDOS和WPS推动计算机领域的汉字化发展,中文编程该谁力扛大旗?

你还记得UCDOS吗&#xff1f; 从DOS时代过来的人&#xff0c;还知道UCDOS的&#xff0c;现在可能已经是中年人了&#xff01; 当时&#xff0c;鲍岳桥的UCDOS可以称得上是中国的国产操作系统。 在Windows还没来得及进入中国市场时&#xff0c;UCDOS可以说是走向了巅峰时刻&a…

【分库分表】分库分表常见问题和解决方案

文章目录 前言MySQL出现的性能问题Mysql常见的优化手段大数据表优化方案详解分库分表垂直拆分单库垂直分表多库垂直分表 水平拆分单库水平分表多库水平分表常见的水平分表策略哈希取模分片hash取模的问题一致性hash算法按照范围分片 分库分表实战根据uid进行水平分表如何实现全…

lambda表达式的进阶过程

文章目录 什么是Lambda表达式简述Lambda表达式的优点语法格式 函数式接口定义常见的函数式接口汇总 Lambda的演化过程lambda表达式简化 总结 什么是Lambda表达式 简述 Lambda表达式是JAVA8中提供的一种新的特性&#xff0c;是一个匿名函数方法。可以把Lambda表达式理解为一段…

关于uniapp中的日历组件uni-calendar中的小红点

关于uniapp中的日历组件uni-calendar中的小红点 如果你使用过uni-calendar组件&#xff0c;可能你觉得这个小红点有点碍眼&#xff0c;但是官方给定的日历组件uni-calendar中如果你想要在某一天上添加一些信息例如:价格&#xff0c;签到&#xff0c;打卡之类&#xff0c;只要标…

【PWN · ret2text | 伪rand()】[HDCTF 2023]pwnner

伪随机数以及ctypes库的初步接触 目录 前言 一、题目 二、解题思路 三、exp 总结 前言 一道简单的ret2text&#xff0c;加上一些伪随机的知识&#xff0c;对于本蒟蒻萌新来说&#xff0c;比较新&#xff0c;值得记录。 一、题目 栈溢出保护、PIE保护都没有开。反汇编后…