Menu
CoddyTech

while 循环

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

while 循环会在条件为真时重复执行一段代码。与 for 循环不同,它没有内置计数器。你必须自己更新循环变量。

while 循环会在每次迭代前检查条件。如果条件为真,循环就会执行。如果条件为假,循环就会停止。

语法:

while (condition) begin
  // 要重复运行的代码
end

简单示例

integer i = 0;

while (i < 5) begin
  $display("i = %d", i);
  i = i + 1;
end

输出:

i = 0
i = 1
i = 2
i = 3
i = 4

只要 i < 5 成立,循环就会运行。

while 循环和 for 循环

 for 循环while 循环
计数器内置由你管理
使用时机已知循环次数不知道循环何时停止
语法for (i=0; i<5; i=i+1)while (i < 5)

测试平台中的 while 循环

如果你不确定需要循环多少次,while 循环会很有用:

integer i = 0;

while (i < 16) begin
  $display("Testing value %d", i);
  i = i + 1;
end

查找特定值

integer i = 0;
reg [7:0] data;

while (data[i] != 1) begin
  i = i + 1;
end
$display("First 1 found at position %d", i);

重要规则

规则说明
条件必须变为 false否则会陷入无限循环
在循环内部更新循环变量否则循环永远不会结束
循环变量必须是 integer 或 reg不能是 wire
多条语句要使用 begin/end多于一行时必须使用
challenge icon

挑战

要做什么:

添加缺少的 while 循环,打印从 0 到 2 的数字。

亲手试试

module while_challenge;
  integer i;
  
  initial begin
    i = 0;
    $display("Printing 0 to 2:");
    
    // TODO: 添加 while 循环
    // 当 i < 3 时循环
    // 在循环内打印 i
    // 将 i 增加 1
    
    $finish;
  end
endmodule
quiz icon自我测试

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

基础知识中的所有课

自己练习: Verilog 在线编译器