FPGA时序约束理解记录
最近整理了一下时序约束的内容,顺便发出来分享记录一下。
任何硬件想要工作正常,均需满足建立和保持时间,至于这个概念不再陈述。
下面将重点介绍两个概念:建立余量和保持余量。FPGA内部进行时序分析无非就是计算这两个余量,为正,则时序满足要求,否则不满足。
FPGA在与外部期间打交道时,端口如果为输入则与input delay约束相关,如果最为输出则output delay,这两种约束的值究竟是什么涵义,下文
我也会重点刨析,但是前提是需要理解图1和图2建立余量和保持余量。
建立余量:不考虑clk_skew,数据在regA 的发射沿(即第一个上升沿)经过Tco+Tdata则会一直保持不变,等待着接受沿采集,接收沿只需满足的建立时间,余量=T-Tco-Tdata即红色区所示。

保持余量
蓝色是第一个数据,第一个上升沿是蓝色数据的发射沿,第二个上升沿是蓝色数据的接收沿
紫色是第二个数据,第二个上升沿是紫色数据的发射沿,第三个上升沿是紫色数据接收沿(图中未画)
意思是什么?第一个蓝色数据经过发射沿后延迟Tco+Tdata的时间就一直保持不变,直到紫色的数据在其发射沿来后经过Tco+Tdata时间将蓝色数据代替,蓝色数据只需要在其接收沿后停留的时间大于等于保持时间即可被正常采集,但是蓝色数据实际上能够停留多久是由Tco+Tdata决定的,因此Tco+Tdata的值决定了其在接受沿后的寿命,即Tco+Tdata>=Th就可以满足保持时间,保持余量=Tco+Tdata-Th,保持时间和时钟周期T无关,因为他的寿命是由Tco+Tdata决定的。

input delay 和output delay
对于input /output delay的保持余量和建立余量的计算方法和前面讲的是一样的,区别在于前面的例子中REGA和REGB均是在FPGA内部的,计算余量的所有参数FPGA自身是知道的,他自己可以完成整个计算分析,但是一旦涉及到input delay和output delay,即FPGA作为是接收端或者发送端与其他器件交互时,有些计算的参数FPGA自己知道,有的计算的参数是外部器件知道,为了完成余量的计算,那么就要通过约束把FPGA不知道的量告诉FPGA。
用input delay举例说明 见下图
建立余量=T-Tco-Tdata-Tsu,FPGA作为接收端Tsu,Th是知道的,但是其余两个量不知道,Tco与外部器件性能相关,可以从其数据手册中获取这个量,Tdata也许和你PCB的布线延迟等有关,为了完成计算,只需要把Tdata+Tco的最告诉fpga即可,max参数是与建立参数相关,min与保持余量相关,其最大值为 input delay max为Tco+Tdata的最大值,最小值为input delay min为Tco+Tdata的最小值。

output delay见下图,红色代表FPGA自己知道的量,其余需要通过约束告知
所以max 为Tdata+Tsu
min为Tdata-Th

下面是我做的记录
SDR和DDR的概念:S是单沿触发,D是双沿,双沿又分中心对齐和边沿对齐,见图

下图是input delay 的DDR中心对齐,其中黑色方框框起来的是理想情况下的数据,蓝色是数据整体左偏移,红色是数据整体右偏移,来回抖动的范围,图示中XXXX则表示的数据不稳定的区域,对于上升沿,最小值就是到蓝色框dv_are的大小,最大值就是到红色框边沿T/2-dv_bfe.下降沿不再赘述。

对于DDR边沿对齐,对上升沿来讲,黑色数据框是理想情况,红色是向右偏移,蓝色则是向左偏移,在第三个红色框那里,延迟已经等于0,再进一步左移则为负,蓝色所示。对上升沿来讲,max为skew_are,min为 负-skew_bre。

