转自:https://blog.csdn.net/a874176979/article/details/108484101

xilinx FPGA IOB约束使用以及注意事项

一、什么是IOB约束

在xilinx FPGA中,IOB是位于IO附近的寄存器,是FPGA上距离IO最近的寄存器,同时位置固定。当你输入或者输出采用了IOB约束,那么就可以保证从IO到达寄存器或者从寄存器到达IO之间的走线延迟最短,同时由于IO的位置是固定的,即存在于IO附近,所以每一次编译都不会造成输入或者输出的时序发生改变。

二、为什么要使用IOB约束

考虑一个场景,当你用FPGA写了一个spi模块,将时钟、片选和数据线绑定到FPGA的IO管脚,如果没有加IOB约束的话,综合工具在布局布线的时候直接将FPGA内部寄存器输出连到IO上,但是这样存在一定的问题,每次修改逻辑重新编译的时候,输出寄存器的位置有可能发生改变,那么从寄存器输出到IO之间的布线长度就会发生变化,造成寄存器输出到达IO之间的走线延迟发生改变,每一次编译都会使得spi的输出时序不确定。

为了解决这个问题,需要加入IOB约束,将模块输出端口的最后一级寄存器放在IOB上,这样最后一级输出的寄存器位置就固定下来了,每次编译都不会造成输出时序发生改变。

IOB约束使用方法如下:
1、在约束文件中加入下面约束:

set_property  IOB true [get_ports {port_name}]
set_property  IOB true [get_cells {cell_name}]

2、直接在代码中加约束,在寄存器前加入下面约束,需要注意的是,对于输入IOB约束,这里的寄存器是第一级寄存器,对于输出IOB约束,这里的寄存器是最后一级寄存器,且寄存器输出不能再作为组合逻辑输入。

(* IOB = "true" *) reg  O_data;

三、IOB约束使用注意事项

对于输出IOB约束,在使用的时候有一些限制:

1、约束的端口必需是寄存器输出,这点比较好理解,因为IOB约束本质上是约束最后一级寄存器的位置,将最后一级寄存器的位置放在IOB上,而不是增加一级寄存器。所以你必须要是寄存器输出,才能进行IOB约束,这是前提。

2、最后一级寄存器的输出不能再作为输入反馈到内部逻辑中,必需是开路的。举个例子,比如如下代码:

always @ (posedge clk)beginif(cnt == 2'b1 || cnt == 2'b3)spi_clk <= ~spi_clk;elsespi_clk <= spi_clk;end

上面描述了一个分频器,当计数器cnt为1和3的时候spi_clk翻转,那这个时候spi_clk就是一个输出又作为输入反馈到内部的寄存器,得到的综合结果如下图:

由于需要将寄存器的输出作为输入其他逻辑的输入,这种情况下是无法将spi_clk寄存器放到IOB上的,因为IOB的输出直接对接IO,无法再作为输入反馈到内部逻辑。

所以可以将spi_clk输出再加一级寄存器,将加入的寄存器放到IOB上,相应的需要对时序做出一定的调整,和sip_clk有时序关系的都需要打一拍以保持同步。

