将向量中的多个值设置为单个值

时间:2014-08-12 17:58:38

标签: verilog system-verilog

基本上,在System Verilog中以编程方式指定扇出的最佳实践是什么?

module fanout
#(
  parameter N = 4
)
(
  input i, 
  output j [N-1:0]
);
  always @ (*) begin
    for (int k = 0; k < N; k++) begin
      j[k] = i;
    end
  end
endmodule

这允许输出向量的宽度为参数 - 这有什么问题吗?这个合成会好吗?

2 个答案:

答案 0 :(得分:3)

您可以使用复制运算符。这允许您复制一个固定次数的值并将它们连接起来。

示例(请注意,您需要将输出更改为打包数据类型output [N-1:0] j

module fanout
#(
  parameter N = 4
) 
(
  input i, 
  output [N-1:0] j
);

  assign j = {N{i}};

endmodule

EDA游乐场上的可运行示例:http://www.edaplayground.com/x/9vn

答案 1 :(得分:1)

您可以在分配模式中使用default

module fanout
#(
  parameter N = 4
) 
(
  input i, 
  output  j[N]
);

  assign j = '{default:i};

endmodule