pp.23-24
パッケージは2つの部分から成る。
- パッケージ宣言: プロトタイプ宣言のようなものか? 型、定数、サブプログラム宣言、コンポーネント宣言を記述する。
- パッケージボディ: ここに実装する。
ということなので、意味のない単純なパッケージを作って試してみる。ここではパッケージのなかに函数を1つだけ記述した。
これがパッケージ:
-- これがパッケージ宣言。 -- プロトタイプ宣言のようなものか? package sute_pkg is function plus_1(num: natural) return natural; end; -- これがパッケージの実装 package body sute_pkg is function plus_1(num: natural) return natural is begin return num + 1; end; end;
これが本体:
-- use clauseでパッケージをインクルード(?)する。 -- workはワーキングディレクトリのことか? use work.sute_pkg.all; entity sute_vhdl is port( num_in: in natural range 0 to 7; num_in_thru : out natural range 0 to 7; num_out_plus_1: out natural range 0 to 8 ); end entity; architecture rtl of sute_vhdl is begin num_in_thru <= num_in; -- 確認のため入力をそのまま出力する。 process(all) begin num_out_plus_1 <= plus_1(num_in); -- 函数をコールする。 end process; end architecture;
今6を入力して、函数で1を足して、7を出力している。