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

VHDLのWhileループをマスター:動的な反復制御

前回の for ループの探求に続き、今回は while ループに焦点を当てます。これは、事前に決まった範囲ではなく、動的な条件に基づいて反復を制御できる強力な構造です。

while ループは、指定された条件が true である限り、その本体を繰り返し実行します。これにより、反復回数が実行時のデータや複雑なロジックに依存するシナリオに最適です。

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

構文

while <condition> loop
  -- ループ本体
end loop;

<condition> はブール値に評価される必要があります。単純な比較でも、より複雑な式でも構いません。条件は各パスの前にチェックされるため、真である間のみループが継続します。

条件の例

関係演算子

=等しい
/=等しくない
<より小さい
<=以下
>より大きい
>=以上

論理演算子

not aa が偽なら真
a and ba と b がともに真なら真
a or ba または b が真なら真
a nand ba または b が偽なら真
a nor ba と b がともに偽なら真
a xor ba と b のどちらか一方だけ真なら真
a xnor ba と b が等しければ真

演習

以下のビデオチュートリアルで、変数が while ループを駆動する様子をご覧ください:

サンプルコード

entity T05_WhileLoopTb is end entity;
architecture sim of T05_WhileLoopTb is
begin
  process is
    variable i : integer := 0;
  begin
    while i < 10 loop
      report "i=" & integer'image(i);
      i := i + 2;
    end loop;
    wait;
  end process;
end architecture;

シミュレータ出力

VSIM 2> run
# ** Note: i=0
# Time: 0 ns Iteration: 0 Instance: /t05_whilelooptb
# ** Note: i=2
# Time: 0 ns Iteration: 0 Instance: /t05_whilelooptb
# ** Note: i=4
# Time: 0 ns Iteration: 0 Instance: /t05_whilelooptb
# ** Note: i=6
# Time: 0 ns Iteration: 0 Instance: /t05_whilelooptb
# ** Note: i=8
# Time: 0 ns Iteration: 0 Instance: /t05_whilelooptb

解説

i を0で初期化し、ループガードとして i < 10 を使用します。ループは i を毎回2ずつ増やすため、最後に表示される値は8です。次のパスでは条件が偽(10は10未満ではない)と評価され、ループを抜けます。続く wait; はプロセスを無期限に休止させ、テストベンチでよくあるパターンです。

重要なポイント

Basic VHDL Quiz – part 1 を受けるか、次のチュートリアルへ進む。

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プロシージャ活用:再利用可能なコードで設計をシンプルに