7系列selectio之IOBUF(一)


从本章开始将对7系列的IOBUF进行逐一介绍,在介绍之前首先说一下Xilinx的IOBUF是什么,有什么作用。

Xilinx的IOBUF是原语,放置在“Language Templates”里面,如下图大的分类分为IBUF、OBUF和IOBUF,也就是支持输入、输出和输入输出。

image.png

在每个大类里面又有很多细分项,例如下图IBUF里面包括了差分输入、单端输入以及带有不同配置选项的,例如斜率、终端、DCI等等以满足不同场合不同的I/O标准。

image.png

那么这些BUF的作用是什么呢?主要用于在Xilinx FPGA设计中处理输入和输出信号的电平转换和驱动。IOBUF可以接收来自外部设备的输入信号,并将其转换为FPGA内部逻辑所需的电平,同时还可以将FPGA内部逻辑生成的信号发送到外部设备。IOBUF支持各种输入和输出IO标准,如LVCMOS、SSTL、LVDS等。它具有适应不同电压电平的能力,并提供电流放大和终端匹配等功能,以确保信号的正确传输和兼容性。此外,IOBUF还提供了一些附加功能,如输入/输出的使能控制、上拉/下拉电阻配置以及抗噪声和抗干扰特性的设置。这些功能使得IOBUF非常灵活,能够适应不同的应用场景和接口要求。

总之当我们掌握了原语及约束,就可以使用不同的原语可以实现不同I/O标准信号输入与输出的适配。

1IBUF和IBUFG

IBUF和IBUFG是一样的,IBUF是针对于数据信号,IBUFG是针对于始终信号,但我们可以调用同一个引脚,由软件自动分配。而且我们也可以不加此约束,工具会自动给我加上,因为这个是必须的。

image.png

IBUF IBUF_inst (
    .O(O), // 1-bit output: Buffer output
    .I(I)  // 1-bit input: Buffer input
  );

2IBUF_IBUFDISABLE

这个原语就不能靠工具自动加了,如果要使用需要我们手动添加,IBUF_IBUFDISABLE是一种带有禁用端口的输入缓冲器原语,用于将输入信号引入FPGA内部。禁用端口可以用作额外的节能功能,当输入信号未被使用时,可以禁用输入缓冲器以实现电源的节省。通过禁用输入缓冲器,可以减少不必要的功耗消耗,提高系统的能效。

image.png

在调用原语时,可以通过“USE_IBUFDISABLE”来使能禁用功能,默认时使能的。

“IBUF_LOW_PWR”是为TURE表示使能低功耗允许,对于速率较低的,例如Xilinx建议的1.6Gbps,则应该使能低功耗。“IOSTANDARD”是添加I/O标准的约束,这个可以在xdc中以约束语句set_property添加也可以在这里添加,例如约束为LVCMOS18,则可写为LVCMOS18,

  IBUF_IBUFDISABLE #(
     .IBUF_LOW_PWR("TRUE"),   // Low power ("TRUE") vs. performance ("FALSE") for referenced I/O standards
     .IOSTANDARD("DEFAULT"),  // Specify the input I/O standard
     .USE_IBUFDISABLE("TRUE") // Set to "TRUE" to enable IBUFDISABLE feature
  ) IBUF_IBUFDISABLE_inst (
     .O(O),                    // Buffer output
     .I(I),                    // Buffer input (connect directly to top-level port)
     .IBUFDISABLE(IBUFDISABLE) // Buffer disable input, high=disable
  );

对于SSTL和HSTL标准使用该原语会很明显的降低静态功耗,因为他们是差分输入BUF的单端I/O会使用VREF,会比LVCMOS这类标准有更高的静态功耗,所以使能USE_IBUFDISABLE有助于降低静态功耗。

3IBUFDS and IBUFGDS

这个没啥可说的,如下所示,差分输入缓冲器,

image.png

“IBUF_LOW_PWR”是为TURE表示使能低功耗允许,对于速率较低的,例如Xilinx建议的1.6Gbps,则应该使能低功耗。“IOSTANDARD”是添加I/O标准的约束,这个可以在xdc中以约束语句set_property添加也可以在这里添加,例如约束为LVDS_25,则可写为LVDS_25。“DIFF_TERM”表示添加差分终端,Xilinx内置了100Ω的终端电阻,对于没有外接终端阻抗的,需要选为TRUE,以保证阻抗匹配。支持的IO标准有 LVDS 、LVDS_25 、MINI_LVDS_25 、PPDS_25和RSDS_25。

  IBUFDS #(
     .DIFF_TERM("FALSE"),       // Differential Termination
     .IBUF_LOW_PWR("TRUE"),     // Low power="TRUE", Highest performance="FALSE"
     .IOSTANDARD("DEFAULT")     // Specify the input I/O standard
  ) IBUFDS_inst (
     .O(O),  // Buffer output
     .I(I),  // Diff_p buffer input (connect directly to top-level port)
     .IB(IB) // Diff_n buffer input (connect directly to top-level port)
  );






快来扫描下方二维码关注公众号,领取站内所有相关资料,所有哦~

有建议、有需求、有疑问、联系我

<