FPGA时序约束(五)衍生时钟约束与I/O接口约束

news2024/11/27 2:26:33

系列文章目录

FPGA时序约束(一)基本概念入门及简单语法

FPGA时序约束(二)利用Quartus18对Altera进行时序约束

FPGA时序约束(三)时序约束基本路径的深入分析

FPGA时序约束(四)主时钟、虚拟时钟和时钟特性的约束


文章目录

  • 系列文章目录
  • 衍生时钟
    • 约束语法
  • I/O接口约束
    • 输入接口约束语法
      • 语法实例
      • 应用实例
    • 输出接口约束语法
      • 应用实例


衍生时钟

衍生时钟约束必须指定时钟源,可以是一个已经约束好的主时钟或另一个衍生时钟。

衍生时钟定义其与时钟源的相对关系,如分频系数、倍频系数、相移差值、占空比差值等。在做衍生时钟约束前,要求先做好其时钟源的约束定义。

一般Vivado自动约束,通过check_timing检查,如果没有生成,就手动约束。

约束语法

create_generated_clock -name <generated_clock_name > \
      -source <master_clock_source_pin_or_port > \
      -multiply_by <mult_factor> \
      -divide_by <div_factor> \
      <pin_or_port >
  • \是换行符号,无实际含义。
  • -name后的 generated_clock_name用于指定衍生时钟名称。若不指定将自动以pin_or_port 指定的物理节点作为该衍生时钟的名称。
  • -source后的 master_clock_source_pin_or_port指定衍生时钟的源时钟引脚或端口,源时钟可以是一个已经定义过的主时钟、虚拟时钟或衍生时钟。
  • -multiply_by后的< mult_factor >用于指定衍生时钟相对于源时钟的倍频系数,取值必须大于或等于1.0。
  • -divide_by后的< div_factor >用于指定衍生时钟相对于源时钟的分频系数,取值必须大于或等于1.0。
  • < pin_or_port >用于指定衍生时钟的物理节点﹑引脚或端口名称。

例如:
在这里插入图片描述
首先对主时钟进行约束:

create_clock -name clkin -period 10 [get_ports clkin]

有两种约束方法;

create_generated_clock -name clkdiv2 -source [get_ports clkin] -divide_by 2 [ get_pintREGA/Q]

也可以将REGA作为时钟源对clkdiv2做衍生时钟约束:

create_generated_clock -name clkdiv2 -source [get_pintREGA/C] -divide_by 2 [ get_pintREGA/Q]

I/O接口约束

输入接口约束语法

set_input_delay用于输人数据引脚相对于其时钟沿的路径延时。可以是正值,也可以是负值。
set_input_delay应用于FPGA器件的输入数据引脚或双向数据引脚,但不适用于FPGA内部信号或时钟输入引脚。set_input_delay 有-max和-min, 最大值用于建立时间检查,最小值用于保持时间检查。

set_input_delay -clock <args> -reference_pin <args> -clock_fall -rise -max -add_delay<delay><objects>
  • -clock用于指定约束引脚的同步时钟(源时钟),可以是设计中事先定义的主时钟或虚拟时钟。
  • -reference_pin用于指定延时值< delay >的参考时钟。不指定该选项,则指定延时值< delay >的参考时钟就是-clock。
  • -clock_fall 指定输入延时约束取值相对于同步时钟的下降沿。若不指定默认为-clock_rise。
  • -rise指定约束信号相对时钟的边沿关系是上升沿,也可以用-fall指定为下降沿。(没理解,也没实例)
  • -max表示设定最大延时值,也可以使用-min设定最小延时值。若不指定同时用于最大和最小。
  • < delay >用于指定将应用到目标输入引脚的延时值。有效值为大于或等于0的浮点数,1.0为默认值。
  • < objects >用于指定约束的目标输入引脚名称。

语法实例

//约束输入CLK0的主时钟sysClk
create_clock -name sysClk -period 10 [get_ports CLK0 ]

//约束了数据引脚DIN相对于输入引脚为CLK0的主时钟sysClk,-max和-min值为2ns的输入延时约束。
set_input_delay -clock sysClk 2 [get_ports DIN]

//上面的还可以分开写
set_input_delay -clock sysClk -max 2 [get_ports DIN]
set_input_delay -clock sysClk -min 2 [get_ports DIN]

//定义输入端口reset相对于wbClk_IBUF_BUFG_inst/O输出的时钟的输入延迟为2ns,其中wbClk_IBUF_BUFG_inst/O输出时钟的时钟源为wbClk
set_input_delay -clock wbClk 2 -reference_pin [get_pin wbClk_IBUF_BUFG_inst/O] reset 

//DDR数据约束,为啥要加add_delay:与端口上已定义的任何其他 set_input_delay 约束共存。
create_clock -name clk_ddr -period 6 [get_ports DDR_CLK_IN]
set_input_delay -clock clk_ddr -max 2.1 [get_ports DDR_IN]
set_input_delay -clock clk_ddr -max 1.9 [get_ports DDR_IN] -clock_fall -add_delay //上一行定义过max了,虽然是上升沿
set_input_delay -clock clk_ddr -min 0.9 [get_ports DDR_IN]
set_input_delay -clock clk_ddr -min 1.1 [get_ports DDR_IN] -clock_fall -add_delay

应用实例

以此为例:
在这里插入图片描述
可以把该图抽象成之前学过的:(在之前的系列文章里面)
在这里插入图片描述
推导出建立时间余量公式:(这里和上面一样,对公式Tc2j_pcb进行了变换)
set_input_delay(max)=Tco( max)+Td_pcb( max)-Tc2j_pcb( min)

保持时间余量公式:
set_input_delay(min)=Tco(min)+Td_pcb(min)-Tc2j_pcb(max)

数据和时钟在PCB板上的延时值Td_pcb和Tc2j_pcb 可以通过PCB的走线测量即可算出。PCB板级走线延时可以按照0.17ns/in进行换算。
假设Td_pcb ( max)=0.5ns,Td_pcb( min)=0ns
Tc2j_pcb( max)=0.5ns,Tc2j_pcb(min)=0ns。

根据MT9V034芯片手册:参数tp,表示数据变化相对于其同步时钟PIXCLK下降沿的延时,最大值为3ns,最小值为一3ns。
在这里插入图片描述

在这里插入图片描述
可以映射到数据输出相对于时钟上升沿的延时。(已知同步时钟PIXCLK的时钟周期为40ns,相当于时钟沿左移20ns),那么可以得到Tco( max)=23ns,Tco(min)=17ns。
在这里插入图片描述

最后可以得到:
set_input_delay(max)=-ons+23ns+0.5ns=23.5ns
set_input_delay(min)=-0.5ns+17ns+0ns=16.5ns

(当然也可以不变换Tco的值,直接在约束的时候指定-fall)

输出接口约束语法

set_output_delay用于指定输出数据引脚相对于其时钟沿的路径延时。通常输出延时值包括了数据信号从FPGA引脚到外部芯片的板级延时,外部芯片的建立时间和保持时间等。输出延时值可以是正值,也可以是负值。
set_output_delay命令可以应用于FPGA 器件的输出数据引脚或双向数据引脚,但不适用于FPGA内部信号或时钟输出引脚。
set_output_delay约束命令的语法格式与set_input_delay一样。

应用实例

以FPGA到A/D芯片ADV7123的输出接口为例。ADV7123是一颗3路并行高速A/D芯片,用于驱动VGA接口的显示器。

在这里插入图片描述
抽象成之前介绍过的:
在这里插入图片描述
set_output_delay( max)=Td_pcb ( max)+Tsu-Tc2j_pcb(min)
set_output_delay( min)=Td_pcb (min)-Th-Tc2j_pcb(max)

还是假设Td_pcb (max)=0.5ns,Td_pcb (min)=0ns,Tc2j_pcb (max)=0.5ns,Tc2j_pcb(min)=0ns。

在ADV7123的芯片手册中,可以找到两个参数,分别为数据采样的建立时间和保持时间,即Tsu=0.2ns,Th=1.5ns。
在这里插入图片描述
在这里插入图片描述

