OpenCores
URL https://opencores.org/ocsvn/pcie_ds_dma/pcie_ds_dma/trunk

Subversion Repositories pcie_ds_dma

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /pcie_ds_dma/trunk/projects
    from Rev 17 to Rev 18
    Reverse comparison

Rev 17 → Rev 18

/ambpex5_sx50t_wishbone/src/testbench/test_pkg.vhd
32,49 → 32,54
--! Initialising
procedure test_init(
 
fname: in string --! file name for report
);
--! Finished
procedure test_close;
 
--! Read registers
procedure test_read_reg (
signal cmd: out bh_cmd; --! command
signal ret: in bh_ret --! answer
);
--! Start DMA with incorrect descriptor
procedure test_dsc_incorrect (
 
 
signal cmd: out bh_cmd; --! command
signal ret: in bh_ret --! answer
);
 
--! Start DMA for one block 4 kB
procedure test_read_4kb (
 
 
signal cmd: out bh_cmd; --! command
signal ret: in bh_ret --! answer
);
 
--! Read block_test_check 8 kB
procedure test_adm_read_8kb (
 
 
signal cmd: out bh_cmd; --! command
signal ret: in bh_ret --! answer
);
 
 
--procedure test_block_main (
 
 
-- signal cmd: out bh_cmd; --! command
-- signal ret: in bh_ret --! answer
-- );
--
 
--procedure test_adm_read_16kb (
 
 
-- signal cmd: out bh_cmd; --! command
-- signal ret: in bh_ret --! answer
-- );
--
 
procedure test_adm_write_16kb (
 
 
signal cmd: out bh_cmd; --! command
signal ret: in bh_ret --! answer
);
---------------------------------------------------------------------------------------------------
--
81,22 → 86,22
--
--
procedure test_num_1(
 
 
signal cmd: out bh_cmd; --! command
signal ret: in bh_ret --! answer
);
procedure test_num_2(
 
 
signal cmd: out bh_cmd; --! command
signal ret: in bh_ret --! answer
);
-- ==> TEST_CHECK.WB_CFG_SLAVE
procedure test_wb_1(
 
 
signal cmd: out bh_cmd; --! command
signal ret: in bh_ret --! answer
);
-- ==> TEST_GEN.WB_CFG_SLAVE
procedure test_wb_2(
 
 
signal cmd: out bh_cmd; --! command
signal ret: in bh_ret --! answer
);
end package test_pkg;
---------------------------------------------------------------------------------------------------
151,11 → 156,70
end test_close;
--! Read registers
procedure test_read_reg (
signal cmd: out bh_cmd; --! command
signal ret: in bh_ret --! answer
)
is
 
