最近整理了一下时序约束的内容,顺便发出来分享记录一下。

任何硬件想要工作正常,均需满足建立和保持时间,至于这个概念不再陈述。

下面将重点介绍两个概念:建立余量和保持余量。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时序约束理解记录的更多相关文章

  1. FPGA时序约束的几种方法 (转)

    FPGA时序约束的几种方法 对自己的设计的实现方式越了解,对自己的设计的时序要求越了解,对目标器件的资源分布和结构越了解,对EDA工具执行约束的效果越了解,那么对设计的时序约束目标就会越清晰,相应地, ...

  2. FPGA时序约束和timequest timing analyzer

    FPGA时序约束 时钟约束 #************************************************************** # Create Clock #****** ...

  3. FPGA时序约束——理论篇

    在FPGA 设计中,很少进行细致全面的时序约束和分析,Fmax是最常见也往往是一个设计唯一的约束.这一方面是由FPGA的特殊结构决定的,另一方面也是由于缺乏好用的工具造成的.好的时序约束可以指导布局布 ...

  4. FPGA时序约束一点总结

    时序约束的一点总结. 打拍.掌握好时序. 手动分配位置,这个不是一定有效. 打破层级或者物理综合,或者自动加流水等综合优化参数调整. 根据实际情况使用异步时钟策略. 换速度更快的片子. 最也进接手一个 ...

  5. FPGA基础学习(5) -- 时序约束(实践篇)

    目录 1. 理论回顾 2. 时间裕量 3. 最大延迟和最小延迟 4. 案例分析 参考文献: 距离上一篇有关时序的理论篇已经有一段时间了(可以参考博文FPGA时序约束--理论篇),实际上此段时间,甚至到 ...

  6. 简述FPGA时序约束理论

    FPGA时序约束简介. 时序约束的场景: 在简单电路中,当频率较低时,数字信号的边沿时间可以忽略时,无需考虑时序约束.但在复杂电路中,为了减少系统中各部分延时,使系统协同工作,提高运行频率,需要进行时 ...

  7. 【转载】如何在FPGA设计环境中添加加时序约束

    转自:http://bbs.ednchina.com/BLOG_ARTICLE_198929.HTM 如何在FPGA设计环境中加时序约束    在给FPGA做逻辑综合和布局布线时,需要在工具中设定时序 ...

  8. FPGA基础学习(4) -- 时序约束(理论篇)

    在FPGA 设计中,很少进行细致全面的时序约束和分析,Fmax是最常见也往往是一个设计唯一的约束.这一方面是由FPGA的特殊结构决定的,另一方面也是由于缺乏好用的工具造成的.好的时序约束可以指导布局布 ...

  9. Xilinx FPGA编程技巧之常用时序约束详解

    1.   基本的约束方法 为了保证成功的设计,所有路径的时序要求必须能够让执行工具获取.最普遍的三种路径为: 输入路径(Input Path),使用输入约束 寄存器到寄存器路径(Register-to ...

随机推荐

  1. Shell之Test命令

    目录 Shell之Test命令 参考 Test简介 Test语法 表达式之逻辑运算 表达式之字符串判断 表达式之整数判断 表达式之文件判断 Shell之Test命令

  2. spring源码分析系列2:Bean与BeanDefinition关系

    接口表示一种能力,实现了一个接口,即拥有一种能力. BeanDefinition与Bean的关系, 就好比类与对象的关系. 类在spring的数据结构就是BeanDefinition.根据BeanDe ...

  3. python正则表达式贪婪算法与非贪婪算法与正则表达式子模式的简单应用

    先引入一下百度百科对于正则表达式的概念: 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种 ...

  4. ConCurrentHashMap(基于jdk1.8源码)(转载来源https://segmentfault.com/a/1190000014380257)

    ConCurrentHashMap的底层是:散列表+红黑树,与HashMap是一样的.(不允许key和value是null值) JDK1.8底层是散列表+红黑树 ConCurrentHashMap支持 ...

  5. JVM(三)初始化

    字节码指令和符号引用.直接引用 1.主动引用和被动引用 主动引用:虚拟机规定只有满足四个情况的的情况下,才会进行主动引用.    被动引用:除过四种情况的引用是被动引用.     只有主动引用才会初始 ...

  6. Nullable Reference Types 可空引用类型

    在写C#代码的时候,你可能经常会遇到这个错误: 但如果想避免NullReferenceException的发生,确实需要做很多麻烦的工作. 可空引用类型 Null Reference Type 所以, ...

  7. 【Java基础】Java中的语法糖

    目录 Java中的语法糖 switch对String和枚举类的支持 对泛型的支持 包装类型的自动装箱和拆箱 变长方法参数 枚举 内部类 条件编译 断言 数值字面量 for-each try-with- ...

  8. C++代码注入

    一.C++代码注入原则: 在注入代码中不允许使用API. 在注入代码中不允许使用全局变量. 在注入代码中不允许使用字符串(编译时也被当做全局变量). 在注入代码中不允许使用函数嵌套. 二.注入代码编写 ...

  9. @ConfigurationProperties、@Value、@PropertySource

    @ConfigurationProperties(spring-boot依赖下).@Value(spring-beans依赖下).@PropertySource(spring-context依赖下) ...

  10. redis系列之------数据库

    前言 当我们在Redis数据库中set一个KV的时候,这个KV保存在哪里?如果我们get的时候,又从哪里get出来.时间复杂度,空间复杂的等等,怎么优化等等一系列问题. 服务器中的数据库 Redis服 ...