-------------------------------------------------------------------
-- 说明: 半加器的设计
-- 文件: h_adder.vhd
-- 作者:
-- 日期: 2012/03/06
-- 修改:
-- 软件: Altera QuartusII 9.0
-- 芯片: Altera Cyclone FPGA (EP1C3T144C8)
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
--实体描述部分
ENTITY h_adder IS
PORT( --端口声明
a, b : IN STD_LOGIC;
co,so: OUT STD_LOGIC
);
END h_adder;
--结构体描述部分
ARCHITECTURE fh1 OF h_adder IS
SIGNAL abc : STD_LOGIC_VECTOR (1 DOWNTO 0); --定义了1个信号节点,该信号节点是两位的
--或者说是定义标准逻辑矢量数据类型
BEGIN
abc <= a & b ; --a与b并置操作,获得二维矢量的数据类型
PROCESS (abc) --进程开始
BEGIN
CASE abc IS --类似于真值表表述方式的CASE语句
WHEN "00" => so<='0';co<='0';
WHEN "01" => so<='1';co<='0';
WHEN "10" => so<='1';co<='0';
WHEN "11" => so<='0';co<='1';
WHEN OTHERS => NULL;
END CASE; --CASE语句结束标志
END PROCESS; --进程结束标志
END fh1;
-------------------------------------------------------------------
-- 说明: 二输入或门的设计描述
-- 文件: or2a.vhd
-- 作者:
-- 日期: 2012/03/06
-- 修改:
-- 软件: Altera QuartusII 9.0
-- 芯片: Altera Cyclone FPGA (EP1C3T144C8)
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
--实体描述部分
ENTITY or2a IS
PORT( --端口声明
a, b : IN STD_LOGIC;
c : OUT STD_LOGIC
);
END or2a;
--结构体描述部分
ARCHITECTURE one OF or2a IS
BEGIN
c <= a OR b;
END one;
-------------------------------------------------------------------
-- 说明: 1位二进制全加器的顶层设计
-- 文件: f_adder.vhd
-- 作者:
-- 日期: 2012/03/06
-- 修改:
-- 软件: Altera QuartusII 9.0
-- 芯片: Altera Cyclone FPGA (EP1C3T144C8)
-------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
--实体描述部分
ENTITY f_adder IS
PORT( --端口声明
ain, bin, cin : IN STD_LOGIC;
cout, sout : OUT STD_LOGIC
);
END f_adder;
--结构体描述部分
ARCHITECTURE fd1 OF f_adder IS
COMPONENT h_adder --调用半加器
PORT( --半加器的端口声明(注意要和设计的那个半加器端口声明一样,也可以说直接复制过来的)
a, b : IN STD_LOGIC;
co,so: OUT STD_LOGIC
);
END COMPONENT; --结束标志
COMPONENT or2a --调用或门
PORT( --或门的端口声明
a, b : IN STD_LOGIC;
c : OUT STD_LOGIC
);
END COMPONENT;
SIGNAL d, e, f : STD_LOGIC; --定义了3个信号节点,作为内部的连接线使用
BEGIN
u1 : h_adder PORT MAP (a=>ain, b=>bin, co=>d, so=>e);
u2 : h_adder PORT MAP (a=>e, b=>cin, co=>f, so=>sout);
u3 : or2a PORT MAP (a=>d, b=>f, c=>cout);
END fd1; --结束结构体
用户891316 2012-7-20 12:05
用户377235 2012-5-23 18:50
条理清晰……多写点程序,给我们借鉴啊
用户419124 2012-5-12 10:10
用户377235 2012-5-5 12:34
写的太详细了……这个例子很实用,顶着