set_output_delay(max)=0.5ns-0ns+1.5ns=2ns
set_output_delay(min)=0ns-0.5ns-0.2ns= -0.7ns

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/475150.html

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

相关文章

2023五一建模A题完整版本【原创首发】

已经完成五一数学建模全部内容&#xff0c;大家可以文末查看&#xff01;&#xff01;供参考使用&#xff01; 摘要 本文研究了喷气式无人机在执行空中物资投放和爆破任务过程中的数学建模问题。我们分析了无人机投放距离与飞行高度、飞行速度、空气阻力等因素之间的关系&…

【Mybatis源码分析】动态标签的底层原理,DynamicSqlSource源码分析

DynamicSqlSource 源码分析 一、DynamicSqlSource 源码分析&#x1f62f;DynamicContext源码分析&#x1f644;SqlNode源码分析&#xff08;动态SQL标签&#xff09;Mybatis 动态SQL标签举例、调试SqlNode源码分析MixedSqlNodeIfSqlNodeWhereSqlNode、SetSqlNode、TrimSqlNodeS…

区域医疗云his系统源码,具有可扩展、易共享、易协同的优势

云HIS系统采用SaaS软件应用服务模式&#xff0c;提供软件应用服务多租户机制&#xff0c;实现一中心部署多机构使用。相对传统HIS单机构应用模式&#xff0c;它可灵活应对区域医疗、医疗集团、医联体、连锁诊所、单体医院等应用场景&#xff0c;并提升区域内应用的标准化与规范…

安装配置goaccess实现可视化并实时监控nginx的访问日志

一、业务需求 我们安装了nginx后,需要对nginx的访问情况进行监控(希望能够实时查看到访问nginx的情况),如下图所示: 二、goaccess的安装配置步骤 2.1、准备内容 需要先安装配置nginx或OpenResty - 安装 Linux环境对Nginx开源版源码下载、编译、安装、开机自启https://b…

从0开始利用Jenkins构建Maven项目(微服务)并自动发布

0. 前言 本文旨在帮助读者梳理如何从0开始利用Jenkins构建Maven项目&#xff08;微服务&#xff09;的自动发布任务 本文目录如下&#xff1a; 如何完成自动部署 0. 前言1. 配置工具类地址1.1 JDK1.2 Git1.3 Maven 2. 安装Jenkins3. 安装额外的工具插件4. 配置必要参数4.1 配…

TiDB实战篇-索引设计

简介 实战索引设计 数据映射原理 索引 唯一索引 二级索引 索引实例 索引设计 索引创建&#xff08;建表的时候创建&#xff09; 建表完以后添加 联合索引&#xff08;最左原则&#xff0c;索引覆盖&#xff09; 使用例子 索引覆盖 表达式索引 表达式索引的使用 不可见…

【youcans 的 OpenCV 学习课】23. 人脸检测:Haar 级联检测器

专栏地址&#xff1a;『youcans 的图像处理学习课』 文章目录&#xff1a;『youcans 的图像处理学习课 - 总目录』 【youcans 的 OpenCV 学习课】23. 人脸检测&#xff1a;Haar 级联检测器 4. Haar 级联分类器5. Haar 人脸/人眼检测器5.1 OpenCV 中的级联分类器5.2 Haar 级联检…

OPNET Modeler 调试简介

在使用 OPNET Modeler 软件运行仿真时&#xff0c;经常会遇到错误&#xff0c;发现和定位错误所在的地方是解决错误的第一步&#xff0c;那么怎么定位错误呢&#xff0c;这个时候就需要采用仿真调试器 (OPNET Simulation Debugger&#xff0c;ODB)进行调试了。 在 OPNET 中&…

【模电实验】电路元件伏安特性的测绘及电源外特性的测量

实验2电路元件伏安特性的测绘及电源外特性的测量 实验目的 学习测量线性和非线性电阻元件伏安特性的方法&#xff0c;并绘制其特性曲线学习测量电源外特性的方法掌握运用伏安法判定电阻元件类型的方法学习使用直流电压表、电流表&#xff0c;掌握电压、电流的测量方法 实验原…

Java BIO(Blocking IO:同步并阻塞式IO)

