Repeatループ
CoddyのVerilogジャーニー「基礎」セクションの一部。レッスン 60/90。
repeatループは、コードブロックを固定回数実行します。forループとは異なり、ループカウンタ変数を使用しません。
repeatループは、指定された回数だけ実行されます。実行するイテレーションの回数を決定する定数または式を指定します。
構文:
repeat (number) begin
// 繰り返すコード
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 loop の比較
| For loop | Repeat loop | |
|---|---|---|
| カウンター変数 | あり(明示的) | なし |
| 使用する場合 | インデックス値が必要 | 単に繰り返しが必要 |
| 例 | for (i=0; i<5; i=i+1) | repeat (5) |
複数のクロックサイクルの生成
initial begin
clk = 0;
repeat (20) begin
#5 clk = ~clk;
end
endこれは20個のクロックエッジ(10個の完全なサイクル)を生成します。
重要なルール
| ルール | 説明 |
|---|---|
| number は負でない値でなければならない | 負の回数は repeat できない |
| 定数または式を使用できる | repeat (10) または repeat (count) |
| loop 変数は使用できない | Iteration number を追跡できない |
複数の文には begin/end を使用する | 1 行を超える場合に必要 |
チャレンジ
行うこと:
「Verilog」を 4 回出力するために、不足している repeat ループを追加してください。
自分で試してみよう
module repeat_challenge;
initial begin
$display("Printing 4 times:");
// TODO: repeatループを追加
// 4回繰り返す
// 内側で "Verilog" を出力
$finish;
end
endmoduleこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Verilogオンラインコンパイラ