pp.17-18
これまで使ってきたシグナルは、プロセス同士でやりとりするための一種のデータオブジェクトであった。バリアブルのほうはもっと単純である。バリアブルはアサインされた途端に更新される。バリアブルは、プロセス内またはサブプログラム内でしか宣言できないし、宣言したプロセスまたはサブプログラムのローカル変数であるため、プロセス同士あるいはエンティティ同士でやり取りするのには使えない。要するに普通のプログラミング言語の変数と同じである。アサインには:=
を使う。
ということなので試してみる。
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity sute_vhdl is port( clk : in std_logic; clk_out : out std_logic; original: out std_logic_vector(3 downto 0); copy : out std_logic_vector(3 downto 0) ); end entity; architecture rtl of sute_vhdl is begin clk_out <= clk; process(clk) variable temp: std_logic_vector(3 downto 0):= "0000"; begin if rising_edge(clk) then temp := temp + 1; original <= temp; copy <= temp; end if; end process; end architecture;