Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Verilog:部件选择或索引部件选择无法应用于内存_Verilog - Fatal编程技术网

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

在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] = 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我正在尝试进行右转位移位。但对于二维阵列来说,实际上是一维阵列偏移。