ISE에서 VHDL 모듈을 생성하고 해당 스키 매틱 심볼을 생성했습니다. 심볼의 버스가 회로도 편집기에서 속성을 사용하여 지정되는 가변 너비가되도록하고 싶습니다. 전체 프로젝트 DRC는 괜찮습니다.하지만 최상위 회로도를 합성하려고 시도 할 때 '가변'으로 지정된 각 포트에 오류가 발생합니다. 나는 이것을 상식으로 만들었고 예제는 here과 here으로 나열했다. 모듈심볼 포트상의 일반적인 맞춤형 버스 너비
VHDL (4 × 256 넓은 버스에 접속 회로도) 모듈
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity BUS_SWITCHER is
generic (
WIDTH : integer := 1 -- Structure
);
port (
A : in STD_LOGIC_VECTOR (WIDTH - 1 downto 0);
B : in STD_LOGIC_VECTOR (WIDTH - 1 downto 0);
X : out STD_LOGIC_VECTOR (WIDTH - 1 downto 0);
Y : out STD_LOGIC_VECTOR (WIDTH - 1 downto 0);
S : in STD_LOGIC
);
end BUS_SWITCHER;
architecture Behavioral of BUS_SWITCHER is
begin
process (A, B, S)
begin
if S = '1' then
X <= B;
Y <= A;
else
X <= A;
Y <= B;
end if;
end process;
end Behavioral;
기호 :
속성 창
오류 로그 :이 모듈을 인스턴스화하는 경우
ERROR:DesignEntry:20 - Pin "A(0:0)" is connected to a bus of a different width.
ERROR:DesignEntry:20 - Pin "B(0:0)" is connected to a bus of a different width.
ERROR:DesignEntry:20 - Pin "Y(0:0)" is connected to a bus of a different width.
ERROR:DesignEntry:20 - Pin "X(0:0)" is connected to a bus of a different width.
어쩌면 내가 내 질문을 아주 잘 말하지 않았으므로 변수 * 너비 포트를 만들려고합니다. 이미지에서 단일 너비'std_logic_vector'라는 사실은 기본값을 설정했기 때문입니다. 문제는 제네릭의이 기본값이 인스턴스에 지정된 특성에 의해 무시되지 않는다는 것입니다. – MTCoster
@MTCoster 엔티티 및 패키지 파일 (사용하는 경우)에서 기본값을 제거하십시오. 인스턴스화 할 때만 재정의 값을 지정하십시오. – Russell