AMBPEX5_v20_SX50T_CORE
testbench/stend_ambpex5_core.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 
00020 use work.ambpex5_v20_sx50t_core_pkg.all;
00021 
00022 entity stend_ambpex5_core is
00023 end stend_ambpex5_core;
00024 
00025 
00026 architecture stend_ambpex5_core of stend_ambpex5_core is
00027 
00028 component xilinx_pcie_2_0_rport_v6 is
00029 generic (
00030           REF_CLK_FREQ   : integer;          -- 0 - 100 MHz, 1 - 125 MHz,  2 - 250 MHz
00031           ALLOW_X8_GEN2  : boolean;
00032           PL_FAST_TRAIN  : boolean;
00033           LINK_CAP_MAX_LINK_SPEED : bit_vector;
00034           DEVICE_ID : bit_vector;
00035           LINK_CAP_MAX_LINK_WIDTH  : bit_vector;
00036           LINK_CAP_MAX_LINK_WIDTH_int  : integer;
00037           LINK_CTRL2_TARGET_LINK_SPEED  : bit_vector;
00038           LTSSM_MAX_LINK_WIDTH  : bit_vector;
00039           DEV_CAP_MAX_PAYLOAD_SUPPORTED : integer;
00040           USER_CLK_FREQ : integer;
00041           VC0_TX_LASTPACKET : integer;
00042           VC0_RX_RAM_LIMIT : bit_vector;
00043           VC0_TOTAL_CREDITS_PD : integer;
00044           VC0_TOTAL_CREDITS_CD : integer
00045 );
00046 port  (
00047 
00048   sys_clk : in std_logic;
00049   sys_reset_n : in std_logic;
00050 
00051   pci_exp_rxn : in std_logic_vector((LINK_CAP_MAX_LINK_WIDTH_int - 1) downto 0);
00052   pci_exp_rxp : in std_logic_vector((LINK_CAP_MAX_LINK_WIDTH_int - 1) downto 0);
00053   pci_exp_txn : out std_logic_vector((LINK_CAP_MAX_LINK_WIDTH_int - 1) downto 0);
00054   pci_exp_txp : out std_logic_vector((LINK_CAP_MAX_LINK_WIDTH_int - 1) downto 0)
00055 
00056 );
00057 end component;
00058 
00059 signal  clk250                  : std_logic:='0';
00060 signal  clk250p                 : std_logic;
00061 signal  clk250n                 : std_logic;
00062 
00063 signal  clk100                  : std_logic:='0';
00064 
00065 signal  reset                   : std_logic;
00066 
00067 signal  txp                             : std_logic_vector( 7 downto 0 ):=(others=>'0');
00068 signal  txn                             : std_logic_vector( 7 downto 0 ):=(others=>'1');
00069 signal  rxp                             : std_logic_vector( 7 downto 0 ):=(others=>'0');
00070 signal  rxn                             : std_logic_vector( 7 downto 0 ):=(others=>'1');
00071 
00072 signal  rp_txp                  : std_logic_vector( 0 downto 0 ):=(others=>'0');
00073 signal  rp_txn                  : std_logic_vector( 0 downto 0 ):=(others=>'1');
00074 signal  rp_rxp                  : std_logic_vector( 0 downto 0 ):=(others=>'0');
00075 signal  rp_rxn                  : std_logic_vector( 0 downto 0 ):=(others=>'1');
00076 
00077 signal  tp                              : std_logic_vector( 3 downto 1 );
00078 signal  led1                    : std_logic;
00079 signal  led2                    : std_logic;
00080 signal  led3                    : std_logic;              
00081 signal  led4                    : std_logic;
00082 
00083 begin
00084         
00085  amb: ambpex5_v20_sx50t_core 
00086         generic map(
00087                 is_simulation   => 1-- 0 - синтез, 1 - моделирование ADM
00088         )
00089         port map(
00090                 ---- PCI-Express ----
00091                 txp                                     => txp,
00092                 txn                                      => txn,
00093                 
00094                 rxp                                      => rxp,
00095                 rxn                                      => rxn,
00096                 
00097                 mgt251_p                        => clk250p,   -- тактовая частота 250 MHz от PCI_Express
00098                 mgt251_n                        => clk250n,
00099                 
00100                 bperst                          => reset,       -- 0 - сброс                                                  
00101                 
00102                 btp                                     => tp, -- контрольные точки
00103                 
00104                 ---- Светодиоды ----
00105                 bled1                            => led1,
00106                 bled2                            => led2,
00107                 bled3                            => led3,
00108                 bled4                            => led4
00109         );      
00110         
00111         
00112 rp : xilinx_pcie_2_0_rport_v6
00113 generic map (
00114       REF_CLK_FREQ => 0,
00115       ALLOW_X8_GEN2 => FALSE,
00116       PL_FAST_TRAIN  => TRUE,
00117       LINK_CAP_MAX_LINK_SPEED => X"1",
00118       DEVICE_ID => X"6011",
00119       LINK_CAP_MAX_LINK_WIDTH => X"01",
00120       LINK_CAP_MAX_LINK_WIDTH_int => 1,
00121       LINK_CTRL2_TARGET_LINK_SPEED  => X"1",
00122       LTSSM_MAX_LINK_WIDTH => X"01",
00123       DEV_CAP_MAX_PAYLOAD_SUPPORTED => 2,
00124       VC0_TX_LASTPACKET => 29 ,
00125       VC0_RX_RAM_LIMIT => X"7FF",
00126       VC0_TOTAL_CREDITS_PD => (308),
00127       VC0_TOTAL_CREDITS_CD => (308),
00128       USER_CLK_FREQ => 1
00129 )
00130 port map (
00131 
00132   sys_clk => clk100,
00133   sys_reset_n => reset,
00134 
00135   pci_exp_txn => rp_txn,
00136   pci_exp_txp => rp_txp,
00137   pci_exp_rxn => rp_rxn,
00138   pci_exp_rxp => rp_rxp
00139 );      
00140 
00141 
00142 clk100 <= not clk100 after 5 ns;
00143 clk250 <= not clk250 after 2 ns;
00144 
00145 clk250p <= clk250;
00146 clk250n <= not clk250;
00147 
00148 rxp(0) <= rp_txp(0);
00149 rxn(0) <= rp_txn(0);
00150 
00151 rp_rxp(0) <= txp(0);
00152 rp_rxn(0) <= txn(0);       
00153 
00154 reset <= '0', '1' after 5002 ns;
00155 
00156 end stend_ambpex5_core;