Menu
Coddy logo textTech

Whileループ

CoddyのVerilogジャーニー「基礎」セクションの一部 — レッスン 59/90。

while ループは、条件が真である限りコードブロックを繰り返します。for ループとは異なり、組み込みのカウンタを持たないため、ループ変数は自身で更新する必要があります。

while ループは、各反復の前に condition をチェックします。condition が true の場合、ループを実行します。false の場合、ループは停止します。

構文:

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

この loopi < 5 である限り実行されます。

While ループ vs 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

Finding 特定の値

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

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

重要なルール

ルール説明
condition は偽(false)になる必要がありますそうでない場合、無限 loop になります
Insideloop 変数を更新しますそうしないと loop が終了しません
Loop 変数は 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腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン