signal reg_timing_trigger : std_logic;
signal trigger_timing_rising : std_logic;
signal last_reg_timing_trigger : std_logic;
+ signal timing_trigger_missing_stat : std_logic;
+
+ signal link_error_i : std_logic;
+
component edge_to_pulse is
port (
proc_gen_common_stat_regs : process(REGIO_COMMON_STAT_REG_IN, trigger_number_match, temperature, int_trigger_num)
begin
buf_COMMON_STAT_REG_IN <= REGIO_COMMON_STAT_REG_IN;
--- buf_COMMON_STAT_REG_IN(4) <= not trigger_number_match;
--- buf_COMMON_STAT_REG_IN(8) <= timing_trigger_missing;
+ buf_COMMON_STAT_REG_IN(4) <= not trigger_number_match;
+ buf_COMMON_STAT_REG_IN(8) <= timing_trigger_missing_stat;
+ buf_COMMON_STAT_REG_IN(15) <= link_error_i;
if REGIO_USE_1WIRE_INTERFACE = c_YES then
buf_COMMON_STAT_REG_IN(31 downto 20) <= temperature;
end if;
buf_COMMON_STAT_REG_IN(127 downto 64) <= stat_lvl1_handler;
end process;
+
+
+ REG_LINK_ERROR : process(CLK)
+ begin
+ if rising_edge(CLK) then
+ if buf_REGIO_COMMON_CTRL_REG_OUT(4) = '1' then
+ link_error_i <= '0';
+ elsif MED_STAT_OP_IN(15) = '0' and MED_STAT_OP_IN(13) = '0' and MED_STAT_OP_IN(7 downto 4) = "0111" then
+ link_error_i <= '1';
+ end if;
+
+ if LVL1_TRG_RECEIVED_OUT_falling = '1' then
+ timing_trigger_missing_stat <= timing_trigger_missing;
+ end if;
+ end if;
+ end process;
+
-------------------------------------------------
-- Check LVL1 trigger number
-------------------------------------------------
begin
if rising_edge(CLK) then
last_reg_timing_trigger <= reg_timing_trigger;
- trigger_timing_rising <= reg_timing_trigger and not last_reg_timing_trigger;
+ trigger_timing_rising <= reg_timing_trigger and not last_reg_timing_trigger and buf_REGIO_COMMON_CTRL_REG_OUT(95);
last_LVL1_TRG_RECEIVED_OUT <= buf_LVL1_TRG_RECEIVED_OUT;
LVL1_TRG_RECEIVED_OUT_rising <= buf_LVL1_TRG_RECEIVED_OUT and not last_LVL1_TRG_RECEIVED_OUT;
got_timing_trigger <= '1';
elsif (LVL1_TRG_RECEIVED_OUT_rising = '1' and buf_LVL1_TRG_TYPE_OUT >= x"8" and buf_LVL1_TRG_INFORMATION_OUT(7) = '1') then
got_timingless_trigger <= '1';
- elsif (LVL1_TRG_RECEIVED_OUT_rising = '1' and not (buf_LVL1_TRG_TYPE_OUT >= x"8" and buf_LVL1_TRG_INFORMATION_OUT(7) = '1')) then
+ elsif (LVL1_TRG_RECEIVED_OUT_rising = '1' and not (buf_LVL1_TRG_TYPE_OUT >= x"8" and buf_LVL1_TRG_INFORMATION_OUT(7) = '1') and got_timing_trigger = '0') then
timing_trigger_missing <= '1';
end if;
end if;
-- end if;
-- end process;
+
+
-------------------------------------------------
-- Connect Outputs
-------------------------------------------------