0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA基础资源之IOB的应用

FPGA设计论坛 来源:未知 2022-12-25 16:30 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

FPGA基础资源之IOB的应用


1.应用背景


在我们做时序约束时,有时候需要对FPGA驱动的外围器件进行input_delay/output_delay进行约束。不知道,大家有没有被以下这种类似的现象折磨过。你好不容易约束通过的工程,仅改动了个标点符号,或者其他不相关模块改动一丢丢。编译出来的工程时序就不过了。


碰到上述的现象,我觉得可能的原因有以下几种:1.时钟频率确实已经到极限了。2.器件的资源利用率已经达到瓶颈,软件已经尽力去优化了。


针对原因2,除了处理好跨时钟域等问题以外,我们通常会从整体上,去评估模块的布局是否合理,是否还有值得优化的空间。又或者针对关键的路径/模块,利用Pb_lock等技术,划分出某一区域,有限满足关键模块的布线等等手段。本文要介绍的IOB,针对外围器件input/output delay约束,有很好的提升效果。



2.什么是IOB


xilinx FPGA的基本资源一般包括可编程IO,IOB,CLB,BRAM,DCM,DSP等资源,某些器件还会集成一些特殊的硬核,例如GT、MIG等。其中IOB就是input/output buffer。可编程IO的作用就是完成信号的采集和输出,引脚可以配置支持不同电气特性,上拉下拉或三态,差分或单端。IOB与附近的idelay、odelay、ilogic、ologic和可编程IO等资源,共同组成FPGA的IO_Bank。




3.IOB的应用以及注意事项


为了保证FPGA输入输出接口的时序,一般会要求将输入管脚首先打一拍再使用,输出接口也要打一拍再输出FPGA。这样做的目的是为了让这打一拍的寄存器约束到IOB上,从而使得每一次编译输入或者输出的时序不会发生改变。这是因为,IOB是位于IO附近的寄存器,是FPGA上距离IO最近的寄存器,并且位置固定。当你输入或者输出采用了IOB约束,那么就可以保证从IO到达寄存器或者从寄存器到达IO之间的走线延迟最短、最大限度保证时序满足要求,同时由于IO的位置是固定的,所以每一次编译都不会造成输入或者输出的时序发生改变。


IOB的应用一般有两种,一种是在代码中添加约束,另一种可以在约束文件xdc中添加。


在约束文件中加入下面约束:

set_property IOB true [get_ports {port_name}]


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

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



4.实例说明


下面的实例,分别对输入寄存器[3:0]reg_a,以及输出寄存器reg_c1进行IOB约束,停过对比并行的寄存器[3:0]reg_b和reg_d1,从而能发现他们之间的差异。



下面是映射到device的情况:


我们以输出的寄存器reg_c1和reg_d1为例,从下图能明显能看出,增加了IOB约束的reg_c1,是被映射到device靠近pad的Ologic里面的IOB寄存器中,而没添加IOB约束的输出寄存器reg_d1,是直接从某个CLB 中其中一个slice里的寄存器中。当逻辑代码改变,很有可能下一次编译,reg_d1映射的位置会发生改变,从而导致时序路径发生变化。


同样,输入的寄存器也是一个道理,这里就不展开论述了。




附代码:


module IOB_test(


input [3:0]a,b,


output c,d,


input clk,


input rst


);


//-------set input reg IOB -------


(* IOB = "true" *) reg [3:0] reg_a;


reg [3:0] reg_b;


always@(posedge clk)


begin


if(rst)


begin


reg_a <= 4'd0;


reg_b <= 4'd0;


end


else


begin


reg_a <= a;


reg_b <= b;


end


end


reg reg_c = 1'd0;


reg reg_d = 1'd0;


always@(posedge clk)


begin


if(rst)


begin


reg_c <= 1'd0;


reg_d <= 1'd0;  


end


else


begin


if ( reg_a == 4'd1 && reg_b == 4'd2 )


begin


reg_c <= reg_c +  1'd1;


reg_d <= reg_d +  1'd1;


end


else


;


end


end


//-------set output reg IOB -------


(* IOB = "true" *) reg reg_c1 = 1'd0;


reg reg_d1 = 1'd0;


always@(posedge clk)


begin


reg_c1 <= reg_c;


reg_d1<= reg_d;


end


assign c = reg_c1;


assign d = reg_d1;


endmodule







精彩推荐



至芯科技12年不忘初心、再度起航12月17日北京中心FPGA工程师就业班开课、线上线下多维教学、欢迎咨询!
FPGA 结构分析 -IO 资源
移位寄存器(左移、右移、双向)的Verilog实现
扫码加微信邀请您加入FPGA学习交流群




欢迎加入至芯科技FPGA微信学习交流群,这里有一群优秀的FPGA工程师、学生、老师、这里FPGA技术交流学习氛围浓厚、相互分享、相互帮助、叫上小伙伴一起加入吧!


点个在看你最好看





原文标题:FPGA基础资源之IOB的应用

文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1655

    文章

    22281

    浏览量

    630051

