ステート マシンを実装するプロセスがあります。サイクル (状態) の 1 つで 2 つの信号を計算する必要があります。そのうちの 1 つは直接計算され、もう 1 つはコンポーネント内で既に計算された信号を使用して行われる計算です。最初の計算の結果は、コンポーネントに送られる MUX に入れる必要があり、すべて同じサイクルで実行する必要があります (両方の操作を連続して実行するのに十分な長さです)。
私が試した方法は、変数を使用して最初の信号を計算し、その信号を使用して2番目の信号を計算することでしたが、同じサイクルでは発生しませんが、最初の信号への割り当てが発生するのは2サイクルだけですサイクルの終わりに、コンポーネントが計算するのに十分な時間がありません:
when st_cycle_5 =>                   
  vec_var(31 downto 0)  := dot_c_sig(31 downto 0)  - dot_a_sig(31 downto 0);
  vec_var(63 downto 32) := dot_c_sig(63 downto 32) - dot_a_sig(63 downto 32);
  vec_var(95 downto 64) := dot_c_sig(95 downto 64) - dot_a_sig(95 downto 64);
  c_minus_a_sig         <= vec_var;
...
end process cau_proc;
mult1_in1_sig           <= b_minus_a_sig(63 downto 32) when cau_state = st_cycle_5
b_minus_a_sig信号を計算し、MUX を介して割り当てて、同じサイクルでコンポーネントの結果を得るにはどうすればよいですか?
(vec_varは変数で、他のすべての信号はstd_logic_vector)
EDIT:置くの解決策があります
mult1_in1_sig <= dot_c_sig(63 downto 32) - dot_a_sig(63 downto 32) when cau_state = st_cycle_5
しかし、この場合、場所とルートは、その操作が既に行われたこと、および結果が利用可能であることを認識せず、既知の結果を使用する代わりに2回実行すると思います.