重复循环
本课属于 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
Loopingrepeat 循环与 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 | 有多行内容时必须使用 |
挑战
要做什么:
添加缺失的 repeat 循环,打印 "Verilog" 4 次。
亲手试试
module repeat_challenge;
initial begin
$display("Printing 4 times:");
// TODO:添加 repeat 循环
// 重复 4 次
// 在循环中,打印 "Verilog"
$finish;
end
endmodule这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Verilog 在线编译器