在Verilog中:
对于数组reg queue[3:0] = 4'b1010;
,我可以queue <= {queue[0], queue[3:1]};
但是,当涉及到2d数组reg [1:0] queue [3:0];
时,当我对它queue <= {queue[0], queue[3:1]};
做同样的事情时报告错误。 &#34; part-slect或indexed part-slect无法应用于内存&#34;
因此,我只是以愚蠢的方式做到这一点:
queue[0] <= queue[1];
queue[1] <= queue[2];
queue[2] <= queue[3];
queue[3] <= queue[0];
有没有更好的方法来做到这一点,只有一句话。
THX!
答案 0 :(得分:4)
您始终可以使用for loop
来执行此操作:
queue[3] = queue[0];
for(i = 2; i >= 0; i = i - 1) begin
queue[i] = queue[i+1];
end