以前のバージョンの VHDL では、出力以外の信号を out
として宣言することはできませんでした。
そのため、出力に値を代入し、その同じ信号をその他のロジックに使用するには、新しい信号を宣言するか、その信号で出力およびその他のロジックを駆動するようにするか、out
を buffer
型に変更する必要がありました。
VHDL-2008 では、次の例に示すように出力値を使用できます。
entity test is port(
in1 : in std_logic;
clk : in std_logic;
out1, out2 : out std_logic);
end test;
その後のアーキテクチャでは次のように記述します。
process(clk) begin
if clk'event an clk='1' then
out1 <= in1;
my_reg <= out1; -- THIS WOULD HAVE BEEN ILLEGAL in VHDL.
out2 <= my_reg;
end if;
end process;