-- ############################################################################ -- # Project : VHDL-Modellbibliothek # -- # # -- # Filename : tb_arbiter_2.vhd # -- # # -- # Schaltung : Testbench fuer parametrierbaren Busarbiter # -- # # -- # Modell : tb_arbiter_2 # -- # # -- # Designer : Wolfgang Sehr; ueberarbeitet von Stefan Schmechtig # -- # Abteilung : Lehrstul fuer rechnergestuetzten Schaltungsentwurf # -- # Datum : 01.02.1995 # -- ############################################################################ -- ############################################################################ -- # IEEE PACKAGES # -- ############################################################################ Library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; USE IEEE.math_real.all; -- wird fuer die Erzeugung von Zufallszahlen -- benoetigt -- ############################################################################ ENTITY TB_arbiter_2 IS GENERIC (X : INTEGER := @BITBR); -- Anzahl der zu verwaltenden -- Einheiten END TB_arbiter_2; ARCHITECTURE behaviour OF TB_arbiter_2 IS SIGNAL tb_reset : STD_LOGIC; SIGNAL tb_takt : STD_LOGIC; SIGNAL tb_bus_request : UNSIGNED((X-1) DOWNTO 0); SIGNAL tb_grant : UNSIGNED((X-1) DOWNTO 0); -- tb_reset : von Testbench erzeugtes Ruecksetzsignal -- : -- tb_takt : von Testbench erzeugtes Taktsignal -- : -- tb_bus_request : von Testbench erzeugtes 'bus_request' Signal -- : -- tb_grant : vom UUT empfangenes 'grant' Signal -- : COMPONENT arbiter_2 PORT( reset : IN STD_LOGIC; takt : IN STD_LOGIC; ${BREQUEST} ${GRANT} ); END COMPONENT; BEGIN UUT: arbiter_2 -- einzige Schaltung PORT MAP(reset => tb_reset, takt => tb_takt, ${TB_BREQUEST} ${TB_GRANT} ); res: PROCESS BEGIN tb_reset <= '1'; WAIT FOR 5 ns; LOOP tb_reset <= not(tb_reset); WAIT FOR 300 ns; tb_reset <= not(tb_reset); WAIT FOR 10 ns; END LOOP; END PROCESS; clk: PROCESS BEGIN tb_takt <= '1'; WAIT FOR 10 ns; LOOP tb_takt <= not(tb_takt); WAIT FOR 5 ns; END LOOP; END PROCESS; stim: PROCESS VARIABLE bus_request_int : INTEGER; BEGIN tb_bus_request <= CONV_UNSIGNED(0, tb_bus_request'LENGTH); WAIT FOR 10 ns; LOOP bus_request_int := RAND; tb_bus_request <= CONV_UNSIGNED(bus_request_int, tb_bus_request'LENGTH); WAIT FOR 50 ns; END LOOP; END PROCESS; END behaviour; CONFIGURATION CFG_TB_arbiter_2 OF TB_arbiter_2 IS FOR behaviour FOR UUT: arbiter_2 USE CONFIGURATION WORK.CFG_arbiter_2; END FOR; END FOR; END CFG_TB_arbiter_2;