2016-01-13 89 views
0

我一直在尝试使用带配置单元的测试台。我有以下代码:VHDL测试台,配置单元

LIBRARY IEEE; 
USE IEEE.std_logic_1164.ALL; 

ENTITY AND_2 IS 
PORT (
     a,b : IN  std_logic; 
     x  : OUT std_logic 
     ); 
END ENTITY AND_2; 

ARCHITECTURE EX_1 OF AND_2 IS 
BEGIN 
x <= a and b; 
END ARCHITECTURE EX_1; 

ARCHITECTURE EX_2 OF AND_2 IS 
SIGNAL ab : std_logic_vector(1 DOWNTO 0); 
BEGIN 
ab <= (a & b); 
WITH ab SELECT 
    x <= '1' WHEN "11", 
      '0' WHEN OTHERS; 
END ARCHITECTURE EX_2; 

LIBRARY IEEE; 
USE IEEE.std_logic_1164.ALL; 

ENTITY TEST_AND_2 IS 
END ENTITY TEST_AND_2; 

ARCHITECTURE IO OF TEST_AND_2 IS 
SIGNAL a, b, x : std_logic; 
BEGIN 
G1  : ENTITY work.AND_2(EX_1) PORT MAP (a => a, b => b, x => x); 
a <= '0', '1' AFTER 100 NS; 
b <= '0', '1' AFTER 200 NS; 
END ARCHITECTURE IO; 

CONFIGURATION TESTER1 OF TEST_AND_2 IS 
FOR IO 
    FOR G1 : AND_2 
     USE ENTITY work.AND_2(EX_1); 
    END FOR; 
END FOR; 
END CONFIGURATION TESTER1; 

我编译时麻烦接收回来以下消息:

错误(10482):在AND_2.vhd VHDL错误(48):对象 “AND_2” 是已使用但未声明

我正在阅读的书不明确在使用测试台或配置单元时。有人能指出这个错误吗?但很明显,它可能是。 非常感谢 d

回答

2

,如果你使用的是直接实例为您的实体不能以这种方式使用的配置。当您有:

G1 : ENTITY work.AND_2(EX_1) PORT MAP (a => a, b => b, x => x); 

这是直接实例化,这在一般的打字保存和重复的代码,但不会允许通过一个配置中指定的架构。要使用的配置,在您的声明区(其中信号被定义),声明组件为您AND_2

COMPONENT AND_2 IS 
PORT (
    a,b : IN  std_logic; 
    x  : OUT std_logic 
    ); 
END COMPONENT; 

然后实例的AND_2这样的:

G1 : AND_2 PORT MAP (a => a, b => b, x => x); 

你的配置语句是正确的,你应该启动并运行这两个改变。

+0

工作了一个款待....谢谢 – hoboBob

+0

@DanielJHall如果答案解决了你的问题是正常的事情是把它标记为接受http://stackoverflow.com/help/someone-answers –