Menu
Coddy logo textTech

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
Looping

Repeat と 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個の完全なサイクル)が生成されます。

重要なルール

ルール説明
数値は非負である必要があります負の回数繰り返すことはできません
定数または式を使用できますrepeat (10) または repeat (count)
ループ変数は利用できません反復回数を追跡することはできません
複数のステートメントには begin/end を使用してください2行以上の場合は必須です
challenge icon

チャレンジ

やること:

不足している repeat ループを追加して、"Verilog" を4回表示してください。

チートシート

repeat ループは、ループカウンタ変数を使わずに、コードブロックを固定回数実行します。

repeat (number) begin
  // 繰り返すコード
end

定数または変数式を使用できます:

integer count = 3;
repeat (count) begin
  $display("Looping");
end

一般的なユースケース — クロックサイクルの生成:

repeat (20) begin
  #5 clk = ~clk;
end

Repeat vs For Loop: 反復のみが必要な場合(インデックスが不要な場合)は repeat を使用し、イテレーションカウンタの値が必要な場合は for を使用します。

自分で試してみよう

module repeat_challenge;
  
  initial begin
    $display("Printing 4 times:");
    
    // TODO: repeatループを追加
    // 4回繰り返す
    // 内部で "Verilog" を表示する
    
    $finish;
  end
endmodule
quiz icon腕試し

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

基礎のすべてのレッスン