xilinx FPGA IOB约束使用以及注意事项
转自: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.4 7系列FPGA IOB
7系列FPGA IOB 1 7系列FPGA IOB 2 IOB的约束方法 3 IOB约束使用注意事项 1 7系列FPGA IOB CLB可以实现FPGA的功能,但要和外界打交道,就必须有和外 界电平兼 ...
- fpga电平约束有什么作用_Xilinx FPGA的约束设计和时序分析总结
欢迎FPGA工程师加入官方微信技术群 点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群 在进行FPGA的设计时,经常会需要在综合.实现的阶段添加约束,以便能够控制综合.实现过程,使设计 ...
- Xilinx FPGA “打一拍”“打两拍”以及IOB含义
Xilinx FPGA "打一拍""打两拍"以及IOB含义 本次总结主要是参考网上的说法,最近在接触到异步时钟同步的时候了解到利用"非阻塞赋值< ...
- Xilinx FPGA 将寄存器放入IOB中
xilinx FPGA的资源一般指IOB,CLB,BRAM,DCM,DSP五种资源.其中IOB就是input/output block,完成不同电气特性下对输入输出信号的的驱动和匹配要求. IOB的作 ...
- XILINX FPGA和CPLD引脚约束步骤
XILINX FPGA和CPLD管教约束 1.XILINX CPLD引脚配置 打开ISE,这个工程所用的芯片是Coolrunner II CPLD系列的XC2C32A,找到floorplan IO-P ...
- Xilinx FPGA时钟及I/O接口规划(一)
引言:从本文开始,我们介绍Xilinx FPGA时钟及I/O接口规划设计.I/O和时钟规划是定义和分析FPGA和印刷电路板(PCB)之间连接的过程,并将各种互连信号分配给FPGA器件的物理管脚,正确的 ...
- XIlinx FPGA 和 Intel FPGA的区别
目录 一 FPGA简介 什么是FPGA呢 ? FPGA的内部结构有什么呢? 为什么要开发FPGA? FPGA的发展历程? FPGA用于做什么? FPGA的优缺点? 二 Xilinx FPGA和Inte ...
- xilinx FPGA普通IO作PLL时钟输入
xilinx FPGA普通IO作PLL时钟输入 在xilinx ZC7020的片子上做的实验; [结论] 普通IO不能直接作PLL的时钟输入,专用时钟管脚可以; 普通IO可以通过BUFG再连到PLL的 ...
- xilinx c语言u16,Xilinx FPGA LVDS应用
最近项目需要用到差分信号传输,于是看了一下FPGA上差分信号的使用.Xilinx FPGA中,主要通过原语实现差分信号的收发:OBUFDS(差分输出BUF),IBUFDS(差分输入BUF). 注意在分 ...
最新文章
- cocos2d-x注意事项(十)Lua发展飞机战争-4-创建主角
- UITableView数据更新问题
- VTK:BackgroundTexture背景纹理用法实战
- 让Team Foundation Server/TFS自动记住用户名密码解决方案
- php template strring,PHP字符串函数
- 深入分布式缓存之EVCache探秘开局篇(文末赠书)
- 查询数据库前十条数据_入门数据分析的一些建议
- 判断循环双链表是否对称
- java executequery_java execute、executeQuery和executeUpdate之间的区别
- JAVA设置输入数据范围,如何使用Apache POI(SXSSF)为特定单元格设置数据(数字)格式区域设置?...
- JavaEE Tutorials (25) - 使用Java EE拦截器
- 计算机组成原理—cpu于主存的连接(例题)
- android WPS如何绘图
- Java常用算法-二分查找算法(两种方法实现)
- java和eova的关系_Eova 1.2 正式版,Java Web 快速开发平台
- 举例 微积分 拉格朗日方程_拉格朗日方程的应用及举例08讲(推荐文档)
- Java - mian()
- 用大写字母打印三角形
- nginx反向代理是什么?
- 今晚直播 |现实环境中的强化学习如何解决?你不可错过的RL终极奥义
热门文章
- mysql锁机制——乐观锁、悲观锁;共享锁、排他锁、行表锁、间隔后码锁、MVCC 与 thinkphp的lock解析
- 【Learncpp中文翻译版】【1.9、1.10、1.11】
- 90%的年轻人猝死: 这么玩手机真的会死人的
- 若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是: A)scanf(“ %d%lx,%le“,x,y,z); B)scanf(“%2d * %d%lf“,
- Select函数的作用和使用
- Vue 获取最近一个月,前三个月, 最近半年,最近一年, 当前月末日期
- PyQt:桌面程序设计的饕餮盛宴
- JSP学习笔记(八):使用ArrayList
- 伦敦银走势分析最新,十大国际黄金白银交易平台排名
- 重要的是商业,不是应用(Building a bussiness, not an app)