From c1a9d1a7c37999ae9b0dcbfa7a12cac6f837c807 Mon Sep 17 00:00:00 2001 From: hadaq Date: Thu, 1 Jul 2010 14:02:34 +0000 Subject: [PATCH] *** empty log message *** --- special/tb_handler_lvl1.vhd | 165 ++++++++++++++++++++++++++++++++++-- 1 file changed, 157 insertions(+), 8 deletions(-) diff --git a/special/tb_handler_lvl1.vhd b/special/tb_handler_lvl1.vhd index 2265406..7060d1d 100755 --- a/special/tb_handler_lvl1.vhd +++ b/special/tb_handler_lvl1.vhd @@ -113,7 +113,9 @@ end process THE_CLOCK_GEN; THE_TESTBENCH: process begin + ----------------------------------------------------------- -- Setup signals + ----------------------------------------------------------- reset <= '0'; lvl1_timing_trg_in <= '0'; -- real timing trigger lvl1_pseudo_tmg_trg_in <= '0'; -- one clock pulse form TRB @@ -130,7 +132,9 @@ begin trg_enable_in <= '0'; trg_invert_in <= '0'; + ----------------------------------------------------------- -- Reset the whole stuff + ----------------------------------------------------------- wait until rising_edge(clock); reset <= '1'; wait until rising_edge(clock); @@ -138,29 +142,174 @@ begin reset <= '0'; wait for 100 ns; + ----------------------------------------------------------- -- Tests may start now + ----------------------------------------------------------- + -- enable trigger wait until rising_edge(clock); trg_enable_in <= '1'; wait for 100 ns; - - -- receive one TRB fake trigger + + ----------------------------------------------------------- + + -- ONE TRIGGER (timing) + + -- receive one normal timing trigger + wait for 3 ns; + lvl1_timing_trg_in <= '1'; + wait for 111 ns; + lvl1_timing_trg_in <= '0'; + wait for 1000 ns; + + -- LVL1 packet is there wait until rising_edge(clock); - lvl1_pseudo_tmg_trg_in <= '1'; + lvl1_trg_type_in <= x"1"; + lvl1_trg_number_in <= x"0000"; + lvl1_trg_code_in <= x"ab"; + lvl1_trg_information_in <= x"000000"; wait until rising_edge(clock); - lvl1_pseudo_tmg_trg_in <= '0'; - wait for 300 ns; - + lvl1_trg_received_in <= '1'; + + wait for 211 ns; + wait until rising_edge(clock); + lvl1_trg_release_in <= '1'; + wait until rising_edge(clock); + lvl1_trg_release_in <= '0'; + + wait until falling_edge(lvl1_trg_release_out); + wait until rising_edge(clock); + lvl1_trg_received_in <= '0'; + lvl1_trg_type_in <= x"0"; + lvl1_trg_number_in <= x"0000"; + lvl1_trg_code_in <= x"00"; + lvl1_trg_information_in <= x"000000"; + + wait for 555 ns; - wait; ----------------------------------------------------------- + + -- ONE TRIGGER (timing) + + -- receive one normal timing trigger + wait for 3 ns; + lvl1_timing_trg_in <= '1'; + wait for 111 ns; + lvl1_timing_trg_in <= '0'; + wait for 1000 ns; + + -- LVL1 packet is there + wait until rising_edge(clock); + lvl1_trg_type_in <= x"1"; + lvl1_trg_number_in <= x"0001"; + lvl1_trg_code_in <= x"71"; + lvl1_trg_information_in <= x"000000"; + wait until rising_edge(clock); + lvl1_trg_received_in <= '1'; + + wait for 211 ns; + wait until rising_edge(clock); + lvl1_trg_release_in <= '1'; + wait until rising_edge(clock); + lvl1_trg_release_in <= '0'; + + wait until falling_edge(lvl1_trg_release_out); + wait until rising_edge(clock); + lvl1_trg_received_in <= '0'; + lvl1_trg_type_in <= x"0"; + lvl1_trg_number_in <= x"0000"; + lvl1_trg_code_in <= x"00"; + lvl1_trg_information_in <= x"000000"; + + wait for 555 ns; + ----------------------------------------------------------- - + -- ONE TRIGGER (timing, wrong counter on LVL1) + -- receive one normal timing trigger wait for 3 ns; lvl1_timing_trg_in <= '1'; wait for 111 ns; lvl1_timing_trg_in <= '0'; + wait for 1000 ns; + + -- LVL1 packet is there + wait until rising_edge(clock); + lvl1_trg_type_in <= x"1"; + lvl1_trg_number_in <= x"dead"; + lvl1_trg_code_in <= x"cc"; + lvl1_trg_information_in <= x"000000"; + wait until rising_edge(clock); + lvl1_trg_received_in <= '1'; + + wait for 211 ns; + wait until rising_edge(clock); + lvl1_trg_release_in <= '1'; + wait until rising_edge(clock); + lvl1_trg_release_in <= '0'; + + wait until falling_edge(lvl1_trg_release_out); + wait until rising_edge(clock); + lvl1_trg_received_in <= '0'; + lvl1_trg_type_in <= x"0"; + lvl1_trg_number_in <= x"0000"; + lvl1_trg_code_in <= x"00"; + lvl1_trg_information_in <= x"000000"; + + wait for 555 ns; + + ----------------------------------------------------------- + -- ONE TRIGGER (timing, missing LVL1) + + -- receive one normal timing trigger + wait for 3 ns; + lvl1_timing_trg_in <= '1'; + wait for 111 ns; + lvl1_timing_trg_in <= '0'; + wait for 1000 ns; + + wait for 6 us; + + ----------------------------------------------------------- + + -- ONE TRIGGER (timingtriggerless) + + -- LVL1 packet is there + wait until rising_edge(clock); + lvl1_trg_type_in <= x"9"; + lvl1_trg_number_in <= x"0002"; + lvl1_trg_code_in <= x"f0"; + lvl1_trg_information_in <= x"000080"; + wait until rising_edge(clock); + lvl1_trg_received_in <= '1'; + + wait for 211 ns; + wait until rising_edge(clock); + lvl1_trg_release_in <= '1'; + wait until rising_edge(clock); + lvl1_trg_release_in <= '0'; + + wait until falling_edge(lvl1_trg_release_out); + wait until rising_edge(clock); + lvl1_trg_received_in <= '0'; + lvl1_trg_type_in <= x"0"; + lvl1_trg_number_in <= x"0000"; + lvl1_trg_code_in <= x"00"; + lvl1_trg_information_in <= x"000000"; + + wait for 555 ns; + + ----------------------------------------------------------- + + wait; + + ----------------------------------------------------------- + + -- receive one TRB fake trigger + wait until rising_edge(clock); + lvl1_pseudo_tmg_trg_in <= '1'; + wait until rising_edge(clock); + lvl1_pseudo_tmg_trg_in <= '0'; wait for 300 ns; -- receive one spike -- 2.43.0