2014-12-24 7 views
0

I이 코드를 Modelsim에서 작성하고 감속하지만 구성 요소에서 "인덱스 된 이름 유형 std_ulogic을 유형 std_logic_vector로 해결할 수 없습니다"오류가 발생합니다. 그것을 고치는 방법? 내 구성 요소의오류를 수정하는 방법 "인덱싱 된 이름을 해결할 수 없습니다"

library IEEE; 
use ieee.std_logic_1164.all,ieee.numeric_std.all,Work.all; 

entity NbitCarrySkipAdder is 
generic (n: integer :=8);   
Port(A, B: in std_logic_vector (n-1 downto 0); 
    Cin: in std_logic; 
    Sum: out std_logic_vector (n-1 downto 0); 
    Cout: out std_logic); 
end NbitCarrySkipAdder; 

architecture behavioral of NbitCarrySkipAdder is 

    component NBitBlockWithSkipAdder is 
    generic(n:integer:=4); 
    port(a, b : in std_logic_vector(n-1 downto 0); 
     Cin_Block : in std_logic; 
     S : out std_logic_vector(n-1 downto 0);       
     Cout_Block : out std_logic); 
end component NBitBlockWithSkipAdder; 
signal Carry: std_logic_vector(0 to n); 
begin 

g1: for i in 0 to n-1 generate 

lt: if i = 0 generate 
     f0: NBitBlockWithSkipAdder port map (A(i),B(i),Cin,Sum(i),Carry(i+1)); 
    end generate lt; 

rt: if i = n-1 generate 
     fn: NBitBlockWithSkipAdder port map (A(i),B(i),Carry(i),Sum(i),Cout); 
    end generate rt; 

md: if i > 0 and i < n-1 generate 
     fm: NBitBlockWithSkipAdder port map (A(i),B(i),Carry(i),Sum(i),Carry(i+1)); 
    end generate md; 
end generate g1; 

end architecture behavioral; 

감속 위의 코드에서 감속과 동일합니다. 들으

답변

0

문제 A(i)NBitBlockWithSkipAdder에 대한 포트 맵에서 std_logic이지만, a 포트가 std_logic_vector로 선언한다는 것입니다. 또한

f0 : NBitBlockWithSkipAdder port map (A(i downto i), B(i downto i), Cin, Sum(i downto i), Carry(i+1)); 
+1

합니다

어느 같이 인스턴스화하기 때문에, A(i downto i) 같은 std_logicNBitBlockWithSkipAdder의 포트 타입을 변경하거나, 단일 비트와 std_logic_vector을 얻기 위해 A 한 요소의 범위를 사용 서브 블록의 n을 1로 설정하는 일반 맵을 추가하십시오. –