Menu Close

Verilog forever 循环语句

Verilog forever 循环语句

forever一般用在initial过程中。

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

`timescale 1 ns / 1 ps
 
module tb_test
(
 
);
 
reg   clk;
 

endmodule

 

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

module test_forever
(
input inclk,
 
output reg[3:0] count
);
initial 
begin
    count = 0;
 
    
end
endmodule

 

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

仿真文件:

module for_mult 
( 
  input            inclk,
  input      [3:0] a,b,
 
  output reg [7:0] p
); 
 
integer i;
 
initial 
begin
    p = 0;
 
   
end
 
endmodule

 

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

initial 
begin
    p = 0;
    forever
        @(posedge inclk)
      
        end
end

 

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

%title插图%num

图1

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

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

%title插图%num

图2

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

 

Posted in FPGA, FPGA, Quartus II, Verilog, Verilog, Vivado

发表评论

相关链接