在Quartus项目中,我创建了两个软件包文件。我正在创建一个文件,希望同时使用这两个文件。但是,当我尝试编译文件时,它说使用了某些组件,但未定义。当我检查包裹以查看它们是否在那里时,我找到了它们。但是编译器向我抛出该消息。为什么会这样?
我尝试了以下方法。 C / P包含未在新文件中找到的组件的文件,重命名新文件并将其添加到程序包中。 不知何故,这行得通。但是我不明白为什么。
截屏1:在TWICE包中使用不同名称声明一个项目。 https://imgur.com/a/n4xM7FX
截屏2:导致问题的文件开头的库 https://imgur.com/a/gD2ei5a
屏幕截图3:导致问题的代码行 https://imgur.com/a/tfByyFI
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
PACKAGE PIPELINE IS
---------------------------------------------------------------------------------
component I_F IS
PORT(
GLB_CLK: IN STD_LOGIC;
STALL : IN STD_LOGIC;
PC : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
MEMWORD: OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
PC_ADD : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)
);
END component I_F;
-- ... More components below
END PACKAGE PIPELINE;
现在,我要使用此组件的文件。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
LIBRARY WORK;
USE WORK.PIPELINE.ALL;
USE WORK.TOOLBOX.ALL; -- Thats the second package file
ENTITY TEST -- Just for this example
PORT ( Aa : IN BIT; B : OUT BIT);
END TEST;
ARCHITECTURE PROBLEMATIC OF TEST IS
SIGNAL CLK : STD_LOGIC;
SIGNAL PIPE_STALL_SIG : STD_LOGIC;
SIGNAL PC_IN_NEXT_PC : STD_LOGIC_VECTOR(31 DOWNTO 0);
SIGNAL IF_OUT_IFWORD : STD_LOGIC_VECTOR(31 DOWNTO 0);
SIGNAL IF_OUT_PC_VAL : STD_LOGIC_VECTOR(31 DOWNTO 0);
BEGIN
IF1: I_F -- <== PROBLEM HERE
PORT MAP(
GLB_CLK => CLK,
STALL => PIPE_STALL_SIG,
PC => PC_IN_NEXT_PC,
MEMWORD => IF_OUT_IFWORD,
PC_ADD => IF_OUT_PC_VAL
);
END PROBLEMATIC;
-- When i use A, the probblem appears, when I C/P A into a new vhd file, define
-- it inside the package as shown above and then using the copy to the file that causes the trouble everything works..
例如,将组件名称从I_F更改为ASDF后,问题也得到解决