【问题标题】:How to create buffer gate with Vivado Schematic?如何使用 Vivado 原理图创建缓冲门?
【发布时间】:2021-09-13 10:09:43
【问题描述】:

我是第一次使用 Vivado 学习 Verilog。我正在尝试用它创建简单的缓冲门。

这是我尝试过的代码。第一个是名为“inv.v”的设计源文件。

`timescale 1ns / 1ps

module inv(
    input a,
    output x
    );
    
IBUF buffer(x, a);

endmodule

此代码确实创建了缓冲门,但它创建了其中 2 个。

我也试过下面的代码。

`timescale 1ns / 1ps

module inv(
    input a,
    output x
    );
    
assign x = a;

endmodule

但是,这不会产生任何结果。我想要的是只创建一个缓冲门,如上图所示。有人知道怎么做吗?

附言我正在使用 Vivado 2017.3 HLx 版。

【问题讨论】:

    标签: verilog system-verilog vivado


    【解决方案1】:

    IBUFOBUF 是 IO 缓冲区:一个从输入引脚驱动到逻辑阵列;另一个驱动逻辑阵列的输出引脚。这些是由工具放入的,因为它们是电气原因所必需的(即电压、电流等原因,而不是布尔运算的原因)。

    这就是您努力放入自己的缓冲区的原因。缓冲区在布尔级别没有功能,仅出于电气原因需要。您的 Verilog 不关心这些细节:如果逻辑综合/布局工具认为出于这些电气原因(例如驱动长轨道或驱动许多输入)有必要,这些东西会自动添加。

    如果您想尝试一些基本的东西来看看您的 Verilog 如何变成(即合成到)真正的门,您需要尝试一些在布尔级别具有某些功能的东西,例如与门。或者,如果您想让它尽可能简单,可以使用逆变器。

    【讨论】:

    • 那么,我苦苦挣扎的原因是缓冲区在布尔级别没有功能?
    • 是的。它是一个电子元件。
    【解决方案2】:

    有关 ibuf 和 obuf 原语的更多信息,请参阅 7 系列库指南。 https://www.xilinx.com/support/documentation/sw_manuals/xilinx2018_3/ug953-vivado-7series-libraries.pdf 这是链接中文件第 341 页左右的引述。

    “一般情况下,IBUF 是由综合工具推断设计的顶层输入端口,因此无需在源代码中指定它们。但是,如果需要,可以通过复制来自适当的库指南 HDL 模板的代码,并将其放入代码的顶层。

    您的第一个示例是库指南中提到的实例化。对于您的第二个示例,没有组件实例,Vivado 确定不需要缓冲区。

    【讨论】:

      猜你喜欢
      • 2019-05-01
      • 1970-01-01
      • 2011-11-26
      • 2016-10-23
      • 2011-03-07
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 2019-03-19
      相关资源
      最近更新 更多