专栏首页OpenFPGAFPGA时序分析

FPGA时序分析

时序约束对项目有什么影响? • 实现工具不会试图发现能够获得最佳速度的布局和布线方式 – 相反,设计实现工具试图满足您设定的性能目标 • 性能目标通过时序约束来体现 – 时序约束提高设计性能的途径是将逻辑放得尽可能近,从而使用尽可能短的布线资源 – 请注意,当我们讨论约束编辑器时,我们在这儿指的是Xilinx Constraints Editor

基本的约束方法

根据覆盖的路径不同,时序要求变成一些不同的全局约束。 最普通的路径类型包括: 1,输入路径 2,同步元件到同步元件路径 3,指定路径 4,输出路径 XILINX 的时序约束与每一种全局约束类型都有关。最有效的方法就是一开始就指定全局约束然后再加上指定路径的约束。在很多案例中,只要全局约束就可满足需求。 FPGA 器件执行工具都是由指定的时序要求驱动的。如果时序约束过头的话,就会导致内存使用增加,工具运行时间增加。更重要的是,过约束还会导致性能下降。因此,推荐使用实际设计要求的约束值。 输入时序约束 输入时序约束包括 2 种 “系统同步输入” “源同步输入” 输入时钟约束覆盖了输入数据的 FPGA 外部引脚到获取此数据的寄存器之间的路径。输入时钟约束经常用”OFFSET IN”约束。指定输入时钟要求的最好方法,取决于接口的类型(源/系统同步)和接口是 SDR 还是 DDR。 OFFSET IN 定义了数据和在 FPGA 引脚抓取此数据的时钟沿之间的关系。在分析 OFFSET IN约束时,时序分析工具自动将影响时钟和数据延迟的因素考虑进去。这些因素包括: 时钟的频率和相位转换 时钟的不确定 数据延迟调整 除了自动调整,还可以在与接口时钟相关的”PERIOD”约束中另外增加时钟不确定。关于增加”INPUT_JITTER”的更多信息,参见第三章的”PERIOD Constraints”。“OFFSET IN”与单输入时钟有关,默认情况下, OFFSET IN 约束覆盖了从输入 pad 到内部同步元件之间的所有路径。用于抓取那些从 pad 输入的数据的同步元件由指定的 OFFSET IN时钟触发。应用 OFFSET IN 约束被称为”global”方法。这是指定输入时序的最有效的方法。 系统同步输入 在体统同步接口中,发送和抓取数据共用一个系统时钟。板上的布线延迟和时钟倾 斜限制了接口的工作频率。更低的频率也会导致系统同步输入接口典型的采用 SDR 应用。系统同步 SDR 应用例子,见图 2‐1。系统同步 SDR 应用中,在时钟上升沿从源器件发送数据,下一个时钟上升沿在 FPGA 中抓取数据。

全局”OFFSET IN”约束是对一个系统同步接口指定输入时序的最有效的方法。用这种方法,对每一个系统同步输入接口时钟都定义了一个”OFFSET IN”约束。这种单个约束覆盖了所有被同步元件抓取到的输入数据位的路径,这些同步元件由指定输入时钟触发。 指定输入时序: 1, 定义接口相关的输入时钟的时钟”PERIOD”约束; 2, 定义接口的全局”OFFSET IN”约束; 例子 理想的系统同步 SDR 接口的时序图见图 2‐2。

全局”OFFSET IN”约束是: OFFSET = IN <value> VALID <value> BEFORE clock; 在”OFFSET IN”约束中, IN <value>决定了数据一开始有效的起始时间到抓取数据的时钟沿之间的时间。在这个系统同步例子中,数据在抓取数据的时钟沿之前 5ns 有效。VALID<value> 决定了数据有效时间。在这个例子中,数据有效时间为 5ns。 对这个例子,完整的”OFFSET IN”约束和相关的 PERIOD 约束如下: NET”SysClk”TNM_NET = “Sysclk”; TIMESPEC “TS_Sysclk” = PERIOD”SysClk” 5ns HIGH 50%; OFFSET = IN 5ns VALID 5ns BEFORE “SysClk”;

老规矩还是上一些文档和视频,主要内容如下:

推荐:优先看黑金的文档资料或视频教程(不是写的多么好,而是写的很友善,不至于像下面四个文档写的云里雾里,不过人家确实写的不错,手动滑稽)。然后看下面四个Xilinx推出的系列PPT,会让你学的更加充实。

地址如下:

链接: https://pan.baidu.com/s/1QDmpicpO6stzjnZhPuEWNA

提取码: 6fmc

本文分享自微信公众号 - OpenFPGA(OpenFPGA),作者:碎碎思

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 数模接口设计JESD204B协议、Vivado License及相关参考设计

    一种新型的基于高速SERDES的ADC/DAC数据传输接口。ADC/DAC的采样速率变得越来越高,数据的吞吐量越来越大,对于500MSPS以上的ADC/DAC,...

    碎碎思
  • 回归并行!芯片到芯片的最新超高速通信方式:超短距(USR)接口

    超短距离(USR)接口在2.5D封装技术上的重要性日益提高,已导致各种电气定义和电路实现。台积电最近介绍了其IP开发团队采用的方法,该方法用于并行总线,时钟转发...

    碎碎思
  • ‘SHIT’上最全有限状态机设计研究(二)-时钟同步状态机分析1

    本系列主要针对有限状态机进行分析和设计,其中主要包括两部分:时钟同步状态机的分析和时钟同步状态机的设计,预计会有五篇文章进行展开,其中介绍一篇,分析和设计分别有...

    碎碎思
  • 单细胞RNA-seq分析介绍

    在整个人体组织中,细胞类型、状态和相互作用是非常多种多样的,为了更好的了解这些组织和存在的细胞类型,我们需要更高分辨率的技术,而scRNA-seq提供了在单个细...

    生信技能树jimmy
  • C# WPF 让你的窗口始终钉在桌面上

    IntPtr hWnd = new WindowInteropHelper(Application.Current.MainWindow...

    liulun
  • 用代码生成一首现代诗~

    爱敲代码的猫
  • Golang 单引号、双引号与反引号

    单引号在 Golang 表示一个字符,使用一个特殊类型 rune 表示字符型。rune 为 int32 的别名,它完全等价于 int32,习惯上用它来区别字符值...

    Dabelv
  • Java性能优化的50个细节,我必须分享给你!

    在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身。养成良好的编码习惯非常重要,能够显著地提升程序性能。

    Java技术栈
  • CSS3矩阵变换

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style>...

    前朝楚水
  • Vue 生命周期

    这里,beforeCreate() 和 created() 两个生命周期方法依次被执行,而其它生命周期方法没被触发执行。

    Leophen

扫码关注云+社区

领取腾讯云代金券