0

我通常不在verilog中使用inout或高阻抗状态进行综合(假设内部逻辑最终必须将其实现为标准CMOS 2状态逻辑)。

但是,我发现很多用于合成的 verilog,如下所示:

module top(
    inout signal1,
    inout signal2
);

    submodule sub1 ( 
        //outputs from sub1
        signal1, 
        signal2
    );
    submodule sub2 ( 
        //outputs from sub2
        signal1, 
        signal2
    );

endmodule

其中 signal1 和 signal2 仅被驱动到 1'b0 或 1'bz 并且它们在约束文件中被声明为开漏端口。

大多数合成工具都支持合成吗?我的目标是晶格CPLD,它似乎工作正常,但我很好奇其他工具是否可以合成这样的东西好吗?

您通常必须明确告诉工具上拉信号吗?或者这通常是没有必要的(我在我正在查看的代码中找不到任何关于引体向上的提及)

4

1 回答 1

0

FPGA 配备了可配置的 IO 组,根据使用约束文件指示工具的方式,您可能拥有“启用”选项。为了驱动开漏总线,通常使用三态缓冲器,其中 (1) 输出信号(指向总线)连接到常数零,(2) 使能信号(连接到三态缓冲器的使能)被认为是提供高阻(由物理总线实现,即上拉电阻)和强 0(来自我们的输出信号)之间切换的实际控制逻辑,(3)输入信号(指向我们的内部逻辑(用于数据采集​​和总线仲裁)。

在我参与的任何商业项目中,我从未见过在 RTL 代码中使用 1'bz 驱动的信号,我的建议是避免使用它,因为我相信总是有更传统的方法来处理它(仅使用逻辑 1 'b1 和 1'b0 结合三态缓冲器)

于 2019-04-25T07:16:19.060 回答