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