使导线的矢量与一根导线的值相同

时间:2019-02-05 20:29:06

标签: verilog

我正在制作一个电路,其中需要多根导线来代替一根输入导线的值。

现在我将它们分别分配,并且它可以工作,我只是好奇是否有更好的更有效的方法来做到这一点。我当前的代码如下所示:

input [15:0] a;
wire [15:0] select;
assign select[0] = a[15];
assign select[1] = a[15];
assign select[2] = a[15];
assign select[3] = a[15];
assign select[4] = a[15];
assign select[5] = a[15];
assign select[6] = a[15];
assign select[7] = a[15];
assign select[8] = a[15];
assign select[9] = a[15];
assign select[10] = a[15];
assign select[11] = a[15];
assign select[12] = a[15];
assign select[13] = a[15];
assign select[14] = a[15];
assign select[15] = a[15];

2 个答案:

答案 0 :(得分:5)

使用重复运算符:

assign select = {16{a[15]}};

此:{16{..}}产生内部大括号之间的重复连接。
因此,这:{16{a[15]}}连接a [15] 16次。

答案 1 :(得分:1)

尽管repeat运算符是执行此操作的最佳方式,但您也可以在组合always块中使用for循环来实现此操作:

input [15:0] a;
wire [15:0] select;

always @* begin
  for (int i=0; i<16; i++) begin
    select[i] = a[15];
  end
end

所有这三种解决方案都可以合成出完全相同的结果。在这种情况下,尽管我建议使用重复运算符,但是如果您需要执行一些更复杂的分配,则以后可能会发现此解决方案很有用。