Commit 0f9aee8f authored by Grzegorz Daniluk's avatar Grzegorz Daniluk

pstats: more registers to improve timing

parent 350789e8
......@@ -180,10 +180,10 @@ begin
events_presub <= events_reg((f_onehot_decode(events_grant)+1)*g_cnt_pw-1 downto f_onehot_decode(events_grant)*g_cnt_pw);
GEN_EVT_CLR: for i in 0 to c_rr_range-1 generate
events_clr((i+1)*g_cnt_pw-1 downto i*g_cnt_pw) <= events_presub when(cnt_state=WRITE and events_grant(i)='1') else
(others=>'0');
end generate;
--GEN_EVT_CLR: for i in 0 to c_rr_range-1 generate
-- events_clr((i+1)*g_cnt_pw-1 downto i*g_cnt_pw) <= events_presub when(cnt_state=WRITE and events_grant(i)='1') else
-- (others=>'0');
--end generate;
mem_adr <= f_onehot_decode(events_grant);
......@@ -195,6 +195,7 @@ begin
mem_wr <= '0';
events_sub <= (others => '0');
events_preg <= (others => '0');
events_clr <= (others=>'0');
else
......@@ -202,6 +203,7 @@ begin
when SEL =>
--check each segment of events_i starting from the one pointed by round robin
mem_wr <= '0';
events_clr <= (others=>'0');
f_rr_arbitrate(events_ored, events_preg, events_grant);
if(or_reduce(events_ored) = '1') then
......@@ -211,6 +213,13 @@ begin
end if;
when WRITE =>
for i in 0 to c_rr_range-1 loop
if events_grant(i) = '1' then
events_clr((i+1)*g_cnt_pw-1 downto i*g_cnt_pw) <= events_reg((i+1)*g_cnt_pw-1 downto i*g_cnt_pw);
else
events_clr((i+1)*g_cnt_pw-1 downto i*g_cnt_pw) <= (others=>'0');
end if;
end loop;
events_sub <= events_presub;
mem_wr <= '1';
cnt_state <= SEL;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment