Menu
CoddyTech

重复循环

本课属于 Coddy Verilog 学习旅程的“基础知识”单元。第 60 课,共 90 课。

repeat 循环会执行代码块 固定次数。与 for 循环不同,它不会使用循环计数变量。

repeat 循环会按指定次数运行。你可以给它一个常量或表达式,用来确定要执行多少次迭代。

语法:

repeat (number) begin
  // Code to repeat
end

简单示例

repeat (5) begin
  $display("Hello");
end

输出:

Hello
Hello
Hello
Hello
Hello

这条消息恰好打印 5 次。

使用表达式重复

integer count = 3;

repeat (count) begin
  $display("Looping");
end

输出:

Looping
Looping
Looping

repeat 循环与 for 循环

 for 循环repeat 循环
计数器变量是(显式)否
使用场景需要索引值只需要重复执行
示例for (i=0; i<5; i=i+1)repeat (5)

生成多个时钟周期

initial begin
  clk = 0;
  repeat (20) begin
    #5 clk = ~clk;
  end
end

这会生成 20 个时钟边沿(10 个完整周期)。

重要规则

规则说明
计数为 0 或更小值时,会跳过循环体repeat (-5) 会编译并运行 0 次
可以使用常量或表达式repeat (10) 或 repeat (count)
没有可用的循环变量无法跟踪迭代次数
多条语句时使用 begin/end有多行内容时必须使用
challenge icon

挑战

要做什么:

添加缺失的 repeat 循环,打印 "Verilog" 4 次。

亲手试试

module repeat_challenge;
  
  initial begin
    $display("Printing 4 times:");
    
    // TODO:添加 repeat 循环
    // 重复 4 次
    // 在循环中,打印 "Verilog"
    
    $finish;
  end
endmodule
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Verilog 在线编译器