工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> VHDL

VHDLのForループ完全ガイド:実践的な使い方

前回のチュートリアルでは、loop 文で無限ループを作り、exit で抜ける方法を学びました。では、ループを特定の回数だけ回したい場合はどうすればよいでしょうか?Forループ が最もシンプルな解決策です。

Forループは、整数や列挙値の固定範囲を反復します。現在の反復値は、暗黙的に宣言される定数としてループ内で自動的に利用できます。

本記事は「Basic VHDL Tutorials」シリーズの一部です。

構文

for <constant> in <range> loop
  -- ループ本体
end loop;

<constant> はループカウンタのユーザー定義名、<range> は整数範囲(昇順・降順)や列挙値の集合を指定できます。

整数範囲の例

サンプルコード

entity T04_ForLoopTb is end entity;
architecture sim of T04_ForLoopTb is
begin
  process is
  begin
    for i in 1 to 10 loop
      report "i=" & integer'image(i);
    end loop;
    wait;
  end process;
end architecture;

シミュレーション出力(ModelSim)

VSIM 2> run
# ** Note: i=1
# Time: 0 ns Iteration: 0 Instance: /t04_forlooptb
# ** Note: i=2
# Time: 0 ns Iteration: 0 Instance: /t04_forlooptb
# ** Note: i=3
# Time: 0 ns Iteration: 0 Instance: /t04_forlooptb
# ** Note: i=4
# Time: 0 ns Iteration: 0 Instance: /t04_forlooptb
# ** Note: i=5
# Time: 0 ns Iteration: 0 Instance: /t04_forlooptb
# ** Note: i=6
# Time: 0 ns Iteration: 0 Instance: /t04_forlooptb
# ** Note: i=7
# Time: 0 ns Iteration: 0 Instance: /t04_forlooptb
# ** Note: i=8
# Time: 0 ns Iteration: 0 Instance: /t04_forlooptb
# ** Note: i=9
# Time: 0 ns Iteration: 0 Instance: /t04_forlooptb
# ** Note: i=10
# Time: 0 ns Iteration: 0 Instance: /t04_forlooptb

解説

Forループはちょうど10回反復し、カウンタ値をシミュレーション時間0で出力します。ループ内に wait がないため、ループ全体が瞬時に完了します。最後の wait; でプロセスを無限休止させ、テストベンチの典型的なパターンとなっています。

また、2つの重要な文字列操作も示しました:

重要なポイント

より深いVHDL概念については、次のチュートリアルへ進んでください。

VHDL

  1. カッターグラインダー技術の習得:実践ガイド
  2. モリブデンが現代産業を形作る仕組み:用途、利点、需給動向
  3. VHDLで文字列リストを作成する: ベスト・プラクティスと実装例
  4. VHDLテストベンチ・シミュレーションを優雅に終了させる方法
  5. VHDLでPWMコントローラを実装: 設計、シミュレーション、FPGAデモ
  6. VHDLで乱数生成: 一様分布からOSVVMまで
  7. プロセス内プロシージャでVHDLステートマシンをクリーンに設計
  8. VHDLにおける不純関数の活用:FSMの可読性と保守性向上
  9. VHDL関数マスター:効率的な設計のための実践ガイド
  10. VHDLで有限ステートマシンを設計:信号機の実践例
  11. VHDLプロシージャ活用:再利用可能なコードで設計をシンプルに