- added BLIT command FIFO
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@960 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
@@ -463,12 +463,6 @@ VGA_CLK_GEN: process
|
|||||||
ack_v(i) := '0';
|
ack_v(i) := '0';
|
||||||
end loop;
|
end loop;
|
||||||
else
|
else
|
||||||
if blit_count_rst = '1' then
|
|
||||||
for i in 0 to 127 loop
|
|
||||||
-- ram_dst(i) <= X"DEADBEEF" & X"DEADBEEF";
|
|
||||||
ram_dst(i) <= (others => '-');
|
|
||||||
end loop;
|
|
||||||
end if;
|
|
||||||
if (CYC_I and STB_I) = '1' and rdy = '1' then
|
if (CYC_I and STB_I) = '1' and rdy = '1' then
|
||||||
if WE_I = '0' then
|
if WE_I = '0' then
|
||||||
if ADDR_I(30) = '1' then
|
if ADDR_I(30) = '1' then
|
||||||
@@ -490,6 +484,7 @@ VGA_CLK_GEN: process
|
|||||||
ack_v := ack_v(10 downto 0) & '1';
|
ack_v := ack_v(10 downto 0) & '1';
|
||||||
else -- WE=1
|
else -- WE=1
|
||||||
ram_data := ram_dst(to_integer(ADDR_I(31 downto 3)));
|
ram_data := ram_dst(to_integer(ADDR_I(31 downto 3)));
|
||||||
|
ram_data := (others => '-');
|
||||||
if ADDR_I(2) = '0' then
|
if ADDR_I(2) = '0' then
|
||||||
if SEL_I = "11111111" then
|
if SEL_I = "11111111" then
|
||||||
ram_dst(to_integer(ADDR_I(31 downto 3))) <= MDAT_I;
|
ram_dst(to_integer(ADDR_I(31 downto 3))) <= MDAT_I;
|
||||||
@@ -560,9 +555,9 @@ STIMULUS: process
|
|||||||
STB_O <= '1';
|
STB_O <= '1';
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
STB_O <= '0';
|
STB_O <= '0';
|
||||||
CYC_O <= '0';
|
|
||||||
wait until rising_edge(CLK_O) and ACK_I = '1';
|
wait until rising_edge(CLK_O) and ACK_I = '1';
|
||||||
result := SDAT_I;
|
result := SDAT_I;
|
||||||
|
CYC_O <= '0';
|
||||||
|
|
||||||
end procedure reg_read;
|
end procedure reg_read;
|
||||||
|
|
||||||
@@ -572,15 +567,17 @@ STIMULUS: process
|
|||||||
RST_O <= '0';
|
RST_O <= '0';
|
||||||
wait for 60*CLK_PERIOD;
|
wait for 60*CLK_PERIOD;
|
||||||
|
|
||||||
|
reg_write(X"0000_0018", X"4000_0000"); -- set frontbuffer address
|
||||||
|
reg_write(X"0000_001C", X"4000_0000"); -- set backbuffer address
|
||||||
|
reg_write(X"0000_0020", X"0000_0002"); -- set BLIT source address 0
|
||||||
|
reg_write(X"0000_0028", X"0000_0002"); -- set BLIT source dimension 0
|
||||||
|
reg_write(X"0000_0030", X"0000_0002"); -- set BLIT source address 1
|
||||||
|
reg_write(X"0000_0038", X"0000_0002"); -- set BLIT source dimension 1
|
||||||
|
reg_write(X"0000_0050", X"0000_0002"); -- set BLIT destination address
|
||||||
|
reg_write(X"0000_0058", X"0000_0002"); -- set BLIT destination dimension
|
||||||
|
|
||||||
-- Enable master
|
-- Enable master
|
||||||
CYC_O <= '1';
|
reg_write(X"0000_0000", X"0000_0002");
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
STB_O <= '1';
|
|
||||||
WE_O <= '1';
|
|
||||||
SDAT_O <= X"0000_0002";
|
|
||||||
ADDR_O <= X"0000_0000";
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
STB_O <= '0';
|
|
||||||
|
|
||||||
-- Read status
|
-- Read status
|
||||||
CYC_O <= '1';
|
CYC_O <= '1';
|
||||||
@@ -713,7 +710,7 @@ STIMULUS: process
|
|||||||
|
|
||||||
for i in 0 to blit_size_array_t'length-1 loop
|
for i in 0 to blit_size_array_t'length-1 loop
|
||||||
|
|
||||||
wait for 600*CLK_PERIOD;
|
-- wait for 600*CLK_PERIOD;
|
||||||
|
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
-- BLIT aligned => aligned test
|
-- BLIT aligned => aligned test
|
||||||
@@ -755,7 +752,7 @@ STIMULUS: process
|
|||||||
reg_read(X"0000_0000");
|
reg_read(X"0000_0000");
|
||||||
reg_write(X"0000_0000", (result and not X"0001_0000") or X"0000_0100");
|
reg_write(X"0000_0000", (result and not X"0001_0000") or X"0000_0100");
|
||||||
|
|
||||||
wait for 600*CLK_PERIOD;
|
-- wait for 600*CLK_PERIOD;
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
-- BLIT unaligned => aligned test
|
-- BLIT unaligned => aligned test
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
@@ -795,7 +792,7 @@ STIMULUS: process
|
|||||||
reg_read(X"0000_0000");
|
reg_read(X"0000_0000");
|
||||||
reg_write(X"0000_0000", (result and not X"0001_0000") or X"0000_0100");
|
reg_write(X"0000_0000", (result and not X"0001_0000") or X"0000_0100");
|
||||||
|
|
||||||
wait for 600*CLK_PERIOD;
|
-- wait for 600*CLK_PERIOD;
|
||||||
|
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
-- BLIT aligned => unaligned test
|
-- BLIT aligned => unaligned test
|
||||||
@@ -836,7 +833,7 @@ STIMULUS: process
|
|||||||
reg_read(X"0000_0000");
|
reg_read(X"0000_0000");
|
||||||
reg_write(X"0000_0000", (result and not X"0001_0000") or X"0000_0100");
|
reg_write(X"0000_0000", (result and not X"0001_0000") or X"0000_0100");
|
||||||
|
|
||||||
wait for 600*CLK_PERIOD;
|
-- wait for 600*CLK_PERIOD;
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
-- BLIT unaligned => unaligned test
|
-- BLIT unaligned => unaligned test
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
@@ -876,7 +873,7 @@ STIMULUS: process
|
|||||||
reg_read(X"0000_0000");
|
reg_read(X"0000_0000");
|
||||||
reg_write(X"0000_0000", (result and not X"0001_0000") or X"0000_0100");
|
reg_write(X"0000_0000", (result and not X"0001_0000") or X"0000_0100");
|
||||||
|
|
||||||
wait for 600*CLK_PERIOD;
|
-- wait for 600*CLK_PERIOD;
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
-- BLIT const => aligned test
|
-- BLIT const => aligned test
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
@@ -918,7 +915,7 @@ STIMULUS: process
|
|||||||
reg_read(X"0000_0000");
|
reg_read(X"0000_0000");
|
||||||
reg_write(X"0000_0000", result or X"0001_0100");
|
reg_write(X"0000_0000", result or X"0001_0100");
|
||||||
|
|
||||||
wait for 600*CLK_PERIOD;
|
-- wait for 600*CLK_PERIOD;
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
-- BLIT const => unaligned test
|
-- BLIT const => unaligned test
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
@@ -960,7 +957,7 @@ STIMULUS: process
|
|||||||
reg_read(X"0000_0000");
|
reg_read(X"0000_0000");
|
||||||
reg_write(X"0000_0000", result or X"0001_0100");
|
reg_write(X"0000_0000", result or X"0001_0100");
|
||||||
|
|
||||||
wait for 600*CLK_PERIOD;
|
-- wait for 600*CLK_PERIOD;
|
||||||
|
|
||||||
end loop;
|
end loop;
|
||||||
state <= IDLE;
|
state <= IDLE;
|
||||||
|
|||||||
+419
-314
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user