Verilog 高阻抗输入输出合成

Verilog high impedance inout synthesis

我通常不在 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,它似乎工作正常,但我很好奇其他工具是否可以合成这样的东西?

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

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

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