3 FPGA时序约束理论篇之IO约束

2023-10-27

I/O约束

  I/O约束是必须要用的约束,又包括管脚约束和延迟约束。

管脚约束

  管脚约束就是指管脚分配,我们要指定管脚的PACKAGE_PIN和IOSTANDARD两个属性的值,前者指定了管脚的位置,后者指定了管脚对应的电平标准。

  在vivado中,使用如下方式在xdc中对管脚进行约束。

set_property -dict {PACKAGE_PIN AJ16  IOSTANDARD  LVCMOS18} [get_ports "led[0]"    ]

  在Vivado规定,必须要指定管脚电平,不然在最后一步生成比特流时会出错。

  除了管脚位置和电平,还有一个大家容易忽略但很容易引起错误的就是端接,当我们使用差分电平时比如LVDS,在在V6中我们使用IBUFDS来处理输入的差分信号时,可以指定端接为TRUE。

   IBUFDS #(
      .DIFF_TERM("TRUE"),       // Differential Termination
      .IOSTANDARD("DEFAULT")     // Specify the input I/O standard
   ) IBUFDS_inst (
      .O(O),  // Buffer output
      .I(I),  // Diff_p buffer input (connect directly to top-level port)
      .IB(IB) // Diff_n buffer input (connect directly to top-level port)
   );

但在Ultrascale中的IBUFDS,却把端接这个选项去掉了

   IBUFDS #(
      .DQS_BIAS("FALSE")  // (FALSE, TRUE)
   )
   IBUFDS_inst (
      .O(O),   // 1-bit output: Buffer output
      .I(I),   // 1-bit input: Diff_p buffer input (connect directly to top-level port)
      .IB(IB)  // 1-bit input: Diff_n buffer input (connect directly to top-level port)
   );

我们必须要在xdc或I/O Pors界面中,手动指定,否则可能会出错。

image

笔者之前就采过一个坑,差分端口输入,当连续输入的数据为11101111这种时,中间那个0拉不下来,还是1,同样也会发生在000010000,这样就导致数据传输错误,后来才发现是端接忘记加。因为端接会影响信号的实际电平,导致FPGA判断错误。

  当综合完成后,我们可以点击DRC,进行设计规则检查,这一步可以报出一些关键问题,比如时钟端口未分配在时钟引脚上等。

image

延迟约束

  延迟约束用的是set_input_delayset_output_delay,分别用于input端和output端,其时钟源可以是时钟输入管脚,也可以是虚拟时钟。但需要注意的是,这个两个约束并不是起延迟的作用,具体原因下面分析。

  • set_input_delay

  这个约束跟ISE中的OFFSET=IN功能相同,但设置方式不同。下图所示即为input delay的约束说明图。

image

从图中很容易理解,

T\_inputdelay = Tco + TD

当满足图中的时序时,最大延迟为2ns,最小延迟为1ns。

因此,需要加的时序约束为:

create_clock -name sysclk -period 10 [get_ports clkin]
set_input_delay 2 -max -clock sysclk [get_ports Datain]
set_input_delay 1 -min -clock sysclk [get_ports Datain]
  • set_output_delay

  set_output_delay的用法跟set_input_delay十分相似,这里就不再展开讲了。我们上面讲set_input_delay的描述中,大家可以看到,这个约束是告诉vivado我们的输入信号和输入时钟之间的延迟关系,跟下面要讲的时钟周期约束是一个原理,让vivado在这个前提下去Place and Route。并不是调节输入信号的延迟,因为身边有不少的FPGA工程师在没用过这个约束指令之前,都以为这是调节延迟的约束。

  如果要调整输入信号的延迟,只能使用IDELAY,在V6中,IDELAY模块有32个tap值,每个tap可延迟78ps,这样总共差不多是2.5ns。

个人网站:http://www.technomania.cn/

微信公众号:Quant_Times
      Reading_Times

FPGA时序约束教程所有文章:

1 FPGA时序约束理论篇之建立保持时间
2 FPGA时序约束理论篇之时序路径与时序模型
3 FPGA时序约束理论篇之IO约束
4 FPGA时序约束理论篇之时钟周期约束
5 FPGA时序约束理论篇之两种时序例外
6 FPGA时序约束理论篇之xdc约束优先级
7 FPGA时序约束实战篇之梳理时钟树
8 FPGA时序约束实战篇之主时钟约束
9 FPGA时序约束实战篇之衍生时钟约束
10 FPGA时序约束实战篇之延迟约束
11 FPGA时序约束实战篇之伪路径约束
12 FPGA时序约束实战篇之多周期路径约束
13 FPGA时序约束之Vivado辅助工具
14 FPGA时序约束之Tcl命令的对象及属性

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

