「Warning: VHDL Process Statement warning at sub_dis.vhd(45): signal "Q1" is read inside the Process Statement but isn't in the Process Statement's sensivitity list」
LIBRARY IEEE; USE IEEE.std_logic_1164.ALL;--標準ロジック使用 USE IEEE.std_logic_unsigned.ALL;--算術パッケージ呼び出し(符号ビットなし) USE IEEE.std_logic_arith.ALL;
--入出力変数の定義--
ENTITY sub_dis IS PORT( Q2 : IN std_logic_vector(15 downto 0); CLK : IN std_logic; RESET : IN std_logic; Q1 : IN std_logic_vector(31 downto 0); y : OUT std_logic_vector(15 downto 0) ); END sub_dis;
------------------
--プログラム本体-- ARCHITECTURE RTL of sub_dis IS ------------------
--使用する変数の定義(信号の定義)-- SIGNAL Q : std_logic_vector(15 downto 0); ----------------------
--プログラム開始--
BEGIN
y<=Q;
PROCESS(CLK,RESET)--クロックかリセットが変化したら実行 BEGIN if(RESET='1') then
sensivitity list に Q1 が入っていないと言う警告だと思うのでsensivitity list に Q1を入れれば警告は出なくなると思います
PROCESS(CLK,RESET,sensivitity)
それよりも、のぼしぇもんさんが仰っているようにクロック同期がよろしいかと思います
BEGIN
y<=Q;
PROCESS(CLK)--クロックが変化したら実行
BEGIN
if rising_edge(CLK) then
if(RESET='1') then
Q <= (others => '0');
else
Q<=Q1(30 downto 15) - Q2 ;
END if;
END if;
END PROCESS;
END RTL;