プロシージャ ステートメント - VHDL の例
プロシージャは、サブプログラムと呼ばれる構造のグループの一部です。プロシージャは、コード全体で再利用される操作を実行するコードの小さなセクションです。これにより、コードがクリーンアップされ、再利用が可能になります。
プロシージャーは、入力を受け取り、出力を生成できます。通常、これらは関数よりも複雑になる可能性があります。プロシージャにシグナルを渡す必要はありません。以下の例には、標準論理ベクトルを 1 インクリメントし、その結果で信号を生成することを目的とするプロシージャ p_INCREMENT_SLV があります。
待機ステートメントの使用に関する追加の注意事項:
プロシージャを呼び出すプロセスにセンシティビティ リストがない限り、wait ステートメントをプロシージャで使用できます。以下の例では、手順に 1 ns の待機ステートメントが含まれており、これを示しています。これにより、手順はテストベンチ コードの作成に役立ちます。
library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity example_procedure_simple is end example_procedure_simple; architecture behave of ex_procedure_simple is signal r_TEST : std_logic_vector(7 downto 0) := X"42"; -- Purpose: Increments a std_logic_vector by 1 procedure p_INCREMENT_SLV ( signal r_IN : in std_logic_vector(7 downto 0); signal r_OUT : out std_logic_vector(7 downto 0) ) is begin r_OUT <= std_logic_vector(unsigned(r_IN) + 1); wait for 1 ns; -- Wait is OK here. end p_INCREMENT_SLV; begin process is begin wait for 10 ns; p_INCREMENT_SLV(r_TEST, r_TEST); wait for 10 ns; p_INCREMENT_SLV(r_TEST, r_TEST); wait for 10 ns; p_INCREMENT_SLV(r_TEST, r_TEST); wait; end process; end behave;
VHDL