0
VHDL에 std_logic_vectors 배열을 만들려고합니다. 이 배열은 배럴 시프터를 만들기 위해 generate 문에서 사용됩니다. 배열 (배열, 벡터)의 각 요소는 개별적으로 주소 지정이 가능한 비트 여야합니다. 여기 내 코드 중 일부입니다.2 차원 배열이 1 차원을 기대합니다.
신호 선언 : 아키텍처에서
type stage_t is array(4 downto 0) of std_logic_vector (15 downto 0);
signal stages: stage_t;
: 1 MUX : 2의
test_stage: for st in 0 to 4 generate
test_bit_assign: for st_bit in 0 to 15 generate
test_stagemux: entity work.mux2_1 port map (
S => amt(st),
M0 => stages(st,st_bit), M1 => stages(st,st_bit+log_w),
O => stages(st+1,st_bit)
);
end generate;
법인
entity mux2_1 is
generic (n : INTEGER := 8);
port (
S : in std_logic; -- select
M0, M1 : in std_logic;
O : out std_logic
);
end mux2_1;
내가 점점 오전 오류 :
Indexed name prefix type stage_t expects 1 dimensions
어디서나 내가 읽거나 스테이지 어레이에 쓰고 있습니다. 벡터 중 하나의 비트를 어떻게 처리합니까?
또한 stage_t 유형을 'std_logic 유형의 array (4 downto 0, 15 downto 0)'유형으로 선언하고 포트 맵에서 연결을 유지하는 2 차원 배열로 지정할 수 있습니다. [Minimal, Complete and Verifiable example] (https://stackoverflow.com/help/mcve)이 없으면 다음 번 발생할 문제를 정확하게 예측하기 어렵습니다. – user1155120
스테이지는 1 차원 유형 (stage_t)입니다. 'M0 => stages (st) (st_bit)의 행을 따라 해보십시오.'dimension 인덱스에서 st는 스테이지의 stage_t 요소를 지정하는 인덱스 된 이름이고 st_bit를 사용하여 인덱스 된 이름의 접두어입니다. std_logic_vector의 요소에 대한 인덱스로 사용합니다. 스테이지를 다차원 배열로 처리하려고 시도하고 있지만 그렇지 않습니다. 배열 타입 일뿐입니다. – user1155120
@ J.H.Bonarius 그래, 일부 사용자는 의견에 질문에 답할 것을 주장합니다. / –