synthesizeable_vhdl-model-library:and

AND gate

and_gate.vhd
-- ############################################################################
-- # Project    :    VHDL-Modellbibliothek				      #
-- #                                                                          #
-- # Filename   :    and_gate.vhd                                             #
-- #                                                                          #
-- # Schaltung  :    Mehrfach AND-Gatter mit parametrierbarer Anzahl          #
-- #                 von Eingaengen                                           #
-- #                                                                          #
-- # Modell	:    and_gate                                                 #
-- #                                                                          #
-- # Designer   : Wolfgang Sehr; ueberarbeitet von Stefan Schmechtig          #
-- # Abteilung  : Lehrstul fuer rechnergestuetzten Schaltungsentwurf          #
-- # Datum      : 28.03.1995                                                  #
-- ############################################################################
 
-- ############################################################################
-- #                        IEEE PACKAGES                                     #
-- ############################################################################
   Library IEEE;
   use IEEE.std_logic_1164.all;
   use IEEE.std_logic_arith.all;
-- ############################################################################
 
 
ENTITY and_gate IS
	GENERIC ( X: INTEGER := @BITBR       -- X: Bitbreite des Gatters
	        );
	PORT	(@EING
		 y	     	: OUT STD_LOGIC
		);
 
	-- and_ein_x		: x-ter Eingang des AND-Gatters
	--			:
	-- y			: Ausgang des AND-Gatters
 
END and_gate;
 
ARCHITECTURE dataflow OF and_gate IS
SIGNAL daten_ein		: UNSIGNED((X-1) DOWNTO 0);
 
	-- daten_ein		: internes Signal fuer Eingangsdaten
 
BEGIN
    ${EING_ZUW}
 
 
    PROCESS(daten_ein)
    VARIABLE erg		: STD_LOGIC;
    BEGIN
	erg := '1';
 
        FOR i IN 0 TO (X-1) LOOP
	   erg := erg AND daten_ein(i);
	END LOOP;
 
	y <= erg;
    END PROCESS;
 
END dataflow;
 
CONFIGURATION CFG_and_gate OF and_gate IS
   FOR dataflow
   END FOR;
END CFG_and_gate;
tb_gate.vhd
-- ############################################################################
-- # Project    :    VHDL-Modellbibliothek				      #
-- #                                                                          #
-- # Filename   :    tb_gate.vhd                                              #
-- #                                                                          #
-- # Schaltung  :    Testbench fuer Einfach-Gatter mit parametrierbarer       #
-- #                 Anzahl von Eingaengen                                    #
-- #                                                                          #
-- # Modell	:    tb_gate                                                  #
-- #                                                                          #
-- # Designer   : Wolfgang Sehr                                               #
-- # Abteilung  : Lehrstul fuer rechnergestuetzten Schaltungsentwurf          #
-- # Datum      : 28.03.1995                                                  #
-- ############################################################################
 
-- ############################################################################
-- #                        IEEE PACKAGES                                     #
-- ############################################################################
   Library IEEE;
   use IEEE.std_logic_1164.all;
   use IEEE.std_logic_arith.all;
-- ############################################################################
 
ENTITY TB_gate IS
	GENERIC (X : INTEGER := ${BITBR}    -- X: Anzahl der Eingaenge 
					    --    des Gatters
		 );   
END TB_gate;
 
 
ARCHITECTURE behaviour OF TB_gate IS
SIGNAL tb_daten_ein	: UNSIGNED ((X-1) 	DOWNTO 0);
SIGNAL tb_y		: STD_LOGIC;
 
 
	-- tb_daten_ein		: Dateneingangsvektor von der Testbench
	--			: erzeugt
	--			:
	-- tb_y			: Ausgangsvektor des Gatters
	--			:
 
COMPONENT gate
	PORT( ${TB_PDEKL}
	      y			: OUT STD_LOGIC		
	    );
END COMPONENT;
 
BEGIN
   UUT:   gate
	  PORT MAP (${TB_EING_ZUW}
		    y		=> tb_y
		   );
 
   stim: PROCESS
	 BEGIN
	    tb_daten_ein <= CONV_UNSIGNED(0, tb_daten_ein'LENGTH);
	    WAIT FOR 10 ns;
 
	    LOOP
               tb_daten_ein <= tb_daten_ein + '1';
	       WAIT FOR 10 ns;
	    END LOOP;
 
	 END PROCESS;
 
END behaviour;
 
 
CONFIGURATION CFG_TB_gate OF TB_gate IS
   FOR behaviour
       FOR UUT: gate
	    USE CONFIGURATION WORK.CFG_gate;
       END FOR;
   END FOR;
END CFG_TB_gate;
trace_gate.vhd
tr tb_daten_ein
tr tb_y