From 6134346c32af20b645c23c6f2af94dd5dc2b3b8b Mon Sep 17 00:00:00 2001 From: Tobias Weber Date: Fri, 10 Oct 2014 17:57:32 +0100 Subject: [PATCH] Additional trigger_release and trigger_data_valid states. Still Output looks strange --- mupix/sources/TriggerHandler.vhd | 47 ++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/mupix/sources/TriggerHandler.vhd b/mupix/sources/TriggerHandler.vhd index 1b2940c..8d76532 100644 --- a/mupix/sources/TriggerHandler.vhd +++ b/mupix/sources/TriggerHandler.vhd @@ -111,9 +111,15 @@ architecture behavioral of TriggerHandler is status_trigger, write_data_to_eventbuffer, write_data_to_ipu, - trigger_release, + wait_for_trg_data_valid_a, + wait_for_trg_data_valid_b, + wait_for_trg_data_valid_c, + trigger_release_a, + trigger_release_b, + trigger_release_c, ignore, - wait_trigger_release_ack); + wait_trigger_data_valid_a, + wait_trigger_data_valid_b); type trigger_type_type is (t_timing, t_physics, @@ -205,13 +211,13 @@ begin when ignore => trigger_handler_state <= x"05"; - trigger_handler_fsm <= trigger_release; + trigger_handler_fsm <= trigger_release_c; when status_trigger => --dummy implementation trigger_handler_state <= x"06"; fee_data_int <= x"deadbeef"; fee_data_write_int <= '1'; - trigger_handler_fsm <= trigger_release; + trigger_handler_fsm <= wait_trigger_data_valid_b; when write_data_to_eventbuffer => trigger_handler_state <= x"07"; @@ -225,27 +231,38 @@ begin when write_data_to_ipu => trigger_handler_state <= x"0A"; if fifo_readout_end_int = "10" then - --fee_data_finished_int <= '1'; - trigger_handler_fsm <= trigger_release; + trigger_handler_fsm <= wait_trigger_data_valid_a; else fee_data_int <= FEE_DATA_0_IN; fee_data_write_int <= FEE_DATA_WRITE_0_IN; trigger_handler_fsm <= write_data_to_ipu; end if; - when trigger_release => + when wait_trigger_data_valid_a => trigger_handler_state <= x"0B"; + if LVL1_TRG_DATA_VALID_IN = '1' then + trigger_handler_fsm <= wait_trigger_data_valid_b; + end if; + + + when wait_trigger_data_valid_b => + trigger_handler_state <= x"0C"; + trigger_handler_fsm <= trigger_release_a; + + when trigger_release_a => + trigger_handler_state <= x"0D"; + trigger_handler_fsm <= trigger_release_b; + + when trigger_release_b => + trigger_handler_state <= x"0E"; fee_data_finished_int <= '1'; + trigger_handler_fsm <= trigger_release_c; + + when trigger_release_c => + trigger_handler_state <= x"0F"; fee_trg_release_int <= '1'; - trigger_handler_fsm <= wait_trigger_release_ack; + trigger_handler_fsm <= idle; - when wait_trigger_release_ack => - trigger_handler_state <= x"0C"; - if LVL1_TRG_DATA_VALID_IN = '1' then - trigger_handler_fsm <= wait_trigger_release_ack; - else - trigger_handler_fsm <= idle; - end if; when others => null; end case; end if; -- 2.43.0