如何在Verilog中处理具有多个驱动程序的总线
我正在尝试连接verilog中的多个模块,它们共享一个16位大小的公共“总线”。我无法将多个输入(驱动程序)连接到总线。当我附加多个驱动程序时,我在Xilinx中得到一个错误 单元{Top_Module_Name}中的信号总线连接到以下多个驱动器: 我的模块代码是如何在Verilog中处理具有多个驱动程序的总线,verilog,processor,xilinx,bus,Verilog,Processor,Xilinx,Bus,我正在尝试连接verilog中的多个模块,它们共享一个16位大小的公共“总线”。我无法将多个输入(驱动程序)连接到总线。当我附加多个驱动程序时,我在Xilinx中得到一个错误 单元{Top_Module_Name}中的信号总线连接到以下多个驱动器: 我的模块代码是 input en; output [15:0] BUS; reg [15:0] data; if (en) begin BUS = data; else BUS = 16'dZ; 在最上面的模块中,我有一些类
input en;
output [15:0] BUS;
reg [15:0] data;
if (en) begin BUS = data;
else BUS = 16'dZ;
在最上面的模块中,我有一些类似于
module1(en1,wBUS);
module2(en2,wBUS);
module3(en3,wBUS);
我有一个控制器控制1个热编码启用。您的
总线
输出不是reg
,而是导线
。要在IF
语句中使用BUS
(当然,在组合始终
语句中)BUS
必须定义为reg
大概是这样的:
module something (input en,
output reg [15:0] bus
);
reg [15:0] data = 16'hABCD; // some value;
always @* begin
if (en)
bus = data;
else
bus = 16'hZZZZ;
end
endmodule
如果总线
将成为一根电线
module something (input en,
output [15:0] bus
);
reg [15:0] data = 16'hABCD; // some value;
assign bus = (en)? data : 16'hZZZZ;
endmodule
所需的总线将是一根导线。我发誓我以前试过了,结果也出了同样的错误。现在越不管用。非常感谢你!