Menu Close

Verilog forever 循环语句

在Verilog 语法中forever语句可以用于产生无限循环的过程,但在组合逻辑电路中这种情况是不能综合的,即使在激励文件中也要加以特殊的限制,才能正常运行。但由于forever能提供无限循环,因此特别适合时序逻辑的设计。在仿真文件一般用于时钟产生。

由于forever是无限循环的,一般在激励文件中加延迟语句或使用时钟边沿来约束forever语句,防止零延迟死循环。

forever一般用在initial过程中。

例1:在testbench 文件中利用forever 产生时钟激励。


 

例2:在仿真文件中利用forever 生成计数器


 

例3:利用forever生成4 X 4 乘法器

仿真文件:


 

上例中就是利用时钟上升沿,对被乘数左移对应的位数,if(b[i]) 不满足,也就是b[i]==0,则计算直接跳过。上例中的判断语句也可以用位与(&)逻辑替代。如:


 

在Vivado下的仿真波形如图1:

图1

关于在Quartus II prime lite版本下使用forever的限制:

  • Quartus II prime lite对于循环迭代次数不能超过250次,因此在该版本下forever在实体设计文件不能用。在编译时会报如下错误。

图2

  • 图2指出在没有明确限定仿真次数的循环中,Quartus II 在综合时报错,这样会阻止modelsim 启动。但在Modelsim 或Vivado下可以编译和仿真。

 

 

对应视频:

Posted in FPGA, FPGA 教材教案, Quartus II, Verilog, Vivado