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
ステートメントは合成できますが、作成されるハードウェアの種類を知ることは困難です。
テイクアウト
- 機密リストを持つプロセスは、
wait on
を持つプロセスと同等です 最後に - プロセス内で読み取られるすべてのシグナルは機密リストに含まれている必要があります
wait
を使用 シミュレーション コード内のステートメント、RTL コード内のセンシティビティ リスト
次のチュートリアルに進む »
VHDL