3 FPGA时序约束理论篇之IO约束 的相关文章

  • FPGA笔记8——串口通信(回环实验)

    目录 串口通信原理 串行通信基础知识 处理器与外部设备通信的两种方式 串行通信的通信方式 串行通信的传输方向 常见的串行通信接口 异步串口通信UART基础知识 数据格式 传输速率 接口标准 RS232接口 串口通信实验RS 232 实验任务
  • STA(静态时序分析) 详解:如何计算最大时钟频率,以及判断电路是否出现时钟违例(timing violation)?

    1 什么是STA STA 静态时序分析 是时序验证的一种方法 用于计算和分析电路是否满足时序约束的要求 2 为什么需要STA 电路能否正常工作 其本质上是受最长逻辑通路 即关键路径 的限制 以及受芯片中存储器件的物理约束或工作环境的影响 为
  • SmartFusion从FPGA到ARM(四)——MSS_TIMER定时器的使用

    文章目录 1 定时器资源简介 2 MSS TIMER库函数简介 3 简单的周期性中断 4 自定义产生波形 5 64位定时器的使用 6 单次中断模式 系列教程 SmartFusion从FPGA到ARM系列教程 1 定时器资源简介 SmartF
  • cdc多bit信号-握手处理

    对于多bit数据跨时钟 各个bit之间路径延迟不一样 源时钟域给的数据是2 b11 目的时钟域采样到的数据可能2 b10 因此两级触发器对于单bit数据跨时钟是可以用的 但是对于多bit数据跨时钟就会出错 握手处理的关键是利用源的时钟req
  • [FPGA系列] 扩展知识 --- 时钟小结

    一 基本概念 时钟域 由同一个时钟信号控制的区域 时钟抖动 Jitter 相对于理想时钟信号 实际时钟信号存在时而超前 时而之后的偏移 时钟偏斜 Skew 时钟信号到达数字电路各个部分所用时间的差异 时钟漂移 Wander 工程上解释 抖动
  • Xilinx平台SRIO介绍(二)SRIO IP核基础知识

    使用SRIO IP核必须掌握的基础知识 理解了这篇 剩下的只是代码罢了 汇总篇 Xilinx平台SRIO介绍 汇总篇 目录 前言 SRIO RapidIO GT 有什么关系
  • FPGA实战--等精度频率测量

    首先放置效果图 本次试验中采用的是等精度测频率 等精度测频的原理是产生一个1s的高电平 在高电平中对被测方波进行计数 所测得数字即该波形频率 具体等精度测量原理请参考 http www elecfans com d 591858 html
  • Xilinx 7系列芯片选型手册的资源量怎么看

    推荐阅读AMD官方文档 该文档介绍了各种资源的具体含义 链接 7 Series FPGAs Configurable Logic Block User Guide UG474 以XC7A35T为例 Logic Cells 逻辑单元 对于7系
  • 八段数码管动态显示(输入数据为BCD编码)

    八段数码管动态显示 输入数据为BCD编码 一 数码管概述 图1 八段共阴数码管内部等效原理图 图2 八段共阳数码管内部等效原理图 上面两图分别是对应八段共阴 共阳的数码管内部等效图 共阴是将八个LED数码管的阴极连接在一起接低 阳极segm
  • 采用Vivado 配置xilinx GTX的SATA设计

    从Vivado开始 配置GTX的时候 多了一个SATA协议支持 但有些小地方还需要自己另外设置 整理了一下 分享给大家 首先打开Transceivers wizard 打开页签 线速率和参考时钟选择 在协议里面选择SATA2或者SATA3
  • FPGA学习笔记(一)__电平知识

    常见电平标准 文章目录 1 TTL电平标准 2 LVTTL电平标准 1 LVTTL3V3 2 LVTTL2V5 3 CMOS电平标准 4 LVCOMS电平标准 1 LVCOMS3V3 2 LVCOMS2V5 3 LVCOMS1V8 4 LV
  • FPGA功耗估计(二)

    针对于Altera的Cyclone III 做出了静态功耗 对于Altera 其提供了一个功耗早期估计工具 可以在官网上下到 首先需要将宏设置为安全 在excel选型中选择文件 之后便可看到 根据相应的选择 红框部分 可以查看静态功耗 对于
  • 异步FIFO设计之格雷码

    目录 二进制转格雷码 格雷码转二进制 相邻的格雷码只有1bit的差异 因此格雷码常常用于异步fifo设计中 保证afifo的读地址 或写地址 被写时钟 或读时钟 采样时最多只有1bit发生跳变 在不考虑路径延时的情况下 因为源数据 读写地址
  • 用于 Verilog 或 SystemVerilog 的 TAP(测试任何协议)模块

    是否有 TAP 测试任何协议 http testanything org Verilog 的实现 那就太好了 因为这样我就可以使用证明来自动检查我的结果 更新 10 9 09 有人问为什么不使用断言 部分 TAP 为我提供了一些很好的报告
  • 修改后的 baugh-wooley 算法乘法 verilog 代码不能正确乘法

    以下 verilog 源代码和 或测试平台可以很好地工作商业模拟器 iverilog https www edaplayground com x 3TuQ也形式化验证工具 yosys smtbmc https gist github com
  • 您可以使用类 C 语言对 FPGA 进行编程吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在大学里 我用类似 C 的语言编写了 FPGA 不过 我也知道人们通常使用 Verilog 或 VHD
  • if 语句导致 Verilog 中的锁存推断?

    我正在编写用于合成算法的 Verilog 代码 我对哪些情况可能导致推断锁存器有点困惑 下面是这样的一段代码 虽然它在模拟中工作得很好 但我担心它可能会导致硬件问题 always b1 or b2 b1 map b2 map m1 map
  • 如何在Altera Quartus中生成.rbf文件?

    什么是 rbf 文件以及如何在 Windows 上从 Quartus 输出文件 sof 生成它们 An RBF is a 原始二进制文件例如 它代表原始数据 这些数据将被加载到闪存中 以便在上电时初始化 FPGA A SOF is an S
  • VHDL 中的 BRAM_INIT

    我正在模拟基于处理器的设计 其中程序存储器内容保存在 BRAM 中 我正在使用 VHDL 推断 BRAM 实现程序存储器 我试图避免使用 CoreGen 因为我想保持设计的可移植性 最终该设计将进入 FPGA 我想看看是否有一种方法可以使用
  • 赋值语句中的“others=>'0'”是什么意思?

    cmd register process rst n clk begin if rst n 0 then cmd r lt others gt 0 elsif clk event and clk 1 then cmd r lt end if

