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

VHDL で機密リストを使用してプロセスを作成する方法

常に秘密度リストを使用する必要があります 生産モジュールでプロセスをトリガーします。機密リストは、プロセスが感知するすべてのシグナルをリストするプロセスへのパラメーターです。いずれかのシグナルが変化すると、プロセスが起動し、その中のコードが実行されます。

wait on の使い方はすでに学びました と wait until シグナルが変化したときにプロセスをウェイクアップするためのステートメント。しかし、正直なところ、これは私のほとんどのプロセスの書き方ではありません。

このブログ投稿は、基本的な VHDL チュートリアル シリーズの一部です。

VHDL コードを記述する場合、記述スタイルは、コードがシミュレータでのみ実行されることを意図しているかどうかによって異なります。このチュートリアル シリーズで行ってきたように、シミュレーション コードを書いている場合は、常に wait を使用 プロセスを制御するステートメント。物理的な実装を作成するつもりのコードを書いている場合、私は決して wait を使用

機密リストを使用したプロセスの構文は次のとおりです。
process(<signal1>, <signal2>, ..) is
begin
    <main logic here>
end process;

機密リストの重要な癖は、すべて プロセス内で読み取られるシグナルは、センシティビティ リストに含まれている必要があります。ただし、信号をセンシティビティ リストに追加できなかった場合、シミュレータは通知しません。これは、VHDL 言語では合法であるためです。問題は、これを行わないと、合成されて物理的な実装で使用されたときに、コードの動作が異なることです。

VHDL-2008 では、キーワード all すべてのシグナルをリストする代わりに使用できます。残念ながら、ほとんどの合成ソフトウェアは、VHDL 言語のこの新しいバージョンをサポートしていません。

エクササイズ

このビデオ チュートリアルでは、VHDL のセンシティビティ リストを使用してプロセスを作成する方法を学習します。

このチュートリアルで作成した最終的なコード:

entity T09_SensitivityListTb is
end entity;

architecture sim of T09_SensitivityListTb is

    signal CountUp   : integer := 0;
    signal CountDown : integer := 10;

begin

    process is
    begin

        CountUp   <= CountUp + 1;
        CountDown <= CountDown - 1;
        wait for 10 ns;

    end process;

    -- Process triggered using Wait On
    process is
    begin

        if CountUp = CountDown then
            report "Process A: Jackpot!";
        end if;

        wait on CountUp, CountDown;

    end process;

    -- Equivalent process using a sensitivity list
    process(CountUp, CountDown) is
    begin

        if CountUp = CountDown then
            report "Process B: Jackpot!";
        end if;

    end process;

end architecture;

ModelSim で実行ボタンを押したときのシミュレータ コンソールへの出力:

VSIM 2> run
# ** Note: Process A: Jackpot
#    Time: 40 ns  Iteration: 1  Instance: /t09_sensitivitylisttb
# ** Note: Process B: Jackpot
#    Time: 40 ns  Iteration: 1  Instance: /t09_sensitivitylisttb

分析

プリントアウトから、2 つのプロセスが同様に動作することがわかります。これは、機密リストを使用するプロセスは、定義上、wait on を使用するプロセスと同等であるためです。

センシティビティ リストを含むプロセスは、通常、合成を目的としたコードで使用されます。このようなコードは、一般にレジスタ転送レベル (RTL) コードと呼ばれます。これは慣習ですが、それには正当な理由があります。いくつかの wait on でも と wait until ステートメントは合成できますが、作成されるハードウェアの種類を知ることは困難です。

テイクアウト

次のチュートリアルに進む »


VHDL

  1. VHDL で文字列のリストを作成する方法
  2. VHDL コード ロック モジュール用の Tcl 駆動型テストベンチを作成する方法
  3. VHDL で PWM コントローラーを作成する方法
  4. VHDL でリング バッファー FIFO を作成する方法
  5. セルフチェック テストベンチの作成方法
  6. VHDL でリンク リストを作成する方法
  7. VHDL のプロセスでプロシージャを使用する方法
  8. VHDL で不純な関数を使用する方法
  9. VHDL で関数を使用する方法
  10. VHDL で有限ステート マシンを作成する方法
  11. VHDL でプロシージャを使用する方法