用结构描述的VHDL方法实现半加器

使用行为描述的方法实现半加器是非常简单的,可是你尝试过用行为描述实现半加器嘛?我们的数字逻辑盛建伦老师就布置了这样的一个实验,代码如下:

[codesyntax lang=”vhdl”]

-- 底层实体 And_Gate
library ieee;
use ieee.std_logic_1164.all;
entity and_gate is
port(op1,op2:in std_logic;
     and_result:out std_logic);
end and_gate;
architecture behave of and_gate is
begin
  and_result<=op1 and op2;
end behave;

-- 底层实体 Or_Gate
library ieee;
use ieee.std_logic_1164.all;
entity xor_gate is
port(op1,op2:in std_logic;
     xor_result:out std_logic);
end xor_gate;
architecture behave of xor_gate is
begin
  xor_result<=op1 xor op2;
end behave;

-- 顶层设计实体 h_adder
library ieee;
use ieee.std_logic_1164.all;
entity h_adder is
port(a1,a2:in std_logic;
     s,c:out std_logic);
end h_adder;
architecture struct of h_adder is
signal b1,b2:std_logic;
component and_gate
  port(op1,op2:in std_logic;
       and_result:out std_logic);
end component;
component xor_gate
  port(op1,op2:in std_logic;
       xor_result:out std_logic);
end component;
begin
  G1:and_gate port map
	(op1=>a1,
	 op2=>a2,
	 and_result=>c);
  G2:xor_gate port map
	(op1=>a1,
	 op2=>a2,
	 xor_result=>s);
end struct;

[/codesyntax]

Quartus II 8.1 (32-Bit) 编译仿真通过。