原文标题:FPGA基础资源之IOB的应用

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    详解FPGA定点数计算方法

    FPGA定点数计算在高效资源利用、运算速度优势、硬件可预测性和成本效益等方面发挥着重要作用。它能节省逻辑和存储资源,实现更快速的运算和更高的时钟频率,保证行为可预测且易于硬件实现和验证,同时降低硬件和开发成本,广泛应用于数字信号
    的头像 发表于 12-02 10:09 163次阅读
    详解<b class='flag-5'>FPGA</b>定点数计算方法

    2025安路科技AEC FPGA技术沙龙北京站圆满落幕

    2025年11月12日,安路科技AEC FPGA技术沙龙收官站在北京圆满落幕。本次沙龙以“定制未来,共建生态”为主题,聚焦国产FPGA在边缘计算、工业控制及汽车电子等前沿领域的技术创新与生态发展,现场吸引了超250名客户代表、
    的头像 发表于 11-19 17:12 1082次阅读

    NVMe高速传输摆脱XDMA设计45:上板资源占用率分析

    Block Design 设计后进行综合与实现, NoP 逻辑加速引擎的在不同 FPGA 平台中的资源占用率分别如表 1 和表 2 所示。 从表中可以看到, 本课题设计的 NoP逻辑加速引擎资源
    发表于 11-13 08:36

    如何调用FPGA板上的按键资源

    今天主要介绍一下我们团队是如何调用FPGA板上的按键资源的。 首先,初始化按键模块: 具体初始化函数调用如下: 其次,定义按键扫描函数: u8 KEY_Scan(u8 mode
    发表于 10-30 08:05

    如何在资源受限型应用中使用 FPGA

    的性能需求,同时在严格的功耗、尺寸和成本限制内运行。现代现场可编程门阵列 (FPGA) 可以满足这些相互竞争的需求。 本文回顾了为资源受限型应用选择 FPGA 时需要考虑的关键设计标准。然后,以 [Altera] 经过[功率和成
    的头像 发表于 10-03 17:31 1479次阅读
    如何在<b class='flag-5'>资源</b>受限型应用中使用 <b class='flag-5'>FPGA</b>

    基于FPGA实现FOC算法PWM模块设计

    哈喽,大家好,从今天开始正式带领大家从零到一,在FPGA平台上实现FOC算法,整个算法的框架如下图所示,如果大家对算法的原理不是特别清楚的话,可以先去百度上学习一下,本教程着重介绍实现过程,弱化原理的介绍。那么本文将从PWM模块开始进入FOC算法中去。
    的头像 发表于 07-17 15:21 3115次阅读
    基于<b class='flag-5'>FPGA</b>实现FOC算法<b class='flag-5'>之</b>PWM模块设计

    FPGA调试方式VIO/ILA的使用

    在Vivado中,VIO(Virtual Input/Output)是一种用于调试和测试FPGA设计的IP核,它允许设计者通过JTAG接口实时读取和写入FPGA内部的寄存器,从而检查设计的运行状态并修改其行为。VIO IP核提供了一个简单易用的接口,使得用户可以轻松地与
    的头像 发表于 06-09 09:32 3079次阅读
    <b class='flag-5'>FPGA</b>调试方式<b class='flag-5'>之</b>VIO/ILA的使用

    智多晶FPGA设计工具HqFpga接入DeepSeek大模型

    在 AI 赋能工程设计的时代浪潮中,智多晶率先迈出关键一步——智多晶正式宣布旗下 FPGA 设计工具 HqFpga 接入 DeepSeek 大模型,并推出 FPGA 设计专属 AI 助手——晶小助!这是
    的头像 发表于 06-06 17:06 1117次阅读

    2025安路科技AEC-FPGA技术沙龙启航

    ,围绕FPGA技术的创新应用、行业趋势、解决方案等话题展开深入探讨与交流。随着时间的推移,这一系列活动成为众多业内人员获取行业动态、分享技术经验、拓展人脉资源的重要平台。
    的头像 发表于 06-05 11:33 851次阅读

    FPGA从0到1学习资料集锦

    ,RAM 也往往容量非常小。现在的 FPGA 不 仅包含以前的 LE,RAM也更大更快更灵活,管教 IOB 也更加的复杂,支持的 IO 类型也更多,而且内部还集成了一些特殊功能单元,包括: DSP
    发表于 05-13 15:41

    Xilinx Ultrascale系列FPGA的时钟资源与架构解析

    Ultrascale是赛灵思开发的支持包含步进功能的增强型FPGA架构,相比7系列的28nm工艺,Ultrascale采用20nm的工艺,主要有2个系列:Kintex和Virtex
    的头像 发表于 04-24 11:29 2064次阅读
    Xilinx Ultrascale系列<b class='flag-5'>FPGA</b>的时钟<b class='flag-5'>资源</b>与架构解析

    Why FPGA开发板喜欢FMC?

    插槽,使用母座FMC连接器。载卡连接器引脚与具有可配置IO资源的芯片例如FPGA引脚通过PCB设计连接在一起。FMC子板模块:子板模块上使用公座FMC连接器。子卡通过设计不同的IO接口实现不同的功能,使载
    的头像 发表于 04-14 09:52 1212次阅读
    Why <b class='flag-5'>FPGA</b>开发板喜欢FMC?

    fpga和cpu的区别 芯片是gpu还是CPU

    型的芯片,它们在结构、功能、应用场景等方面存在显著差异。 结构与灵活性 FPGAFPGA是一种可编程逻辑器件,其内部由大量的可编程逻辑单元(CLB)、输入/输出模块(IOB)、可编程互连
    的头像 发表于 02-01 14:57 2977次阅读

    现代中端FPGA的主要亮点

    FPGA 通常按照逻辑容量进行分类,这种方式固然简单,但未能充分体现现代 FPGA 作为可更改的片上系统所能提供的丰富功能和资源
    的头像 发表于 01-23 13:52 919次阅读

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

    xilinx FPGA IOB约束使用以及注意事项 一、什么是IOB约束 在xilinx FPGA中,IOB是位于IO附近的寄存器,是
    的头像 发表于 01-16 11:02 1484次阅读
    xilinx <b class='flag-5'>FPGA</b> <b class='flag-5'>IOB</b>约束使用以及注意事项