- fixed bus-timeout for nx=0 and ny /= 0

Committed on the Free edition of March Hare Software CVSNT Server.
Upgrade to CVS Suite for more features and support:
http://march-hare.com/cvsnt/


git-svn-id: http://moon:8086/svn/vhdl/trunk@915 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
2010-05-15 23:43:34 +00:00
parent 66514fbf7c
commit 26a0a30fdc
+14 -10
View File
@@ -671,12 +671,12 @@ proc_blit_src_counter:
blit_src_first <= '0'; blit_src_first <= '0';
if blit_src_row_cnt /= blit_nx then if blit_src_row_cnt /= blit_nx then
blit_src_row_cnt <= blit_src_row_cnt + 1; blit_src_row_cnt <= blit_src_row_cnt + 1;
if blit_src_unaligned = '1' then
blit_src_do_extra2 <= '1';
end if;
elsif blit_src_do_extra2 = '1' then elsif blit_src_do_extra2 = '1' then
blit_src_do_extra2 <= '0'; blit_src_do_extra2 <= '0';
else else
if blit_src_unaligned = '1' then
blit_src_do_extra2 <= '1';
end if;
blit_src_row_cnt <= (others => '0'); blit_src_row_cnt <= (others => '0');
blit_src_first <= blit_src_unaligned; blit_src_first <= blit_src_unaligned;
end if; end if;
@@ -725,16 +725,19 @@ proc_blit_addr_src:
blit_src_off_y <= blit_dimx_src_0; blit_src_off_y <= blit_dimx_src_0;
blit_src_finish <= '0'; blit_src_finish <= '0';
blit_src_do_extra <= '0'; blit_src_do_extra <= '0';
if blit_src_addr (2 downto 0) /= "000" then
blit_src_do_extra <= not blit_const_color_en;
end if;
elsif blit_src_finish = '0' and ((STB_O_blit_src = '1' and bus_fifo_rdy = '1') or (blit_const_color_en = '1' and blitfifo_src_full = '0')) then elsif blit_src_finish = '0' and ((STB_O_blit_src = '1' and bus_fifo_rdy = '1') or (blit_const_color_en = '1' and blitfifo_src_full = '0')) then
blit_src_offset <= blit_src_offset + 8; blit_src_offset <= blit_src_offset + 8;
if blit_src_cnt_x /= blit_nx then if blit_src_cnt_x /= blit_nx then
blit_src_cnt_x <= blit_src_cnt_x + 1; blit_src_cnt_x <= blit_src_cnt_x + 1;
if blit_src_unaligned = '1' then
blit_src_do_extra <= '1';
end if;
elsif blit_src_do_extra = '1' then elsif blit_src_do_extra = '1' then
blit_src_do_extra <= '0'; blit_src_do_extra <= '0';
else else
if blit_src_unaligned = '1' then
blit_src_do_extra <= '1';
end if;
if blit_src_cnt_y /= blit_ny then if blit_src_cnt_y /= blit_ny then
blit_src_cnt_x <= (others => '0'); blit_src_cnt_x <= (others => '0');
blit_src_offset <= blit_src_off_y; blit_src_offset <= blit_src_off_y;
@@ -797,7 +800,8 @@ proc_blit_addr_dst:
blit_dst_last <= '0'; blit_dst_last <= '0';
blit_dst_unaligned <= '0'; blit_dst_unaligned <= '0';
if blit_addr_dst (2 downto 0) /= "000" then if blit_addr_dst (2 downto 0) /= "000" then
blit_dst_unaligned <= '1'; blit_dst_unaligned <= '1';
blit_dst_do_extra <= '1';
end if; end if;
elsif blit_dst_finish = '0' and (STB_O_blit_dst = '1' and bus_fifo_rdy = '1') then elsif blit_dst_finish = '0' and (STB_O_blit_dst = '1' and bus_fifo_rdy = '1') then
blit_dst_first <= blit_dst_last; blit_dst_first <= blit_dst_last;
@@ -805,13 +809,13 @@ proc_blit_addr_dst:
blit_dst_offset <= blit_dst_offset + 8; blit_dst_offset <= blit_dst_offset + 8;
if blit_dst_cnt_x /= blit_nx then if blit_dst_cnt_x /= blit_nx then
blit_dst_cnt_x <= blit_dst_cnt_x + 1; blit_dst_cnt_x <= blit_dst_cnt_x + 1;
if blit_dst_unaligned = '1' then
blit_dst_do_extra <= '1';
end if;
elsif blit_dst_do_extra = '1' then elsif blit_dst_do_extra = '1' then
blit_dst_do_extra <= '0'; blit_dst_do_extra <= '0';
blit_dst_last <= '1'; blit_dst_last <= '1';
else else
if blit_dst_unaligned = '1' then
blit_dst_do_extra <= '1';
end if;
if blit_dst_cnt_y /= blit_ny then if blit_dst_cnt_y /= blit_ny then
blit_dst_cnt_x <= (others => '0'); blit_dst_cnt_x <= (others => '0');
blit_dst_offset <= blit_dst_off_y; blit_dst_offset <= blit_dst_off_y;