¿Por qué obtengo una Entidad de diseño de nivel superior sin definir en mi VHDL?

2

Estoy creando un registro de 8 bits a partir de flip-flops tipo D en VHDL para un ejercicio de laboratorio, pero parece que no puedo diagnosticar un problema. En primer lugar, no puedo compilarlo debido a la diferencia en los tipos para el reloj de entrada. Mi proyecto se llama eightBitRegister , por lo que no es porque mi definición usa un nombre diferente. Entonces, si cambio esto al tipo correcto, obtengo el error:

  

Error: la entidad de diseño de nivel superior "eightBitRegister" no está definida

El VHDL cuando esto ocurre se ve así:

LIBRARY ieee ; 
USE ieee.std_logic_1164.all ; 

ENTITY eigthBitRegister IS 
PORT ( Clock: in BIT;
       Data:  in BIT ; 
       Q: out BIT) ; 
END eigthBitRegister ; 

ARCHITECTURE Behaviour OF eigthBitRegister IS    
COMPONENT flipflop is 
PORT ( D: in BIT ; Clock: in BIT;
      Q: out BIT) ; 
END COMPONENT; 

SIGNAL QOut: BIT_VECTOR(7 downto 0);

begin

Stages: for i in 7 downto 0 generate
LowBit: if i = 0 generate
    ff:flipflop PORT MAP(Data, Clock, QOut(0));
end generate; 

OtherBits: if i /= 0 generate
    ff:flipflop PORT MAP(QOut(i-1), Clock, QOut(i));
end generate;
end generate;

Q <= QOut(7);
END; 

Sin embargo, si lo cambio a esto:

LIBRARY ieee ; 
USE ieee.std_logic_1164.all ; 

ENTITY eigthBitRegister IS 
PORT ( Clock: in STD_LOGIC;
       Data:  in BIT ; 
       Q: out BIT) ; 
END eigthBitRegister ; 

ARCHITECTURE Behaviour OF eigthBitRegister IS    
COMPONENT flipflop is 
PORT ( D: in BIT ; Clock,
      Q: out BIT) ; 
END COMPONENT; 

SIGNAL QOut: BIT_VECTOR(7 downto 0);

begin

Stages: for i in 7 downto 0 generate
LowBit: if i = 0 generate
    ff:flipflop PORT MAP(Data, Clock, QOut(0));
end generate; 

OtherBits: if i /= 0 generate
    ff:flipflop PORT MAP(QOut(i-1), Clock, QOut(i));
end generate;
end generate;

Q <= QOut(7);
END; 

Puede encontrar la identidad de nivel superior y obtener el error:

  

Error (10476): error VHDL en eightBitRegister.vhd (22): el tipo de identificador "Reloj" no está de acuerdo con su uso como tipo "bit"

Entonces, ¿qué va mal?

    
pregunta Dean

1 respuesta

3

Su error dice: eightBitRegister , pero su código dice: eigthBitRegister .

( ht vs th )

Por lo tanto, es probable que estés intentando crear una instancia de una entidad que no existe como se deletrea .

El segundo error es solo un error de tipo que introdujo ( bit vs std_logic ), pero tampoco se ha encontrado la entidad, el compilador acaba de detenerse en este nuevo error, antes de que tenga la oportunidad de llegar al otro.

    
respondido por el apalopohapa

Lea otras preguntas en las etiquetas