blob: 91b2762fbe6dc30e49a97e5359b4cac8adb2ce8c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
library ieee;
use ieee.std_logic_1164.all;
entity full_adder_structural is
port(a: in std_logic;
b: in std_logic;
cin: in std_logic;
sum: out std_logic;
carry: out std_logic);
end full_adder_structural;
library ieee;
use ieee.std_logic_1164.all;
entity andgate is
port(a: in std_logic;
b: in std_logic;
z: out std_logic);
end andgate;
architecture e1 of andgate is
begin
z <= a and b;
end e1;
library ieee;
use ieee.std_logic_1164.all;
entity xorgate is
port(a: in std_logic;
b: in std_logic;
z: out std_logic);
end xorgate;
architecture e2 of xorgate is
begin
z <= a xor b;
end e2;
library ieee;
use ieee.std_logic_1164.all;
entity orgate is
port(a: in std_logic;
b: in std_logic;
z: out std_logic);
end orgate;
architecture e3 of orgate is
begin
z <= a or b;
end e3;
architecture structural of full_adder_structural is
component andgate
port(a: in std_logic;
b: in std_logic;
z: out std_logic);
end component;
component xorgate
port(a: in std_logic;
b: in std_logic;
z: out std_logic);
end component;
component orgate
port(a: in std_logic;
b: in std_logic;
z: out std_logic);
end component;
signal c1,c2,c3: std_logic;
begin
u1 : xorgate port map(a,b,c1);
u2 : xorgate port map(c1,cin,sum);
u3 : andgate port map(c1,cin,c2);
u4 : andgate port map(a,b,c3);
u5 : orgate port map(c2,c3,carry);
end structural;
|