VHDL 元件例化语句

VHDL 元件例化语句的问题,
元件例化语句怎么用? 简单说就是在写一个 全加器时候,引用半加器
实体是
Entity full_adder is
Port(a ,b,,cin: in std_logic;
S,co: out std_logic);
End full_adder;
在结构体中先说明
Component half_adder
Port(a,b: in std_logic;
s,co: out std_logic);
end component;
然后就引用,。。
有点搞不清楚,
是不是只能引用work库中的元件?
Work库中有那些元件?

引用的东西要在同一个project里的其他文件里有定义才行。
给你个例子看下就明白了,这是引用一位全加器构成一个四位全加器。
project名是adder,里面两个vhd文件,分别为fulladder.vhd和adder.vhd
fulladder.vhd内容如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY FullAdder is --这是一位全加器
port(
A:in std_logic;
B:in std_logic;
C:in std_logic;
Carry:out std_logic;
Sum:out std_logic
);
END FullAdder;

architecture a of FullAdder is
begin
Sum<=A xor B xor C;
Carry<=(A and B) or (A and C) or (B and C);
end a;

adder.vhd内容如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;

entity adder is --四位全加器
port(
A,B:in std_logic_vector(3 downto 0);
S:out std_logic_vector(3 downto 0);
C:inout std_logic_vector(4 downto 0)
);
end adder;

architecture a of adder is
component FullAdder --声明component
port(
A:in std_logic;
B:in std_logic;
C:in std_logic;
Carry:out std_logic;
Sum:out std_logic
);
end component;

begin
u1:FullAdder port map(A(0),B(0),C(0),C(1),S(0));
--引用component,u1,u2,u3,u4为映像的标识名,port map是关键字,端口按对应顺序写
u2:FullAdder port map(A(1),B(1),C(1),C(2),S(1));
u3:FullAdder port map(A(2),B(2),C(2),C(3),S(2));
u4:FullAdder port map(A(3),B(3),C(3),C(4),S(3));

C(0)<='0';
end a;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-08-13
还可以在你的vhdl文件目录下的hdl都可以被引用!