我通常不在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
仅将信号1和信号2驱动到1'b0或1'bz,并在约束文件中将它们声明为漏极开路端口。
大多数综合工具是否支持对此进行综合?我的目标是晶格CPLD,它似乎可以正常工作,但是我很好奇其他工具是否可以合成这样的东西?
您通常是否必须明确告知工具来上拉信号?还是通常不需要(在我正在查看的代码中找不到上拉的任何提及)
答案 0 :(得分:0)
FPGA配备有可配置的IO库,并且根据约束文件指示工具的方式,您可能会使用“启用”。为了驱动漏极开路总线,通常使用三态缓冲器,其中(1)输出信号(指向总线)连接到恒定零,(2)使能信号(连接到三态缓冲器的使能)被认为是:提供在高Z(由物理总线实现产生,即上拉电阻)和强0(从我们的输出信号中获取)之间切换的实际控制逻辑,(3)输入信号(指向我们的内部逻辑(用于数据采集和总线仲裁)。
在我参与的任何商业项目中,我从未见过以RTL代码以1'bz驱动的信号,我的建议是避免使用它,因为我相信总是有更常规的方法来解决(仅逻辑1'b1和1'b0结合三态缓冲器)