VHDL-2008 では、インスタンシエーションのポート マップ内で関数および代入文を使用できます。これを使用した便利な方法として、次の例に示すように、信号を 1 つのデータ型から別のデータ型に変更できます。
U0 : my_entity port map (clk => clk, in1 => to_integer(my_signal)...
上記の例では、エンティティ my_entity
に in1
という integer 型のポートがありますが、上位の信号 my_signal
は std_logic_vector
型です。
以前の VHDL では、integer
型の新しい信号を作成し、インスタンシエーション外で変換を実行し、その新しい信号をポート マップに割り当てる必要がありました。
データ型の変換に加え、次の例に示すように、ロジックをポート マップに挿入することも可能です。
U0 : my_entity port map (clk => clk, enable => en1 and en2 ...
この例では、下位に enable
信号があります。上位では enable
が 2 つのほかの信号の AND
に接続されています。
以前の VHDL では、前述の例と同様に、これに新しい信号と代入文が必要でしたが、VHDL-2008 ではこれをインスタンシエーションのポート マップで達成できます。