Repeatループ
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式を使って繰り返す
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 を使用する | 1行を超える場合に必要 |
チャレンジ
やること:
repeat ループを追加して、「Verilog」を4回出力します。
自分で試してみよう
module repeat_challenge;
initial begin
$display("Printing 4 times:");
// TODO: repeat ループを追加する
// 4 回繰り返す
// ループ内で "Verilog" を出力する
$finish;
end
endmoduleこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Verilogオンラインコンパイラ