trigger_release_a,
trigger_release_b,
trigger_release_c,
+ wait_trigger_release,
ignore,
wait_trigger_data_valid_a,
wait_trigger_data_valid_b);
signal wr_header_int : std_logic := '0';
signal wr_data_int : std_logic := '0';
signal wr_status_int : std_logic := '0';
+ signal wr_dummy_int : std_logic := '0';
begin
wr_header_int <= '0';
wr_data_int <= '0';
wr_status_int <= '0';
+ wr_dummy_int <= '0';
if LVL1_INVALID_TRG_IN = '1' or reset_trigger_state_edge = "01" then
fast_clear_int <= '1';
fee_trg_release_int <= '1';
end if;
when ignore =>
+ wr_dummy_int <= '1'; --write a dummy value to identify
+ --inactive FEE
trigger_handler_state <= x"05";
- trigger_handler_fsm <= trigger_release_c;
+ trigger_handler_fsm <= wait_trigger_data_valid_b;
when status_trigger => --dummy implementation
trigger_handler_state <= x"06";
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_c =>
trigger_handler_state <= x"0F";
fee_trg_release_int <= '1';
- trigger_handler_fsm <= idle;
+ trigger_handler_fsm <= wait_trigger_release;
+
+ when wait_trigger_release =>
+ if(LVL1_TRG_DATA_VALID_IN = '1') then
+ trigger_handler_fsm <= wait_trigger_release;
+ else
+ trigger_handler_fsm <= idle;
+ end if;
when others => null;
end case;
elsif wr_status_int = '1' then
fee_data_int <= x"deadbeef";
fee_data_write_int <= '1';
+ elsif wr_dummy_int = '1' then
+ fee_data_write_int <= '1' ;
+ fee_data_int <= x"fff00000";
else
fee_data_write_int <= '0';
fee_data_int <= (others => '1');