使用行为描述的方法实现半加器是非常简单的,可是你尝试过用行为描述实现半加器嘛?我们的数字逻辑盛建伦老师就布置了这样的一个实验,代码如下:
[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加了一条线.
@雨碎江南, 没太明白 明天我试试看 貌似挺好玩~
我们来说是过去时了,老盛很和蔼的一个人,分了专业就惨了,没一个像老盛那么敬业的。都是垃圾
@清照, 嘿嘿 说起来老盛也蛮好玩的~~