Vivado 中的综合错误:[Synth 8-3380] 循环条件在 2000 次迭代后未收敛

问题描述 投票:0回答:1
module Delay_Module (
  input wire clk,
  input wire [3:0] data_in,
  input wire [7:0] delay_cycles,
  output reg [3:0] output_data
);
  reg [4:0] counter = 0;
  reg [3:0] memory [0:47];
  integer i;
  integer j;
  reg flag;
  initial begin
    for(j=0; j<48;j = j+1)begin
      memory[j]<=4'b0000; 
    end
    output_data <=0;  
    flag <= 1;
  end    
  always @(posedge clk ) begin
      if (flag == 1) begin
        for(i = delay_cycles-1; i >= 0; i = i - 1 )begin       
        memory[i+1] <= memory[i];
        output_data <= memory[delay_cycles-2];
        memory[0]<=data_in;
        end
      end          
end       
endmodule

我必须设计一个延迟模块,将gpio输入的数据存储在内存中,然后输出存储的数据。

delay_cycles
的最大值为 48,与内存大小相同。
    

verilog vivado synthesis
1个回答
0
投票
delay_cycles

循环在启动条件中使用变量

for
您声明了一个 

delay_cycles

变量,但没有使用它。您可以实现一个计数器,而不是使用

counter
循环。
    

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