Saturday, 27 September 2014

VHDL test bench

VHDL BASIC GATES WITH TEST BENCH


AND GATE

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity and_gate is
    Port ( a,b : in  STD_LOGIC;
           c : out  STD_LOGIC);
end and_gate;

architecture Behavioral of and_gate is

begin
c <= a and b;

end Behavioral;



TEST BENCH

 LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--USE ieee.numeric_std.ALL;

ENTITY testbenchprogram IS
END testbenchprogram;

ARCHITECTURE behavior OF testbenchprogram IS

    -- Component Declaration for the Unit Under Test (UUT)

    COMPONENT and_gate
    PORT(
         a : IN  std_logic;
         b : IN  std_logic;
         c : OUT  std_logic
        );
    END COMPONENT;
   

   --Inputs
   signal a : std_logic := '0';
   signal b : std_logic := '0';

     --Outputs
   signal c : std_logic;
   -- No clocks detected in port list. Replace <clock> below with
   -- appropriate port name

   constant period : time := 10 ns;

BEGIN

    -- Instantiate the Unit Under Test (UUT)
   uut: and_gate PORT MAP (
          a => a,
          b => b,
          c => c
        );

   -- Clock process definitions
--   process :process
--   begin
--        <clock> <= '0';
--        wait for <clock>_period/2;
--        <clock> <= '1';
--        wait for <clock>_period/2;
--   end process;


   -- Stimulus process
   stim_proc: process
   begin       
      -- hold reset state for 100 ns.
     wait for 100 ns;   
        a <= '0';
        wait for 100ns;
        b <= '1';
        wait for 100ns;
        a <= '1';
        b <= '0';
        wait for 100 ns;
        a <= '1';
        b <= '1';

      wait for period*10;

      -- insert stimulus here

      wait;
   end process;

END;




OR GATE

 library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
 entity or_gate is
    Port ( a,b : in  STD_LOGIC;
           c : out  STD_LOGIC);
end or_gate;

architecture Behavioral of or_gate is

begin
c <= a or b ;
end Behavioral;




TEST BENCH


LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--USE ieee.numeric_std.ALL;

ENTITY testbenchessprograms IS
END testbenchessprograms;

ARCHITECTURE behavior OF testbenchessprograms IS

    -- Component Declaration for the Unit Under Test (UUT)

    COMPONENT or_gate
    PORT(
         a : IN  std_logic;
         b : IN  std_logic;
         c : OUT  std_logic
        );
    END COMPONENT;
   

   --Inputs
   signal a : std_logic := '0';
   signal b : std_logic := '0';

     --Outputs
   signal c : std_logic;
   -- No clocks detected in port list. Replace <clock> below with
   -- appropriate port name

   constant period : time := 100 ns;

BEGIN

    -- Instantiate the Unit Under Test (UUT)
   uut: or_gate PORT MAP (
          a => a,
          b => b,
          c => c
        );

   -- Clock process definitions
--   <clock>_process :process
--   begin
--        <clock> <= '0';
--        wait for <clock>_period/2;
--        <clock> <= '1';
--        wait for <clock>_period/2;
--   end process;


   -- Stimulus process
   stim_proc: process
   begin       
      -- hold reset state for 100 ns.
      wait for 100 ns;   
        a <= '0';
        wait for 100ns;
        b <= '1';
        wait for 100ns;
        a <= '1';
        b <= '0';
        wait for 100 ns;
        a <= '1';
        b <= '1';

      wait for period*10;

      -- insert stimulus here

      wait;
   end process;

END;




NOT GATE
 library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

 entity not_gate is
    Port ( a : in  STD_LOGIC;
           y : out  STD_LOGIC);
end not_gate;

architecture Behavioral of not_gate is

begin

y <= not a;

end Behavioral;



TEST BENCH
 LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
 ENTITY testbecnhes IS
END testbecnhes;

