Merge branch 'master' of congo:dev/ohcount
[ohcount] / test / src_dir / vhdl1.vhd
1 ------------------------------------------------------------
2 -- Combinational Logic Design
3 -- (ESD book figure 2.4)
4 -- by Weijun Zhang, 04/2001
5 --
6 -- A simple example of VHDL Structure Modeling
7 -- we might define two components in two separate files,
8 -- in main file, we use port map statement to instantiate
9 -- the mapping relationship between each components
10 -- and the entire circuit.
11 ------------------------------------------------------------
12
13 library ieee;                           -- component #1
14 use ieee.std_logic_1164.all;
15
16 entity OR_GATE is
17 port(   X:      in std_logic;
18         Y:      in std_logic;
19         F2:     out std_logic
20 );
21 end OR_GATE;
22
23 architecture behv of OR_GATE is
24 begin
25 process(X,Y)
26 begin
27         F2 <= X or Y;                   -- behavior des.
28 end process;
29 end behv;
30
31 -------------------------------------------------------------
32
33 library ieee;                           -- component #2
34 use ieee.std_logic_1164.all;
35
36 entity AND_GATE is
37 port(   A:      in std_logic;
38         B:      in std_logic;
39         F1:     out std_logic
40 );
41 end AND_GATE;
42
43 architecture behv of AND_GATE is
44 begin
45 process(A,B)
46 begin
47         F1 <= A and B;                  -- behavior des.
48 end process;
49 end behv;
50
51 --------------------------------------------------------------
52
53 library ieee;                           -- top level circuit
54 use ieee.std_logic_1164.all;
55 use work.all;
56
57 entity comb_ckt is
58 port(   input1: in std_logic;
59         input2: in std_logic;
60         input3: in std_logic;
61         output: out std_logic
62 );
63 end comb_ckt;
64
65 architecture struct of comb_ckt is
66
67     component AND_GATE is               -- as entity of AND_GATE
68     port(   A:  in std_logic;
69             B:  in std_logic;
70             F1: out std_logic
71     );
72     end component;
73
74     component OR_GATE is                -- as entity of OR_GATE
75     port(   X:  in std_logic;
76             Y:  in std_logic;
77             F2: out std_logic
78     );
79     end component;
80
81     signal wire: std_logic;             -- signal just like wire
82
83 begin
84
85     -- use sign "=>" to clarify the pin mapping
86
87     Gate1: AND_GATE port map (A=>input1, B=>input2, F1=>wire);
88     Gate2: OR_GATE port map (X=>wire, Y=>input3, F2=>output);
89
90 end struct;
91
92 ----------------------------------------------------------------