- using now 64-bit SDR interface (2 SDRAMS)
git-svn-id: http://moon:8086/svn/vhdl/trunk@72 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
@@ -27,7 +27,7 @@ USE IEEE.NUMERIC_STD.ALL;
|
|||||||
|
|
||||||
package sdram_config is
|
package sdram_config is
|
||||||
|
|
||||||
constant DDR_DATA_WIDTH : positive := 16; -- External DDR-SDRAM Module data bus width
|
constant DDR_DATA_WIDTH : positive := 32; -- External DDR-SDRAM Module data bus width
|
||||||
constant DDR_ADDR_WIDTH : positive := 13; -- number of address lines to DDR-SDRAM Device/Module
|
constant DDR_ADDR_WIDTH : positive := 13; -- number of address lines to DDR-SDRAM Device/Module
|
||||||
constant DDR_BANK_WIDTH : positive := 2; -- Number of BANK address lines of external DDR-SDRAM
|
constant DDR_BANK_WIDTH : positive := 2; -- Number of BANK address lines of external DDR-SDRAM
|
||||||
constant DDR_ROW_ADDR_WIDTH : positive := 13; --
|
constant DDR_ROW_ADDR_WIDTH : positive := 13; --
|
||||||
|
|||||||
@@ -76,8 +76,43 @@ architecture struct of tb_sdram_ctrl_frontend_wb is
|
|||||||
signal dout_reg : unsigned(31 downto 0);
|
signal dout_reg : unsigned(31 downto 0);
|
||||||
signal dout_cnt : natural range 0 to 255;
|
signal dout_cnt : natural range 0 to 255;
|
||||||
|
|
||||||
|
type sd_cmd_t is (nop, lmr, ar, pre, act, write, read, bst);
|
||||||
|
signal sd_cmd : sd_cmd_t;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
|
process(part_cs_n, part_ras_n, part_cas_n, part_we_n)
|
||||||
|
variable cmd : unsigned (2 downto 0);
|
||||||
|
|
||||||
|
begin
|
||||||
|
cmd := part_ras_n & part_cas_n & part_we_n;
|
||||||
|
sd_cmd <= nop;
|
||||||
|
if part_cs_n = '0' then
|
||||||
|
case cmd is
|
||||||
|
when "000" =>
|
||||||
|
sd_cmd <= lmr;
|
||||||
|
when "001" =>
|
||||||
|
sd_cmd <= ar;
|
||||||
|
when "010" =>
|
||||||
|
sd_cmd <= pre;
|
||||||
|
when "011" =>
|
||||||
|
sd_cmd <= act;
|
||||||
|
when "100" =>
|
||||||
|
sd_cmd <= write;
|
||||||
|
when "101" =>
|
||||||
|
sd_cmd <= read;
|
||||||
|
when "110" =>
|
||||||
|
sd_cmd <= bst;
|
||||||
|
when "111" =>
|
||||||
|
sd_cmd <= nop;
|
||||||
|
|
||||||
|
when others =>
|
||||||
|
sd_cmd <= nop;
|
||||||
|
|
||||||
|
end case;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
inst_clockgen : entity work.clockgen
|
inst_clockgen : entity work.clockgen
|
||||||
GENERIC MAP
|
GENERIC MAP
|
||||||
(
|
(
|
||||||
@@ -144,13 +179,12 @@ inst_clockgen : entity work.clockgen
|
|||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
-- MICRON DDR SDRAM Simulation Model
|
-- MICRON DDR SDRAM Simulation Model
|
||||||
i_mt46v16m16_0 : entity work.mt46v16m16
|
i_mt46v16m16_0 : entity work.mt46v16m16
|
||||||
port map
|
port map
|
||||||
(
|
(
|
||||||
dq => std_logic_vector(part_data),
|
dq => std_logic_vector(part_data(15 downto 0)),
|
||||||
dqs => std_logic_vector(part_dqs),
|
dqs => std_logic_vector(part_dqs(1 downto 0)),
|
||||||
addr => std_logic_vector(part_addr),
|
addr => std_logic_vector(part_addr),
|
||||||
ba => std_logic_vector(part_ba),
|
ba => std_logic_vector(part_ba),
|
||||||
clk => part_clk_p,
|
clk => part_clk_p,
|
||||||
@@ -160,7 +194,25 @@ i_mt46v16m16_0 : entity work.mt46v16m16
|
|||||||
ras_n => part_ras_n,
|
ras_n => part_ras_n,
|
||||||
cas_n => part_cas_n,
|
cas_n => part_cas_n,
|
||||||
we_n => part_we_n,
|
we_n => part_we_n,
|
||||||
dm => std_logic_vector(part_dm)
|
dm => std_logic_vector(part_dm(1 downto 0))
|
||||||
|
);
|
||||||
|
|
||||||
|
-- MICRON DDR SDRAM Simulation Model
|
||||||
|
i_mt46v16m16_1 : entity work.mt46v16m16
|
||||||
|
port map
|
||||||
|
(
|
||||||
|
dq => std_logic_vector(part_data(31 downto 16)),
|
||||||
|
dqs => std_logic_vector(part_dqs(3 downto 2)),
|
||||||
|
addr => std_logic_vector(part_addr),
|
||||||
|
ba => std_logic_vector(part_ba),
|
||||||
|
clk => part_clk_p,
|
||||||
|
clk_n => part_clk_n,
|
||||||
|
cke => part_cke,
|
||||||
|
cs_n => part_cs_n,
|
||||||
|
ras_n => part_ras_n,
|
||||||
|
cas_n => part_cas_n,
|
||||||
|
we_n => part_we_n,
|
||||||
|
dm => std_logic_vector(part_dm(3 downto 2))
|
||||||
);
|
);
|
||||||
|
|
||||||
CLK_GEN: process
|
CLK_GEN: process
|
||||||
@@ -198,125 +250,22 @@ STIMULUS: process
|
|||||||
WE_O <= '1';
|
WE_O <= '1';
|
||||||
DAT_O <= X"1234_0000";
|
DAT_O <= X"1234_0000";
|
||||||
ADDR_O <= X"0000_0000";
|
ADDR_O <= X"0000_0000";
|
||||||
|
|
||||||
|
for i in 0 to 8192 loop
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
DAT_O <= DAT_O + 1;
|
DAT_O <= DAT_O + 1;
|
||||||
ADDR_O <= ADDR_O + 4;
|
ADDR_O <= ADDR_O + 4;
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
end loop;
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
DAT_O <= DAT_O + 1;
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
STB_O <= '0';
|
STB_O <= '0';
|
||||||
wait until rising_edge(CLK_O) and ACK_I = '1';
|
wait until rising_edge(CLK_O);
|
||||||
CYC_O <= '0';
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
wait for 3*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
-- 8-word burst cycle
|
-- 8-word burst cycle
|
||||||
wait for 3*CLK_PERIOD;
|
|
||||||
dout_rst <= '1';
|
dout_rst <= '1';
|
||||||
wait until rising_edge(CLK_O);
|
wait until rising_edge(CLK_O);
|
||||||
dout_rst <= '0';
|
dout_rst <= '0';
|
||||||
@@ -324,27 +273,21 @@ STIMULUS: process
|
|||||||
STB_O <= '1';
|
STB_O <= '1';
|
||||||
WE_O <= '0';
|
WE_O <= '0';
|
||||||
ADDR_O <= X"0000_0000";
|
ADDR_O <= X"0000_0000";
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
STB_O <= '0';
|
|
||||||
|
|
||||||
wait until rising_edge(CLK_O) and dout_cnt = 7;
|
for i in 0 to 31 loop
|
||||||
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
|
DAT_O <= DAT_O + 1;
|
||||||
|
ADDR_O <= ADDR_O + 4;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
STB_O <= '0';
|
||||||
|
wait until rising_edge(CLK_O) and dout_cnt = 31;
|
||||||
CYC_O <= '0';
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
wait for 3*CLK_PERIOD;
|
wait for 3*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
wait until rising_edge(CLK_O);
|
wait until rising_edge(CLK_O);
|
||||||
-- 1-word burst cycle
|
-- 1-word burst cycle
|
||||||
CYC_O <= '1';
|
CYC_O <= '1';
|
||||||
@@ -355,10 +298,13 @@ STIMULUS: process
|
|||||||
DAT_O <= X"DEADBEEF";
|
DAT_O <= X"DEADBEEF";
|
||||||
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';
|
||||||
wait until rising_edge(CLK_O) and ACK_I = '1';
|
wait until rising_edge(CLK_O);
|
||||||
CYC_O <= '0';
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
wait for 3*CLK_PERIOD;
|
wait for 3*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
wait until rising_edge(CLK_O);
|
wait until rising_edge(CLK_O);
|
||||||
-- 1-word burst cycle
|
-- 1-word burst cycle
|
||||||
CYC_O <= '1';
|
CYC_O <= '1';
|
||||||
@@ -370,134 +316,536 @@ STIMULUS: process
|
|||||||
wait until rising_edge(CLK_O) and ACK_I = '1';
|
wait until rising_edge(CLK_O) and ACK_I = '1';
|
||||||
CYC_O <= '0';
|
CYC_O <= '0';
|
||||||
|
|
||||||
-- 8-word burst cycle
|
------------------------------------------------------------
|
||||||
wait for 3*CLK_PERIOD;
|
wait for 3*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
-- 8-word burst cycle
|
||||||
dout_rst <= '1';
|
dout_rst <= '1';
|
||||||
wait until rising_edge(CLK_O);
|
wait until rising_edge(CLK_O);
|
||||||
dout_rst <= '0';
|
dout_rst <= '0';
|
||||||
|
|
||||||
CYC_O <= '1';
|
CYC_O <= '1';
|
||||||
STB_O <= '1';
|
STB_O <= '1';
|
||||||
WE_O <= '0';
|
WE_O <= '0';
|
||||||
ADDR_O <= X"0000_0000";
|
ADDR_O <= X"0000_0000";
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
STB_O <= '0';
|
|
||||||
MRDY_O <= '0';
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
STB_O <= '1';
|
|
||||||
MRDY_O <= '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
ADDR_O <= ADDR_O + 4;
|
|
||||||
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
|
||||||
STB_O <= '0';
|
|
||||||
|
|
||||||
wait until rising_edge(CLK_O) and dout_cnt = 54;
|
for i in 0 to 31 loop
|
||||||
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
|
DAT_O <= DAT_O + 1;
|
||||||
|
ADDR_O <= ADDR_O + 4;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
STB_O <= '0';
|
||||||
|
wait until rising_edge(CLK_O) and dout_cnt = 31;
|
||||||
CYC_O <= '0';
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
wait for 10*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
for k in 0 to 3 loop
|
||||||
|
------------------------------------------------------------
|
||||||
|
-- wait for 3*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
-- 8-word burst cycle
|
||||||
|
dout_rst <= '1';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
dout_rst <= '0';
|
||||||
|
|
||||||
|
CYC_O <= '1';
|
||||||
|
STB_O <= '1';
|
||||||
|
WE_O <= '0';
|
||||||
|
ADDR_O <= X"0000_0000";
|
||||||
|
|
||||||
|
for i in 0 to 7 loop
|
||||||
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
|
DAT_O <= DAT_O + 1;
|
||||||
|
ADDR_O <= ADDR_O + 4;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
STB_O <= '0';
|
||||||
|
wait until rising_edge(CLK_O) and dout_cnt = 7;
|
||||||
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
-- wait for 3*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
-- 8-word burst cycle
|
||||||
|
dout_rst <= '1';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
dout_rst <= '0';
|
||||||
|
|
||||||
|
CYC_O <= '1';
|
||||||
|
STB_O <= '1';
|
||||||
|
WE_O <= '0';
|
||||||
|
ADDR_O <= X"0000_0400";
|
||||||
|
|
||||||
|
for i in 0 to 7 loop
|
||||||
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
|
DAT_O <= DAT_O + 1;
|
||||||
|
ADDR_O <= ADDR_O + 4;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
STB_O <= '0';
|
||||||
|
wait until rising_edge(CLK_O) and dout_cnt = 7;
|
||||||
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
-- wait for 3*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
-- 8-word burst cycle
|
||||||
|
dout_rst <= '1';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
dout_rst <= '0';
|
||||||
|
|
||||||
|
CYC_O <= '1';
|
||||||
|
STB_O <= '1';
|
||||||
|
WE_O <= '0';
|
||||||
|
ADDR_O <= X"0000_0800";
|
||||||
|
|
||||||
|
for i in 0 to 7 loop
|
||||||
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
|
DAT_O <= DAT_O + 1;
|
||||||
|
ADDR_O <= ADDR_O + 4;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
STB_O <= '0';
|
||||||
|
wait until rising_edge(CLK_O) and dout_cnt = 7;
|
||||||
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
-- wait for 3*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
-- 8-word burst cycle
|
||||||
|
dout_rst <= '1';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
dout_rst <= '0';
|
||||||
|
|
||||||
|
CYC_O <= '1';
|
||||||
|
STB_O <= '1';
|
||||||
|
WE_O <= '0';
|
||||||
|
ADDR_O <= X"0000_0C00";
|
||||||
|
|
||||||
|
for i in 0 to 7 loop
|
||||||
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
|
DAT_O <= DAT_O + 1;
|
||||||
|
ADDR_O <= ADDR_O + 4;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
STB_O <= '0';
|
||||||
|
wait until rising_edge(CLK_O) and dout_cnt = 7;
|
||||||
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
wait for 10*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
for k in 0 to 3 loop
|
||||||
|
|
||||||
|
-- 8-word burst cycle
|
||||||
|
dout_rst <= '1';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
dout_rst <= '0';
|
||||||
|
|
||||||
|
CYC_O <= '1';
|
||||||
|
STB_O <= '1';
|
||||||
|
WE_O <= '0';
|
||||||
|
ADDR_O <= X"0000_1000";
|
||||||
|
|
||||||
|
for i in 0 to 7 loop
|
||||||
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
|
DAT_O <= DAT_O + 1;
|
||||||
|
ADDR_O <= ADDR_O + 4;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
STB_O <= '0';
|
||||||
|
wait until rising_edge(CLK_O) and dout_cnt = 7;
|
||||||
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
-- wait for 3*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
-- 8-word burst cycle
|
||||||
|
dout_rst <= '1';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
dout_rst <= '0';
|
||||||
|
|
||||||
|
CYC_O <= '1';
|
||||||
|
STB_O <= '1';
|
||||||
|
WE_O <= '0';
|
||||||
|
ADDR_O <= X"0000_1400";
|
||||||
|
|
||||||
|
for i in 0 to 7 loop
|
||||||
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
|
DAT_O <= DAT_O + 1;
|
||||||
|
ADDR_O <= ADDR_O + 4;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
STB_O <= '0';
|
||||||
|
wait until rising_edge(CLK_O) and dout_cnt = 7;
|
||||||
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
-- wait for 3*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
-- 8-word burst cycle
|
||||||
|
dout_rst <= '1';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
dout_rst <= '0';
|
||||||
|
|
||||||
|
CYC_O <= '1';
|
||||||
|
STB_O <= '1';
|
||||||
|
WE_O <= '0';
|
||||||
|
ADDR_O <= X"0000_1800";
|
||||||
|
|
||||||
|
for i in 0 to 7 loop
|
||||||
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
|
DAT_O <= DAT_O + 1;
|
||||||
|
ADDR_O <= ADDR_O + 4;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
STB_O <= '0';
|
||||||
|
wait until rising_edge(CLK_O) and dout_cnt = 7;
|
||||||
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
-- wait for 3*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
-- 8-word burst cycle
|
||||||
|
dout_rst <= '1';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
dout_rst <= '0';
|
||||||
|
|
||||||
|
CYC_O <= '1';
|
||||||
|
STB_O <= '1';
|
||||||
|
WE_O <= '0';
|
||||||
|
ADDR_O <= X"0000_1C00";
|
||||||
|
|
||||||
|
for i in 0 to 7 loop
|
||||||
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
|
DAT_O <= DAT_O + 1;
|
||||||
|
ADDR_O <= ADDR_O + 4;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
STB_O <= '0';
|
||||||
|
wait until rising_edge(CLK_O) and dout_cnt = 7;
|
||||||
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
wait for 10*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
for k in 0 to 3 loop
|
||||||
|
------------------------------------------------------------
|
||||||
|
-- wait for 3*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
-- 8-word burst cycle
|
||||||
|
dout_rst <= '1';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
dout_rst <= '0';
|
||||||
|
|
||||||
|
CYC_O <= '1';
|
||||||
|
STB_O <= '1';
|
||||||
|
WE_O <= '1';
|
||||||
|
ADDR_O <= X"0000_0000";
|
||||||
|
|
||||||
|
for i in 0 to 7 loop
|
||||||
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
|
DAT_O <= DAT_O + 1;
|
||||||
|
ADDR_O <= ADDR_O + 4;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
STB_O <= '0';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
-- wait for 3*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
-- 8-word burst cycle
|
||||||
|
dout_rst <= '1';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
dout_rst <= '0';
|
||||||
|
|
||||||
|
CYC_O <= '1';
|
||||||
|
STB_O <= '1';
|
||||||
|
WE_O <= '1';
|
||||||
|
ADDR_O <= X"0000_0400";
|
||||||
|
|
||||||
|
for i in 0 to 7 loop
|
||||||
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
|
DAT_O <= DAT_O + 1;
|
||||||
|
ADDR_O <= ADDR_O + 4;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
STB_O <= '0';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
-- wait for 3*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
-- 8-word burst cycle
|
||||||
|
dout_rst <= '1';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
dout_rst <= '0';
|
||||||
|
|
||||||
|
CYC_O <= '1';
|
||||||
|
STB_O <= '1';
|
||||||
|
WE_O <= '1';
|
||||||
|
ADDR_O <= X"0000_0800";
|
||||||
|
|
||||||
|
for i in 0 to 7 loop
|
||||||
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
|
DAT_O <= DAT_O + 1;
|
||||||
|
ADDR_O <= ADDR_O + 4;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
STB_O <= '0';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
-- wait for 3*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
-- 8-word burst cycle
|
||||||
|
dout_rst <= '1';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
dout_rst <= '0';
|
||||||
|
|
||||||
|
CYC_O <= '1';
|
||||||
|
STB_O <= '1';
|
||||||
|
WE_O <= '1';
|
||||||
|
ADDR_O <= X"0000_0C00";
|
||||||
|
|
||||||
|
for i in 0 to 7 loop
|
||||||
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
|
DAT_O <= DAT_O + 1;
|
||||||
|
ADDR_O <= ADDR_O + 4;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
STB_O <= '0';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
wait for 10*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
for k in 0 to 3 loop
|
||||||
|
|
||||||
|
-- 8-word burst cycle
|
||||||
|
dout_rst <= '1';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
dout_rst <= '0';
|
||||||
|
|
||||||
|
CYC_O <= '1';
|
||||||
|
STB_O <= '1';
|
||||||
|
WE_O <= '1';
|
||||||
|
ADDR_O <= X"0000_1000";
|
||||||
|
|
||||||
|
for i in 0 to 7 loop
|
||||||
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
|
DAT_O <= DAT_O + 1;
|
||||||
|
ADDR_O <= ADDR_O + 4;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
STB_O <= '0';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
-- wait for 3*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
-- 8-word burst cycle
|
||||||
|
dout_rst <= '1';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
dout_rst <= '0';
|
||||||
|
|
||||||
|
CYC_O <= '1';
|
||||||
|
STB_O <= '1';
|
||||||
|
WE_O <= '1';
|
||||||
|
ADDR_O <= X"0000_1400";
|
||||||
|
|
||||||
|
for i in 0 to 7 loop
|
||||||
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
|
DAT_O <= DAT_O + 1;
|
||||||
|
ADDR_O <= ADDR_O + 4;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
STB_O <= '0';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
-- wait for 3*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
-- 8-word burst cycle
|
||||||
|
dout_rst <= '1';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
dout_rst <= '0';
|
||||||
|
|
||||||
|
CYC_O <= '1';
|
||||||
|
STB_O <= '1';
|
||||||
|
WE_O <= '1';
|
||||||
|
ADDR_O <= X"0000_1800";
|
||||||
|
|
||||||
|
for i in 0 to 7 loop
|
||||||
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
|
DAT_O <= DAT_O + 1;
|
||||||
|
ADDR_O <= ADDR_O + 4;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
STB_O <= '0';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
-- wait for 3*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
-- 8-word burst cycle
|
||||||
|
dout_rst <= '1';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
dout_rst <= '0';
|
||||||
|
|
||||||
|
CYC_O <= '1';
|
||||||
|
STB_O <= '1';
|
||||||
|
WE_O <= '1';
|
||||||
|
ADDR_O <= X"0000_1C00";
|
||||||
|
|
||||||
|
for i in 0 to 7 loop
|
||||||
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
|
DAT_O <= DAT_O + 1;
|
||||||
|
ADDR_O <= ADDR_O + 4;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
STB_O <= '0';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
wait for 10*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
for k in 0 to 3 loop
|
||||||
|
|
||||||
|
-- 8-word burst cycle
|
||||||
|
dout_rst <= '1';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
dout_rst <= '0';
|
||||||
|
|
||||||
|
CYC_O <= '1';
|
||||||
|
STB_O <= '1';
|
||||||
|
WE_O <= '0';
|
||||||
|
ADDR_O <= X"0000_1000";
|
||||||
|
|
||||||
|
for i in 0 to 7 loop
|
||||||
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
|
DAT_O <= DAT_O + 1;
|
||||||
|
ADDR_O <= ADDR_O + 4;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
STB_O <= '0';
|
||||||
|
wait until rising_edge(CLK_O) and dout_cnt = 7;
|
||||||
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
-- wait for 3*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
-- 8-word burst cycle
|
||||||
|
dout_rst <= '1';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
dout_rst <= '0';
|
||||||
|
|
||||||
|
CYC_O <= '1';
|
||||||
|
STB_O <= '1';
|
||||||
|
WE_O <= '0';
|
||||||
|
ADDR_O <= X"0000_1400";
|
||||||
|
|
||||||
|
for i in 0 to 7 loop
|
||||||
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
|
DAT_O <= DAT_O + 1;
|
||||||
|
ADDR_O <= ADDR_O + 4;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
STB_O <= '0';
|
||||||
|
wait until rising_edge(CLK_O) and dout_cnt = 7;
|
||||||
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
-- wait for 3*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
-- 8-word burst cycle
|
||||||
|
dout_rst <= '1';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
dout_rst <= '0';
|
||||||
|
|
||||||
|
CYC_O <= '1';
|
||||||
|
STB_O <= '1';
|
||||||
|
WE_O <= '0';
|
||||||
|
ADDR_O <= X"0000_1800";
|
||||||
|
|
||||||
|
for i in 0 to 7 loop
|
||||||
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
|
DAT_O <= DAT_O + 1;
|
||||||
|
ADDR_O <= ADDR_O + 4;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
STB_O <= '0';
|
||||||
|
wait until rising_edge(CLK_O) and dout_cnt = 7;
|
||||||
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
-- wait for 3*CLK_PERIOD;
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
-- 8-word burst cycle
|
||||||
|
dout_rst <= '1';
|
||||||
|
wait until rising_edge(CLK_O);
|
||||||
|
dout_rst <= '0';
|
||||||
|
|
||||||
|
CYC_O <= '1';
|
||||||
|
STB_O <= '1';
|
||||||
|
WE_O <= '0';
|
||||||
|
ADDR_O <= X"0000_1C00";
|
||||||
|
|
||||||
|
for i in 0 to 7 loop
|
||||||
|
wait until rising_edge(CLK_O) and SRDY_I = '1';
|
||||||
|
DAT_O <= DAT_O + 1;
|
||||||
|
ADDR_O <= ADDR_O + 4;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
STB_O <= '0';
|
||||||
|
wait until rising_edge(CLK_O) and dout_cnt = 7;
|
||||||
|
CYC_O <= '0';
|
||||||
|
|
||||||
|
end loop;
|
||||||
|
|
||||||
wait;
|
wait;
|
||||||
|
|
||||||
end process;
|
end process;
|
||||||
|
|||||||
Reference in New Issue
Block a user