variable adr : std_logic_vector( 31 downto 0 );
variable data1 : std_logic_vector( 31 downto 0 );
variable data2 : std_logic_vector( 31 downto 0 );
variable str : line;
begin
write( str, string'("TEST_READ_REG" ));
writeline( log, str );
block_write( cmd, ret, 0, 8, x"0000000F" ); -- BRD_MODE
wait for 100 ns;
--block_read( cmd, ret, 4, 23, x"0000A400" ); -- LOCAL_ADR
wb_block_gen_read( cmd, ret, REG_BLOCK_ID, data1 ); -- read block id
wb_block_check_read( cmd, ret, REG_BLOCK_ID, data2 ); -- read block id
write( str, string'("BLOCK 0 ID: " )); hwrite( str, data1( 15 downto 0 ) );
writeline( log, str );
write( str, string'("BLOCK 1 ID: " )); hwrite( str, data2( 15 downto 0 ) );
writeline( log, str );
wb_read( cmd, ret, 16#1000#, data1 );
wb_read( cmd, ret, 16#3000#, data1 );
 
write( str, string'("0x1000: " )); hwrite( str, data1( 15 downto 0 ) );
writeline( log, str );
write( str, string'("0x3000: " )); hwrite( str, data2( 15 downto 0 ) );
writeline( log, str );
block_write( cmd, ret, 0, 8, x"00000000" ); -- BRD_MODE
wait for 100 ns;
block_write( cmd, ret, 0, 8, x"0000000F" ); -- BRD_MODE
wait for 100 ns;
 
wb_block_gen_read( cmd, ret, REG_BLOCK_ID, data1 ); -- read block id
wb_block_check_read( cmd, ret, REG_BLOCK_ID, data2 ); -- read block id
write( str, string'("BLOCK 0 ID: " )); hwrite( str, data1( 15 downto 0 ) );
writeline( log, str );
write( str, string'("BLOCK 1 ID: " )); hwrite( str, data2( 15 downto 0 ) );
writeline( log, str );
end test_read_reg;
--! Start DMA with incorrect descriptor
procedure test_dsc_incorrect (
 
 
signal cmd: out bh_cmd; --! command
signal ret: in bh_ret --! answer
)
is
 
209,8 → 273,8
 
--! Start DMA for one block 4 kB
procedure test_read_4kb (
 
 
signal cmd: out bh_cmd; --! command
signal ret: in bh_ret --! answer
)
is
 
361,8 → 425,8
 
--! Read block_test_check 8 kB
procedure test_adm_read_8kb (
 
 
signal cmd: out bh_cmd; --! command
signal ret: in bh_ret --! answer
)
is
 
533,8 → 597,8
--
 
--procedure test_block_main (
 
 
-- signal cmd: out bh_cmd; --! command
-- signal ret: in bh_ret --! answer
-- )
--is
--
618,8 → 682,8
--
 
--procedure test_adm_read_16kb (
 
 
-- signal cmd: out bh_cmd; --! command
-- signal ret: in bh_ret --! answer
-- )
--is
--
869,8 → 933,8
--
 
procedure test_adm_write_16kb (
 
 
signal cmd: out bh_cmd; --! command
signal ret: in bh_ret --! answer
)
is
 
1298,8 → 1362,8
-- My procedure for test Updated Design (test_read_4kb like refenernce)
--
procedure test_num_1 (
 
 
signal cmd: out bh_cmd; --! command
signal ret: in bh_ret --! answer
) is
variable adr : std_logic_vector( 31 downto 0 );
1435,8 → 1499,8
--
--
procedure test_num_2 (
 
 
signal cmd: out bh_cmd; --! command
signal ret: in bh_ret --! answer
) is
variable adr : std_logic_vector( 31 downto 0 );
1586,8 → 1650,8
-- ==> TEST_CHECK.WB_CFG_SLAVE
--
procedure test_wb_1 (
 
 
signal cmd: out bh_cmd; --! command
signal ret: in bh_ret --! answer
) is
variable adr : std_logic_vector( 31 downto 0 );
1749,8 → 1813,8
-- ==> TEST_GEN.WB_CFG_SLAVE
--
procedure test_wb_2 (
 
 
signal cmd: out bh_cmd; --! command
signal ret: in bh_ret --! answer
) is
variable adr : std_logic_vector( 31 downto 0 );
/ambpex5_sx50t_wishbone/src/testbench/wb_block_pkg.vhd
1,168 → 1,205
---------------------------------------------------------------------------------------------------
--
-- Title : wb_block_pkg.vhd
-- Author : Dmitry Smekhov
-- Company : Instrumental Systems
-- E-mail : dsmv@insys.ru
--
-- Version : 1.0
---------------------------------------------------------------------------------------------------
--
 
--
---------------------------------------------------------------------------------------------------
--
-- Version 1.0 01.11.2011
 
--
---------------------------------------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_textio.all;
use ieee.std_logic_unsigned.all;
 
library work;
use work.cmd_sim_pkg.all;
 
use std.textio.all;
use std.textio;
 
---------------------------------------------------------------------------------------------------
package wb_block_pkg is
--
-- Define TEST_CHECK reg id (addr in 64b cells)
--
constant REG_BLOCK_ID : integer:=0;
constant REG_BLOCK_VER : integer:=1;
 
constant REG_TEST_CHECK_CTRL : integer:=8;
constant REG_TEST_CHECK_SIZE : integer:=9;
constant REG_TEST_CHECK_ERR_ADR : integer:=16#0A#;
constant REG_TEST_CHECK_WBS_BURST_CTRL : integer:=16#0B#;
 
constant REG_TEST_CHECK_BL_RD : integer:=16#10#;
constant REG_TEST_CHECK_BL_OK : integer:=16#11#;
constant REG_TEST_CHECK_BL_ERROR : integer:=16#12#;
constant REG_TEST_CHECK_TOTAL_ERROR : integer:=16#13#;
constant REG_TEST_CHECK_ERR_DATA : integer:=16#14#;
--
-- Define TEST_GEN reg id (addr in 64b cells)
--
constant REG_TEST_GEN_CTRL : integer:=8;
constant REG_TEST_GEN_SIZE : integer:=9;
constant REG_TEST_GEN_CNT1 : integer:=16#0A#;
constant REG_TEST_GEN_CNT2 : integer:=16#0B#;
constant REG_TEST_GEN_BL_WR : integer:=16#11#;
--
-- Define SoPC ADDR (must be EQU to: ...\src\top\sp605_lx45t_wishbone_sopc_wb.vhd)
--
constant TEST_CHECK_WB_CFG_SLAVE : std_logic_vector( 31 downto 0) := x"20000000";
constant TEST_CHECK_WB_BURST_SLAVE : std_logic_vector( 31 downto 0) := x"20001000"; -- check data: write-only
constant TEST_GEN_WB_CFG_SLAVE : std_logic_vector( 31 downto 0) := x"20002000";
constant TEST_GEN_WB_BURST_SLAVE : std_logic_vector( 31 downto 0) := x"20003000"; -- generate data: read-only
 
 
procedure wb_block_check_write (
 
 
 
 
);
 
 
procedure wb_block_check_read (
 
 
 
 
);
 
 
procedure wb_block_gen_write (
 
 
 
 
);
 
 
procedure wb_block_gen_read (
 
 
 
 
);
-- Construct value for REG_TEST_CHECK_WBS_BURST_CTRL
function wb_block_check_burst_ctrl_build (i_ena : in std_logic; ii_ack_dly : in integer; ii_dly_pos : in integer) return std_logic_vector;
 
end package wb_block_pkg;
---------------------------------------------------------------------------------------------------
package body wb_block_pkg is
 
 
procedure wb_block_check_write (
 
 
 
 
) is
begin
data_write( cmd, ret, TEST_CHECK_WB_CFG_SLAVE+conv_std_logic_vector(reg*8+0, 32), data );
end;
 
 
procedure wb_block_check_read (
 
 
 
 
) is
begin
data_read( cmd, ret, TEST_CHECK_WB_CFG_SLAVE+conv_std_logic_vector(reg*8+0, 32), data );
end;
 
 
procedure wb_block_gen_write (
 
 
 
 
) is
begin
data_write( cmd, ret, TEST_GEN_WB_CFG_SLAVE+conv_std_logic_vector(reg*8+0, 32), data );
end;
 
 
procedure wb_block_gen_read (
 
 
 
 
) is
begin
data_read( cmd, ret, TEST_GEN_WB_CFG_SLAVE+conv_std_logic_vector(reg*8+0, 32), data );
end;
 
-- Construct value for REG_TEST_CHECK_WBS_BURST_CTRL
function wb_block_check_burst_ctrl_build (i_ena : in std_logic; ii_ack_dly : in integer; ii_dly_pos : in integer) return std_logic_vector is
variable iv_ret : std_logic_vector(31 downto 0):=(others => '0');
begin
iv_ret:= x"0000" & i_ena & conv_std_logic_vector( ii_ack_dly, 6) & conv_std_logic_vector( ii_dly_pos, 9);
return iv_ret;
end wb_block_check_burst_ctrl_build;
 
 
end package body wb_block_pkg;
 
---------------------------------------------------------------------------------------------------
--
-- Title : wb_block_pkg.vhd
-- Author : Dmitry Smekhov
-- Company : Instrumental Systems
-- E-mail : dsmv@insys.ru
--
-- Version : 1.0
---------------------------------------------------------------------------------------------------
--
 
--
---------------------------------------------------------------------------------------------------
--
-- Version 1.0 01.11.2011
 
--
---------------------------------------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_textio.all;
use ieee.std_logic_unsigned.all;
 
library work;
use work.cmd_sim_pkg.all;
 
use std.textio.all;
use std.textio;
 
---------------------------------------------------------------------------------------------------
package wb_block_pkg is
--
-- Define TEST_CHECK reg id (addr in 64b cells)
--
constant REG_BLOCK_ID : integer:=0;
constant REG_BLOCK_VER : integer:=1;
 
constant REG_TEST_CHECK_CTRL : integer:=8;
constant REG_TEST_CHECK_SIZE : integer:=9;
constant REG_TEST_CHECK_ERR_ADR : integer:=16#0A#;
constant REG_TEST_CHECK_WBS_BURST_CTRL : integer:=16#0B#;
 
constant REG_TEST_CHECK_BL_RD : integer:=16#10#;
constant REG_TEST_CHECK_BL_OK : integer:=16#11#;
constant REG_TEST_CHECK_BL_ERROR : integer:=16#12#;
constant REG_TEST_CHECK_TOTAL_ERROR : integer:=16#13#;
constant REG_TEST_CHECK_ERR_DATA : integer:=16#14#;
--
-- Define TEST_GEN reg id (addr in 64b cells)
--
constant REG_TEST_GEN_CTRL : integer:=8;
constant REG_TEST_GEN_SIZE : integer:=9;
constant REG_TEST_GEN_CNT1 : integer:=16#0A#;
constant REG_TEST_GEN_CNT2 : integer:=16#0B#;
constant REG_TEST_GEN_BL_WR : integer:=16#11#;
--
-- Define SoPC ADDR (must be EQU to: ...\src\top\sp605_lx45t_wishbone_sopc_wb.vhd)
--
constant TEST_CHECK_WB_CFG_SLAVE : std_logic_vector( 31 downto 0) := x"20000000";
constant TEST_CHECK_WB_BURST_SLAVE : std_logic_vector( 31 downto 0) := x"20001000"; -- check data: write-only
constant TEST_GEN_WB_CFG_SLAVE : std_logic_vector( 31 downto 0) := x"20002000";
constant TEST_GEN_WB_BURST_SLAVE : std_logic_vector( 31 downto 0) := x"20003000"; -- generate data: read-only
---- Write to wishbone ----
procedure wb_write (
 
 
 
 
);
---- Read from wishbone ----
procedure wb_read (
 
 
 
 
);
 
procedure wb_block_check_write (
 
 
 
 
);
 
 
procedure wb_block_check_read (
 
 
 
 
);
 
 
procedure wb_block_gen_write (
 
 
 
 
);
 
 
procedure wb_block_gen_read (
 
 
 
 
);
-- Construct value for REG_TEST_CHECK_WBS_BURST_CTRL
function wb_block_check_burst_ctrl_build (i_ena : in std_logic; ii_ack_dly : in integer; ii_dly_pos : in integer) return std_logic_vector;
 
end package wb_block_pkg;
---------------------------------------------------------------------------------------------------
package body wb_block_pkg is
---- Write to wishbone ----
procedure wb_write (
 
 
 
 
) is
begin
data_write( cmd, ret, TEST_CHECK_WB_CFG_SLAVE+conv_std_logic_vector(adr, 32), data );
end;
---- Read from wishbone ----
procedure wb_read (
 
 
 
 
) is
begin
data_read( cmd, ret, TEST_CHECK_WB_CFG_SLAVE+conv_std_logic_vector(adr, 32), data );
end;
 
 
procedure wb_block_check_write (
 
 
 
 
) is
begin
data_write( cmd, ret, TEST_CHECK_WB_CFG_SLAVE+conv_std_logic_vector(reg*8+0, 32), data );
end;
 
 
procedure wb_block_check_read (
 
 
 
 
) is
begin
data_read( cmd, ret, TEST_CHECK_WB_CFG_SLAVE+conv_std_logic_vector(reg*8+0, 32), data );
end;
 
 
procedure wb_block_gen_write (
 
 
 
 
) is
begin
data_write( cmd, ret, TEST_GEN_WB_CFG_SLAVE+conv_std_logic_vector(reg*8+0, 32), data );
end;
 
 
procedure wb_block_gen_read (
 
 
 
 
) is
begin
data_read( cmd, ret, TEST_GEN_WB_CFG_SLAVE+conv_std_logic_vector(reg*8+0, 32), data );
end;
 
-- Construct value for REG_TEST_CHECK_WBS_BURST_CTRL
function wb_block_check_burst_ctrl_build (i_ena : in std_logic; ii_ack_dly : in integer; ii_dly_pos : in integer) return std_logic_vector is
variable iv_ret : std_logic_vector(31 downto 0):=(others => '0');
begin
iv_ret:= x"0000" & i_ena & conv_std_logic_vector( ii_ack_dly, 6) & conv_std_logic_vector( ii_dly_pos, 9);
return iv_ret;
end wb_block_check_burst_ctrl_build;
 
 
end package body wb_block_pkg;
 
/ambpex5_sx50t_wishbone/src/testbench/stend_ambpex5_wishbone.vhd
37,7 → 37,7
 
entity stend_ambpex5_wishbone is
generic(
 
 
 
);
end stend_ambpex5_wishbone;
185,7 → 185,8
case( test_id ) is
when 0 => test_dsc_incorrect( cmd, ret );
when 1 => test_read_4kb( cmd, ret ); -- was original
when 2 => test_adm_read_8kb( cmd, ret );
when 2 => test_adm_read_8kb( cmd, ret );
when 3 => test_read_reg( cmd, ret );
--when 3 => test_adm_read_16kb( cmd, ret );
--when 4 => test_adm_write_16kb( cmd, ret );
--when 5 => test_block_main( cmd, ret );
/sp605_lx45t_wishbone/sp605_lx45t_wishbone.aws
7,9 → 7,9
[Settings]
Active=ambpex5_sx50t_wishbone
[Expand]
sp605_lx45t_wishbone=1
sp605_lx45t_wishbone=0
ambpex5_sx50t_wishbone=1
ambpex5_v20_sx50t_core=0
ambpex5_v20_sx50t_core=1
[Browser]
sort=order
mode=none

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.