ARCHITECTURE behavior OF testbecnhes IS

    -- Component Declaration for the Unit Under Test (UUT)

    COMPONENT not_gate
    PORT(
         a : IN  std_logic;
         y : OUT  std_logic
        );
    END COMPONENT;
   

   --Inputs
   signal a : std_logic := '0';

     --Outputs
   signal y : std_logic;
   -- No clocks detected in port list. Replace <clock> below with
   -- appropriate port name

   constant period : time := 100 ns;

BEGIN

    -- Instantiate the Unit Under Test (UUT)
   uut: not_gate PORT MAP (
          a => a,
          y => y
        );
--
--   -- Clock process definitions
--   <clock>_process :process
--   begin
--        <clock> <= '0';
--        wait for <clock>_period/2;
--        <clock> <= '1';
--        wait for <clock>_period/2;
--   end process;


   -- Stimulus process
   stim_proc: process
   begin       
      -- hold reset state for 100 ns.
      wait for 200 ns;   
      a <= '0';
        wait for 100 ns;   
      a <= '1';
      wait for 100 ns;   
      a <= '1';
      wait for period*10;

      -- insert stimulus here

      wait;
   end process;

END;







NAND GATE

 library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

 entity nand_gate is
    Port ( a,b : in  STD_LOGIC;
           c : out  STD_LOGIC);
end nand_gate;

architecture Behavioral of nand_gate is

begin

c <= a nand b;
end Behavioral;


TEST BENCH

 LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--USE ieee.numeric_std.ALL;

ENTITY testbechces IS
END testbechces;

ARCHITECTURE behavior OF testbechces IS

    -- Component Declaration for the Unit Under Test (UUT)

    COMPONENT nand_gate
    PORT(
         a : IN  std_logic;
         b : IN  std_logic;
         c : OUT  std_logic
        );
    END COMPONENT;
   

   --Inputs
   signal a : std_logic := '0';
   signal b : std_logic := '0';

     --Outputs
   signal c : std_logic;
   -- No clocks detected in port list. Replace <clock> below with
   -- appropriate port name

   constant period : time := 100 ns;

BEGIN

    -- Instantiate the Unit Under Test (UUT)
   uut: nand_gate PORT MAP (
          a => a,
          b => b,
          c => c
        );

--   -- Clock process definitions
--   <clock>_process :process
--   begin
--        <clock> <= '0';
--        wait for <clock>_period/2;
--        <clock> <= '1';
--        wait for <clock>_period/2;
--   end process;


   -- Stimulus process
   stim_proc: process
   begin       
      -- hold reset state for 100 ns.
      wait for 100 ns;   
        a <= '0';
        wait for 100ns;
        b <= '1';
        wait for 100ns;
        a <= '1';
        b <= '0';
        wait for 100 ns;
        a <= '1';
        b <= '1';

      wait for period*10;

      -- insert stimulus here

      wait;
   end process;

END;





NOR GATE


 library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

 entity nor_gate is
    Port ( a,b : in  STD_LOGIC;
           c : out  STD_LOGIC);
end nor_gate;

architecture Behavioral of nor_gate is

begin

c <= a nor b ;

end Behavioral;

TEST BENCH

 LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--USE ieee.numeric_std.ALL;

ENTITY testbecnhes IS
END testbecnhes;

ARCHITECTURE behavior OF testbecnhes IS

    -- Component Declaration for the Unit Under Test (UUT)

    COMPONENT nor_gate
    PORT(
         a : IN  std_logic;
         b : IN  std_logic;
         c : OUT  std_logic
        );
    END COMPONENT;
   

   --Inputs
   signal a : std_logic := '0';
   signal b : std_logic := '0';

     --Outputs
   signal c : std_logic;
   -- No clocks detected in port list. Replace <clock> below with
   -- appropriate port name

   constant period : time := 10 ns;

BEGIN

    -- Instantiate the Unit Under Test (UUT)
   uut: nor_gate PORT MAP (
          a => a,
          b => b,
          c => c
        );

   -- Clock process definitions
