2012-07-31 5 views
1

상태 시스템을 구현하는 프로세스가 있습니다. 하나의 사이클 (상태)에서 두 개의 신호가 계산되어야하는데, 그 중 하나는 직접 계산되고 다른 하나는 구성 요소 내에서 이미 계산 된 신호를 사용하여 계산됩니다. 첫 번째 계산 결과는 구성 요소로 보내지는 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 

퍼팅의 솔루션이있다 그러나 나는 생각이 경우 장소 & 경로 것 그 작업이 이미 완료되었고 결과가 사용 가능하다는 것을 알지 못하고 알려진 결과를 사용하는 대신 두 번 수행합니다.

+2

완전히 작동하지만 간단한 코드 조각을 만들어보십시오. 이름을 가능한 한 간단하게 만들고 질문과 상관없는 모든 것을 빼십시오. http://www.sigasi.com/content/vetsmod-get-better-feedback-your-vhdl-code-snippets – Philippe

답변

1

mult1_in1_sig을 적절한 변수 또는 변수의 슬라이스를 사용하여 내부에 지정하면됩니다.

다른 말로 계산 및 멀티플렉서를 단일 프로세스로 묶을 수 있습니다. 이렇게

, 설명하지주의가 수 래치, 즉 대상 신호 mult1_in1_sig해야, 프로세스에서 가능한 모든 실행 경로에 대한 값을 할당 할 수 없습니다 만 when st_cycle_5. c_minus_a_sig과 모든 신호에 대해 동일한 언급이 있습니다.

관련 문제