Verilog:部分选择或索引部分选择无法应用于内存

标签 verilog

在 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/

相关文章:

arrays - 在 verilog 中连接输入

verilog - Verilog 中 $readmemh 的替代方案

verilog - 不是有效的左值 - verilog 编译器错误

regex - 如何编写正则表达式来匹配 Verilog 文件中的模块实例化?

vhdl - 其他 => Verilog 中的 '1' 语句

verilog - @(a==1) 和@(posedge a) 的区别

verilog - 验证 Verilog 中的参数

function - Verilog 中如何使用函数?

debugging - "output"附近出现错误 : syntax error, 意外输出,预期为 ')'

file-io - 为什么我无法读取整个文件?