2014-12-16 2 views
2

내 VHDL 디자인에서 확장 성을 지원할 수 있도록 필자는 레코드를 내부 용으로 사용하고 내 구성 요소 용 출력을 사용하기 시작했습니다. 현재 필자는 최상위 아키텍처의 포트 맵을 사용하여 내 구성 요소를 외부에 연결하려고합니다. 문제는 레코드에 여러 소스가 연결되어 있어야한다는 것입니다. VHDL 코드에 사용

현재 내 기록 (이름은 가짜로 대체되었습니다)과 같이 :
VHDL의 레코드가있는 포트 맵을 사용하는 최상위 레벨

TYPE some_record_input IS RECORD 
    input_one : sfixed(3 downto -32); 
    input_two : sfixed(3 downto -32); 
    input_rst : std_logic; 
END RECORD; 

TYPE some_record_output IS RECORD 
    output_one : std_logic_vector(15 downto 0); 
    output_dn : std_logic; 
END RECORD; 

그러므로 내가 고정 점을 fixed_pkg 라이브러리를 사용하고있다.
이러한 레코드는 엔티티 포트 맵에서 다음과 같이 사용됩니다.

ENTITY my_component IS 
port 
(
    clk  : IN std_logic; 
    data : IN some_record_input; 
    result : OUT some_record_output 
); 
END my_component; 

이제는 문제가 발생한 부분에 대해 설명합니다. 최상위 레벨에서이 구성 요소를 사용하여 Altera Board에서 사용할 수있는 단추 및 LED와 연결할 수 있습니다. 이것은 현재 최상위 엔티티의 본문에있는 포트 맵을 사용하여 수행됩니다.

A0 : my_component PORT MAP(clk => CLK, data => (input_one => IONE, input_two => ITWO, input_rst => RST), result => (output_one => OONE, output_dn => ODN)); 

따라서 자본 신호는 나가는 신호입니다. 분명히 이것은 Modelim이 이것을 컴파일하지 않기 때문에 갈 길이 아닙니다. 누군가가 VHDL의 최상위 엔티티에 대해 포트 매핑 레코드가 어떻게 이루어 지는지 말해 줄 수 있는지 궁금합니다. 미리 감사드립니다. 이 작업을 수행 할 때, 개별적으로 데이터와 결과의 모든 부분을 연결해야합니다

A0 : my_component 
PORT MAP(
    clk => CLK, 
    data.input_one => IONE, 
    data.input_two => ITWO, 
    data.input_rst => RST, 
    result.output_one => OONE, 
    result.output_dn => ODN 
); 

:

+2

레코드 유형의 신호를 선언하고 포트에 직접 매핑하십시오. –

+0

귀하의 질문에 대한 확신이 없습니다. 최상위 레코드에 핀을 할당하는 방법을 의미합니까/최상위 포트 맵의 레코드가 UCF 핀 이름에 매핑되는 방식입니까? – Paebbels

답변

7

오히려 집계보다, 레코드 요소의 개별 연결을 사용합니다. 또한 객체의 개별 연관간에 다른 것들을 섞어서는 안되므로 데이터의 모든 부분은 서로 인접해야합니다.