组件内部使用但未声明的组件

时间:2019-03-26 13:49:59

标签: vhdl quartus

在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后,问题也得到解决

0 个答案:

没有答案