随机推荐

  • Python import Queue ImportError: No module named 'Queue'

    python3 中引入Queue 会报出这个问题 python3 中这样引入 import queue python2 中这样引入 import Queue 为了兼容 可以这样 import sys if sys version gt 3
  • 机器学习-线性回归-多维度特征变量

    1 假设函数 之前的几篇文章里面 我们都只是介绍了单维特征变量的线性回归模型 比如预测房价的时候 我们只用了房子的面积这个维度 接下来我们会去研究多个维度的线性回归模型 还是从预测房价这个例子入手 假设我们现在不只是单纯的考虑房子的面积 还
  • verilog 简单分频程序

    偶数分频 最简单二分频 在输入时钟上升沿翻转即可 N分频 N为偶数 计数器计数到N 2 1翻转 如进行4分频 count 4 2 1 1时翻转 6分频计数器计到2 翻转 程序如下 经过实测验证 正确 时序如图 可以看出 从36到42是一个周
  • 西瓜书 第一章 绪论

    1 1 引言 理解机器学习 人类的 经验 对应计算机中的 数据 让计算机来学习这些经验数据 生成一个算法模型 在面对新的情况中 计算机便能作出有效的判断 这便是机器学习 1 2 基本术语 假设我们收集了一批西瓜的数据 例如 色泽 青绿 根蒂
  • linux下只读文件的修改方法

    命令前面加sudo 是以管理员方式打开
  • vue+flask实现视频目标检测yolov5

    开始做这个之前 了解一些vue的基础 然后对flask完全不知道 所以特别感谢很多博主的文章 主要参考的是这篇文章 在WEB端部署YOLOv5目标检测 Flask VUE 博主在GitHub上详细的代码给我一个很好的参考 他采用的是前后端分
  • latex公式自动换行与不自动换行的实现

    例如在双栏中 行内公式太长 就会溢出 很难看 公式中的元素 默认 有些是能自动换行 有些是不能的 例如 内的东西就不能自动换行了 如果是运算符 就能自动换行 可以参考下面这个博客讲的 Latex中行内公式如果在该行不能显示完整则会自动从下一
  • 安装了多个java 如何切换java版本

    安装了多个java 如何切换java版本 问题描述 平常用的是java8 最近在学习java的新特性 这就需要从java8往更高的java版本切换 由于还在使用java8 测试完新特性后我需要再切换回java8 如何切换 安装java的时候
  • JAVA,同级包下的类引用不需要import

    类ServiceResponse 的属性含有同级包下的属性类型为EServiceResPonseStatus类型的变量 此时并没有import引入 而只需要类EServiceResPonseStatus存在即可 如果EServiceResP
  • 连续整数检测法原理C语言,最大公约数的三种算法(欧几里得递归算法、连续整数检测算法、公共质因数相乘算法)...

    最大公约数的算法在编程中是比较典型的 常见的有三种 按效率高低分别为 欧几里得递归算法 连续整数检测算法 公共质因数相乘算法 如下 1 欧几里得递归算法 第一步 如果n 0 返回m值作为结果 同时过程结束 否则进入第二步 第二步 m除以n
  • Dubbo——快速启动(2)

    快速启动 Dubbo 采用全 Spring 配置方式 透明化接入应用 对应用没有任何 API 侵入 只需用 Spring 加载 Dubbo 的配置即可 Dubbo 基于 Spring 的 Schema 扩展 进行加载 mvn
  • Spring Boot创建定时任务(并实现动态参数传递执行)

    关于Spring Boot创建定时任务非常简单 有两种方式进行创建 第一种注解方式 静态参数 使用 Scheduled 进行创建定时任务 仅仅几行代码就可以完成 而且支持灵活的参数表达式cron 还有支持简单的延时操作 例如 fixedDe
  • springboot实现小程序订阅消息推送

    1 拿到用户的openid 2 获取access token 3 调用小程序消息推送的接口 一 获取用户的openid 关于openid的获取百度一大堆方法 有兴趣的可以去查看一下 此处不在赘述 二 获取access token 关于acc
  • 【WSL2】WSL2+Win11 Python内使用ST-link & ST-Link/USB链接至WSL2

    WSL2 WSL2 Win11 Python内使用ST link ST Link USB连接至WSL2 pyswd 库配置和 libusb 安装 WSL2连接至USB Device 备注 起由是准备使用pyswd这个库 实现利用Python
  • ASN.1简介

    1 ASN 1 定义 不同系统之间通信需要面对的一个基本问题是数据从发送端到接收端的高效转换 在 OSI 开发式系统互联参考模型 参考模型 为了方便数据传输 数据类型和数据结构都表现为应用层的一个函数接口 在表示层完成数据到规定地可传输的二
  • source insight修改字符编码

    source insight这款软件是一款功能非常实用的代码编辑 浏览工具 我们可以通过这款软件编辑代码 也可以用来浏览阅读一些代码文件 不过很多用户在使用这款软件的时候都遇到过大大小小的问题 出现乱码就是比较常见的一个问题 出现乱码的情况
  • MySQL数据库张素青答案_MySQL数据库技术与应用

    章数据库基础1 1 1数据库的基本概念2 1 2常见的数据库4 1 3数据管理技术的发展5 1 3 1人工管理阶段6 1 3 2文件系统阶段6 1 3 3数据库系统阶段7 1 4数据模型8 1 4 1数据模型的概念8 1 4 2数据模型的分
  • linux oprofile解析

    linux oprofile解析 oprofile利用cpu硬件层面提供的性能计数器 performance counter 通过计数采样 帮助我们从进程 函数 代码层面找出占用cpu的 罪魁祸首 下面我们通过实例 了解oprofile的具
  • 区块链-公钥私钥签名、验签、加密、解密过程

    目录 公钥 与 私钥 加密与解密 设定 加密过程 解密过程 数字签名 验签 设定 签名过程 验签过程 公钥 与 私钥 比特币采用了ECDSA数字签名算法 是一种非对称的加密方法 非对称加密的秘钥是成对出现的 即公钥与私钥 公钥 公之于众 用
  • 3 FPGA时序约束理论篇之IO约束

    I O约束 I O约束是必须要用的约束 又包括管脚约束和延迟约束 管脚约束 管脚约束就是指管脚分配 我们要指定管脚的PACKAGE PIN和IOSTANDARD两个属性的值 前者指定了管脚的位置 后者指定了管脚对应的电平标准 在vivado