1.基本介绍 1>.Java BIO就是传统的java io编程,其相关的类和接口在"java.io"包下; 2>.BIO(Blocking I/O): 同步阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理; 如果这个连接不做任何事情会造成(服务器)不必…

【C++】STL——list深度剖析 及 模拟实现

文章目录 前言1. list的介绍及使用1.1 list的介绍1.2 list的使用遍历插入删除数据Operations迭代器的功能分类list 的sort性能测试 2. list的模拟实现2.1 STL_list源码浏览2.2 基本结构实现2.3 思考&#xff1a;list迭代器是否可以用原生指针2.4 list迭代器的实现&#xff08;重…

RocketMQ5.1 NameServer 路由管理

文章目录 1. 路由管理核心组件介绍2. RouteInfoManager 路由表3. 路由管理3.1 注册 Broker3.2 注销 Broker3.3 拼凑 TopicRouteData 此文章基于 RocketMQ 5.1 版本进行分析&#xff0c;与 4.x 版本相比此文章分析的部分源码有很大的区别 1. 路由管理核心组件介绍 路由管理是指…

亚马逊、沃尔玛、ebay测评出现风控、砍单、封号怎么解决?

大家好&#xff0c;我是亚马逊测评珑哥&#xff0c;提前祝各位跨境朋友五一假期愉快。 很多卖家和工作室的朋友加珑哥&#xff0c;沟通中很多朋友都在问为什么测评中一直被砍单&#xff0c;封号是什么原因&#xff1f;其实测评不是你随便买个IP&#xff0c;或者买几个买家号就…

轻松掌握mysql慢查询定位与优化知识点

在这里插入图片描述 1、利用工具定位慢sql 1、运维工具Skywalking 1、定位到慢接口 2、追踪慢sql的执行情况 2、利用MySQL的日志定位慢sql 在调式阶段才开启慢日志的查询&#xff0c;因为会损耗一些性能。 3、分析是否正确使用了索引 当我们已经定位到具体哪个sql较慢时&…

【计算几何】帝国边界划分问题【Voronoi图的原理】

一、说明 Voronoi 单元也称为泰森多边形。 Voronoi 图在许多领域都有实际和理论应用&#xff0c;主要是在科学和技术领域&#xff0c;但也在视觉艺术领域使用。Voronoi 图以数学家 Georgy Voronoy 的名字命名&#xff0c;也称为 Voronoi 镶嵌、Voronoi 分解、Voronoi 分区或 Di…

减少过拟合:暂退法

文章目录 &#xff08;一&#xff09;过拟合&#xff08;二&#xff09;暂退法 &#xff08;一&#xff09;过拟合 1.过拟合产生的原因 (1)根本原因&#xff1a; 我们都知道模型参数的优化方式&#xff1a;反向传播更新梯度&#xff0c;然后随机梯度下降。 也非常清楚模型参…

【Java笔试强训 9】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;另类加法…

弗洛伊德算法(求最短路径)

弗洛伊德算法介绍 和迪杰斯特拉算法一 样&#xff0c; 弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法。弗洛伊德算法(Floyd)计算图中各个顶点之间的最短路径迪杰斯特拉算法用于计算图中某-一个顶点到其他项点的最短路径。弗洛伊德算法VS迪杰斯特拉算…

【数据库架构】PostgreSQL的最佳群集高可用性方案

如果您的系统依赖PostgreSQL数据库并且您正在寻找HA的集群解决方案&#xff0c;我们希望提前告知您这是一项复杂的任务&#xff0c;但并非不可能实现。 我们将讨论一些解决方案&#xff0c;您可以从中选择对您的容错要求。 PostgreSQL本身不支持任何多主群集解决方案&#xff0…

Python Unet ++ :医学图像分割,医学细胞分割,Unet医学图像处理,语义分割

一&#xff0c;语义分割&#xff1a;分割领域前几年的发展 图像分割是机器视觉任务的一个重要基础任务&#xff0c;在图像分析、自动驾驶、视频监控等方面都有很重要的作用。图像分割可以被看成一个分类任务&#xff0c;需要给每个像素进行分类&#xff0c;所以就比图像分类任务…