-------------------------------------------------------------------------------
-- Hit Counters
GenHitCounter : for i in 0 to CHANNEL_NUMBER-1 generate
- edge_rising_100(i) <= '0' when edge_rising_100_3r(i) = '1' else
- '1' when rising_edge(hit_in_s(i));
- edge_rising_100_r(i) <= edge_rising_100(i) when rising_edge(CLK_READOUT);
- edge_rising_100_2r(i) <= edge_rising_100_r(i) when rising_edge(CLK_READOUT);
- edge_rising_100_3r(i) <= edge_rising_100_r(i) and not edge_rising_100_2r(i) when rising_edge(CLK_READOUT);
+ --edge_rising_100(i) <= '0' when edge_rising_100_3r(i) = '1' else
+ --'1' when rising_edge(hit_in_s(i));
+ edge_rising_100(i) <= (hit_in_s(i) or edge_rising_100(i)) and not edge_rising_100_r(i);
+
+ edge_rising_100_r(i) <= hit_in_s(i) or edge_rising_100(i) when rising_edge(CLK_READOUT);
+ edge_rising_100_2r(i) <= edge_rising_100_r(i) when rising_edge(CLK_READOUT);
+ edge_rising_100_3r(i) <= edge_rising_100_2r(i) when rising_edge(CLK_READOUT);
+ --edge_rising_100_3r(i) <= edge_rising_100_1r(i) and not edge_rising_100_2r(i) when rising_edge(CLK_READOUT);
--purpose: Counts the detected hits
Hit_Detect_Counter : process (CLK_READOUT)
if rising_edge(CLK_READOUT) then
if RESET_COUNTERS = '1' then
ch_hit_detect_cntr(i) <= (others => '0');
- elsif edge_rising_100_3r(i) = '1' then
+ elsif edge_rising_100_2r(i) = '1' and edge_rising_100_3r(i) = '0' then
ch_hit_detect_cntr(i) <= ch_hit_detect_cntr(i) + to_unsigned(1, 31);
end if;
end if;