AMBPEX5_v20_SX50T_CORE
|
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;