상태 시스템을 구현하는 프로세스가 있습니다. 하나의 사이클 (상태)에서 두 개의 신호가 계산되어야하는데, 그 중 하나는 직접 계산되고 다른 하나는 구성 요소 내에서 이미 계산 된 신호를 사용하여 계산됩니다. 첫 번째 계산 결과는 구성 요소로 보내지는 MUX에 넣어야하며 모두 같은 주기로 수행해야합니다 (둘 다 연속적으로 수행 할 수있을 정도로 길어야합니다).프로세스 외부의 Mux에 변수 값을 할당하는 방법은 무엇입니까?
내가 시도한 방법은 첫 번째 신호를 계산하기 위해 변수를 사용하고 두 번째 신호를 계산하기 위해 해당 신호를 사용했지만 동일한 사이클에서는 발생하지 않지만 두주기에서는 제 1 신호는주기의 끝에서만 발생하고 구성 요소가 계산하는 시간이 충분하지 않습니다 구성 요소에 대한 결과를 얻을 내가 신호 b_minus_a_sig
을 계산할 수있는 방법
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
을하고 MUX를 통해 할당을 같은 사이클?
(vec_var
는 변수이며 다른 모든 신호는 std_logic_vector
입니다)
편집 :
mult1_in1_sig <= dot_c_sig(63 downto 32) - dot_a_sig(63 downto 32) when cau_state = st_cycle_5
퍼팅의 솔루션이있다 그러나 나는 생각이 경우 장소 & 경로 것 그 작업이 이미 완료되었고 결과가 사용 가능하다는 것을 알지 못하고 알려진 결과를 사용하는 대신 두 번 수행합니다.
완전히 작동하지만 간단한 코드 조각을 만들어보십시오. 이름을 가능한 한 간단하게 만들고 질문과 상관없는 모든 것을 빼십시오. http://www.sigasi.com/content/vetsmod-get-better-feedback-your-vhdl-code-snippets – Philippe