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?