2017-05-18 3 views
-1

"일반"을 설정하여 출력 개수를 가변 할 수 있는지 알아 내려고하면서 다음과 같은 생각을했습니다. 생각은 루틴이 "output (X) : out std_logic_vector (bits-1 downto 0); 텍스트를"port "선언 안에 추가하도록"port "선언 안에 VHDL 코드에서 루틴을 갖는 것입니다. (X)는 output1, output2 등과 같은 출력 포트의 수를 나타냅니다. VHDL 파서가 코드를 읽을 때 컴파일 할 때 필요한 수의 출력이 표시됩니다.이 작업을 수행 할 수 있습니까? 내가 제대로 이해하면vdhl 코드를 사용하는 방법

답변

2

, 당신은 메타 프로그래밍을하고 포트의 일반적인 수를 갖고 싶어 즉, VHDL에서 불가능하지만, 당신은 단지에 대한 다차원 배열을 사용할 수 있습니다..

-- declare array type VHDL-2008-style 
-- put this in a package 
type slv_array is array(natural range<>) of std_logic_vector; 

entity test is 
generic (
    -- number of outputs, at least one output 
    num_outputs : positive := 1 
); 
port (
    my_inputs : in std_logic_vector(1 downto 0); 
    my_outputs : out slv_array(num_outputs - 1 downto 0)(1 downto 0) 
); 
end entity test; 

을 그런 다음 다음과 같은 구성 요소 :

comp0 : component test 
    generic map (
     num_outputs => 1 
     ) 
    port map (
     my_inputs => "10", 
     my_outputs(0) => my_output0 
     ); 

comp1 : component test 
    generic map (
     num_outputs => 2 
     ) 
    port map (
     my_inputs => "00", 
     my_outputs(0) => my_output1 
     my_outputs(1) => my_output2 
     );