【问题标题】:I am getting error in the verilog code for stopwatch in Altera DE1我在 Altera DE1 中的秒表的 verilog 代码中遇到错误
【发布时间】:2018-01-18 21:49:09
【问题描述】:

在使用 Quartus II 进行编译时,verilog 代码出现错误

错误 (10119):DE1_SOC_golden_top.v(313) 处的 Verilog HDL 循环语句错误:具有非常量循环条件的循环必须在 250 次迭代内终止

第 313 行是 #50 时钟 = ~clock;

测试台模块的代码是

module test;

 // Inputs
 reg clock;
 reg reset;
 reg start;

 // Outputs
 wire [3:0] d0;
 wire [3:0] d1;
 wire [3:0] d2;

 // Instantiate the Unit Under Test (UUT)
 stopwatch uut (
  .clock(clock), 
  .reset(reset), 
  .start(start), 
  .d0(d0), 
  .d1(d1), 
  .d2(d2)
 );

initial
  begin
   clock = 0;
    forever
     #50 clock = ~clock;
  end

 initial begin
  // Initialize Inputs
  reset = 0;
  start = 0;

  // Wait 100 ns for global reset to finish
  #100;
  reset = 1;
  #100;
  reset = 0;
  #100;
  start = 1;
  // Add stimulus here
 end

结束模块

任何纠正相同的建议。我正在产生 0.1 秒的延迟..

【问题讨论】:

  • Quartus 是综合。您通常只使用测试台进行模拟,因为它们通常包含不可综合的代码(如永远循环)。
  • 好吧,你的意思是我应该使用原始代码进行编译,并且只测试代码进行模拟......对。

标签: verilog


【解决方案1】:

你可以改写如下行来清除错误

clock = #50 ~clock;

【讨论】:

  • 正如另一个答案所说,提问者正在尝试综合测试平台。这是根本问题。
  • 真的吗?由于他没有特别提到综合,我假设他使用的是带有 Modelsim 的 QuartusII 版本。(这是开发套件对吗?)“我在 verilog 代码中遇到错误”这句话意味着错误是问题所在,而问题的根源。更不用说他提到了解决此错误的愿望,“错误(10119):DE1_SOC_golden_top.v(313)处的Verilog HDL循环语句错误:具有非常量循环条件的循环必须在250次迭代内终止”。鉴于它是测试台代码,将外部时钟连接到它实际上似乎并不相关,不是吗?
【解决方案2】:
initial
  begin
   clock = 0;
    forever
     #50 clock = ~clock;
  end

这种生成时钟的方法仅适用于模拟工作流程。要进行综合,您需要将实际时钟信号连接到 FPGA。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 2021-04-01
    • 2014-04-15
    • 1970-01-01
    • 1970-01-01
    • 2023-01-24
    • 1970-01-01
    相关资源
    最近更新 更多