我有下一個ROM內存的結構VHDL定義。當我嘗試編譯它時,我得到了「rom_4x4_structural.vhd(13)上的VHDL錯誤:標識符」q「的類型與它的用法不符合」std_logic「類型」錯誤。任何人都可以向我解釋這個問題背後的原因嗎?標識符的類型與其用法不一致
LIBRARY ieee; USE ieee.std_logic_1164.all;
LIBRARY lpm; USE lpm.lpm_components.all;
ENTITY rom_4x4_structural IS
PORT(address : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END rom_4x4_structural;
ARCHITECTURE rom_4x4_structural_arch OF rom_4x4_structural IS
BEGIN
inst_1: LPM_ROM
GENERIC MAP (LPM_WIDTH=>4, LPM_WIDTHAD=>4, LPM_FILE=>"rom_4x4_structural.mif")
PORT MAP (address, q);
END rom_4x4_structural_arch;
LPM_ROM的實體或組件聲明會回答該問題。命名關聯可能會使錯誤更容易被發現。事實上,我認爲即使編譯不是直接實例化,也沒有組件聲明,我甚至不相信這一點。 –
@BrianDrummond所以我需要聲明組件或什麼?它實際上編譯的那麼遠。 –
您不必聲明組件。請參閱「直接實體實例化」的語法。 –