用结构描述的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) 编译仿真通过。


6 条评论

  1. 清照说道:

    我们来说是过去时了,老盛很和蔼的一个人,分了专业就惨了,没一个像老盛那么敬业的。都是垃圾

  2. 雨碎江南说道:

    呃….又被你抢先一步,话说我也正在看VHDL.
    其实半加器可以由XOR加一条线就可以.我用三极管做过一个物理的…

    • Kaisir.Wang说道:

      @雨碎江南, 用行为描述非常简单 可是我们的老师非要用结构描述。我也不想弄这么麻烦哇!

      • 雨碎江南说道:

        @Kaisir.Wang,
        呃…物理实现:不好画图,我语言描述.
        输入:A,B两条线.分别让A和B过一个OR(记为OutOR),一个AND(记为OutAND1).其中OutAND1的输出即为进位输出.然后把OutAND1输出到一个NOT上(NOT的输出记为OutNOT),然后把OutNOT和OutOR接到一个AND上(记为OutAND2)OutAND2即为加和输出,你会发现这个电路其实就是XOR加了一条线.

发表评论

(必填)

(必填)

(以便回访)