FPGA时序约束理解记录的更多相关文章
- FPGA时序约束的几种方法 (转)
FPGA时序约束的几种方法 对自己的设计的实现方式越了解,对自己的设计的时序要求越了解,对目标器件的资源分布和结构越了解,对EDA工具执行约束的效果越了解,那么对设计的时序约束目标就会越清晰,相应地, ...
- FPGA时序约束和timequest timing analyzer
FPGA时序约束 时钟约束 #************************************************************** # Create Clock #****** ...
- FPGA时序约束——理论篇
在FPGA 设计中,很少进行细致全面的时序约束和分析,Fmax是最常见也往往是一个设计唯一的约束.这一方面是由FPGA的特殊结构决定的,另一方面也是由于缺乏好用的工具造成的.好的时序约束可以指导布局布 ...
- FPGA时序约束一点总结
时序约束的一点总结. 打拍.掌握好时序. 手动分配位置,这个不是一定有效. 打破层级或者物理综合,或者自动加流水等综合优化参数调整. 根据实际情况使用异步时钟策略. 换速度更快的片子. 最也进接手一个 ...
- FPGA基础学习(5) -- 时序约束(实践篇)
目录 1. 理论回顾 2. 时间裕量 3. 最大延迟和最小延迟 4. 案例分析 参考文献: 距离上一篇有关时序的理论篇已经有一段时间了(可以参考博文FPGA时序约束--理论篇),实际上此段时间,甚至到 ...
- 简述FPGA时序约束理论
FPGA时序约束简介. 时序约束的场景: 在简单电路中,当频率较低时,数字信号的边沿时间可以忽略时,无需考虑时序约束.但在复杂电路中,为了减少系统中各部分延时,使系统协同工作,提高运行频率,需要进行时 ...
- 【转载】如何在FPGA设计环境中添加加时序约束
转自:http://bbs.ednchina.com/BLOG_ARTICLE_198929.HTM 如何在FPGA设计环境中加时序约束 在给FPGA做逻辑综合和布局布线时,需要在工具中设定时序 ...
- FPGA基础学习(4) -- 时序约束(理论篇)
在FPGA 设计中,很少进行细致全面的时序约束和分析,Fmax是最常见也往往是一个设计唯一的约束.这一方面是由FPGA的特殊结构决定的,另一方面也是由于缺乏好用的工具造成的.好的时序约束可以指导布局布 ...
- Xilinx FPGA编程技巧之常用时序约束详解
1. 基本的约束方法 为了保证成功的设计,所有路径的时序要求必须能够让执行工具获取.最普遍的三种路径为: 输入路径(Input Path),使用输入约束 寄存器到寄存器路径(Register-to ...
随机推荐
- 使用java的循环单向链表解决约瑟夫问题
什么是约瑟夫问题 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定 ...
- python常用算法学习(3)
1,什么是算法的时间和空间复杂度 算法(Algorithm)是指用来操作数据,解决程序问题的一组方法,对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但是在过程中消耗的资源和时间却会有很大 ...
- AVL树、红黑树以及B树介绍
简介 首先,说一下在数据结构中为什么要引入树这种结构,在我们上篇文章中介绍的数组与链表中,可以发现,数组适合查询这种静态操作(O(1)),不合适删除与插入这种动态操作(O(n)),而链表则是适合删除与 ...
- Spring Boot2 系列教程(十二)@ControllerAdvice 的三种使用场景
严格来说,本文并不算是 Spring Boot 中的知识点,但是很多学过 SpringMVC 的小伙伴,对于 @ControllerAdvice 却并不熟悉,Spring Boot 和 SpringM ...
- 从.NET CORE2.2升级到3.0过程及遇到的一些问题
RoadFlow工作流引擎从.NET Core2.2升级到3.0遇到了一些问题及解决方式这里记录一下. 1.DLL项目框架从2.2选择到3.0,这个没什么好说的,没有问题.重点的WEB层的一些变化. ...
- 使用canvas生成含有微信头像的邀请海报没有微信头像
最近做了一个微信内访问的H5页面,长按分享图片发送朋友邀请的海报,网上搜索资料,得出解决思路,用canvas将页面绘制生成图片, 问题:canvas 图片跨域. 解决过程(填坑历程): 1.从网上存在 ...
- python编程系列---global的使用注意点
global用法虽然很简单,当在函数中要修改全局变量时要使用到,但也要注意一个小问题,看下面的代码: 调用append()方法,只是修改,并不是赋值操作,不需要global提前声明 temp_num ...
- python类中的self
class User: def walk(self): print(self,"正在慢慢走") # User.walk() # 会报错 TypeError: walk() miss ...
- 10.Nginx流行架构LNMP
1.什么是LNMP架构 LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写.L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以 ...
- 17.Linux搭建网络仓库
1.搭建一个网络仓库 服务端:10.0.0.201 1.准备软件包(1.光盘 2.缓存 3.联网下载 4.同步) 1.挂载光盘 mount /dev/cdrom 2.通过ftp共享软件包存放的目录 y ...