Verilog高阻抗输出合成

问题描述 投票:0回答:1

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

您是否通常必须明确告诉工具提取信号?或者这通常是不必要的(我在代码中找不到任何提到的引体向上)

verilog synthesis inout
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.