VHDL 元件例化語句
引用的東西要在同一個project里的其他文件里有定義才行。
給你個例子看下就明白了,這是引用一位全加器構成一個四位全加器。
project名是adder,里面兩個vhd文件,分別為*和*
*內容如下:
LIBRARY IEEE;
USE *_LOGIC_*;
USE *_LOGIC_*;
USE *_LOGIC_*;
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
SumCarryend a;
*內容如下:
LIBRARY IEEE;
USE *_LOGIC_*;
USE *_LOGIC_*;
USE *_LOGIC_*;
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)end a;
VHDL 元件例化語句
引用的東西要在同一個project里的其他文件里有定義才行。
給你個例子看下就明白了,這是引用一位全加器構成一個四位全加器。
project名是adder,里面兩個vhd文件,分別為*和*
*內容如下:
LIBRARY IEEE;
USE *_LOGIC_*;
USE *_LOGIC_*;
USE *_LOGIC_*;
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;
*內容如下:
LIBRARY IEEE;
USE *_LOGIC_*;
USE *_LOGIC_*;
USE *_LOGIC_*;
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;
怎么使用例化語句將10進制計數器和6進制計數器組成一個60進制減法
六進制計數器源程序*:
LIBRARY IEEE;
USE *_LOGIC_*;
USE IEEE. STD_LOGIC_*;
ENTITY CNT6 IS
PORT (CLK, CLRN, ENA, LDN: IN STD_LOGIC;
D: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
Q: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT: OUT STD_LOGIC);
END CNT6;
ARCHITECTURE ONE OF CNT6 IS
SIGNAL CI: STD_LOGIC_VECTOR(3 DOWNTO 0):="0000";
BEGIN
PROCESS(CLK, CLRN, ENA, LDN)
BEGIN
IF CLRN='0' THEN CIELSIF CLK'EVENT AND CLK='1' THEN
IF LDN='0' THEN CIELSIF ENA='1' THEN
IF CIELSE CIEND IF;
END IF;
END IF;
QEND PROCESS;
COUTEND ONE;
十進制計數器源程序*:
LIBRARY IEEE;
USE *_LOGIC_*;
USE IEEE. STD_LOGIC_*;
ENTITY CNT10 IS
PORT (CLK, CLRN, ENA, LDN: IN STD_LOGIC;
D: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
Q: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT: OUT STD_LOGIC);
END CNT10;
ARCHITECTURE ONE OF CNT10 IS
SIGNAL CI: STD_LOGIC_VECTOR(3 DOWNTO 0):="0000";
BEGIN
PROCESS(CLK, CLRN, ENA, LDN)
BEGIN
IF CLRN='0' THEN CIELSIF CLK'EVENT AND CLK='1' THEN
IF LDN='0' THEN CIELSIF ENA='1' THEN
IF CIELSE CIEND IF;
END IF;
END IF;
QEND PROCESS;
COUTEND ONE;
設計兩輸入端與門元件:
將要使用的元件包裝入庫:
使用元件例化語句設計的六十進制計數器源程序*: