使用VHDL中另一个文件中的实体

Eva*_*van 6 vhdl

如何在VHDL中从工作空间"包含"另一个文件,然后使用在另一个文件中实现的实体的架构?这是我的,但它是不对的:

更新的代码:

library ieee;
use ieee.std_logic_1164.all;
library Part2;
use Part2.all;


entity problem4Gates is
    port(X,Clk: in std_logic; Q: out std_logic_vector(2 downto 0)) ;
end entity problem4Gates;  

architecture behavioral OF problem4Gates IS  

for all: yourGateName use entity  Part2.JKflipFlop(jkFF); --port (J, K, Clk, Preset, Clear : in std_logic; Q, Qn : Buffer std_logic) --JKflipFlop --jkFF    
signal s0, ns0, s1, ns1, s2, na2, ps0, ps1, ps2, restart : std_logic :='0';
begin
    process(clk)
    begin                  
         yourgatename( ns0, clk, '0', restart, Q(0), ns0 );
    end process;
end architecture behavioral;
Run Code Online (Sandbox Code Playgroud)

我现在得到2个错误:

# Error: COMP96_0078: Part3.vhd : (13, 10): Unknown identifier "yourGateName".
# Error: COMP96_0134: Part3.vhd : (13, 10): Cannot find component declaration.
Run Code Online (Sandbox Code Playgroud)

Mar*_*son 5

如何在 VHDL 中“包含”工作区中的另一个文件,然后使用在另一个文件中实现的实体的体系结构?

您不“包含文件”。VHDL 不是 C 语言。

如果您编译特定实体的多个不同体系结构,它们可以全部位于一个文件中,甚至与实体位于同一文件中,或者它们可以分散在多个文件中。

然后您可以使用它们 - 最简单的方法是直接实例化。在更高级别的架构中,您可以:

inst_of_one_arch     : entity work.some_entity(one_arch) port map....
inst_of_another_arch : entity work.some_entity(another_arch) port map....
Run Code Online (Sandbox Code Playgroud)

还有其他方法,但可能会很麻烦。