xilinx FPGA IOB约束使用以及注意事项相关推荐

  1. 1.4 7系列FPGA IOB

    7系列FPGA IOB 1 7系列FPGA IOB 2 IOB的约束方法 3 IOB约束使用注意事项 1 7系列FPGA IOB CLB可以实现FPGA的功能,但要和外界打交道,就必须有和外 界电平兼 ...

  2. fpga电平约束有什么作用_Xilinx FPGA的约束设计和时序分析总结

    欢迎FPGA工程师加入官方微信技术群 点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群 在进行FPGA的设计时,经常会需要在综合.实现的阶段添加约束,以便能够控制综合.实现过程,使设计 ...

  3. Xilinx FPGA “打一拍”“打两拍”以及IOB含义

    Xilinx FPGA "打一拍""打两拍"以及IOB含义 本次总结主要是参考网上的说法,最近在接触到异步时钟同步的时候了解到利用"非阻塞赋值< ...

  4. Xilinx FPGA 将寄存器放入IOB中

    xilinx FPGA的资源一般指IOB,CLB,BRAM,DCM,DSP五种资源.其中IOB就是input/output block,完成不同电气特性下对输入输出信号的的驱动和匹配要求. IOB的作 ...

  5. XILINX FPGA和CPLD引脚约束步骤

    XILINX FPGA和CPLD管教约束 1.XILINX CPLD引脚配置 打开ISE,这个工程所用的芯片是Coolrunner II CPLD系列的XC2C32A,找到floorplan IO-P ...

  6. Xilinx FPGA时钟及I/O接口规划(一)

    引言:从本文开始,我们介绍Xilinx FPGA时钟及I/O接口规划设计.I/O和时钟规划是定义和分析FPGA和印刷电路板(PCB)之间连接的过程,并将各种互连信号分配给FPGA器件的物理管脚,正确的 ...

  7. XIlinx FPGA 和 Intel FPGA的区别

    目录 一 FPGA简介 什么是FPGA呢 ? FPGA的内部结构有什么呢? 为什么要开发FPGA? FPGA的发展历程? FPGA用于做什么? FPGA的优缺点? 二 Xilinx FPGA和Inte ...

  8. xilinx FPGA普通IO作PLL时钟输入

    xilinx FPGA普通IO作PLL时钟输入 在xilinx ZC7020的片子上做的实验; [结论] 普通IO不能直接作PLL的时钟输入,专用时钟管脚可以; 普通IO可以通过BUFG再连到PLL的 ...

  9. xilinx c语言u16,Xilinx FPGA LVDS应用

    最近项目需要用到差分信号传输,于是看了一下FPGA上差分信号的使用.Xilinx FPGA中,主要通过原语实现差分信号的收发:OBUFDS(差分输出BUF),IBUFDS(差分输入BUF). 注意在分 ...

最新文章

  1. cocos2d-x注意事项(十)Lua发展飞机战争-4-创建主角
  2. UITableView数据更新问题
  3. VTK:BackgroundTexture背景纹理用法实战
  4. 让Team Foundation Server/TFS自动记住用户名密码解决方案
  5. php template strring,PHP字符串函数
  6. 深入分布式缓存之EVCache探秘开局篇(文末赠书)
  7. 查询数据库前十条数据_入门数据分析的一些建议
  8. 判断循环双链表是否对称
  9. java executequery_java execute、executeQuery和executeUpdate之间的区别
  10. JAVA设置输入数据范围,如何使用Apache POI(SXSSF)为特定单元格设置数据(数字)格式区域设置?...
  11. JavaEE Tutorials (25) - 使用Java EE拦截器
  12. 计算机组成原理—cpu于主存的连接(例题)
  13. android WPS如何绘图
  14. Java常用算法-二分查找算法(两种方法实现)
  15. java和eova的关系_Eova 1.2 正式版,Java Web 快速开发平台
  16. 举例 微积分 拉格朗日方程_拉格朗日方程的应用及举例08讲(推荐文档)
  17. Java - mian()
  18. 用大写字母打印三角形
  19. nginx反向代理是什么?
  20. 今晚直播 |现实环境中的强化学习如何解决?你不可错过的RL终极奥义

热门文章

  1. mysql锁机制——乐观锁、悲观锁;共享锁、排他锁、行表锁、间隔后码锁、MVCC 与 thinkphp的lock解析
  2. 【Learncpp中文翻译版】【1.9、1.10、1.11】
  3. 90%的年轻人猝死: 这么玩手机真的会死人的
  4. 若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是: A)scanf(“ %d%lx,%le“,x,y,z); B)scanf(“%2d * %d%lf“,
  5. Select函数的作用和使用
  6. Vue 获取最近一个月,前三个月, 最近半年,最近一年, 当前月末日期
  7. PyQt:桌面程序设计的饕餮盛宴
  8. JSP学习笔记(八):使用ArrayList
  9. 伦敦银走势分析最新,十大国际黄金白银交易平台排名
  10. 重要的是商业,不是应用(Building a bussiness, not an app)