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
    +关注

    关注

    1625

    文章

    21663

    浏览量

    601670

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

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

收藏 人收藏

    评论

    相关推荐

    RISC-V内核是如何与FPGA内核进行资源共享的?

    我们知道RISC-V内核支持的精简指令集,FPGA又是要求性能相对比较高的模块,这两者在同一个产品中可否共存?若能,两者的资源又是通过哪些接口进行传输共享的呢?
    发表于 10-27 17:05

    FPGA芯片架构和资源有深入的理解,精通Verilog HDL、VHDL

    、计算机相关专业,具有良好的专业基础知识。 2.工作年限不限,有工作经验或优秀应届毕业生亦可。 3.对FPGA芯片架构和资源有深入的理解,精通Verilog HDL、VHDL编程语言,熟悉时序约束、时序分析
    发表于 09-15 15:23

    FPGA设计经验图像处理

    进行处理其给出结果的延时是两行图像的时间。还有这个算子法和现在卷积神经网络中最前面的卷积层运算是类似的。 FPGA中的Block Ram是重要和稀缺资源,能缓存的图像数据行数是有限的,所以这个
    发表于 06-12 16:26

    FPGA学习笔记-关于FPGA资源

    FPGA的学习。 在学习中才发现,FPGA远不是门电路那么简单。FPGA中有各种需要的资源,比如门电路、存储单元、片内RAM、嵌入式乘法器、PLL、IO引脚等。等于是说,可以根据需求,
    发表于 05-22 18:27

    FPGA基础知识学习

    FPGA(现场可编程门阵列)的工作原理主要基于其内部的可配置逻辑模块(CLB)、输入输出模块(IOB)和内部连线(Interconnect)三个部分。 首先,FPGA是由存放在片内RAM中的程序来
    发表于 04-29 23:26

    FPGA的时钟电路结构原理

    FPGA 中包含一些全局时钟资源。以AMD公司近年的主流FPGA为例,这些时钟资源由CMT(时钟管理器)产生,包括DCM、PLL和MMCM等。
    发表于 04-25 12:58 1737次阅读
    <b class='flag-5'>FPGA</b>的时钟电路结构原理

    中高端FPGA如何选择

    为了使数据传输更加高效,Achronix FPGA上的Memory资源也是非常给力,不管是片上Ram还是DDR接口,都比Virtex Ultrascale+有很大优势。 在Speedster7t
    发表于 04-24 15:09

    如何评估选型FPGA开发板的资源

    如何评估选型FPGA开发板的资源
    发表于 03-30 11:29

    现场可编程门阵列的原理和应用

    可以根据用户的设计进行配置,形成所需的逻辑功能。互连资源则是一组可编程的连接通道,用于将PLU连接在一起,以实现用户定义的电路拓扑结构。此外,FPGA还包括输入输出模块(IOB),用于与外部设备或电路进行连接。
    的头像 发表于 03-27 14:49 622次阅读

    fpga芯片工作原理 fpga芯片有哪些型号

    FPGA芯片的工作原理主要基于其内部的可配置逻辑单元和连线资源。包括以下工作原理: 首先,FPGA内部包含可配置逻辑模块(CLB)、输出输入模块(IOB)和内部连线(Interconn
    的头像 发表于 03-14 17:17 1365次阅读

    fpga是什么架构

    FPGA(现场可编程门阵列)的架构主要由可配置逻辑模块(CLB)、输入/输出模块(IOB)以及可编程互连资源组成。
    的头像 发表于 03-14 17:05 815次阅读

    FPGA资源使用如何评估

    请问FPGA资源使用如何评估?
    发表于 02-22 09:55

    FPGA资源与AISC对应关系

    )是两种不同的硬件实现方式。 FPGA是一种可编程逻辑器件,其内部资源可以根据需要进行配置和重新配置。这些资源包括但不限于: 逻辑单元(Logic Cells):这些是FPGA的核心计
    发表于 02-22 09:52

    FPGA好的学习资源有哪些

    FPGA学习好的资源有哪些?从入门到精通,大家可以分享一起学习呀
    发表于 01-28 17:00

    简谈FPGA的片内资源

    简谈FPGA的片内资源
    发表于 01-08 22:12