我正在制作一个电路,其中需要多根导线来代替一根输入导线的值。
现在我将它们分别分配,并且它可以工作,我只是好奇是否有更好的更有效的方法来做到这一点。我当前的代码如下所示:
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];
答案 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
所有这三种解决方案都可以合成出完全相同的结果。在这种情况下,尽管我建议使用重复运算符,但是如果您需要执行一些更复杂的分配,则以后可能会发现此解决方案很有用。