使用行为描述的方法实现半加器是非常简单的,可是你尝试过用行为描述实现半加器嘛?我们的数字逻辑盛建伦老师就布置了这样的一个实验,代码如下:
[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) 编译仿真通过。

呃….又被你抢先一步,话说我也正在看VHDL.
其实半加器可以由XOR加一条线就可以.我用三极管做过一个物理的…
@雨碎江南, 用行为描述非常简单 可是我们的老师非要用结构描述。我也不想弄这么麻烦哇!
@Kaisir.Wang,
呃…物理实现:不好画图,我语言描述.
输入:A,B两条线.分别让A和B过一个OR(记为OutOR),一个AND(记为OutAND1).其中OutAND1的输出即为进位输出.然后把OutAND1输出到一个NOT上(NOT的输出记为OutNOT),然后把OutNOT和OutOR接到一个AND上(记为OutAND2)OutAND2即为加和输出,你会发现这个电路其实就是XOR加了一条线.
@雨碎江南, 没太明白 明天我试试看 貌似挺好玩~
我们来说是过去时了,老盛很和蔼的一个人,分了专业就惨了,没一个像老盛那么敬业的。都是垃圾
@清照, 嘿嘿 说起来老盛也蛮好玩的~~