在 Verilog 中:
对于数组 reg queue[3:0] = 4'b1010;
我可以queue <= {queue[0], queue[3:1]};
然而,当涉及到二维数组时reg [1:0] queue [3:0];
,当我对其执行同样的操作时报告错误 queue <= {queue[0], queue[3:1]};
。 “部分选择或索引部分选择无法应用于内存”
因此,我只用一种愚蠢的方式来做:
queue[0] <= queue[1];
queue[1] <= queue[2];
queue[2] <= queue[3];
queue[3] <= queue[0];
有没有更好的方法来做到这一点,比如只有一句话。
谢谢!
最佳答案
您始终可以使用for循环
来做到这一点:
queue[3] = queue[0];
for(i = 2; i >= 0; i = i - 1) begin
queue[i] = queue[i+1];
end
关于Verilog:部分选择或索引部分选择无法应用于内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24402096/