Verilog:部件选择或索引部件选择无法应用于内存
在Verilog中:Verilog:部件选择或索引部件选择无法应用于内存,verilog,Verilog,在Verilog中: 对于数组reg队列[3:0]=4'b1010我可以执行队列您可以始终使用for loop执行以下操作: queue[3] = queue[0]; for(i = 2; i >= 0; i = i - 1) begin queue[i] = queue[i+1]; end 您始终可以使用for loop来执行此操作: queue[3] = queue[0]; for(i = 2; i >= 0; i = i - 1) begin queue[i] = q
对于数组
reg队列[3:0]=4'b1010代码>我可以执行队列您可以始终使用for loop
执行以下操作:
queue[3] = queue[0];
for(i = 2; i >= 0; i = i - 1) begin
queue[i] = queue[i+1];
end
您始终可以使用for loop
来执行此操作:
queue[3] = queue[0];
for(i = 2; i >= 0; i = i - 1) begin
queue[i] = queue[i+1];
end
这是否意味着我必须定义另一个reg“I”,我不确定它是否可以合成为额外的触发器。我曾经避免循环。循环在合成过程中展开。没有为i
创建硬件。我会将I
声明为integer
(实际上与reg signed[31:0]
相同)。@clifford!好吧,我发现只有这一部分,使用循环是没有问题的,但是当代码变长时,很难控制循环。太多的循环会导致合成失败。我不建议这样做,我更喜欢手动输入。这是否意味着我必须定义另一个reg“I”,我不确定它是否可以合成为额外的触发器。我曾经避免循环。循环在合成过程中展开。没有为i
创建硬件。我会将I
声明为integer
(实际上与reg signed[31:0]
相同)。@clifford!好吧,我发现只有这一部分,使用循环是没有问题的,但是当代码变长时,很难控制循环。太多的循环会导致合成失败。我不建议这样做,而是希望手动键入。您是在尝试将每个数组项移动到不同的索引中,还是在尝试对每个项进行一些移位?如果您试图移动数组中的每个项目,这可能是一个坏主意,在单周期内使用基于ram的数组是不可能的。@Tim我正在尝试进行右转位移位。但实际上是2d数组的一维数组移位。您是在尝试将每个数组项移动到不同的索引,还是在尝试对每个项进行位移位?如果您试图移动数组中的每个项目,这可能是一个坏主意,在单周期内使用基于ram的数组是不可能的。@Tim我正在尝试进行右转位移位。但对于二维阵列来说,实际上是一维阵列偏移。