假设除了一个以外的所有输入线都应该在Hi-Z中。我们希望将这些电线连接成单线(例如数据总线)。如何在SystemVerilog中完成?
答案 0 :(得分:0)
如果您的意思是模块输入,alias
结构可以执行此操作:
module a(input wire a,b,c);
wire bus; // use if you want a different internal name
alias a = b = c = bus;
endmodule
我确信这不会是可综合的。
答案 1 :(得分:0)
假设您的条件是只有一个输入不是Z保持为真,那么我们可以循环查找最后一个非Z输入并将其值分配给输出。不知道这是否会合成。
module merge_bus
#(parameter BUSW = 8)
(
input [BUSW-1:0] bus_in,
output wire_out
);
always_comb begin
wire_out = 1'bz;
for(int i = 0; i<BUSW; i++) begin
if(bus_in[i] !== 1'bz) wire_out = bus_in[i];
end
end
endmodule
答案 2 :(得分:0)
您可以使用verilog中的wor / wand数据类型。