verilog 程序员关于 for 循环的知识

问题描述 投票:0回答:1
always @* begin
for (i = 0; i < 256; i = i + 1) begin
    for (j = 0; j < 256; j = j + 1) begin
       if (image_data[i] == image_data[j]) begin
       pattern_counts[i] = pattern_counts[i] + 1;
    end
end
end
end  

像这样,为什么pattern_counts = pattern_counts +1不会创建组合逻辑循环以及为什么这是可综合的

请帮助讲述有关 Verilog 的详细信息,它是如何工作的

for-loop verilog
1个回答
0
投票

您忘记初始化

pattern_counts
。你可能会做类似的事情:

always @* begin
  for (i = 0; i < 256; i = i + 1) begin
    pattern_counts[i] = 0 ; //   <---   INITIALIZE
    for (j = 0; j < 256; j = j + 1) begin
      if (image_data[i] == image_data[j]) begin
        pattern_counts[i] = pattern_counts[i] + 1;
      end
    end
  end
end

没有初始化

pattern_counts
,值是
x
(未知)并且
x+1
仍然是
x

如果您的合成器接受您的原始逻辑,则可能会优化代码。

© www.soinside.com 2019 - 2024. All rights reserved.