Repeatループ
CoddyのVerilogジャーニー「基礎」セクションの一部 — レッスン 60/90。
repeat ループは、コードブロックを固定回数実行します。for ループとは異なり、ループカウンタ変数を使用しません。
repeat ループは指定された回数だけ実行されます。何回の Iteration を実行するかを決定する定数または式を指定します。
構文:
repeat (number) begin
// 繰り返すコード
end簡単な例
repeat (5) begin
$display("Hello");
end出力:
Hello
Hello
Hello
Hello
Helloメッセージが正確に5回出力されます。
式を使用した Repeat
integer count = 3;
repeat (count) begin
$display("Looping");
end出力:
Looping
Looping
LoopingRepeat vs 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 は非負である必要があります | 負の times(回数)繰り返すことはできません |
| 定数または式を使用できます | repeat (10) または repeat (count) |
loop 変数は使用できません | Iteration 番号をトラックすることはできません |
複数のステートメントには begin/end を使用します | 複数行の場合は必須です |
チャレンジ
作業内容:
不足している repeat ループを追加して、"Verilog" を 4 回表示してください。
自分で試してみよう
module repeat_challenge;
initial begin
$display("Printing 4 times:");
// TODO: リピートループを追加
// 4回繰り返す
// 内側で "Verilog" を出力
$finish;
end
endmoduleこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。