如何将多个输入线连接到systemverilog中的一根导线(除了一个hi-Z之外的所有导线)

时间:2015-09-26 22:12:27

标签: system-verilog

假设除了一个以外的所有输入线都应该在Hi-Z中。我们希望将这些电线连接成单线(例如数据总线)。如何在SystemVerilog中完成?

3 个答案:

答案 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数据类型。