Uso de la megafunción ROM en el código VHDL

2

He creado una megafunción de ROM con el Administrador de complementos de MegaWizard. Esto creó un nuevo archivo que nombré rom.vhd.

Mi código:

library ieee;
use ieee.std_logic_1164.all;

entity first is
port(
PC: in STD_LOGIC_VECTOR(7 downto 0);
data : out STD_LOGIC_VECTOR(7 downto 0);
clock : in STD_LOGIC
);
end first;

architecture behavioral of first is
begin 

rom_inst : rom PORT MAP (PC, clock, data);  

end behavioral;

Recibo el error: Error (10482): error VHDL en first.vhd (15): el objeto "rom" se usa pero no se declara

¿Cómo puedo solucionar este problema para que VHDL reconozca que tengo una ROM en mi archivo externo llamado ROM.vhd?

    
pregunta gilianzz

1 respuesta

2

Tiene dos soluciones, la primera es usar componentes para definir rom , coloque este código en la declaración de su arquitectura, entre architecture y begin .

component rom is
port (
    PC: in STD_LOGIC_VECTOR(7 downto 0);
    data : out STD_LOGIC_VECTOR(7 downto 0);
    clock : in STD_LOGIC
);

La segunda solución usa la sintaxis VHDL-93 en su lugar. Simplemente reemplace su creación de instancias con:

rom_inst : entity work.rom PORT MAP (PC, clock, data);

Prefiero esta sintaxis, pero los componentes son más flexibles. Usted necesita componentes al crear instancias de bloque de Verilog, un núcleo de IP o una lista de redes. Los componentes también se pueden enlazar de manera diferente a través de bloques de configuración.

    
respondido por el Jonathan Drolet

Lea otras preguntas en las etiquetas