--   <clock>_process :process
--   begin
--        <clock> <= '0';
--        wait for <clock>_period/2;
--        <clock> <= '1';
--        wait for <clock>_period/2;
--   end process;
--

   -- Stimulus process
   stim_proc: process
   begin       
      -- hold reset state for 100 ns.
  
    wait for 100 ns;   
        a <= '0';
        wait for 100ns;
        b <= '1';
        wait for 100ns;
        a <= '1';
        b <= '0';
        wait for 100 ns;
        a <= '1';
        b <= '1';
      wait for period*10;

      -- insert stimulus here

      wait;
   end process;

END;




XOR GATE
 library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;

-- Uncomment the following library declaration if instantiating
-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

entity xor_gate is
    Port ( a,b : in  STD_LOGIC;
           c : out  STD_LOGIC);
end xor_gate;

architecture Behavioral of xor_gate is

begin

c <= a xor b;

end Behavioral;



TEST BENCH

 LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--USE ieee.numeric_std.ALL;

ENTITY testbeches IS
END testbeches;

ARCHITECTURE behavior OF testbeches IS

    -- Component Declaration for the Unit Under Test (UUT)

    COMPONENT xor_gate
    PORT(
         a : IN  std_logic;
         b : IN  std_logic;
         c : OUT  std_logic
        );
    END COMPONENT;
   

   --Inputs
   signal a : std_logic := '0';
   signal b : std_logic := '0';

     --Outputs
   signal c : std_logic;
   -- No clocks detected in port list. Replace <clock> below with
   -- appropriate port name

   constant period : time := 100 ns;

BEGIN

    -- Instantiate the Unit Under Test (UUT)
   uut: xor_gate PORT MAP (
          a => a,
          b => b,
          c => c
        );

--   -- Clock process definitions
--   <clock>_process :process
--   begin
--        <clock> <= '0';
--        wait for <clock>_period/2;
--        <clock> <= '1';
--        wait for <clock>_period/2;
--   end process;


   -- Stimulus process
   stim_proc: process
   begin       
      -- hold reset state for 100 ns.
      wait for 100 ns;       
        a <= '0';
        wait for 100ns;
        b <= '1';
        wait for 100ns;
        a <= '1';
        b <= '0';
        wait for 100 ns;
        a <= '1';
        b <= '1';

      wait for period*10;

      -- insert stimulus here

      wait;
   end process;

END;



XNOR GATE


 library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

 entity xnor_gate is
    Port ( a,b : in  STD_LOGIC;
           c : out  STD_LOGIC);
end xnor_gate;

architecture Behavioral of xnor_gate is

begin

c <= a xnor b ;

end Behavioral;


TEST BENCH

 LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--USE ieee.numeric_std.ALL;

ENTITY testbenchs IS
END testbenchs;

ARCHITECTURE behavior OF testbenchs IS

    -- Component Declaration for the Unit Under Test (UUT)

    COMPONENT xnor_gate
    PORT(
         a : IN  std_logic;
         b : IN  std_logic;
         c : OUT  std_logic
        );
    END COMPONENT;
   

   --Inputs
   signal a : std_logic := '0';
   signal b : std_logic := '0';

     --Outputs
   signal c : std_logic;
   -- No clocks detected in port list. Replace <clock> below with
   -- appropriate port name

   constant period : time := 100 ns;

BEGIN

    -- Instantiate the Unit Under Test (UUT)
   uut: xnor_gate PORT MAP (
          a => a,
          b => b,
          c => c
        );

   -- Clock process definitions
--   <clock>_process :process
--   begin
--        <clock> <= '0';
--        wait for <clock>_period/2;
--        <clock> <= '1';
--        wait for <clock>_period/2;
--   end process;


   -- Stimulus process
   stim_proc: process
   begin       
      -- hold reset state for 100 ns.
      wait for 100 ns;   
        a <= '0';
        wait for 100ns;
        b <= '1';
        wait for 100ns;
        a <= '1';
        b <= '0';
        wait for 100 ns;
        a <= '1';
        b <= '1';

      wait for period*10;

      -- insert stimulus here

      wait;
   end process;

END;











No comments:

Post a Comment