Xilinx FPGA 编程技巧之常用时序约束详解
Xilinx FPGA 编程技巧之常用时序约束详解
基本的约束方法
为了保证成功的设计,所有路径的时序要求必须能够让执行工具获取。最普遍的三种路径以及异常路径为:
输入路径(Input Path),使用输入约束
寄存器到寄存器路径(Register-to-Register Path),使用周期约束
输出路径(Output Path),使用输出约束
具体的异常路径(Path specific exceptions),使用虚假路径、多周期路径约束
一、 输入约束Input Constraint
OFFSET IN约束限定了输入数据和输入时钟边沿的关系。
1.系统同步输入约束System Synchronous Input
在系统同步接口中,同一个系统时钟既传输数据也获取数据。考虑到板子路径延时和时钟抖动,接口的操作频率不能太高。
图1‑1 简化的系统同步输入SDR接口电路图
图1‑2 SDR系统同步输入时序
上述时序的约束可写为:
NET "SysClk" TNM_NET = "SysClk";
TIMESPEC "TS_SysClk" = PERIOD "SysClk" 5 ns HIGH 50%;
OFFSET = IN 5 ns VALID 5 ns BEFORE "SysClk";
2. 源同步输入约束Source Synchronous Input
在源同步接口中,时钟是在源设备中和数据一起产生并传输。
图1‑3 简化的源同步输入DDR接口电路
图1‑4 DDR源同步输入时序
上图的时序约束可写为:
NET "SysClk" TNM_NET = "SysClk";
TIMESPEC "TS_SysClk" = PERIOD "SysClk" 5 ns HIGH 50%;
OFFSET = IN 1.25 ns VALID 2.5 ns BEFORE "SysClk" RISING;
OFFSET = IN 1.25 ns VALID 2.5 ns BEFORE "SysClk" FALLING;
二、寄存器到寄存器约束Register-to-Register Constraint
寄存器到寄存器约束往往指的是周期约束,周期约束的覆盖范围包括:
覆盖了时钟域的时序要求
覆盖了同步数据在内部寄存器之间的传输
分析一个单独的时钟域内的路径
分析相关时钟域间的所有路径
考虑不同时钟域间的所有频率、相位、不确定性差异
1.使用DLL, DCM, PLL, and MMCM等时钟器件自动确定同步关系
使用这一类时钟IP Core,只需指定它们的输入时钟约束,器件将自动的根据用户生成IP Core时指定的参数约束相关输出,不需用户手动干预。
图1‑5 输入到DCM的时钟约束
上图的时序约束可写为:
NET “ClkIn” TNM_NET = “ClkIn”;
TIMESPEC “TS_ClkIn” = PERIOD “ClkIn” 5 ns HIGH 50%;
2.手动约束相关联的时钟域
在某些情况下,工具并不能自动确定同步的时钟域之间的时钟时序关系,这个时候需要手动约束。例如:有两个有相位关系的时钟从不同的引脚进入FPGA器件,这个时候需要手动约束这两个时钟。
图1‑6 通过两个不同的外部引脚进入FPGA的相关时钟
上图的时序约束可写为:
NET“Clk1X"TNM_NET=“Clk1X";
NET“Clk2X180"TNM_NET=“Clk2X180";
TIMESPEC"TS_Clk1X"=PERIOD"Clk1X 7 5ns;
TIMESPEC"TS_Clk2X180"=PERIOD"Clk2X180“TS_Clk1X/2PHAS2 +1.25ns;
3.异步时钟域
异步时钟域的发送和接收时钟不依赖于频率或相位关系。因为时钟是不相关的,所以不可能确定出建立时间、保持时间和时钟的最终关系。因为这个原因,Xilinx推荐使用适当的异步设计技术来保证对数据的成功获取。Xilinx约束系统允许设计者在不需考虑源和目的时钟频率、相位的情况下约束数据路径的最大延时。
异步时钟域使用的约束方法的流程为:
为源寄存器定义时序组
为目的寄存器定义时序组
使用From-to和DATAPATHDELAY关键字定义寄存器组之间的最大延时
三、输出约束Output Constraint
输出时序约束约束的是从内部同步元件或寄存器到器件管脚的数据。
1.系统同步输出约束System Synchronous Output Constraint
系统同步输出的简化模型如图所示,在系统同步输出接口中,传输和获取数据是基于同一个时钟的。
图1‑7 系统同步输出
其时序约束可写为:
NET "ClkIn" TNM_NET = "ClkIn";
OFFSET = OUT 5 ns AFTER "ClkIn";
2.源同步输出约束Source Synchronous Output Constraint
在源同步输出接口中,时钟是重新产生的并且在某一FPGA时钟的驱动下和数据一起传输至下游器件。
图1‑8源 同步输出简化电路时序图
图1‑9 源同步例子时序图
上述举例的时序约束可写为:
NET “ClkIn” TNM_NET = “ClkIn”;
OFFSET = OUT AFTER “ClkIn” REFERENCE_PIN “ClkOut” RISING;
OFFSET = OUT AFTER “ClkIn” REFERENCE_PIN “ClkOut” FALLING;
3.虚假路径约束False Path Constraint
令SRC_GRP为一组源寄存器,DST_GRP为一组目的寄存器,如果你确定SRC_GRP到DST_GRP之间的路径不会影响时序性能,那么可以将这一组路径约束为虚假路径,工具在进行时序分析的时候将会跳过对这组路径的时序分析。这种路径最常见于不同时钟域的寄存器数据传输,如下图:
图1‑10 虚假路径
其约束可写为:
NET "CLK1" TNM_NET = FFS "GRP_1";
NET "CLK2" TNM_NET = FFS "GRP_2";
TIMESPEC TS_Example = FROM "GRP_1" TO "GRP_2" TIG;
4.多周期路径约束Multi-Cycle Path Constraint
在多周期路径里,令驱动时钟的周期为PERIOD,数据可以最大n*PERIOD的时间的从源同步元件传输到目的同步元件,这一约束降低工具的布线难度而又不会影响时序性能。这种约束通常用在有时钟使能控制的同步元件路径中。
图 1-11 时钟使能控制的寄存器路径
必须说明的是上图Enable信号的产生周期必须大于等于n*PERIOD,且每个Enable传输一个数据。假设上图的n=2,MC_GRP为时钟使能Enable控制的多周期同步元件组,则约束可写为:
NET "CLK1" TNM_NET = "CLK1";
TIMESPEC "TS_CLK1" = PERIOD "CLK1" 5 ns HIGH 50%;
NET "Enable" TNM_NET = FFS "MC_GRP";
TIMESPEC TS_Example = FROM "MC_GRP" TO "MC_GRP" TS_CLK1*2;
【QQ交流群】
群号:173560979,进群暗语:FPGA技术江湖粉丝。
多年的FPGA企业开发经验,各种通俗易懂的学习资料以及学习方法,浓厚的交流学习氛围,QQ群目前已有1000多名志同道合的小伙伴,无广告纯净模式,给技术交流一片净土,从初学小白到行业精英业界大佬等,从军工领域到民用企业等,从通信、图像处理到人工智能等各个方向应有尽有。
【微信交流群】
现微信交流群已建立08群,人数已达数千人,欢迎关注“FPGA技术江湖”微信公众号,可获取进群方式。
完
后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。
江湖偌大,继续闯荡,愿大侠一切安好,有缘再见!
Xilinx FPGA 编程技巧之常用时序约束详解相关推荐
- Matlab GUI编程技巧(九):详解 uitable 函数显示表格及相关操作(创建表用户界面)
- 编程技巧│php 之魔术方法详解
✨ 目录
- FPGA之道(80)静态时序分析(六)常用时序约束介绍(基于ISE的UCF文件语法)
文章目录 前言 常用时序约束介绍 时序环境约束 分组时序约束 TNM TNM_NET TIMEGRP 常用时序约束 周期约束 输入时钟周期约束 内部时钟周期约束 关联时钟周期约束 差分时钟周期约束 输 ...
- 如何在FPGA设计环境中加时序约束 SDC (Z)
如何在FPGA设计环境中加时序约束 在给FPGA做逻辑综合和布局布线时,需要在工具中设定时序的约束.通常,在FPGA设计工具中都FPGA中包含有4种路径:从输入端口到寄存器,从寄存器到寄存器, ...
- MySQL常用存储引擎详解
MySQL常用存储引擎详解 一.什么是存储引擎 二.掌握存储引擎的重要性 三.MySQL常用的存储引擎有哪些 四.存储引擎的特性 1.InnoDB 2.MyISAM 3.MEMORY 4.ARCHIV ...
- 芯片常用协议种类详解,含多协议转换器
题目:芯片常用协议种类详解,含多协议转换器 目录 1. 引言 1.1常用通信样式 1.2 FPGA芯片上的UART也是一样的 1.3 FPGA用verilog实现UART 1.4基于FPGA的SPI协 ...
- spi四种工作模式时序图_SPI总线协议及SPI时序图详解
嵌入式linux QQ交流群:175159209,欢迎爱好者加入交流技术问题! SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口.SPI,是一种 ...
- Javascript常用的设计模式详解
Javascript常用的设计模式详解 阅读目录 一:理解工厂模式 二:理解单体模式 三:理解模块模式 四:理解代理模式 五:理解职责链模式 六:命令模式的理解: 七:模板方法模式 八:理解javas ...
- SPI总线协议及SPI时序图详解
转贴地址:https://www.cnblogs.com/adylee/p/5399742.html SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设 ...
- 计算机中常用软件列表,详解win10中常用软件列表不要在任务栏显示的方法
我们在win10系统的使用中,在win10的界面中我们经常使用软件在电脑任务栏中会在电脑中显示,那很多的小伙伴在电脑中是不想要显示的遇到这个问题我们怎么取消这个常用的软件在任务栏一直显示的情况呢,今天 ...
最新文章
- Sublime-text theme 颜色主题
- linux跨服务器复制文件夹,linux下跨服务器文件文件夹的复制
- vmware-tools安装指南
- 专业课程设计之客户与服务器程序的同步与通信机制的设计(二)TCP通信
- (android之sqlite三)单机Sqlite数据库
- SurfaceFlinger与Hardware Composer
- 第五和第六单元练习题
- 微软服务器监控软件,Windows监控,Windows监控软件
- 【渝粤教育】广东开放大学 电算化会计 形成性考核 (44)
- ARM七种异常源和异常处理流程(四大步三小步)
- c语言 continue什么意思,continue在C语言中什么意思?
- 150款国潮风城市插画
- 计算机数字媒体专业毕业论文,数字媒体艺术专业毕业论文
- 一套问卷调查系统源码,功能齐全,适合二开或学习使用
- opencv人脸检测输出的置信率
- 计算机专业免费电子书下载列表List of freely available programming books
- 很舒服的Xshell配色方案
- mysql 中int(M)和tinyint(M)数值类型中M值的意义
- 如何查看论坛java隐藏内容_DZ论坛如何去掉“今日”“昨日”发帖数显示
- 设计行业高效办公秘籍——趁手的设计软件