Verilog教程----循环语句(十二)_verilog for循环
① 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语句进行中断