AMBPEX5_v20_SX50T_CORE
testbench/stend_ambpex5_core_m2.vhd
00001 -------------------------------------------------------------------------------
00002 --
00003 -- Title       : stend_ambpex5_core
00004 -- Author      : Dmitry Smekhov
00005 -- Company     : Instrumental Systems
00006 -- E-mail      : dsmv@insys.ru
00007 --
00008 -- Version     : 1.0
00009 --
00010 -------------------------------------------------------------------------------
00011 --
00012 -- Description : 
00013 --
00014 -------------------------------------------------------------------------------
00015 
00016 
00017 library ieee;
00018 use ieee.std_logic_1164.all;
00019 use ieee.std_logic_textio.all;
00020 
00021 library work;
00022 
00023 use work.cmd_sim_pkg.all;                  
00024 use work.block_pkg.all;
00025 use work.ambpex5_v20_sx50t_core_pkg.all;
00026 use work.xilinx_pcie_rport_m2_pkg.all;
00027 
00028 use work.test_pkg.all;
00029 
00030 use std.textio.all;
00031 use std.textio;
00032 
00033 entity stend_ambpex5_core_m2 is
00034 end stend_ambpex5_core_m2;
00035 
00036 
00037 architecture stend_ambpex5_core_m2 of stend_ambpex5_core_m2 is
00038 
00039 --component xilinx_pcie_2_0_rport_v6 is
00040 --generic (
00041 --          REF_CLK_FREQ   : integer;          -- 0 - 100 MHz, 1 - 125 MHz,  2 - 250 MHz
00042 --          ALLOW_X8_GEN2  : boolean;
00043 --          PL_FAST_TRAIN  : boolean;
00044 --          LINK_CAP_MAX_LINK_SPEED : bit_vector;
00045 --          DEVICE_ID : bit_vector;
00046 --          LINK_CAP_MAX_LINK_WIDTH  : bit_vector;
00047 --          LINK_CAP_MAX_LINK_WIDTH_int  : integer;
00048 --          LINK_CTRL2_TARGET_LINK_SPEED  : bit_vector;
00049 --          LTSSM_MAX_LINK_WIDTH  : bit_vector;
00050 --          DEV_CAP_MAX_PAYLOAD_SUPPORTED : integer;
00051 --          USER_CLK_FREQ : integer;
00052 --          VC0_TX_LASTPACKET : integer;
00053 --          VC0_RX_RAM_LIMIT : bit_vector;
00054 --          VC0_TOTAL_CREDITS_PD : integer;
00055 --          VC0_TOTAL_CREDITS_CD : integer
00056 --);
00057 --port  (
00058 --
00059 --  sys_clk : in std_logic;
00060 --  sys_reset_n : in std_logic;
00061 --
00062 --  pci_exp_rxn : in std_logic_vector((LINK_CAP_MAX_LINK_WIDTH_int - 1) downto 0);
00063 --  pci_exp_rxp : in std_logic_vector((LINK_CAP_MAX_LINK_WIDTH_int - 1) downto 0);
00064 --  pci_exp_txn : out std_logic_vector((LINK_CAP_MAX_LINK_WIDTH_int - 1) downto 0);
00065 --  pci_exp_txp : out std_logic_vector((LINK_CAP_MAX_LINK_WIDTH_int - 1) downto 0)
00066 --
00067 --);
00068 --end component;
00069 
00070 signal  clk250                  : std_logic:='0';
00071 signal  clk250p                 : std_logic;
00072 signal  clk250n                 : std_logic;
00073 
00074 signal  clk100                  : std_logic:='0';
00075 
00076 signal  reset                   : std_logic;
00077 
00078 signal  txp                             : std_logic_vector( 7 downto 0 ):=(others=>'0');
00079 signal  txn                             : std_logic_vector( 7 downto 0 ):=(others=>'1');
00080 signal  rxp                             : std_logic_vector( 7 downto 0 ):=(others=>'0');
00081 signal  rxn                             : std_logic_vector( 7 downto 0 ):=(others=>'1');
00082 
00083 signal  rp_txp                  : std_logic_vector( 0 downto 0 ):=(others=>'0');
00084 signal  rp_txn                  : std_logic_vector( 0 downto 0 ):=(others=>'1');
00085 signal  rp_rxp                  : std_logic_vector( 0 downto 0 ):=(others=>'0');
00086 signal  rp_rxn                  : std_logic_vector( 0 downto 0 ):=(others=>'1');
00087 
00088 signal  tp                              : std_logic_vector( 3 downto 1 );
00089 signal  led1                    : std_logic;
00090 signal  led2                    : std_logic;
00091 signal  led3                    : std_logic;              
00092 signal  led4                    : std_logic;
00093 
00094 signal  cmd                             : bh_cmd;       -- команда
00095 signal  ret                             : bh_ret;       -- ответ
00096 
00097 
00098 begin
00099         
00100  amb: ambpex5_v20_sx50t_core 
00101         generic map(
00102                 is_simulation   => 2-- 0 - синтез, 1 - моделирование ADM, 2 - моделирование pcie_core  
00103         )
00104         port map(
00105                 ---- PCI-Express ----
00106                 txp                                     => txp,
00107                 txn                                      => txn,
00108                 
00109                 rxp                                      => rxp,
00110                 rxn                                      => rxn,
00111                 
00112                 mgt251_p                        => clk250p,   -- тактовая частота 250 MHz от PCI_Express
00113                 mgt251_n                        => clk250n,
00114                 
00115                 bperst                          => reset,       -- 0 - сброс                                                  
00116                 
00117                 btp                                     => tp, -- контрольные точки
00118                 
00119                 ---- Светодиоды ----
00120                 bled1                            => led1,
00121                 bled2                            => led2,
00122                 bled3                            => led3,
00123                 bled4                            => led4
00124         );      
00125         
00126         
00127 rp : xilinx_pcie_rport_m2
00128 generic map (
00129       REF_CLK_FREQ => 0,
00130       ALLOW_X8_GEN2 => FALSE,
00131       PL_FAST_TRAIN => TRUE,
00132       LINK_CAP_MAX_LINK_SPEED => X"1",
00133       DEVICE_ID => X"6011",
00134       LINK_CAP_MAX_LINK_WIDTH => X"01",
00135       LINK_CAP_MAX_LINK_WIDTH_int => 1,
00136       LINK_CTRL2_TARGET_LINK_SPEED  => X"1",
00137       LTSSM_MAX_LINK_WIDTH => X"01",
00138       DEV_CAP_MAX_PAYLOAD_SUPPORTED => 2,
00139       VC0_TX_LASTPACKET => 29 ,
00140       VC0_RX_RAM_LIMIT => X"7FF",
00141       VC0_TOTAL_CREDITS_PD => (308),
00142       VC0_TOTAL_CREDITS_CD => (308),
00143       USER_CLK_FREQ => 1
00144 )
00145 port map (
00146 
00147                 sys_clk => clk100,
00148                 sys_reset_n => reset,
00149                 
00150                 pci_exp_txn => rp_txn,
00151                 pci_exp_txp => rp_txp,
00152                 pci_exp_rxn => rp_rxn,
00153                 pci_exp_rxp => rp_rxp,
00154                   
00155                 cmd                     => cmd, -- команда
00156                 ret                     => ret-- ответ
00157   
00158 );      
00159 
00160 
00161 clk100 <= not clk100 after 5 ns;
00162 clk250 <= not clk250 after 2 ns;
00163 
00164 clk250p <= clk250;
00165 clk250n <= not clk250;
00166 
00167 rxp(0) <= rp_txp(0);
00168 rxn(0) <= rp_txn(0);
00169 
00170 rp_rxp(0) <= txp(0);
00171 rp_rxn(0) <= txn(0);       
00172 
00173 reset <= '0', '1' after 5002 ns;
00174 
00175 pr_main: process 
00176 
00177 variable        data    : std_logic_vector( 31 downto 0 );
00178 variable        str     : LINE;         -- pointer to string
00179 begin
00180         
00181         test_init( "src\log\test.log" );
00182         
00183         wait for 180 us;        
00184         
00185 
00186         --test_dsc_incorrect( cmd, ret );          
00187 
00188         --test_read_4kb( cmd, ret );
00189         --test_adm_read_8kb( cmd, ret );
00190         test_adm_read_16kb( cmd, ret );
00191         --test_adm_write_16kb( cmd, ret );
00192         --test_block_main( cmd, ret );
00193 
00194         test_close;
00195         wait;
00196         
00197 end process;
00198 
00199 end stend_ambpex5_core_m2;