> 技术文档 > Verilog教程----循环语句(十二)_verilog for循环

Verilog教程----循环语句(十二)_verilog for循环

Verilog中存在4种循环语句,用来控制语句的执行次数

① for:有条件的循环语句

② repeat:连续执行一次语句n次

③ while:执行一条语句知道某个条件不满足

④ forever:连续的执行语句;多用在initial块中,以生成时钟等周期性波形

1. for语句

for语句使用格式同C

for(循环变量赋初值;循环结束条件;循环变量增值)

执行语句;

// for语句描述的7人投票表决器module voter7 (input [7:1] vote, output reg pass);reg[2:0] sum;integer i;always @ (vote) begin sum=0; for(i=1;i<7;i=i+!) if(vote[i])  sum=sum+1; if(sum[2]) // 若超过4人赞成,则pass=1 pass=1; else pass=0; endendmodule

2.repeat语句

repeat语句使用格式

repeat(循环次数表达式)

        begin

                语句或语句块

        end

repeat 循环的次数必须是一个常量、变量或信号。如果循环次数是变量信号,则循环次数是开始执行 repeat 循环时变量信号的值。即便执行期间,循环次数代表的变量信号值发生了变化,repeat 执行次数也不会改变。

3.while语句

while语句使用格式

while(循环执行条件表达式)

        begin

                语句或语句块

        end

while 循环中止条件为 执行条件 为假

如果开始执行到 while 循环时 condition 已经为假,那么循环语句一次也不会执行

当然,执行语句只有一条时,关键字 begin 与 end 可以省略

4.forever

forever语句使用格式

forever

        begin

                语句或语句块

        end

forever 语句表示永久循环,不包含任何条件表达式,一旦执行便无限的执行下去,系统函数 $finish 可退出 forever

forever 相当于 while(1) 

通常,forever 循环是和时序控制结构配合使用的

// 使用 forever 语句产生一个时钟:module time_clk;reg clk;initial begin clk = 0; forever begin clk = ~clk; // 时钟翻转 #5; // 延时5个时间单位 endendendmodule 

forever循环语句常用来产生周期性的波形

forever语句一般用在initial过程语句中,若要用它进行模描述,可用disable语句进行中断