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

news2024/9/20 2:56:07

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.coloradmin.cn/o/1612218.html

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

相关文章

[2021最新]大数据平台CDH存储组件kudu之启用HA高可用(添加多个master)

今天在做kudu高可用的时候没有参考官网,直接按照常规方式(添加角色—>编辑属性—>启动)结果发现报错?然后参考了一下文档之后发现这玩意儿还有点玄学,做一下记录。 1.添加两个master。kudu master有leader和foll…

革命性创新,实景AI无人自动直播系统,轻松实现24小时日不落直播卖券。

革命性创新!实景AI无人自动直播系统,轻松实现24小时日不落直播卖券! 最近,越来越多的朋友纷纷关注到了AI自动直播带货的新玩法,并且也都想要开设自己的自动直播间。然而,对于这种自动讲解、自动回复的直播…

docker-003镜像制作

步骤 使用docker commit提交容器使之成为镜像以ubuntu安装vim后的容器为例 1 ubuntu安装vim 启动容器 docker run -it --nameubuntu-vim ubuntu /bin/bash安装vim apt-get update apt-get install vim2 提交容器作为镜像 查看容器 docker ps -a提交容器作为镜像 命令格式&…

js 打印网页时没有背景色,window.print打印背景色丢失

页面效果 打印效果 需要在打印的容器里增加下面代码 /*webkit 为Google Chrome、Safari等浏览器内核*/ -webkit-print-color-adjust: exact; /*解决火狐浏览器打印*/ print-color-adjust: exact; color-adjust: exact; 完整写法 我为了方便直接写*,这样所有元素都…

如何设置unbuntu时间及同步时间

文章目录 时区时间同步与服务 时间同步的重要性Ubuntu系统中设置时间和同步时间方法一:通过图形界面设置查看当前时间设置时间和时区设置时区(假设设置为UTC):设置本地时间(例如,设置时间为2024年4月21日 1…

23.组件注册方式

组件注册方式 一个 Vue 组件在使用前需要先被“注册”,这样 Vue 才能在渲染模板时找到其对应的实现。组件注册有两种方式:全局注册和局部注册 全局注册 import { createApp } from vue import App from ./App.vue import GlobalComponent from ".…

【C++】STL:vector常用接口的使用和模拟实现

Hello everybody!这篇文章主要给大家讲讲vector常用接口的模拟实现,STL库中的实现一层套着一层,十分复杂,目前阶段还不适合看源代码。而模拟实现可以让我们从底层上了解这些接口的原理从而更好的使用这些接口。另外我还会讲一些在vector使用过…

OSPF的学习笔记

1.OSPF (1)链路状态路由协议的路由信息并不是像距离矢量路由协议那样(邻居告诉的),通过收集自身以及邻居发出的LSA(原材料),并LSA放到指定仓库里面(LSDB),通过SPF算法,以自己为根计算到达网络每个节点的最优…

LeetCode刷题实战5:最长回文子串

题目内容 给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例 1: 输入:s "babad" 输出:"bab" 解释:"aba"…

虚拟线程的定义及使用

0.前言 长期以来,虚拟线程是 Java 中最重要的创新之一。 它们是在 Project Loom 中开发的,自 Java 19 作为预览功能以来一直包含在 JDK 中,自 Java 21 作为最终版本 (JEP 444) 以来,它们已包含在 JDK 中。 1.虚拟线程的作用 任…

深入OceanBase内部机制:资源隔离实现的方式总结

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 目录 1. 为何HTAP需要资源隔离2. OceanBase的资源隔离机制概述租户间资源隔离租户内资源隔离物理资源隔离大查询请求的隔离优先级…

如何批量给Word文件增加前缀序号?“汇帮批量重命名”帮助你批量给word文件增加前缀序号。

批量给Word文件增加前缀序号的过程,对于经常处理大量文档的人来说,是一项既繁琐又必要的任务。首先,我们需要明确为什么要给Word文件增加前缀序号。在很多情况下,当我们需要按照一定的顺序对多个文档进行管理和归档时,…

【CSS】CSS实现元素逐渐消失(实现元素透明逐渐消失/模糊)

mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 10%);mask-image 属性用于定义一个遮罩,它可以隐藏元素的一部分或全部内容。在这个示例中,我们使用 mask-image 属性来定义一个线性渐变的遮罩,使得列表项的内…

适配器模式【结构型模式C++】

1.概述 适配器模式是一种结构型设计模式, 又称为变压器模式、包装模式(Wrapper) 将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 2.结构 Target:适配…

Https网站接口被黑被恶意调取

背景: 维护的一个网站最近短信接口被黑,发送大量短信。起初以为是在网站内部操作,优化了发送短信前的操作,如添加图形验证码,屏蔽国外IP等。但后续还存在被调取情况,定位排查到是该接口在外部被恶意调取。 …

Pod 状态 Bsck Off,是什么情况?

k8s项目运维中,相信各位都遇到过 Pod 状态 Bsck Off 的情况,如上图:该情况主要原因是我们 Pod 中没有任何容器运行成功,而能容器能成功运行的前提是,容器内部是有进程的,只要容器中的进程不停止&#xff0c…

ATM第二弹~~~

昨天发现自己电脑的运行速度太慢的问题后,在autodl租了个4090 (本来跑了4个小时快好了,但由于没有续上费,断了。。。。) ( 2.58 每小时,贵死我了。。。。) 又重新开了个4090d(409…

论文笔记:Large Language Model for Participatory Urban Planning

202402 arxiv 大模型城市规划 引入了一个基于LLM的多代理协作框架,模拟规划师和数千名具有不同特征和背景的居民,用于参与式城市规划——>生成考虑居民多样化需求的城市区域土地利用规划为了提高讨论的效率,论文采用了鱼缸讨论机制&#…

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

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

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

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