-- ############################################################################ -- # Project : VHDL-Modellbibliothek # -- # # -- # Filename : tb_parity.vhd # -- # # -- # Schaltung : Testbench fuer Modul zur Generierung/Ueberpruefung # -- # der Paritaet # -- # # -- # Modell : tb_parity # -- # # -- # # -- # Designer : Wolfgang Sehr; ueberarbeitet von Stefan Schmechtig # -- # Abteilung : Lehrstul fuer rechnergestuetzten Schaltungsentwurf # -- # Datum : 25.01.1995 # -- ############################################################################ -- ############################################################################ -- # IEEE PACKAGES # -- ############################################################################ Library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; -- ############################################################################ ENTITY TB_parity IS GENERIC(X :INTEGER := @BITBR); -- X := Operandenbreite END TB_parity; ARCHITECTURE verhalten OF TB_parity IS SIGNAL tb_data_in : UNSIGNED ((X-1) DOWNTO 0); SIGNAL tb_parity_gerade_in : STD_LOGIC; SIGNAL tb_parity_ungerade_in : STD_LOGIC; SIGNAL tb_parity_gerade_out : STD_LOGIC; SIGNAL tb_parity_ungerade_out : STD_LOGIC; COMPONENT parity PORT(data_in : IN UNSIGNED ((X-1) DOWNTO 0); parity_gerade_in : IN STD_LOGIC; parity_ungerade_in : IN STD_LOGIC; parity_gerade_out : OUT STD_LOGIC; parity_ungerade_out : OUT STD_LOGIC ); END COMPONENT; BEGIN UUT: parity -- einzige Schaltung PORT MAP( tb_data_in, tb_parity_gerade_in, tb_parity_ungerade_in, tb_parity_gerade_out, tb_parity_ungerade_out); stim: PROCESS VARIABLE data_stim_int : INTEGER; BEGIN -- ############################################################### -- # Betriebsmodus: erzeugen/ueberpruefen von # -- # gerader Paritaet # -- ############################################################### tb_data_in <= CONV_UNSIGNED(0, tb_data_in'LENGTH); tb_parity_gerade_in <= '1'; tb_parity_ungerade_in <= '0'; WAIT FOR 10 ns; FOR i IN 0 TO (2**X-1) LOOP data_stim_int := CONV_INTEGER(tb_data_in); data_stim_int := data_stim_int + 1; tb_data_in <= CONV_UNSIGNED(data_stim_int, tb_data_in'LENGTH); WAIT FOR 5 ns; END LOOP; -- ############################################################### -- ############################################################### -- # Betriebsmodus: erzeugen/ueberpruefen von # -- # ungerader Paritaet # -- ############################################################### tb_data_in <= CONV_UNSIGNED(0, tb_data_in'LENGTH); tb_parity_gerade_in <= '0'; tb_parity_ungerade_in <= '1'; WAIT FOR 10 ns; FOR i IN 0 TO (2**X-1) LOOP data_stim_int := CONV_INTEGER(tb_data_in); data_stim_int := data_stim_int + 1; tb_data_in <= CONV_UNSIGNED(data_stim_int, tb_data_in'LENGTH); WAIT FOR 5 ns; END LOOP; -- ################################################################ -- ############################################################### -- # Betriebsmodus: undefiniert # -- # # -- ############################################################### tb_data_in <= CONV_UNSIGNED(0, tb_data_in'LENGTH); tb_parity_gerade_in <= '0'; tb_parity_ungerade_in <= '0'; WAIT FOR 10 ns; FOR i IN 0 TO (2**X-1) LOOP data_stim_int := CONV_INTEGER(tb_data_in); data_stim_int := data_stim_int + 1; tb_data_in <= CONV_UNSIGNED(data_stim_int, tb_data_in'LENGTH); WAIT FOR 5 ns; END LOOP; -- ############################################################### -- ############################################################### -- # Betriebsmodus: undefiniert # -- # # -- ############################################################### tb_data_in <= CONV_UNSIGNED(0, tb_data_in'LENGTH); tb_parity_gerade_in <= '0'; tb_parity_ungerade_in <= '1'; WAIT FOR 10 ns; FOR i IN 0 TO (2**X-1) LOOP data_stim_int := CONV_INTEGER(tb_data_in); data_stim_int := data_stim_int + 1; tb_data_in <= CONV_UNSIGNED(data_stim_int, tb_data_in'LENGTH); WAIT FOR 5 ns; END LOOP; -- ############################################################### END PROCESS; END verhalten; CONFIGURATION CFG_TB_parity OF TB_parity IS FOR verhalten FOR UUT: parity USE CONFIGURATION WORK.CFG_parity; END FOR; END FOR; END CFG_TB_parity;