Design (gates_vhdl.vhd)

 

-----------------------------------------------------------------

-- VHDL description for combinational logic circuit.

-----------------------------------------------------------------

 

-----------------------------------------------------------------

-- Library Definitions

-----------------------------------------------------------------

 

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

USE ieee.numeric_std.ALL;

LIBRARY COMPONENTS;

USE COMPONENTS.LOGIC.ALL;

 

-----------------------------------------------------------------

-- Entity Definition

-----------------------------------------------------------------

 

ENTITY gates_vhdl IS

   PORT ( A          :          IN          STD_LOGIC;

          B          :          IN          STD_LOGIC;

          C          :          IN          STD_LOGIC;

          Z          :          OUT          STD_LOGIC);

end gates_vhdl;

 

-----------------------------------------------------------------

-- Architecture Definition

-----------------------------------------------------------------

 

ARCHITECTURE SCHEMATIC OF gates_vhdl IS

   SIGNAL node1          :          STD_LOGIC;

   SIGNAL node2          :          STD_LOGIC;

   SIGNAL node3          :          STD_LOGIC;

   SIGNAL node4          :          STD_LOGIC;

   SIGNAL node5          :          STD_LOGIC;

 

   COMPONENT AND2

      PORT ( I0          :          IN          STD_LOGIC;

             I1          :          IN          STD_LOGIC;

             O          :          OUT          STD_LOGIC);

   END COMPONENT;

 

   COMPONENT INV

      PORT ( I          :          IN          STD_LOGIC;

             O          :          OUT          STD_LOGIC);

   END COMPONENT;

 

   COMPONENT OR3

      PORT ( I0          :          IN          STD_LOGIC;

             I1          :          IN          STD_LOGIC;

             I2          :          IN          STD_LOGIC;

             O          :          OUT          STD_LOGIC);

   END COMPONENT;

 

BEGIN

   I1 : AND2 PORT MAP (I0=>A, I1=>B, O=>node3);

   I2 : AND2 PORT MAP (I0=>node1, I1=>node2, O=>node4);

   I3 : AND2 PORT MAP (I0=>node2, I1=>B, O=>node5);

   I4 : INV  PORT MAP (I=>A, O=>node1);

   I5 : INV  PORT MAP (I=>C, O=>node2);

   I6 : OR3  PORT MAP (I0=>node3, I1=>node4, I2=>node5, O=>Z);

END SCHEMATIC;

 

-----------------------------------------------------------------

-- End of File

-----------------------------------------------------------------

 

 

 

 

 

 

 

 

Design Test Bench (test_gates_vhdl.vhd)

 

-----------------------------------------------------------------

-- VHDL Test Bench Created to simulate source file gates.vhd

-----------------------------------------------------------------

 

-----------------------------------------------------------------

-- Library Definitions

-----------------------------------------------------------------

 

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

USE ieee.numeric_std.ALL;

 

LIBRARY COMPONENTS;

USE COMPONENTS.LOGIC.ALL;

 

-----------------------------------------------------------------

-- Entity Definition

-----------------------------------------------------------------

 

ENTITY testbench IS

END testbench;

 

-----------------------------------------------------------------

-- Architecture Definition

-----------------------------------------------------------------

 

ARCHITECTURE behavioral OF testbench IS

 

   COMPONENT gates_vhdl

   PORT( A          :          IN          STD_LOGIC;

          B          :          IN          STD_LOGIC;

          C          :          IN          STD_LOGIC;

          Z          :          OUT          STD_LOGIC);

   END COMPONENT;

 

   SIGNAL A          :          STD_LOGIC;

   SIGNAL B          :          STD_LOGIC;

   SIGNAL C          :          STD_LOGIC;

   SIGNAL Z          :          STD_LOGIC;

 

BEGIN

 

   UUT: gates_vhdl PORT MAP(

                    A => A,

                    B => B,

                    C => C,

                    Z => Z);

 

   test_stimulus : PROCESS

   BEGIN

      WAIT for 0 ns;   A <= '0'; B <='0'; C <= '0';

      WAIT for 100 ns; A <= '0'; B <='0'; C <= '1';

      WAIT for 100 ns; A <= '0'; B <='1'; C <= '0';

      WAIT for 100 ns; A <= '0'; B <='1'; C <= '1';

      WAIT for 100 ns; A <= '1'; B <='0'; C <= '0';

      WAIT for 100 ns; A <= '1'; B <='0'; C <= '1';

      WAIT for 100 ns; A <= '1'; B <='1'; C <= '0';

      WAIT for 100 ns; A <= '1'; B <='1'; C <= '1';

      WAIT for 100 ns;

   END PROCESS;

END;

 

-----------------------------------------------------------------

-- End of File

-----------------------------------------------------------------