signal hitgen_state : hitgen_state_type := idle;
signal ro_delcounter : unsigned(7 downto 0) := (others => '0');
- signal hitgen_delcounter : integer range 0 to 2 := 2;
+ signal hitgen_delcounter : integer range 0 to 2 := 0;
signal delaycounters1 : std_logic_vector(31 downto 0) := (others => '0');
signal delaycounters2 : std_logic_vector(31 downto 0) := (others => '0');
signal pauseregister : std_logic_vector(31 downto 0) := (others => '0');
testoutro(7 downto 6) <= (others => '0');
case hitgen_state is
when idle =>
- hitgen_delcounter <= 2;
+ hitgen_delcounter <= 0;
if(start_hitgen_i = '1') then
hitgen_state <= genheader;
increase_eventcounter_hitgen_i <= '1';
when genheader =>
testoutro(6) <= '1';
hitgen_state <= genheader;
- hitgen_delcounter <= hitgen_delcounter - 1;
+ hitgen_delcounter <= hitgen_delcounter + 1;
ro_busy_hitgen_i <= '1';
case hitgen_delcounter is
- when 2 => --write event header
+ when 0 => --write event header
memdata_hitgen_i <= sensor_id;
memwren_hitgen_i <= '1';
ngeneratehitscounter <= unsigned(ngeneratehits);
when 1 =>
memdata_hitgen_i <= x"FABEABBA";
memwren_hitgen_i <= '1';
- when 0 =>
+ when 2 =>
memdata_hitgen_i <= std_logic_vector(eventcounter);
memwren_hitgen_i <= '1';
hitgen_state <= genhits;
- when others =>
- hitgen_state <= genheader;
end case;
when genhits => --write event data
testoutro(7) <= '1';
ro_busy_hitgen_i <= '1';
if ngeneratehitscounter > "0000000000000000" then
- hitgen_delcounter <= hitgen_delcounter;
ngeneratehitscounter <= ngeneratehitscounter - 1;
gen_hit_col <= std_logic_vector(unsigned(gen_hit_col) + 5);
gen_hit_row <= std_logic_vector(unsigned(gen_hit_row) + 7);
memdata_hitgen_i <= x"F0F" & "0" & gen_hit_col(4 downto 0) & gen_hit_row & graycount;
memwren_hitgen_i <= '1';
- if(gen_hit_row > "10000") then
+ if(gen_hit_row > "100000") then
gen_hit_row <= "000000";
end if;
else
slv_data_out(15 downto 0) <= hitbus_timeout;
slv_ack_out <= '1';
when x"0404" =>
- slv_data_out <= szintilatorEdgeCounter;
+ slv_data_out <= std_logic_vector(szintilatorEdgeCounter);
slv_ack_out <= '1';
when x"0405" =>
- slv_data_out <= hitbusEdgeCounter;
+ slv_data_out <= std_logic_vector(hitbusEdgeCounter);
slv_ack_out <= '1';
when others =>
slv_unknown_addr_out <= '1';