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