Me again!
I wrote something SUPER simple in order to demonstrate how entities come together. However, I'm having trouble figuring out why the output of the combined entities never assumes any value (other than U). Here's the code (its super simple, I promise!)
library ieee;
use ieee.std_logic_1164.all;
entity OR_LOGIC is
port(
in_a : in std_logic;
in_b : in std_logic;
out_c : out std_logic
);
end entity;
architecture OR_LOGIC_ARCH of OR_LOGIC is
begin
out_c <= in_a or in_b;
end OR_LOGIC_ARCH;
library ieee;
use ieee.std_logic_1164.all;
entity AND_LOGIC is
port(
in_a : in std_logic;
in_b : in std_logic;
out_c : out std_logic
);
end entity;
architecture AND_LOGIC_ARCH of AND_LOGIC is
begin
out_c <= in_a and in_b;
end AND_LOGIC_ARCH;
library ieee;
use ieee.std_logic_1164.all;
entity COMBO is
port(
in_a : in std_logic;
in_b : in std_logic;
in_c : in std_logic;
out_d : out std_logic
);
end entity;
architecture COMBO_ARCH of COMBO is
signal wire1 : std_logic;
signal wire2 : std_logic;
component OR_LOGIC
port(
in_a : in std_logic;
in_b : in std_logic;
out_c : out std_logic
);
end component;
component AND_LOGIC
port(
in_a : in std_logic;
in_b : in std_logic;
out_c : out std_logic
);
end component;
begin
or1 : OR_LOGIC port map (in_a, in_b, wire1);
and1 : AND_LOGIC port map(in_c, wire1, wire2);
end COMBO_ARCH;
and then:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity TEST_ENTITY is
end entity TEST_ENTITY;
architecture TEST_ENTITY_ARCH of TEST_ENTITY is
component ANDandOR
port(
in_a : in std_logic;
in_b : in std_logic;
in_c : in std_logic;
out_d : out std_logic
);
end component;
signal in_a, in_b, in_c, out_d : std_logic;
begin
combination : ANDandOR port map (in_a, in_b, in_c, out_d);
process
begin
in_a <= '0';
in_b <= '0';
in_c <= '0';
wait for 5ns;
in_a <= '1';
in_b <= '0';
in_c <= '1';
wait for 5ns;
in_a <= '0';
in_b <= '1';
in_c <= '0';
wait for 5ns;
end process;
end architecture TEST_ENTITY_ARCH;