目录
1. 示例说明
本例是一个quartus II的工程下有两个vhd文件,其中一个调用另一个的过程。
两个vhd文件:
add_single.vhd
add_total.vhd
其中实现的是在add_total.vhd文件中多次调用add_single的过程。
工程名称是add_total调用关系如下:
2. add_single.vhd源码
源码如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
entity add_single is
port(
X : in STD_LOGIC;
Y : in STD_LOGIC;
C_in : in STD_LOGIC;
Sum : out STD_LOGIC;
C_out : out STD_LOGIC);
end add_single;
architecture behav of add_single is
begin
process(X, Y, C_in)
begin
Sum <= (X xor Y) xor C_in;
C_out <= (X and Y) or (C_in and X) or (C_in and Y);
end process;
end behav;
3. add_total.vhd源码
源码如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
entity add_total is
port(
X : in STD_LOGIC_VECTOR(1 downto 0);
Y : IN STD_LOGIC_VECTOR(1 downto 0);
C_in : in STD_LOGIC;
Sum : out STD_LOGIC_VECTOR(1 downto 0);
C_out : out STD_LOGIC);
end add_total;
architecture behav of add_total is
component add_single
port(
X: in STD_LOGIC;
Y: in STD_LOGIC;
C_in: in STD_LOGIC;
Sum: out STD_LOGIC;
C_out: out STD_LOGIC
);
end component;
signal C_temp: std_logic;
begin
A1: add_single
port map(X(0), Y(0), C_in, Sum(0), C_temp);
A2: add_single
port map(X(1), Y(1), C_in, Sum(1), C_out);
end behav;
4. 运行结果
5. 功能仿真结果
6. 调用关系解析