时序分析基础(6)——input delay时序分析

1 简介

  FPGA对于外部的时钟以及数据的延时信息是不知道的,在低速时钟且时钟发射沿在数据正中心的时候,一般可以不做约束来直接使用。但是到了高速时钟或者双沿采样或者发射沿和数据对齐的情况下,这时候就需要告诉VIVADO外部的时钟与数据情况来让VIVADO分析能否满足建立时间与保持时间。INPUT约束仅仅只是告诉VIVADO外部的时钟情况,而内部的布局布线并不会因此改变。

2 INPUT模型

在这里插入图片描述

  上图两个图是外部时钟的两种模型,一种是源同步模型,源同步模型是指时钟给上游芯片,芯片发出时钟与数据给FPGA,这样的好处是时钟和数据同源,有利于时序分析。另一个是系统同步的FPGA输入模型,时钟分别给上游器件和FPGA,这种不好分析FPGA端口的数据与时钟关系,不利于时序约束。现在电路一般采用源同步模式,所以一般情况下只分析源同步模式。
  上游器件一般都是数据采集器件,如AD转换芯片,摄像头芯片。然后通过PCB走线进入到FPGA内部,其中,对于VIVADO来说,FPGA内部的延时是已知的,但是不知道外部数据与时钟的关系,这个时候就需要对外部的时钟以及数据进行约束来告诉FPGA时钟与数据的关系来看是否能正确采集到数据。
  外部的时钟与数据的延时一般情况下包含两个部分,一个是芯片在发射数据的时候,时钟与数据之间的时间延时,另一个就是数据与时钟在PCB走线的时候经过的延时,一般情况下,PCB在布线的时候数据和时钟会做等长设计,这里我们就先不考虑PCB延时。
  源同步模型如下:
在这里插入图片描述
  时钟给上游器件,然后上游器件发出时钟与数据经过PCB走线进入FPGA。这里我们主要分析的就是时钟的采样沿与数据到来的时间,这两个参数是需要给到VIVADO的。我们来在前面的基础上继续分析这个模型的数据实际到达时间与数据要求到达时间。
  数据实际到达的时间有:
D a t a a r r i v a l t i m e = T c o + T d _ b d + T d _ f i (1) Data \;arrival\;time=T_{co}+T_{d\_bd}+T_{d\_fi}\tag{1} Dataarrivaltime=Tco+Td_bd+Td_fi(1)
  数据要求到达的时间有:
D a t a R e q u i r e a r r i v a l t i m e = T c y c l e + T c _ d + T c _ b d + T c _ f i − T s u (2) Data\;Require\;arrival\;time=T_{cycle}+T_{c\_d}+T_{c\_bd}+T_{c\_fi}-T_{su}\tag{2} DataRequirearrivaltime=Tcycle+Tc_d+Tc_bd+Tc_fiTsu(2)
  建立时间裕量有:
S e t u p S l a c k = D a t a R e q u i r e t i m e − D a t a a r r i v a l t i m e = T c y c l e + T c _ d + T c _ b d + T c _ f i − T s u − ( T c o + T d _ b d + T d _ f i ) (3) Setup \;Slack= Data \;Require\;time-Data \;arrival\;time\\ \,\\\qquad\qquad\qquad=T_{cycle}+T_{c\_d}+T_{c\_bd}+T_{c\_fi}-T_{su}-(T_{co}+T_{d\_bd}+T_{d\_fi})\tag{3} SetupSlack=DataRequiretimeDataarrivaltime=Tcycle+Tc_d+Tc_bd+Tc_fiTsuTco+Td_bd+Td_fi(3)
  由于数据一般是多bit并行输出的,且输出的时间与时钟并不是固定的延时,所以一般情况下, T c o T_{co} Tco T d _ b d T_{d\_bd} Td_bd存在一个最大最小值,在分析建立时间裕量的时候,从公式中可以看出当数据延时取最大值的时候,建立时间裕量最小。
  下面是保持时间分析:
  数据实际结束的时间有:
D a t a f i n i s h t i m e = T c o + T d _ b d + T d _ f i + T c y c l e (4) Data \;finish\;time=T_{co}+T_{d\_bd}+T_{d\_fi}+T_{cycle}\tag{4} Datafinishtime=Tco+Td_bd+Td_fi+Tcycle(4)
  数据要求结束的时间有:
D a t a R e q u i r e f i n i s h t i m e = T c y c l e + T c _ d + T c _ b d + T c _ f i + T h (5) Data\;Require\;finish\;time=T_{cycle}+T_{c\_d}+T_{c\_bd}+T_{c\_fi}+T_{h}\tag{5} DataRequirefinishtime=Tcycle+Tc_d+Tc_bd+Tc_fi+Th(5)
  保持时间裕量有:
H o l d S l a c k = D a t a R e q u i r e f i n i s h t i m e − D a t a f i n i s h t i m e = T c o + T d _ b d + T d _ f i + T c y c l e − ( T c y c l e + T c _ d + T c _ b d + T c _ f i + T h ) (6) Hold \;Slack= Data \;Require\;finish\;time-Data \;finish\;time\\ \,\\\qquad\qquad\qquad=T_{co}+T_{d\_bd}+T_{d\_fi}+T_{cycle}-(T_{cycle}+T_{c\_d}+T_{c\_bd}+T_{c\_fi}+T_{h})\tag{6} HoldSlack=DataRequirefinishtimeDatafinishtime=Tco+Td_bd+Td_fi+TcycleTcycle+Tc_d+Tc_bd+Tc_fi+Th(6)
  从公式中可以看出当数据延时取最小值的时候,保持时间裕量最小。

3 INPUT时序约束

  上游器件的时钟和数据一般有两种关系,一种是时钟发射沿和数据的起始对齐,另一种是时钟的发射沿与数据的保持时间中心对齐。一般情况下,数据在两个采样沿中心的时候,对于FPGA是时序最好的时候,而时钟的发射沿与数据对齐的时候,时序最容易出现违例的情况,而且建立时间和保持时间都有可能出现违例。
  input delay 描述的是发射沿与数据的起始位之间的关系。

3.1 input delay 中心对齐

在这里插入图片描述
  当时钟的发射沿与数据的正中心对齐时,这时候的只需要在时序约束中填上数据正中心的发射沿分别距离数据最小以及最大的延时即可,例如一个占空比50%的50MHz时钟,数据采用中心对齐的方式发送,数据的最小以及最大延时均为2ns,那么就要在时序约束的时候约束数据距离时钟的上升沿为8ns和12ns,采样时钟为上升沿。具体的时序约束在最后做,这里先略过。

3.2 input delay 边沿对齐

在这里插入图片描述
  上图是就是边沿对齐的传输方式,这种方式下就会有一个问题,时钟的发射沿相对于数据的延时时多少?

3.2.1 发射时钟与数据起始位对齐

  当将发射时钟与数据起始位对齐时,时序较容易出现保持时序违例,此时的约束里面应该填的就是±2ns,此时看时序报告,是非常容易出现违例的。
  当发射时钟比数据起始位快一个时钟的时候,此时的时序约束就应该填写18ns和22ns。此时看时序报告,时序报告最有可能出现建立时序违例。为什么会出现这种情况呢,首先需要搞明白当我们把最大最小的延时给到VIVADO后,VIVADO是怎么分析的。
在这里插入图片描述
  如图所示,当对时钟进行约束时,假设填的参数中最大最小延时的参考是发射沿与数据起始沿1,那么VIVADO就会默认采样沿采集的数据是数据起始沿1到数据起始沿2之间的数据,假如进入FPGA后时钟比数据快,建立时间能满足要求,但是保持时间不能满足;假如数据比时钟快,数据必须比时钟快2ns+保持时间门限以上保持时间才能满足保持时间的要求。
  假设填的参数中最大最小延时的参考是发射沿与数据起始沿12,那么VIVADO就会默认采样沿采集的数据是数据起始沿2后的一个数据,假如进入FPGA后时钟比数据快,即时钟左移,建立时间一定不能满足要求,但是保持时间能满足;假如数据比时钟快,即时钟右移,保持时间能满足要求,除非数据快2ns+建立时间门限,不然还是违例状态。
  综上所述,在发射沿与数据对齐的时候,一般时序较难满足,会用一些其他方式来调整时序以达到时序收敛。如PLL来调整时钟,或者原语来调整数据。

