我正在尝试使用verilog连接Altera FPGA上的两个引脚。
具体来说,我正在将inout
引脚连接到input
引脚。我收到了错误。
图钉“< name>”有多个驱动程序
此链接说明了错误。
这是解决方案:
module multi_driver(inout o, input a, b, en);
// Input a directly drives the bidir pin w/o a tri-state condition
assign o = a;
// If en = 1 below, there will be an electrical conflict in the design.
// To avoid this possibility, the Quartus II software issues an error
assign o = (en) ? b : 1'bz;
endmodule
有人可以解释一下assign o = (en) ? b : 1'bz;
行的确切含义吗?
答案 0 :(得分:0)
assign o = (en) ? b : 1'bz;
是Verilog的三态锁存模板。当en
为高o
时,将输出端口,其值为b
。当en
为低端口o
时,1'bz
将为assign o = a;
(即高阻态)。高阻抗状态意味着它将形成从模块外部强制的任何形状(即输入)。
如果您尝试强制另一个信号en
而不管contentType: "application/json",
信号,它会警告您该信号有多个驱动程序。只有当引脚处于高阻态时,才能连接模块外的信号。