IOB寄存器跟通信有关的设计中多会用到,今天查了相关资料,总结如下:

首先了解一下fpga的芯片内部结构:

一个fpga主要是由可编程输入输出单元(图中的IOB模块),可编程逻辑单元(CLB模块),块RAM(图中的BRAM,也属于内嵌硬件),数字时钟管理(DCM,也属于内嵌硬件),还有一些内嵌的专用的硬件模块(DSP),IOB寄存器就在图中的IOB模块中。

IOB 的内部结构如下:

IOB单元简称IO单元,是芯片与外部器件的接口部分,用于完成不同电气特性下对输入输出信号的的驱动和匹配要求。目IO口的频率越来越高,一些高端的fpga通过DDR技术可使数据率达到Gb/s.

在这里多提一点: IOB多用在高速数据采样的时候,对一些很难采的信号要通过连接IOB寄存器(在UCF文件中约束)。在赛灵思系列FPGA 的IOB 中分别有输入和输出寄存器。如果将设计中的第一级寄存器或最后一级寄存器用IOB 内部寄存器实现,那么就可以缩短IO 引脚到寄存器之间的路径(理解这句话是关键,我的理解是:若输入输出不连IOB寄存器,则代码修改后(但逻辑功能相同)每次的布局布线后,输入输出信号会被连在不同的内部寄存器上,这样输入信号进入第一级寄存器的布线延迟就会每次都不同,这样有可能在高速信号采集的时候不能正确采样,因为布线延迟会导致建立或保持时间不满足;如果在UCF文件中使用IOB寄存器,则不管代码如何修改,输入信号进入fpga内部都是被第一级的IOB寄存器采样,更能满足采样条件),这通常可以缩短大约1~2ns 的传输时延。

但是在使用UCF文件约束IOB寄存器时,首先,有一些限制。对于输入寄存器在从管脚到寄存器间不能有组合逻辑存在。对于输出寄存器,在寄存器和管脚之间也不能有组合逻辑存在(也就是信号在输入输出之前在代码设计中都要干干净净打一拍)。对于三态输出,在IOB中的所有的寄存器必须使用同一个时钟信号和复位信号,而且IOB三态寄存器必须低电平有效才能放到IOB中(三态缓冲器低电平有效,所以在寄存器和三态缓冲器之间不需要一个反相器)。必须使软件能够选用IOB寄存器,可以设置全局实现选项:为输入、输出或输入输出选择IOB寄存器。缺省值为关 off。

你也可在综合工具或在用户约束文件UCF中设定,使得能够使用IOB寄存器。句法为: INST IOB = TRUE;

下边是一网友的的例子:我想大家都应该知道IOBpacking的概念吧,就是把寄存器放置到IOB内,这样寄存器数据可以直接从PAD输出,和FPGA内部SLICE实现相比,减少了布线延迟,提高了性能。

设置IOB的方法太多了,我列举几个:

1. 在UCF上为相应的管脚制定 IOB= TRUE 属性。

2. 在Synplify 中指定 define_global_attribute{syn_useioff} {1} 属性,你可以通过SCOPE界面操作,类似。

3. 在XST中打开属性,设置xilinxspecific options 的 -iob (Pack I/O registers into IOB) 属性为yes

4. 在ISE的implementation的MAP属性中设置 -pr(Pack I/O registers into IOB) 属性为“for inputs and outputs”

大概就是这些,欢迎补充。

今天我做的实验,非常简单。就是要亲眼目睹一下采用IOB packing后有什么区别。

代码(主要部分)

always @(posedge i_clk or negedge i_rst_n)begin

if (!i_rst_n) o1 <= 1'b0;

else o1 <= i1;

end

非常简单的代码,就是一个寄存器而已。

然后再ISE11.1中建立工程,默认方式跑一遍,然后再设置IOB packing跑一遍。每次跑完后都在p&r的下拉菜单里找到 View/Edit Routed Design (FPGA Editor),打开,观看最终的实现结果。发现了重大的差别。

- 默认方案

最终实现中用到一个Slice,点进去看到了寄存器的使用

- IOB Packing方案

最终实现中没有Slice,但是用到了一个ILOGIC,他是Input PAD中的一部分,在这个ILOGIC中点进去,就看到了我们的寄存器。

所以和我们预想的一样,一般方案中,寄存器是实现在FPGA内部,因此到PAD的延时相对比较长,尤其是设计较大较复杂的时候。使用IOB Packing则将寄存器实现在FPGA边缘的IOB中,大大缩短延迟时间,提高了时序性能。

IOB寄存器的使用:IOB= TRUE 属性相关推荐

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

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

  2. 自动配置原理精讲||@Conditional ||怎么知道哪些自动配置类生效? 启用debug=true属性(在配置文件配置);

    自动配置原理精讲 派生注解 配置文件怎么配置 server.port spring.config.location="D://application.properties" htt ...

  3. hibernate dynamic-update=true属性不起作用原因(转载)

    原文地址: https://yan-sa.iteye.com/blog/1913684 由于我在action层使用了注解多例@Scope("prototype"),而在dao层默认 ...

  4. 将寄存器放入IOB的方法

    1.verilog代码中 (IOB = "TRUE") output reg [3:0] LED; 2.XDC文件中 set_property IOB TRUE [get_port ...

  5. asp.net页面的AutoEventWireup=true属性设置

    我们进行asp.net Web开发时,我们会习惯性的在后台的Page_Load()方法中通过IsPostBack属性的判断加载数据.那么,问题来了,你是如何知道页面加载的时候会执行Page_Load( ...

  6. AutoEventWireup=“true” 属性

    AutoEventWireup AutoEventWireup="true"  :自动事件匹配 asp.net(AutoEventWireup属性的确切含义) 使用Asp.NET时 ...

  7. asp.net页面的AutoEventWireup=“true“属性设置

    微软通过AutoEventWireup属性已经帮我们进行了事件与页面的隐式关联.这些特定名称包括:Page_Init, Page_Load, Page_DataBind, Page_PreRender ...

  8. 【SVN】版本冲突处理之设置needs-lock:true属性

    为减少团队开发过程中的SVN文件版本冲突.可以修改各自机器的SVN默认设置,将默认配置改为 needs-lock:true 操作步骤如下: 1.在本机 右键里找到TortoiesSVN 选择.sett ...

  9. python读取excel不读取公式_openpyxl读取excel不输出公式data_only=True属性

    之前几篇文章在读取excel的时候都加了参数data_only=True,data_only=True的作用主要是防止excel中有公式. 有公式(vlookup公式)又不加该参数读取一个excel看 ...

最新文章

  1. 目标检测--R-FCN: Object Detection via Region-based Fully Convolutional Networks
  2. 黑客声称盗取微软GitHub账号500GB数据,网友:这些最终都会开源的
  3. Oracle密码过期解决办法
  4. ubuntu18.0.4 无线网卡无法上网解决!
  5. 服务器server2012重置开机密码
  6. 微信王者服务器怎么删掉,微信王者荣耀账号怎么注销 王者注销微信账号方法一览...
  7. 个人网站博客完美添加谷歌广告增加收入详细步骤
  8. BERYL和COMPIZ FUSION的安装与使用
  9. HTTPS/HTTP
  10. 【C语言】动态内存管理 [进阶篇_ 复习专用]
  11. 微服务在windows打jar包运行遇到的大坑
  12. win10中搭建并配置ftp服务器的方法(实现多用户登录整合版)
  13. 将netcore发布到docker的其他端口上
  14. 滴滴柳青、58同城、美团创始人引领《财富》商界精英
  15. 如何评价网络的好坏及IP相关知识
  16. 可视化的工业互联网 3D 展示
  17. 2021年安全员-B证免费试题及安全员-B证证考试
  18. 网易数帆数据生产力方法论
  19. uboot启动时间优化
  20. 阅读笔记 MISA: Modality-Invariant and -Specific Representations for Multimodal Sentiment Analysis

热门文章

  1. 2020双周训练训练日志
  2. 45.常用的数学工具类2-三角函数的使用
  3. python实现模拟浏览器操作
  4. 学Python兼职赚钱是真的吗
  5. Python 李查逊/Richardson加速外推法
  6. Core Text 实践:自定义每个字的位置
  7. Ubuntu18.08安装到移动硬盘(UFEI引导)
  8. .NET 升级发布后,IIS出现了System.IO.DirectoryNotFoundException
  9. 魔戒中超眩的武器装备!
  10. 翻译翻译什么叫HTML5(六)“开门,js来查水表啦”