3.3 PLL调整input delay

  加入PLL后,即使不设置相移,时钟都会出现移相,一般情况下是时钟左移,在时序分析中经过PLL时序会有负数。加入在调节PLL左移,也就是负相的话不需要multicycle设置,而正相移动则需要multicycle设置。

3.4 DDR的input delay

  前面都是单沿采样,也就是都是上升沿采样,但是在实际中会有双沿采样的时候,也就是上升沿与下降沿都发射与采集数据。这时候就需要多做一组时序约束,用来约束下降沿的时序。

4 VIVADO的input delay约束

在这里插入图片描述

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

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

相关文章

python学习28:python中的集合set

python中的集合set 1.集合的定义 集合set是不支持重复元素的,而且是无序的 和列表、元组、字符串等定义基本相同: 列表使用:[]元组使用:()字符串使用:“”集合使用:{} 基本语法: """ 基本语法&#…

多轴机械臂/正逆解/轨迹规划/机器人运动学/Matlab/DH法 学习记录03——机械臂运动学逆解

系列文章目录 本科毕设正在做多轴机械臂相关的内容,这里是一个学习机械臂运动学课程的相关记录。 如有任何问题,可发邮件至layraliufoxmail.com问询。 1. 数学基础 2. 机械臂几何法与DH表示法 3. 机械臂运动学逆解 文章目录 系列文章目录一、引言1.手臂…

文件系统和软硬链接

文章目录 文件系统磁盘磁盘逻辑抽象inode 软硬链接软链接硬链接 文件系统 文件分为打开的文件和没有被打开的文件,而只有打开的文件是在内存的,也就是我们之前讲的,然而大部分文件都不是被打开的(当前不需要被访问的),它们都在磁…

硬盘日常使用中的注意事项

硬盘是计算机中的重要存储设备,负责存储大量的数据。为了确保数据的完整性和硬盘的寿命,日常使用中需要注意以下几点: 避免震动和撞击:硬盘在工作时,内部的磁盘正在高速旋转,任何轻微的震动或撞击都可能导致磁盘损坏或数据丢失。因此,使用硬盘时应确保计算机放置稳定,避…

输电线路运行特性及简单电力系统潮流估算(二)

本篇为本科课程《电力系统稳态分析》的笔记。 本篇为这一章的第二篇笔记。上一篇传送门,下一篇传送门。 输电线路的运行特性 输电线路的空载运行特性 线路的等值电路如图所示。 由于是空载,则 S ~ 2 0 \widetilde{S}_20 S 2​0,可以计算…

4月阿里offer被毁,我该怎么进字节?

在校招求职的浪潮中,有些故事总是让人唏嘘不已。比如最近在社交平台上广泛讨论的一个话题:“4月阿里offer被毁,我该怎么进字节?”这不仅反映了当下职场的变动性,也映射了求职者在面对突如其来的变故时的无助与挣扎。 …

QT 按钮的工具提示tooltips设置字体大小颜色与背景

QT 按钮的工具提示tooltips设置字体颜色与背景 main.cpp添加 mainwindow.cpp添加全局配置: 构造函数中: QToolTip::setFont(font3); //按钮提示信息通用设置 如下: MainWindow_oq::MainWindow_oq(QWidget *parent) : QMainWindow(parent)…

光伏电站智能勘探:无人机优势及流程详解

随着科技和互联网技术的不断发展,无人机在各个领域的应用越来越广泛,其中之一就是光伏电站智能勘探。利用无人机高清摄像头和传感器等设备,可以对光伏电站周边环境、日照情况、房屋状态进行全方面的勘探和记录,搭配卫星勘探、实地…

C语言中scanf、gets、fgets的区别

scanf、gets和fgets都是C语言中用于从标准输入读取数据的函数,但它们之间存在一些重要的差异: scanf: scanf是一个格式化输入函数,它可以根据指定的格式从标准输入读取数据。使用scanf读取字符串时,需要小心处理缓冲区…

springboot注解开发如何映射对象型数据

创作灵感 最近在帮学校写一款小程序时,有这样一个数据需要展示:一条申请记录,里面包含了申请时间、申请状态、申请所提供的六条活动记录等待,其中,申请所提供的六条活动记录为一个数组,数组中的每个元素又…

【BUG】Hexo|GET _MG_0001.JPG 404 (Not Found),hexo博客搭建过程图片路径正确却找不到图片

我的问题 我查了好多资料,结果原因是图片名称开头是_则该文件会被忽略。。。我注意到网上并没有提到这个问题,遂补了一下这篇博客并且汇总了我找到的所有解决办法。 具体检查方式: hexo生成一下静态资源: hexo g会发现这张图片…

二维码门楼牌管理应用平台建设:网格化管理的新篇章

文章目录 前言一、二维码门楼牌管理应用平台的建设背景二、二维码门楼牌管理应用平台的功能特点三、二维码门楼牌管理应用平台的实际应用四、二维码门楼牌管理应用平台的前景展望 前言 随着信息技术的飞速发展,二维码门楼牌管理应用平台的建设已成为城市网格化管理…

李廉洋:4.20国际黄金,原油本周行情分析及下周一走势分析。

荷兰国际银行表示,所谓的美国国债期限溢价的回升,将为10年期国债收益率重返5%的关键水平铺平道路。从理论上来说,可将10年期美债收益率拆解为未来短端利率的期望期限溢价(term premium)。所谓期限溢价,是对投资者持有长期债券的风…

第十四届蓝桥杯省赛C/C++大学B组真题-飞机降落

思路&#xff1a;根据数据范围N<10猜测用DFS剪枝&#xff0c;因为菜狗不会状压dp。根据题目&#xff0c;一般这种飞机的题都会用到贪心的思想。思想是每架飞机都要卡极限最早降落时间&#xff0c;从而保证后面的飞机能够有充足时间降落。 代码参考博客MQy大佬有详细解答 #i…

深度学习之CNN

目录 我们为什么要用CNN&#xff0c;或者说究竟是因为什么我们要用CNN 卷积操作的实现原理 补充知识 torch.nn.Conv2d&#xff08;&#xff09; 注意 torch.nn.functional.conv2d&#xff08;&#xff09; torch.nn.functional.conv2d&#xff08;&#xff09;和torch.nn.…

前端-每天一道面试题(2)-localStorage/sessionStorage/cookie的区别

都是本地缓存数据的方式。 cookie:类型为小型文本文件&#xff0c;是某些网站为了辨别用户身份而储存在用户本地终端上的数据。是为了解决HTTP无状态导致的问题。最大为4KB,由一个名称&#xff0c;一个值&#xff0c;和其它几个用于控制cookie有效期&#xff0c;安全性&#x…

Fannel和Calico

一 1、路由器下面每一个端口都是一个vlan,隔离了广播包 192.168.1.0和192.168.2.0他们属于不同的vlan,没有三层交换机或者路由器,他们通不了信 不在同一个vlan,也就是子网,包就会走向网关(也就是路由器那里,路由器有路由表。查看目的地192.168.2.0在b口,从b口出去vlan…

模块与包及json模块学习

【一】模块与包介绍 【1】什么是模块 在Python中&#xff0c;一个py文件其实就是一个模块 文件名 knight.py中 py就是模块名 【2】模块的优点 有了模块以后可以增加程序的可读性&#xff0c;提高开发效率 【3】模块的来源 &#xff08;1&#xff09;在Python解释器内部内…

oCPC实践录 | 低转化场景下的智能出价设计

有读者私聊问笔者一个问题&#xff1a;低转化场景下怎么做智能出价。特别是对于电商、线索类行业&#xff0c;每个广告下转化量普遍非常低。 笔者也没有给出很完善的答案&#xff0c;也咨询了行业内资深的出价产品专家&#xff0c;下面尝试总结一下常见的思路&#xff0c;供大…

太多模型了!

多少个 AI 模型才算太多?这需要看你的角度。但每周 10 个可能有点过头了。在过去几天里,我们大概就看到了这么多新模型的推出,要说这些模型彼此之间有何对比,甚至一开始就能比较,都变得越来越难。那么这到底有什么意义呢? 我们正处于 AI 发展的一个奇怪时期,尽管整个过程一直…