1 |
2 |
buenos |
-------------------------------------------------------------------------------
|
2 |
|
|
--
|
3 |
|
|
-- (c) Copyright 2008, 2009 Xilinx, Inc. All rights reserved.
|
4 |
|
|
--
|
5 |
|
|
-- This file contains confidential and proprietary information of Xilinx, Inc.
|
6 |
|
|
-- and is protected under U.S. and international copyright and other
|
7 |
|
|
-- intellectual property laws.
|
8 |
|
|
--
|
9 |
|
|
-- DISCLAIMER
|
10 |
|
|
--
|
11 |
|
|
-- This disclaimer is not a license and does not grant any rights to the
|
12 |
|
|
-- materials distributed herewith. Except as otherwise provided in a valid
|
13 |
|
|
-- license issued to you by Xilinx, and to the maximum extent permitted by
|
14 |
|
|
-- applicable law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND WITH ALL
|
15 |
|
|
-- FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS,
|
16 |
|
|
-- IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF
|
17 |
|
|
-- MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE;
|
18 |
|
|
-- and (2) Xilinx shall not be liable (whether in contract or tort, including
|
19 |
|
|
-- negligence, or under any other theory of liability) for any loss or damage
|
20 |
|
|
-- of any kind or nature related to, arising under or in connection with these
|
21 |
|
|
-- materials, including for any direct, or any indirect, special, incidental,
|
22 |
|
|
-- or consequential loss or damage (including loss of data, profits, goodwill,
|
23 |
|
|
-- or any type of loss or damage suffered as a result of any action brought by
|
24 |
|
|
-- a third party) even if such damage or loss was reasonably foreseeable or
|
25 |
|
|
-- Xilinx had been advised of the possibility of the same.
|
26 |
|
|
--
|
27 |
|
|
-- CRITICAL APPLICATIONS
|
28 |
|
|
--
|
29 |
|
|
-- Xilinx products are not designed or intended to be fail-safe, or for use in
|
30 |
|
|
-- any application requiring fail-safe performance, such as life-support or
|
31 |
|
|
-- safety devices or systems, Class III medical devices, nuclear facilities,
|
32 |
|
|
-- applications related to the deployment of airbags, or any other
|
33 |
|
|
-- applications that could lead to death, personal injury, or severe property
|
34 |
|
|
-- or environmental damage (individually and collectively, "Critical
|
35 |
|
|
-- Applications"). Customer assumes the sole risk and liability of any use of
|
36 |
|
|
-- Xilinx products in Critical Applications, subject only to applicable laws
|
37 |
|
|
-- and regulations governing limitations on product liability.
|
38 |
|
|
--
|
39 |
|
|
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS PART OF THIS FILE
|
40 |
|
|
-- AT ALL TIMES.
|
41 |
|
|
--
|
42 |
|
|
-------------------------------------------------------------------------------
|
43 |
|
|
-- Project : Spartan-6 Integrated Block for PCI Express
|
44 |
|
|
-- File : pcie.vhd
|
45 |
|
|
-- Description: Spartan-6 solution wrapper : Endpoint for PCI Express
|
46 |
|
|
--
|
47 |
|
|
-------------------------------------------------------------------------------
|
48 |
|
|
|
49 |
|
|
library ieee;
|
50 |
|
|
use ieee.std_logic_1164.all;
|
51 |
|
|
use ieee.std_logic_arith.all;
|
52 |
|
|
use ieee.std_logic_unsigned.all;
|
53 |
|
|
use ieee.numeric_bit.all;
|
54 |
|
|
library unisim;
|
55 |
|
|
use unisim.vcomponents.all;
|
56 |
|
|
--synthesis translate_off
|
57 |
|
|
use unisim.vpkg.all;
|
58 |
|
|
library secureip;
|
59 |
|
|
use secureip.all;
|
60 |
|
|
--synthesis translate_on
|
61 |
|
|
|
62 |
|
|
entity pcie is
|
63 |
|
|
generic (
|
64 |
|
|
TL_TX_RAM_RADDR_LATENCY : integer := 0;
|
65 |
|
|
TL_TX_RAM_RDATA_LATENCY : integer := 2;
|
66 |
|
|
TL_RX_RAM_RADDR_LATENCY : integer := 0;
|
67 |
|
|
TL_RX_RAM_RDATA_LATENCY : integer := 2;
|
68 |
|
|
TL_RX_RAM_WRITE_LATENCY : integer := 0;
|
69 |
|
|
VC0_TX_LASTPACKET : integer := 14;
|
70 |
|
|
VC0_RX_RAM_LIMIT : bit_vector := x"7FF";
|
71 |
|
|
VC0_TOTAL_CREDITS_PH : integer := 32;
|
72 |
|
|
VC0_TOTAL_CREDITS_PD : integer := 211;
|
73 |
|
|
VC0_TOTAL_CREDITS_NPH : integer := 8;
|
74 |
|
|
VC0_TOTAL_CREDITS_CH : integer := 40;
|
75 |
|
|
VC0_TOTAL_CREDITS_CD : integer := 211;
|
76 |
|
|
VC0_CPL_INFINITE : boolean := TRUE;
|
77 |
|
|
BAR0 : bit_vector := x"F0000000";
|
78 |
|
|
BAR1 : bit_vector := x"00000000";
|
79 |
|
|
BAR2 : bit_vector := x"00000000";
|
80 |
|
|
BAR3 : bit_vector := x"00000000";
|
81 |
|
|
BAR4 : bit_vector := x"00000000";
|
82 |
|
|
BAR5 : bit_vector := x"00000000";
|
83 |
|
|
EXPANSION_ROM : bit_vector := "0000000000000000000000";
|
84 |
|
|
DISABLE_BAR_FILTERING : boolean := FALSE;
|
85 |
|
|
DISABLE_ID_CHECK : boolean := FALSE;
|
86 |
|
|
TL_TFC_DISABLE : boolean := FALSE;
|
87 |
|
|
TL_TX_CHECKS_DISABLE : boolean := FALSE;
|
88 |
|
|
USR_CFG : boolean := FALSE;
|
89 |
|
|
USR_EXT_CFG : boolean := FALSE;
|
90 |
|
|
DEV_CAP_MAX_PAYLOAD_SUPPORTED : integer := 2;
|
91 |
|
|
CLASS_CODE : bit_vector := x"068000";
|
92 |
|
|
CARDBUS_CIS_POINTER : bit_vector := x"00000000";
|
93 |
|
|
PCIE_CAP_CAPABILITY_VERSION : bit_vector := x"1";
|
94 |
|
|
PCIE_CAP_DEVICE_PORT_TYPE : bit_vector := x"1";
|
95 |
|
|
PCIE_CAP_SLOT_IMPLEMENTED : boolean := FALSE;
|
96 |
|
|
PCIE_CAP_INT_MSG_NUM : bit_vector := "00000";
|
97 |
|
|
DEV_CAP_PHANTOM_FUNCTIONS_SUPPORT : integer := 0;
|
98 |
|
|
DEV_CAP_EXT_TAG_SUPPORTED : boolean := FALSE;
|
99 |
|
|
DEV_CAP_ENDPOINT_L0S_LATENCY : integer := 7;
|
100 |
|
|
DEV_CAP_ENDPOINT_L1_LATENCY : integer := 7;
|
101 |
|
|
SLOT_CAP_ATT_BUTTON_PRESENT : boolean := FALSE;
|
102 |
|
|
SLOT_CAP_ATT_INDICATOR_PRESENT : boolean := FALSE;
|
103 |
|
|
SLOT_CAP_POWER_INDICATOR_PRESENT : boolean := FALSE;
|
104 |
|
|
DEV_CAP_ROLE_BASED_ERROR : boolean := TRUE;
|
105 |
|
|
LINK_CAP_ASPM_SUPPORT : integer := 1;
|
106 |
|
|
LINK_CAP_L0S_EXIT_LATENCY : integer := 7;
|
107 |
|
|
LINK_CAP_L1_EXIT_LATENCY : integer := 7;
|
108 |
|
|
LL_ACK_TIMEOUT : bit_vector := x"0000";
|
109 |
|
|
LL_ACK_TIMEOUT_EN : boolean := FALSE;
|
110 |
|
|
LL_REPLAY_TIMEOUT : bit_vector := x"0000";
|
111 |
|
|
LL_REPLAY_TIMEOUT_EN : boolean := FALSE;
|
112 |
|
|
MSI_CAP_MULTIMSGCAP : integer := 0;
|
113 |
|
|
MSI_CAP_MULTIMSG_EXTENSION : integer := 0;
|
114 |
|
|
LINK_STATUS_SLOT_CLOCK_CONFIG : boolean := FALSE;
|
115 |
|
|
PLM_AUTO_CONFIG : boolean := FALSE;
|
116 |
|
|
FAST_TRAIN : boolean := FALSE;
|
117 |
|
|
ENABLE_RX_TD_ECRC_TRIM : boolean := FALSE;
|
118 |
|
|
DISABLE_SCRAMBLING : boolean := FALSE;
|
119 |
|
|
PM_CAP_VERSION : integer := 3;
|
120 |
|
|
PM_CAP_PME_CLOCK : boolean := FALSE;
|
121 |
|
|
PM_CAP_DSI : boolean := FALSE;
|
122 |
|
|
PM_CAP_AUXCURRENT : integer := 0;
|
123 |
|
|
PM_CAP_D1SUPPORT : boolean := TRUE;
|
124 |
|
|
PM_CAP_D2SUPPORT : boolean := TRUE;
|
125 |
|
|
PM_CAP_PMESUPPORT : bit_vector := x"0F";
|
126 |
|
|
PM_DATA0 : bit_vector := x"04";
|
127 |
|
|
PM_DATA_SCALE0 : bit_vector := x"0";
|
128 |
|
|
PM_DATA1 : bit_vector := x"00";
|
129 |
|
|
PM_DATA_SCALE1 : bit_vector := x"0";
|
130 |
|
|
PM_DATA2 : bit_vector := x"00";
|
131 |
|
|
PM_DATA_SCALE2 : bit_vector := x"0";
|
132 |
|
|
PM_DATA3 : bit_vector := x"00";
|
133 |
|
|
PM_DATA_SCALE3 : bit_vector := x"0";
|
134 |
|
|
PM_DATA4 : bit_vector := x"04";
|
135 |
|
|
PM_DATA_SCALE4 : bit_vector := x"0";
|
136 |
|
|
PM_DATA5 : bit_vector := x"00";
|
137 |
|
|
PM_DATA_SCALE5 : bit_vector := x"0";
|
138 |
|
|
PM_DATA6 : bit_vector := x"00";
|
139 |
|
|
PM_DATA_SCALE6 : bit_vector := x"0";
|
140 |
|
|
PM_DATA7 : bit_vector := x"00";
|
141 |
|
|
PM_DATA_SCALE7 : bit_vector := x"0";
|
142 |
|
|
PCIE_GENERIC : bit_vector := "000011101111";
|
143 |
|
|
GTP_SEL : integer := 0;
|
144 |
|
|
CFG_VEN_ID : std_logic_vector(15 downto 0) := x"10EE";
|
145 |
|
|
CFG_DEV_ID : std_logic_vector(15 downto 0) := x"ABCD";
|
146 |
|
|
CFG_REV_ID : std_logic_vector(7 downto 0) := x"00";
|
147 |
|
|
CFG_SUBSYS_VEN_ID : std_logic_vector(15 downto 0) := x"10EE";
|
148 |
|
|
CFG_SUBSYS_ID : std_logic_vector(15 downto 0) := x"1234";
|
149 |
|
|
REF_CLK_FREQ : integer := 0
|
150 |
|
|
);
|
151 |
|
|
port (
|
152 |
|
|
-- PCI Express Fabric Interface
|
153 |
|
|
pci_exp_txp : out std_logic;
|
154 |
|
|
pci_exp_txn : out std_logic;
|
155 |
|
|
pci_exp_rxp : in std_logic;
|
156 |
|
|
pci_exp_rxn : in std_logic;
|
157 |
|
|
|
158 |
|
|
-- Transaction (TRN) Interface
|
159 |
|
|
trn_lnk_up_n : out std_logic;
|
160 |
|
|
|
161 |
|
|
-- Tx
|
162 |
|
|
trn_td : in std_logic_vector(31 downto 0);
|
163 |
|
|
trn_tsof_n : in std_logic;
|
164 |
|
|
trn_teof_n : in std_logic;
|
165 |
|
|
trn_tsrc_rdy_n : in std_logic;
|
166 |
|
|
trn_tdst_rdy_n : out std_logic;
|
167 |
|
|
trn_terr_drop_n : out std_logic;
|
168 |
|
|
trn_tsrc_dsc_n : in std_logic;
|
169 |
|
|
trn_terrfwd_n : in std_logic;
|
170 |
|
|
trn_tbuf_av : out std_logic_vector(5 downto 0);
|
171 |
|
|
trn_tstr_n : in std_logic;
|
172 |
|
|
trn_tcfg_req_n : out std_logic;
|
173 |
|
|
trn_tcfg_gnt_n : in std_logic;
|
174 |
|
|
|
175 |
|
|
-- Rx
|
176 |
|
|
trn_rd : out std_logic_vector(31 downto 0);
|
177 |
|
|
trn_rsof_n : out std_logic;
|
178 |
|
|
trn_reof_n : out std_logic;
|
179 |
|
|
trn_rsrc_rdy_n : out std_logic;
|
180 |
|
|
trn_rsrc_dsc_n : out std_logic;
|
181 |
|
|
trn_rdst_rdy_n : in std_logic;
|
182 |
|
|
trn_rerrfwd_n : out std_logic;
|
183 |
|
|
trn_rnp_ok_n : in std_logic;
|
184 |
|
|
trn_rbar_hit_n : out std_logic_vector(6 downto 0);
|
185 |
|
|
trn_fc_sel : in std_logic_vector(2 downto 0);
|
186 |
|
|
trn_fc_nph : out std_logic_vector(7 downto 0);
|
187 |
|
|
trn_fc_npd : out std_logic_vector(11 downto 0);
|
188 |
|
|
trn_fc_ph : out std_logic_vector(7 downto 0);
|
189 |
|
|
trn_fc_pd : out std_logic_vector(11 downto 0);
|
190 |
|
|
trn_fc_cplh : out std_logic_vector(7 downto 0);
|
191 |
|
|
trn_fc_cpld : out std_logic_vector(11 downto 0);
|
192 |
|
|
|
193 |
|
|
-- Host (CFG) Interface
|
194 |
|
|
cfg_do : out std_logic_vector(31 downto 0);
|
195 |
|
|
cfg_rd_wr_done_n : out std_logic;
|
196 |
|
|
cfg_dwaddr : in std_logic_vector(9 downto 0);
|
197 |
|
|
cfg_rd_en_n : in std_logic;
|
198 |
|
|
cfg_err_ur_n : in std_logic;
|
199 |
|
|
cfg_err_cor_n : in std_logic;
|
200 |
|
|
cfg_err_ecrc_n : in std_logic;
|
201 |
|
|
cfg_err_cpl_timeout_n : in std_logic;
|
202 |
|
|
cfg_err_cpl_abort_n : in std_logic;
|
203 |
|
|
cfg_err_posted_n : in std_logic;
|
204 |
|
|
cfg_err_locked_n : in std_logic;
|
205 |
|
|
cfg_err_tlp_cpl_header : in std_logic_vector(47 downto 0);
|
206 |
|
|
cfg_err_cpl_rdy_n : out std_logic;
|
207 |
|
|
cfg_interrupt_n : in std_logic;
|
208 |
|
|
cfg_interrupt_rdy_n : out std_logic;
|
209 |
|
|
cfg_interrupt_assert_n : in std_logic;
|
210 |
|
|
cfg_interrupt_do : out std_logic_vector(7 downto 0);
|
211 |
|
|
cfg_interrupt_di : in std_logic_vector(7 downto 0);
|
212 |
|
|
cfg_interrupt_mmenable : out std_logic_vector(2 downto 0);
|
213 |
|
|
cfg_interrupt_msienable : out std_logic;
|
214 |
|
|
cfg_turnoff_ok_n : in std_logic;
|
215 |
|
|
cfg_to_turnoff_n : out std_logic;
|
216 |
|
|
cfg_pm_wake_n : in std_logic;
|
217 |
|
|
cfg_pcie_link_state_n : out std_logic_vector(2 downto 0);
|
218 |
|
|
cfg_trn_pending_n : in std_logic;
|
219 |
|
|
cfg_dsn : in std_logic_vector(63 downto 0);
|
220 |
|
|
cfg_bus_number : out std_logic_vector(7 downto 0);
|
221 |
|
|
cfg_device_number : out std_logic_vector(4 downto 0);
|
222 |
|
|
cfg_function_number : out std_logic_vector(2 downto 0);
|
223 |
|
|
cfg_status : out std_logic_vector(15 downto 0);
|
224 |
|
|
cfg_command : out std_logic_vector(15 downto 0);
|
225 |
|
|
cfg_dstatus : out std_logic_vector(15 downto 0);
|
226 |
|
|
cfg_dcommand : out std_logic_vector(15 downto 0);
|
227 |
|
|
cfg_lstatus : out std_logic_vector(15 downto 0);
|
228 |
|
|
cfg_lcommand : out std_logic_vector(15 downto 0);
|
229 |
|
|
|
230 |
|
|
-- System Interface
|
231 |
|
|
sys_clk : in std_logic;
|
232 |
|
|
sys_reset_n : in std_logic;
|
233 |
|
|
trn_clk : out std_logic;
|
234 |
|
|
trn_reset_n : out std_logic;
|
235 |
|
|
received_hot_reset : out std_logic
|
236 |
|
|
);
|
237 |
|
|
end pcie;
|
238 |
|
|
|
239 |
|
|
architecture rtl of pcie is
|
240 |
|
|
|
241 |
|
|
attribute CORE_GENERATION_INFO : STRING;
|
242 |
|
|
attribute CORE_GENERATION_INFO of rtl : architecture is
|
243 |
|
|
"pcie,s6_pcie_v1_2,{TL_TX_RAM_RADDR_LATENCY=0,TL_TX_RAM_RDATA_LATENCY=2,TL_RX_RAM_RADDR_LATENCY=0,TL_RX_RAM_RDATA_LATENCY=2,TL_RX_RAM_WRITE_LATENCY=0,VC0_TX_LASTPACKET=14,VC0_RX_RAM_LIMIT=7FF,VC0_TOTAL_CREDITS_PH=32,VC0_TOTAL_CREDITS_PD=211,VC0_TOTAL_CREDITS_NPH=8,VC0_TOTAL_CREDITS_CH=40,VC0_TOTAL_CREDITS_CD=211,VC0_CPL_INFINITE=TRUE,BAR0=F0000000,BAR1=00000000,BAR2=00000000,BAR3=00000000,BAR4=00000000,BAR5=00000000,EXPANSION_ROM=000000,USR_CFG=FALSE,USR_EXT_CFG=FALSE,DEV_CAP_MAX_PAYLOAD_SUPPORTED=2,CLASS_CODE=068000,CARDBUS_CIS_POINTER=00000000,PCIE_CAP_CAPABILITY_VERSION=1,PCIE_CAP_DEVICE_PORT_TYPE=1,DEV_CAP_PHANTOM_FUNCTIONS_SUPPORT=0,DEV_CAP_EXT_TAG_SUPPORTED=FALSE,DEV_CAP_ENDPOINT_L0S_LATENCY=7,DEV_CAP_ENDPOINT_L1_LATENCY=7,LINK_CAP_ASPM_SUPPORT=1,MSI_CAP_MULTIMSGCAP=0,MSI_CAP_MULTIMSG_EXTENSION=0,LINK_STATUS_SLOT_CLOCK_CONFIG=FALSE,ENABLE_RX_TD_ECRC_TRIM=FALSE,DISABLE_SCRAMBLING=FALSE,PM_CAP_DSI=FALSE,PM_CAP_D1SUPPORT=TRUE,PM_CAP_D2SUPPORT=TRUE,PM_CAP_PMESUPPORT=0F,PM_DATA0=04,PM_DATA_SCALE0=0,PM_DATA1=00,PM_DATA_SCALE1=0,PM_DATA2=00,PM_DATA_SCALE2=0,PM_DATA3=00,PM_DATA_SCALE3=0,PM_DATA4=04,PM_DATA_SCALE4=0,PM_DATA5=00,PM_DATA_SCALE5=0,PM_DATA6=00,PM_DATA_SCALE6=0,PM_DATA7=00,PM_DATA_SCALE7=0,PCIE_GENERIC=000010101111,GTP_SEL=0,CFG_VEN_ID=10EE,CFG_DEV_ID=ABCD,CFG_REV_ID=00,CFG_SUBSYS_VEN_ID=10EE,CFG_SUBSYS_ID=1234,REF_CLK_FREQ=0}";
|
244 |
|
|
|
245 |
|
|
------------------------
|
246 |
|
|
-- Function Declarations
|
247 |
|
|
------------------------
|
248 |
|
|
function CALC_CLKFBOUT_MULT(FREQ_SEL : integer) return integer is
|
249 |
|
|
begin
|
250 |
|
|
case FREQ_SEL is
|
251 |
|
|
when 0 => return 5; -- 100 MHz
|
252 |
|
|
when 1 => return 4; -- 125 MHz
|
253 |
|
|
when others => return 2; -- 250 MHz
|
254 |
|
|
end case;
|
255 |
|
|
end CALC_CLKFBOUT_MULT;
|
256 |
|
|
function CALC_CLKIN_PERIOD(FREQ_SEL : integer) return real is
|
257 |
|
|
begin
|
258 |
|
|
case FREQ_SEL is
|
259 |
|
|
when 0 => return 10.0; -- 100 MHz
|
260 |
|
|
when 1 => return 8.0; -- 125 MHz
|
261 |
|
|
when others => return 4.0; -- 250 MHz
|
262 |
|
|
end case;
|
263 |
|
|
end CALC_CLKIN_PERIOD;
|
264 |
|
|
|
265 |
|
|
------------------------
|
266 |
|
|
-- Constant Declarations
|
267 |
|
|
------------------------
|
268 |
|
|
|
269 |
|
|
constant CLKFBOUT_MULT : integer := CALC_CLKFBOUT_MULT(REF_CLK_FREQ);
|
270 |
|
|
constant CLKIN_PERIOD : real := CALC_CLKIN_PERIOD(REF_CLK_FREQ);
|
271 |
|
|
|
272 |
|
|
-------------------------
|
273 |
|
|
-- Component Declarations
|
274 |
|
|
-------------------------
|
275 |
|
|
component pcie_bram_top_s6 is
|
276 |
|
|
generic (
|
277 |
|
|
DEV_CAP_MAX_PAYLOAD_SUPPORTED : integer := 0;
|
278 |
|
|
|
279 |
|
|
VC0_TX_LASTPACKET : integer := 31;
|
280 |
|
|
TLM_TX_OVERHEAD : integer := 24;
|
281 |
|
|
TL_TX_RAM_RADDR_LATENCY : integer := 1;
|
282 |
|
|
TL_TX_RAM_RDATA_LATENCY : integer := 1;
|
283 |
|
|
TL_TX_RAM_WRITE_LATENCY : integer := 1;
|
284 |
|
|
|
285 |
|
|
VC0_RX_LIMIT : integer := 16#1FFF#;
|
286 |
|
|
TL_RX_RAM_RADDR_LATENCY : integer := 1;
|
287 |
|
|
TL_RX_RAM_RDATA_LATENCY : integer := 1;
|
288 |
|
|
TL_RX_RAM_WRITE_LATENCY : integer := 1
|
289 |
|
|
);
|
290 |
|
|
port (
|
291 |
|
|
user_clk_i : in std_logic;
|
292 |
|
|
reset_i : in std_logic;
|
293 |
|
|
|
294 |
|
|
mim_tx_wen : in std_logic;
|
295 |
|
|
mim_tx_waddr : in std_logic_vector(11 downto 0);
|
296 |
|
|
mim_tx_wdata : in std_logic_vector(35 downto 0);
|
297 |
|
|
mim_tx_ren : in std_logic;
|
298 |
|
|
mim_tx_rce : in std_logic;
|
299 |
|
|
mim_tx_raddr : in std_logic_vector(11 downto 0);
|
300 |
|
|
mim_tx_rdata : out std_logic_vector(35 downto 0);
|
301 |
|
|
|
302 |
|
|
mim_rx_wen : in std_logic;
|
303 |
|
|
mim_rx_waddr : in std_logic_vector(11 downto 0);
|
304 |
|
|
mim_rx_wdata : in std_logic_vector(35 downto 0);
|
305 |
|
|
mim_rx_ren : in std_logic;
|
306 |
|
|
mim_rx_rce : in std_logic;
|
307 |
|
|
mim_rx_raddr : in std_logic_vector(11 downto 0);
|
308 |
|
|
mim_rx_rdata : out std_logic_vector(35 downto 0)
|
309 |
|
|
);
|
310 |
|
|
end component pcie_bram_top_s6;
|
311 |
|
|
|
312 |
|
|
component gtpa1_dual_wrapper_top is
|
313 |
|
|
generic (
|
314 |
|
|
SIMULATION : boolean
|
315 |
|
|
);
|
316 |
|
|
port (
|
317 |
|
|
rx_polarity : in std_logic;
|
318 |
|
|
tx_char_disp_mode : in std_logic_vector(1 downto 0);
|
319 |
|
|
tx_char_is_k : in std_logic_vector(1 downto 0);
|
320 |
|
|
tx_rcvr_det : in std_logic;
|
321 |
|
|
tx_data : in std_logic_vector(15 downto 0);
|
322 |
|
|
arp_rxp : in std_logic;
|
323 |
|
|
arp_rxn : in std_logic;
|
324 |
|
|
sys_rst_n : in std_logic;
|
325 |
|
|
sys_clk : in std_logic;
|
326 |
|
|
gt_usrclk : in std_logic;
|
327 |
|
|
gt_usrclk2x : in std_logic;
|
328 |
|
|
gt_tx_elec_idle : in std_logic;
|
329 |
|
|
gt_power_down : in std_logic_vector(1 downto 0);
|
330 |
|
|
rxreset : in std_logic;
|
331 |
|
|
rx_char_is_k : out std_logic_vector(1 downto 0);
|
332 |
|
|
rx_data : out std_logic_vector(15 downto 0);
|
333 |
|
|
rx_enter_elecidle : out std_logic;
|
334 |
|
|
rx_status : out std_logic_vector(2 downto 0);
|
335 |
|
|
phystatus : out std_logic;
|
336 |
|
|
arp_txp : out std_logic;
|
337 |
|
|
arp_txn : out std_logic;
|
338 |
|
|
gt_reset_done : out std_logic;
|
339 |
|
|
gt_rx_valid : out std_logic;
|
340 |
|
|
gt_plllkdet_out : out std_logic;
|
341 |
|
|
gt_refclk_out : out std_logic
|
342 |
|
|
);
|
343 |
|
|
end component gtpa1_dual_wrapper_top;
|
344 |
|
|
|
345 |
|
|
----------------------
|
346 |
|
|
-- Signal Declarations
|
347 |
|
|
----------------------
|
348 |
|
|
|
349 |
|
|
-- PLL Signals
|
350 |
|
|
signal mgt_clk : std_logic;
|
351 |
|
|
signal mgt_clk_2x : std_logic;
|
352 |
|
|
signal clock_locked : std_logic;
|
353 |
|
|
signal gt_refclk_out : std_logic;
|
354 |
|
|
signal gt_clk_fb_west_out : std_logic;
|
355 |
|
|
signal pll_rst : std_logic;
|
356 |
|
|
signal clk_125 : std_logic;
|
357 |
|
|
signal clk_250 : std_logic;
|
358 |
|
|
signal clk_62_5 : std_logic;
|
359 |
|
|
signal gt_refclk_buf : std_logic;
|
360 |
|
|
signal gt_refclk_fb : std_logic;
|
361 |
|
|
|
362 |
|
|
signal w_cfg_ven_id : std_logic_vector(15 downto 0);
|
363 |
|
|
signal w_cfg_dev_id : std_logic_vector(15 downto 0);
|
364 |
|
|
signal w_cfg_rev_id : std_logic_vector(7 downto 0);
|
365 |
|
|
signal w_cfg_subsys_ven_id : std_logic_vector(15 downto 0);
|
366 |
|
|
signal w_cfg_subsys_id : std_logic_vector(15 downto 0);
|
367 |
|
|
|
368 |
|
|
signal cfg_ltssm_state : std_logic_vector(4 downto 0);
|
369 |
|
|
signal cfg_link_control_aspm_control : std_logic_vector(1 downto 0);
|
370 |
|
|
signal cfg_link_control_rcb : std_logic;
|
371 |
|
|
signal cfg_link_control_common_clock : std_logic;
|
372 |
|
|
signal cfg_link_control_extended_sync : std_logic;
|
373 |
|
|
signal cfg_command_interrupt_disable : std_logic;
|
374 |
|
|
signal cfg_command_serr_en : std_logic;
|
375 |
|
|
signal cfg_command_bus_master_enable : std_logic;
|
376 |
|
|
signal cfg_command_mem_enable : std_logic;
|
377 |
|
|
signal cfg_command_io_enable : std_logic;
|
378 |
|
|
signal cfg_dev_status_ur_detected : std_logic;
|
379 |
|
|
signal cfg_dev_status_fatal_err_detected : std_logic;
|
380 |
|
|
signal cfg_dev_status_nonfatal_err_detected : std_logic;
|
381 |
|
|
signal cfg_dev_status_corr_err_detected : std_logic;
|
382 |
|
|
signal cfg_dev_control_max_read_req : std_logic_vector(2 downto 0);
|
383 |
|
|
signal cfg_dev_control_no_snoop_en : std_logic;
|
384 |
|
|
signal cfg_dev_control_aux_power_en : std_logic;
|
385 |
|
|
signal cfg_dev_control_phantom_en : std_logic;
|
386 |
|
|
signal cfg_dev_cntrol_ext_tag_en : std_logic;
|
387 |
|
|
signal cfg_dev_control_max_payload : std_logic_vector(2 downto 0);
|
388 |
|
|
signal cfg_dev_control_enable_ro : std_logic;
|
389 |
|
|
signal cfg_dev_control_ext_tag_en : std_logic;
|
390 |
|
|
signal cfg_dev_control_ur_err_reporting_en : std_logic;
|
391 |
|
|
signal cfg_dev_control_fatal_err_reporting_en : std_logic;
|
392 |
|
|
signal cfg_dev_control_non_fatal_reporting_en : std_logic;
|
393 |
|
|
signal cfg_dev_control_corr_err_reporting_en : std_logic;
|
394 |
|
|
|
395 |
|
|
signal mim_tx_waddr : std_logic_vector(11 downto 0);
|
396 |
|
|
signal mim_tx_raddr : std_logic_vector(11 downto 0);
|
397 |
|
|
signal mim_rx_waddr : std_logic_vector(11 downto 0);
|
398 |
|
|
signal mim_rx_raddr : std_logic_vector(11 downto 0);
|
399 |
|
|
signal mim_tx_wdata : std_logic_vector(35 downto 0);
|
400 |
|
|
signal mim_tx_rdata : std_logic_vector(35 downto 0);
|
401 |
|
|
signal mim_rx_wdata : std_logic_vector(34 downto 0);
|
402 |
|
|
signal mim_rx_rdata_unused : std_logic;
|
403 |
|
|
signal mim_rx_rdata : std_logic_vector(34 downto 0);
|
404 |
|
|
signal mim_tx_wen : std_logic;
|
405 |
|
|
signal mim_tx_ren : std_logic;
|
406 |
|
|
signal mim_rx_wen : std_logic;
|
407 |
|
|
signal mim_rx_ren : std_logic;
|
408 |
|
|
|
409 |
|
|
signal dbg_bad_dllp_status : std_logic;
|
410 |
|
|
signal dbg_bad_tlp_lcrc : std_logic;
|
411 |
|
|
signal dbg_bad_tlp_seq_num : std_logic;
|
412 |
|
|
signal dbg_bad_tlp_status : std_logic;
|
413 |
|
|
signal dbg_dl_protocol_status : std_logic;
|
414 |
|
|
signal dbg_fc_protocol_err_status : std_logic;
|
415 |
|
|
signal dbg_mlfrmd_length : std_logic;
|
416 |
|
|
signal dbg_mlfrmd_mps : std_logic;
|
417 |
|
|
signal dbg_mlfrmd_tcvc : std_logic;
|
418 |
|
|
signal dbg_mlfrmd_tlp_status : std_logic;
|
419 |
|
|
signal dbg_mlfrmd_unrec_type : std_logic;
|
420 |
|
|
signal dbg_poistlpstatus : std_logic;
|
421 |
|
|
signal dbg_rcvr_overflow_status : std_logic;
|
422 |
|
|
signal dbg_reg_detected_correctable : std_logic;
|
423 |
|
|
signal dbg_reg_detected_fatal : std_logic;
|
424 |
|
|
signal dbg_reg_detected_non_fatal : std_logic;
|
425 |
|
|
signal dbg_reg_detected_unsupported : std_logic;
|
426 |
|
|
signal dbg_rply_rollover_status : std_logic;
|
427 |
|
|
signal dbg_rply_timeout_status : std_logic;
|
428 |
|
|
signal dbg_ur_no_bar_hit : std_logic;
|
429 |
|
|
signal dbg_ur_pois_cfg_wr : std_logic;
|
430 |
|
|
signal dbg_ur_status : std_logic;
|
431 |
|
|
signal dbg_ur_unsup_msg : std_logic;
|
432 |
|
|
|
433 |
|
|
signal pipe_gt_power_down_a : std_logic_vector(1 downto 0);
|
434 |
|
|
signal pipe_gt_power_down_b : std_logic_vector(1 downto 0);
|
435 |
|
|
signal pipe_gt_reset_done_a : std_logic;
|
436 |
|
|
signal pipe_gt_reset_done_b : std_logic;
|
437 |
|
|
signal pipe_gt_tx_elec_idle_a : std_logic;
|
438 |
|
|
signal pipe_gt_tx_elec_idle_b : std_logic;
|
439 |
|
|
signal pipe_phy_status_a : std_logic;
|
440 |
|
|
signal pipe_phy_status_b : std_logic;
|
441 |
|
|
signal pipe_rx_charisk_a : std_logic_vector(1 downto 0);
|
442 |
|
|
signal pipe_rx_charisk_b : std_logic_vector(1 downto 0);
|
443 |
|
|
signal pipe_rx_data_a : std_logic_vector(15 downto 0);
|
444 |
|
|
signal pipe_rx_data_b : std_logic_vector(15 downto 0);
|
445 |
|
|
signal pipe_rx_enter_elec_idle_a : std_logic;
|
446 |
|
|
signal pipe_rx_enter_elec_idle_b : std_logic;
|
447 |
|
|
signal pipe_rx_polarity_a : std_logic;
|
448 |
|
|
signal pipe_rx_polarity_b : std_logic;
|
449 |
|
|
signal pipe_rxreset_a : std_logic;
|
450 |
|
|
signal pipe_rxreset_b : std_logic;
|
451 |
|
|
signal pipe_rx_status_a : std_logic_vector(2 downto 0);
|
452 |
|
|
signal pipe_rx_status_b : std_logic_vector(2 downto 0);
|
453 |
|
|
signal pipe_tx_char_disp_mode_a : std_logic_vector(1 downto 0);
|
454 |
|
|
signal pipe_tx_char_disp_mode_b : std_logic_vector(1 downto 0);
|
455 |
|
|
signal pipe_tx_char_disp_val_a : std_logic_vector(1 downto 0);
|
456 |
|
|
signal pipe_tx_char_disp_val_b : std_logic_vector(1 downto 0);
|
457 |
|
|
signal pipe_tx_char_is_k_a : std_logic_vector(1 downto 0);
|
458 |
|
|
signal pipe_tx_char_is_k_b : std_logic_vector(1 downto 0);
|
459 |
|
|
signal pipe_tx_data_a : std_logic_vector(15 downto 0);
|
460 |
|
|
signal pipe_tx_data_b : std_logic_vector(15 downto 0);
|
461 |
|
|
signal pipe_tx_rcvr_det_a : std_logic;
|
462 |
|
|
signal pipe_tx_rcvr_det_b : std_logic;
|
463 |
|
|
|
464 |
|
|
-- GT->PLM PIPE Interface rx
|
465 |
|
|
signal rx_char_is_k : std_logic_vector(1 downto 0);
|
466 |
|
|
signal rx_data : std_logic_vector(15 downto 0);
|
467 |
|
|
signal rx_enter_elecidle : std_logic;
|
468 |
|
|
signal rx_status : std_logic_vector(2 downto 0);
|
469 |
|
|
signal rx_polarity : std_logic;
|
470 |
|
|
|
471 |
|
|
-- GT<-PLM PIPE Interface tx
|
472 |
|
|
signal tx_char_disp_mode : std_logic_vector(1 downto 0);
|
473 |
|
|
signal tx_char_is_k : std_logic_vector(1 downto 0);
|
474 |
|
|
signal tx_rcvr_det : std_logic;
|
475 |
|
|
signal tx_data : std_logic_vector(15 downto 0);
|
476 |
|
|
|
477 |
|
|
-- GT<->PLM PIPE Interface Misc
|
478 |
|
|
signal phystatus : std_logic;
|
479 |
|
|
|
480 |
|
|
-- GT<->PLM PIPE Interface MGT Logic I/O
|
481 |
|
|
signal gt_reset_done : std_logic;
|
482 |
|
|
signal gt_rx_valid : std_logic;
|
483 |
|
|
signal gt_tx_elec_idle : std_logic;
|
484 |
|
|
signal gt_power_down : std_logic_vector(1 downto 0);
|
485 |
|
|
signal rxreset : std_logic;
|
486 |
|
|
signal gt_plllkdet_out : std_logic;
|
487 |
|
|
|
488 |
|
|
-- Core outputs which are also used in this module - must make local copies
|
489 |
|
|
signal trn_clk_c : std_logic;
|
490 |
|
|
signal trn_reset_n_c : std_logic;
|
491 |
|
|
signal trn_reset : std_logic;
|
492 |
|
|
|
493 |
|
|
begin
|
494 |
|
|
|
495 |
|
|
-- These values may be brought out and driven dynamically
|
496 |
|
|
-- from pins rather than attributes if desired. Note -
|
497 |
|
|
-- if they are not statically driven, the values must be
|
498 |
|
|
-- stable before sys_reset_n is released
|
499 |
|
|
w_cfg_ven_id <= CFG_VEN_ID;
|
500 |
|
|
w_cfg_dev_id <= CFG_DEV_ID;
|
501 |
|
|
w_cfg_rev_id <= CFG_REV_ID;
|
502 |
|
|
w_cfg_subsys_ven_id <= CFG_SUBSYS_VEN_ID;
|
503 |
|
|
w_cfg_subsys_id <= CFG_SUBSYS_ID;
|
504 |
|
|
|
505 |
|
|
-- Assign outputs from internal copies
|
506 |
|
|
trn_clk <= trn_clk_c;
|
507 |
|
|
trn_reset_n <= trn_reset_n_c;
|
508 |
|
|
trn_reset <= not trn_reset_n_c;
|
509 |
|
|
|
510 |
|
|
-- Buffer reference clock from MGT
|
511 |
|
|
gt_refclk_bufio2 : BUFIO2
|
512 |
|
|
port map (
|
513 |
|
|
DIVCLK => gt_refclk_buf,
|
514 |
|
|
IOCLK => OPEN,
|
515 |
|
|
SERDESSTROBE => OPEN,
|
516 |
|
|
I => gt_refclk_out
|
517 |
|
|
);
|
518 |
|
|
|
519 |
|
|
pll_base_i : PLL_BASE
|
520 |
|
|
generic map (
|
521 |
|
|
CLKFBOUT_MULT => CLKFBOUT_MULT,
|
522 |
|
|
CLKFBOUT_PHASE => 0.0,
|
523 |
|
|
CLKIN_PERIOD => CLKIN_PERIOD,
|
524 |
|
|
CLKOUT0_DIVIDE => 2,
|
525 |
|
|
CLKOUT0_PHASE => 0.0,
|
526 |
|
|
CLKOUT1_DIVIDE => 4,
|
527 |
|
|
CLKOUT1_PHASE => 0.0,
|
528 |
|
|
CLKOUT2_DIVIDE => 8,
|
529 |
|
|
CLKOUT2_PHASE => 0.0,
|
530 |
|
|
COMPENSATION => "INTERNAL"
|
531 |
|
|
)
|
532 |
|
|
port map (
|
533 |
|
|
CLKIN => gt_refclk_buf,
|
534 |
|
|
CLKFBIN => gt_refclk_fb,
|
535 |
|
|
RST => pll_rst,
|
536 |
|
|
CLKOUT0 => clk_250,
|
537 |
|
|
CLKOUT1 => clk_125,
|
538 |
|
|
CLKOUT2 => clk_62_5,
|
539 |
|
|
CLKOUT3 => OPEN,
|
540 |
|
|
CLKOUT4 => OPEN,
|
541 |
|
|
CLKOUT5 => OPEN,
|
542 |
|
|
CLKFBOUT => gt_refclk_fb,
|
543 |
|
|
LOCKED => clock_locked
|
544 |
|
|
);
|
545 |
|
|
|
546 |
|
|
-------------------------------------
|
547 |
|
|
-- Instantiate buffers where required
|
548 |
|
|
-------------------------------------
|
549 |
|
|
mgt_bufg : BUFG port map (O => mgt_clk, I => clk_125);
|
550 |
|
|
mgt2x_bufg : BUFG port map (O => mgt_clk_2x, I => clk_250);
|
551 |
|
|
phy_bufg : BUFG port map (O => trn_clk_c, I => clk_62_5);
|
552 |
|
|
|
553 |
|
|
----------------------------
|
554 |
|
|
-- PCI Express BRAM Instance
|
555 |
|
|
----------------------------
|
556 |
|
|
pcie_bram_top: pcie_bram_top_s6
|
557 |
|
|
generic map (
|
558 |
|
|
DEV_CAP_MAX_PAYLOAD_SUPPORTED => DEV_CAP_MAX_PAYLOAD_SUPPORTED,
|
559 |
|
|
|
560 |
|
|
VC0_TX_LASTPACKET => VC0_TX_LASTPACKET,
|
561 |
|
|
TLM_TX_OVERHEAD => 20,
|
562 |
|
|
TL_TX_RAM_RADDR_LATENCY => TL_TX_RAM_RADDR_LATENCY,
|
563 |
|
|
TL_TX_RAM_RDATA_LATENCY => TL_TX_RAM_RDATA_LATENCY,
|
564 |
|
|
-- NOTE: use the RX value here since there is no separate TX value
|
565 |
|
|
TL_TX_RAM_WRITE_LATENCY => TL_RX_RAM_WRITE_LATENCY,
|
566 |
|
|
|
567 |
|
|
VC0_RX_LIMIT => conv_integer(to_stdlogicvector(VC0_RX_RAM_LIMIT)),
|
568 |
|
|
TL_RX_RAM_RADDR_LATENCY => TL_RX_RAM_RADDR_LATENCY,
|
569 |
|
|
TL_RX_RAM_RDATA_LATENCY => TL_RX_RAM_RDATA_LATENCY,
|
570 |
|
|
TL_RX_RAM_WRITE_LATENCY => TL_RX_RAM_WRITE_LATENCY
|
571 |
|
|
)
|
572 |
|
|
port map (
|
573 |
|
|
user_clk_i => trn_clk_c,
|
574 |
|
|
reset_i => trn_reset,
|
575 |
|
|
|
576 |
|
|
mim_tx_waddr => mim_tx_waddr,
|
577 |
|
|
mim_tx_wen => mim_tx_wen,
|
578 |
|
|
mim_tx_ren => mim_tx_ren,
|
579 |
|
|
mim_tx_rce => '1',
|
580 |
|
|
mim_tx_wdata => mim_tx_wdata,
|
581 |
|
|
mim_tx_raddr => mim_tx_raddr,
|
582 |
|
|
mim_tx_rdata => mim_tx_rdata,
|
583 |
|
|
|
584 |
|
|
mim_rx_waddr => mim_rx_waddr,
|
585 |
|
|
mim_rx_wen => mim_rx_wen,
|
586 |
|
|
mim_rx_ren => mim_rx_ren,
|
587 |
|
|
mim_rx_rce => '1',
|
588 |
|
|
mim_rx_wdata(35) => '0',
|
589 |
|
|
mim_rx_wdata(34 downto 0) => mim_rx_wdata,
|
590 |
|
|
mim_rx_raddr => mim_rx_raddr,
|
591 |
|
|
mim_rx_rdata(35) => mim_rx_rdata_unused,
|
592 |
|
|
mim_rx_rdata(34 downto 0) => mim_rx_rdata
|
593 |
|
|
);
|
594 |
|
|
|
595 |
|
|
---------------------------------
|
596 |
|
|
-- PCI Express GTA1_DUAL Instance
|
597 |
|
|
---------------------------------
|
598 |
|
|
mgt : gtpa1_dual_wrapper_top
|
599 |
|
|
generic map (
|
600 |
|
|
SIMULATION => FAST_TRAIN
|
601 |
|
|
)
|
602 |
|
|
port map (
|
603 |
|
|
rx_char_is_k => rx_char_is_k,
|
604 |
|
|
rx_data => rx_data,
|
605 |
|
|
rx_enter_elecidle => rx_enter_elecidle,
|
606 |
|
|
rx_status => rx_status,
|
607 |
|
|
rx_polarity => rx_polarity,
|
608 |
|
|
tx_char_disp_mode => tx_char_disp_mode,
|
609 |
|
|
tx_char_is_k => tx_char_is_k,
|
610 |
|
|
tx_rcvr_det => tx_rcvr_det,
|
611 |
|
|
tx_data => tx_data,
|
612 |
|
|
phystatus => phystatus,
|
613 |
|
|
gt_usrclk => mgt_clk,
|
614 |
|
|
gt_usrclk2x => mgt_clk_2x,
|
615 |
|
|
sys_clk => sys_clk,
|
616 |
|
|
sys_rst_n => sys_reset_n,
|
617 |
|
|
arp_txp => pci_exp_txp,
|
618 |
|
|
arp_txn => pci_exp_txn,
|
619 |
|
|
arp_rxp => pci_exp_rxp,
|
620 |
|
|
arp_rxn => pci_exp_rxn,
|
621 |
|
|
gt_reset_done => gt_reset_done,
|
622 |
|
|
gt_rx_valid => gt_rx_valid,
|
623 |
|
|
gt_plllkdet_out => gt_plllkdet_out,
|
624 |
|
|
gt_refclk_out => gt_refclk_out,
|
625 |
|
|
gt_tx_elec_idle => gt_tx_elec_idle,
|
626 |
|
|
gt_power_down => gt_power_down,
|
627 |
|
|
rxreset => rxreset
|
628 |
|
|
);
|
629 |
|
|
|
630 |
|
|
-- Generate the reset for the PLL
|
631 |
|
|
pll_rst <= (not gt_plllkdet_out) or (not sys_reset_n);
|
632 |
|
|
|
633 |
|
|
---------------------------------------------------------------------------
|
634 |
|
|
-- Generate the connection between PCIE_A1 block and the GTPA1_DUAL. When
|
635 |
|
|
-- the parameter GTP_SEL is 0, connect to PIPEA, when it is a 1, connect to
|
636 |
|
|
-- PIPEB.
|
637 |
|
|
---------------------------------------------------------------------------
|
638 |
|
|
PIPE_A_SEL : if (GTP_SEL = 0) generate
|
639 |
|
|
-- Signals from GTPA1_DUAL to PCIE_A1
|
640 |
|
|
pipe_rx_charisk_a <= rx_char_is_k;
|
641 |
|
|
pipe_rx_data_a <= rx_data;
|
642 |
|
|
pipe_rx_enter_elec_idle_a <= rx_enter_elecidle;
|
643 |
|
|
pipe_rx_status_a <= rx_status;
|
644 |
|
|
pipe_phy_status_a <= phystatus;
|
645 |
|
|
pipe_gt_reset_done_a <= gt_reset_done;
|
646 |
|
|
|
647 |
|
|
-- Unused PCIE_A1 inputs
|
648 |
|
|
pipe_rx_charisk_b <= "00";
|
649 |
|
|
pipe_rx_data_b <= x"0000";
|
650 |
|
|
pipe_rx_enter_elec_idle_b <= '0';
|
651 |
|
|
pipe_rx_status_b <= "000";
|
652 |
|
|
pipe_phy_status_b <= '0';
|
653 |
|
|
pipe_gt_reset_done_b <= '0';
|
654 |
|
|
|
655 |
|
|
-- Signals from PCIE_A1 to GTPA1_DUAL
|
656 |
|
|
rx_polarity <= pipe_rx_polarity_a;
|
657 |
|
|
tx_char_disp_mode <= pipe_tx_char_disp_mode_a;
|
658 |
|
|
tx_char_is_k <= pipe_tx_char_is_k_a;
|
659 |
|
|
tx_rcvr_det <= pipe_tx_rcvr_det_a;
|
660 |
|
|
tx_data <= pipe_tx_data_a;
|
661 |
|
|
gt_tx_elec_idle <= pipe_gt_tx_elec_idle_a;
|
662 |
|
|
gt_power_down <= pipe_gt_power_down_a;
|
663 |
|
|
rxreset <= pipe_rxreset_a;
|
664 |
|
|
end generate PIPE_A_SEL;
|
665 |
|
|
|
666 |
|
|
PIPE_B_SEL : if (GTP_SEL = 1) generate
|
667 |
|
|
-- Signals from GTPA1_DUAL to PCIE_A1
|
668 |
|
|
pipe_rx_charisk_b <= rx_char_is_k;
|
669 |
|
|
pipe_rx_data_b <= rx_data;
|
670 |
|
|
pipe_rx_enter_elec_idle_b <= rx_enter_elecidle;
|
671 |
|
|
pipe_rx_status_b <= rx_status;
|
672 |
|
|
pipe_phy_status_b <= phystatus;
|
673 |
|
|
pipe_gt_reset_done_b <= gt_reset_done;
|
674 |
|
|
|
675 |
|
|
-- Unused PCIE_A1 inputs
|
676 |
|
|
pipe_rx_charisk_a <= "00";
|
677 |
|
|
pipe_rx_data_a <= x"0000";
|
678 |
|
|
pipe_rx_enter_elec_idle_a <= '0';
|
679 |
|
|
pipe_rx_status_a <= "000";
|
680 |
|
|
pipe_phy_status_a <= '0';
|
681 |
|
|
pipe_gt_reset_done_a <= '0';
|
682 |
|
|
|
683 |
|
|
-- Signals from PCIE_A1 to GTPA1_DUAL
|
684 |
|
|
rx_polarity <= pipe_rx_polarity_b;
|
685 |
|
|
tx_char_disp_mode <= pipe_tx_char_disp_mode_b;
|
686 |
|
|
tx_char_is_k <= pipe_tx_char_is_k_b;
|
687 |
|
|
tx_rcvr_det <= pipe_tx_rcvr_det_b;
|
688 |
|
|
tx_data <= pipe_tx_data_b;
|
689 |
|
|
gt_tx_elec_idle <= pipe_gt_tx_elec_idle_b;
|
690 |
|
|
gt_power_down <= pipe_gt_power_down_b;
|
691 |
|
|
rxreset <= pipe_rxreset_b;
|
692 |
|
|
end generate PIPE_B_SEL;
|
693 |
|
|
|
694 |
|
|
---------------------------------------------------------------
|
695 |
|
|
-- Integrated Endpoint Block for PCI Express Instance (PCIE_A1)
|
696 |
|
|
---------------------------------------------------------------
|
697 |
|
|
|
698 |
|
|
PCIE_A1_inst : PCIE_A1
|
699 |
|
|
generic map (
|
700 |
|
|
BAR0 => BAR0,
|
701 |
|
|
BAR1 => BAR1,
|
702 |
|
|
BAR2 => BAR2,
|
703 |
|
|
BAR3 => BAR3,
|
704 |
|
|
BAR4 => BAR4,
|
705 |
|
|
BAR5 => BAR5,
|
706 |
|
|
CARDBUS_CIS_POINTER => CARDBUS_CIS_POINTER,
|
707 |
|
|
CLASS_CODE => CLASS_CODE,
|
708 |
|
|
DEV_CAP_ENDPOINT_L0S_LATENCY => DEV_CAP_ENDPOINT_L0S_LATENCY,
|
709 |
|
|
DEV_CAP_ENDPOINT_L1_LATENCY => DEV_CAP_ENDPOINT_L1_LATENCY,
|
710 |
|
|
DEV_CAP_EXT_TAG_SUPPORTED => DEV_CAP_EXT_TAG_SUPPORTED,
|
711 |
|
|
DEV_CAP_MAX_PAYLOAD_SUPPORTED => DEV_CAP_MAX_PAYLOAD_SUPPORTED,
|
712 |
|
|
DEV_CAP_PHANTOM_FUNCTIONS_SUPPORT => DEV_CAP_PHANTOM_FUNCTIONS_SUPPORT,
|
713 |
|
|
DEV_CAP_ROLE_BASED_ERROR => DEV_CAP_ROLE_BASED_ERROR,
|
714 |
|
|
DISABLE_BAR_FILTERING => DISABLE_BAR_FILTERING,
|
715 |
|
|
DISABLE_ID_CHECK => DISABLE_ID_CHECK,
|
716 |
|
|
DISABLE_SCRAMBLING => DISABLE_SCRAMBLING,
|
717 |
|
|
ENABLE_RX_TD_ECRC_TRIM => ENABLE_RX_TD_ECRC_TRIM,
|
718 |
|
|
EXPANSION_ROM => EXPANSION_ROM,
|
719 |
|
|
FAST_TRAIN => FAST_TRAIN,
|
720 |
|
|
GTP_SEL => GTP_SEL,
|
721 |
|
|
LINK_CAP_ASPM_SUPPORT => LINK_CAP_ASPM_SUPPORT,
|
722 |
|
|
LINK_CAP_L0S_EXIT_LATENCY => LINK_CAP_L0S_EXIT_LATENCY,
|
723 |
|
|
LINK_CAP_L1_EXIT_LATENCY => LINK_CAP_L1_EXIT_LATENCY,
|
724 |
|
|
LINK_STATUS_SLOT_CLOCK_CONFIG => LINK_STATUS_SLOT_CLOCK_CONFIG,
|
725 |
|
|
LL_ACK_TIMEOUT => LL_ACK_TIMEOUT,
|
726 |
|
|
LL_ACK_TIMEOUT_EN => LL_ACK_TIMEOUT_EN,
|
727 |
|
|
LL_REPLAY_TIMEOUT => LL_REPLAY_TIMEOUT,
|
728 |
|
|
LL_REPLAY_TIMEOUT_EN => LL_REPLAY_TIMEOUT_EN,
|
729 |
|
|
MSI_CAP_MULTIMSG_EXTENSION => MSI_CAP_MULTIMSG_EXTENSION,
|
730 |
|
|
MSI_CAP_MULTIMSGCAP => MSI_CAP_MULTIMSGCAP,
|
731 |
|
|
PCIE_CAP_CAPABILITY_VERSION => PCIE_CAP_CAPABILITY_VERSION,
|
732 |
|
|
PCIE_CAP_DEVICE_PORT_TYPE => PCIE_CAP_DEVICE_PORT_TYPE,
|
733 |
|
|
PCIE_CAP_INT_MSG_NUM => PCIE_CAP_INT_MSG_NUM,
|
734 |
|
|
PCIE_CAP_SLOT_IMPLEMENTED => PCIE_CAP_SLOT_IMPLEMENTED,
|
735 |
|
|
PCIE_GENERIC => PCIE_GENERIC,
|
736 |
|
|
PLM_AUTO_CONFIG => PLM_AUTO_CONFIG,
|
737 |
|
|
PM_CAP_AUXCURRENT => PM_CAP_AUXCURRENT,
|
738 |
|
|
PM_CAP_DSI => PM_CAP_DSI,
|
739 |
|
|
PM_CAP_D1SUPPORT => PM_CAP_D1SUPPORT,
|
740 |
|
|
PM_CAP_D2SUPPORT => PM_CAP_D2SUPPORT,
|
741 |
|
|
PM_CAP_PME_CLOCK => PM_CAP_PME_CLOCK,
|
742 |
|
|
PM_CAP_PMESUPPORT => PM_CAP_PMESUPPORT,
|
743 |
|
|
PM_CAP_VERSION => PM_CAP_VERSION,
|
744 |
|
|
PM_DATA_SCALE0 => PM_DATA_SCALE0,
|
745 |
|
|
PM_DATA_SCALE1 => PM_DATA_SCALE1,
|
746 |
|
|
PM_DATA_SCALE2 => PM_DATA_SCALE2,
|
747 |
|
|
PM_DATA_SCALE3 => PM_DATA_SCALE3,
|
748 |
|
|
PM_DATA_SCALE4 => PM_DATA_SCALE4,
|
749 |
|
|
PM_DATA_SCALE5 => PM_DATA_SCALE5,
|
750 |
|
|
PM_DATA_SCALE6 => PM_DATA_SCALE6,
|
751 |
|
|
PM_DATA_SCALE7 => PM_DATA_SCALE7,
|
752 |
|
|
PM_DATA0 => PM_DATA0,
|
753 |
|
|
PM_DATA1 => PM_DATA1,
|
754 |
|
|
PM_DATA2 => PM_DATA2,
|
755 |
|
|
PM_DATA3 => PM_DATA3,
|
756 |
|
|
PM_DATA4 => PM_DATA4,
|
757 |
|
|
PM_DATA5 => PM_DATA5,
|
758 |
|
|
PM_DATA6 => PM_DATA6,
|
759 |
|
|
PM_DATA7 => PM_DATA7,
|
760 |
|
|
SLOT_CAP_ATT_BUTTON_PRESENT => SLOT_CAP_ATT_BUTTON_PRESENT,
|
761 |
|
|
SLOT_CAP_ATT_INDICATOR_PRESENT => SLOT_CAP_ATT_INDICATOR_PRESENT,
|
762 |
|
|
SLOT_CAP_POWER_INDICATOR_PRESENT => SLOT_CAP_POWER_INDICATOR_PRESENT,
|
763 |
|
|
TL_RX_RAM_RADDR_LATENCY => TL_RX_RAM_RADDR_LATENCY,
|
764 |
|
|
TL_RX_RAM_RDATA_LATENCY => TL_RX_RAM_RDATA_LATENCY,
|
765 |
|
|
TL_RX_RAM_WRITE_LATENCY => TL_RX_RAM_WRITE_LATENCY,
|
766 |
|
|
TL_TFC_DISABLE => TL_TFC_DISABLE,
|
767 |
|
|
TL_TX_CHECKS_DISABLE => TL_TX_CHECKS_DISABLE,
|
768 |
|
|
TL_TX_RAM_RADDR_LATENCY => TL_TX_RAM_RADDR_LATENCY,
|
769 |
|
|
TL_TX_RAM_RDATA_LATENCY => TL_TX_RAM_RDATA_LATENCY,
|
770 |
|
|
USR_CFG => USR_CFG,
|
771 |
|
|
USR_EXT_CFG => USR_EXT_CFG,
|
772 |
|
|
VC0_CPL_INFINITE => VC0_CPL_INFINITE,
|
773 |
|
|
VC0_RX_RAM_LIMIT => VC0_RX_RAM_LIMIT,
|
774 |
|
|
VC0_TOTAL_CREDITS_CD => VC0_TOTAL_CREDITS_CD,
|
775 |
|
|
VC0_TOTAL_CREDITS_CH => VC0_TOTAL_CREDITS_CH,
|
776 |
|
|
VC0_TOTAL_CREDITS_NPH => VC0_TOTAL_CREDITS_NPH,
|
777 |
|
|
VC0_TOTAL_CREDITS_PD => VC0_TOTAL_CREDITS_PD,
|
778 |
|
|
VC0_TOTAL_CREDITS_PH => VC0_TOTAL_CREDITS_PH,
|
779 |
|
|
VC0_TX_LASTPACKET => VC0_TX_LASTPACKET
|
780 |
|
|
)
|
781 |
|
|
port map (
|
782 |
|
|
CFGBUSNUMBER => cfg_bus_number,
|
783 |
|
|
CFGCOMMANDBUSMASTERENABLE => cfg_command_bus_master_enable,
|
784 |
|
|
CFGCOMMANDINTERRUPTDISABLE => cfg_command_interrupt_disable,
|
785 |
|
|
CFGCOMMANDIOENABLE => cfg_command_io_enable,
|
786 |
|
|
CFGCOMMANDMEMENABLE => cfg_command_mem_enable,
|
787 |
|
|
CFGCOMMANDSERREN => cfg_command_serr_en,
|
788 |
|
|
CFGDEVCONTROLAUXPOWEREN => cfg_dev_control_aux_power_en,
|
789 |
|
|
CFGDEVCONTROLCORRERRREPORTINGEN => cfg_dev_control_corr_err_reporting_en,
|
790 |
|
|
CFGDEVCONTROLENABLERO => cfg_dev_control_enable_ro,
|
791 |
|
|
CFGDEVCONTROLEXTTAGEN => cfg_dev_control_ext_tag_en,
|
792 |
|
|
CFGDEVCONTROLFATALERRREPORTINGEN => cfg_dev_control_fatal_err_reporting_en,
|
793 |
|
|
CFGDEVCONTROLMAXPAYLOAD => cfg_dev_control_max_payload,
|
794 |
|
|
CFGDEVCONTROLMAXREADREQ => cfg_dev_control_max_read_req,
|
795 |
|
|
CFGDEVCONTROLNONFATALREPORTINGEN => cfg_dev_control_non_fatal_reporting_en,
|
796 |
|
|
CFGDEVCONTROLNOSNOOPEN => cfg_dev_control_no_snoop_en,
|
797 |
|
|
CFGDEVCONTROLPHANTOMEN => cfg_dev_control_phantom_en,
|
798 |
|
|
CFGDEVCONTROLURERRREPORTINGEN => cfg_dev_control_ur_err_reporting_en,
|
799 |
|
|
CFGDEVICENUMBER => cfg_device_number,
|
800 |
|
|
CFGDEVID => w_cfg_dev_id,
|
801 |
|
|
CFGDEVSTATUSCORRERRDETECTED => cfg_dev_status_corr_err_detected,
|
802 |
|
|
CFGDEVSTATUSFATALERRDETECTED => cfg_dev_status_fatal_err_detected,
|
803 |
|
|
CFGDEVSTATUSNONFATALERRDETECTED => cfg_dev_status_nonfatal_err_detected,
|
804 |
|
|
CFGDEVSTATUSURDETECTED => cfg_dev_status_ur_detected,
|
805 |
|
|
CFGDO => cfg_do,
|
806 |
|
|
CFGDSN => cfg_dsn,
|
807 |
|
|
CFGDWADDR => cfg_dwaddr,
|
808 |
|
|
CFGERRCORN => cfg_err_cor_n,
|
809 |
|
|
CFGERRCPLABORTN => cfg_err_cpl_abort_n,
|
810 |
|
|
CFGERRCPLRDYN => cfg_err_cpl_rdy_n,
|
811 |
|
|
CFGERRCPLTIMEOUTN => cfg_err_cpl_timeout_n,
|
812 |
|
|
CFGERRECRCN => cfg_err_ecrc_n,
|
813 |
|
|
CFGERRLOCKEDN => cfg_err_locked_n,
|
814 |
|
|
CFGERRPOSTEDN => cfg_err_posted_n,
|
815 |
|
|
CFGERRTLPCPLHEADER => cfg_err_tlp_cpl_header,
|
816 |
|
|
CFGERRURN => cfg_err_ur_n,
|
817 |
|
|
CFGFUNCTIONNUMBER => cfg_function_number,
|
818 |
|
|
CFGINTERRUPTASSERTN => cfg_interrupt_assert_n,
|
819 |
|
|
CFGINTERRUPTDI => cfg_interrupt_di,
|
820 |
|
|
CFGINTERRUPTDO => cfg_interrupt_do,
|
821 |
|
|
CFGINTERRUPTMMENABLE => cfg_interrupt_mmenable,
|
822 |
|
|
CFGINTERRUPTMSIENABLE => cfg_interrupt_msienable,
|
823 |
|
|
CFGINTERRUPTN => cfg_interrupt_n,
|
824 |
|
|
CFGINTERRUPTRDYN => cfg_interrupt_rdy_n,
|
825 |
|
|
CFGLINKCONTOLRCB => cfg_link_control_rcb,
|
826 |
|
|
CFGLINKCONTROLASPMCONTROL => cfg_link_control_aspm_control,
|
827 |
|
|
CFGLINKCONTROLCOMMONCLOCK => cfg_link_control_common_clock,
|
828 |
|
|
CFGLINKCONTROLEXTENDEDSYNC => cfg_link_control_extended_sync,
|
829 |
|
|
CFGLTSSMSTATE => cfg_ltssm_state,
|
830 |
|
|
CFGPCIELINKSTATEN => cfg_pcie_link_state_n,
|
831 |
|
|
CFGPMWAKEN => cfg_pm_wake_n,
|
832 |
|
|
CFGRDENN => cfg_rd_en_n,
|
833 |
|
|
CFGRDWRDONEN => cfg_rd_wr_done_n,
|
834 |
|
|
CFGREVID => w_cfg_rev_id,
|
835 |
|
|
CFGSUBSYSID => w_cfg_subsys_id,
|
836 |
|
|
CFGSUBSYSVENID => w_cfg_subsys_ven_id,
|
837 |
|
|
CFGTOTURNOFFN => cfg_to_turnoff_n,
|
838 |
|
|
CFGTRNPENDINGN => cfg_trn_pending_n,
|
839 |
|
|
CFGTURNOFFOKN => cfg_turnoff_ok_n,
|
840 |
|
|
CFGVENID => w_cfg_ven_id,
|
841 |
|
|
CLOCKLOCKED => clock_locked,
|
842 |
|
|
DBGBADDLLPSTATUS => dbg_bad_dllp_status,
|
843 |
|
|
DBGBADTLPLCRC => dbg_bad_tlp_lcrc,
|
844 |
|
|
DBGBADTLPSEQNUM => dbg_bad_tlp_seq_num,
|
845 |
|
|
DBGBADTLPSTATUS => dbg_bad_tlp_status,
|
846 |
|
|
DBGDLPROTOCOLSTATUS => dbg_dl_protocol_status,
|
847 |
|
|
DBGFCPROTOCOLERRSTATUS => dbg_fc_protocol_err_status,
|
848 |
|
|
DBGMLFRMDLENGTH => dbg_mlfrmd_length,
|
849 |
|
|
DBGMLFRMDMPS => dbg_mlfrmd_mps,
|
850 |
|
|
DBGMLFRMDTCVC => dbg_mlfrmd_tcvc,
|
851 |
|
|
DBGMLFRMDTLPSTATUS => dbg_mlfrmd_tlp_status,
|
852 |
|
|
DBGMLFRMDUNRECTYPE => dbg_mlfrmd_unrec_type,
|
853 |
|
|
DBGPOISTLPSTATUS => dbg_poistlpstatus,
|
854 |
|
|
DBGRCVROVERFLOWSTATUS => dbg_rcvr_overflow_status,
|
855 |
|
|
DBGREGDETECTEDCORRECTABLE => dbg_reg_detected_correctable,
|
856 |
|
|
DBGREGDETECTEDFATAL => dbg_reg_detected_fatal,
|
857 |
|
|
DBGREGDETECTEDNONFATAL => dbg_reg_detected_non_fatal,
|
858 |
|
|
DBGREGDETECTEDUNSUPPORTED => dbg_reg_detected_unsupported,
|
859 |
|
|
DBGRPLYROLLOVERSTATUS => dbg_rply_rollover_status,
|
860 |
|
|
DBGRPLYTIMEOUTSTATUS => dbg_rply_timeout_status,
|
861 |
|
|
DBGURNOBARHIT => dbg_ur_no_bar_hit,
|
862 |
|
|
DBGURPOISCFGWR => dbg_ur_pois_cfg_wr,
|
863 |
|
|
DBGURSTATUS => dbg_ur_status,
|
864 |
|
|
DBGURUNSUPMSG => dbg_ur_unsup_msg,
|
865 |
|
|
MGTCLK => mgt_clk,
|
866 |
|
|
MIMRXRADDR => mim_rx_raddr,
|
867 |
|
|
MIMRXRDATA => mim_rx_rdata,
|
868 |
|
|
MIMRXREN => mim_rx_ren,
|
869 |
|
|
MIMRXWADDR => mim_rx_waddr,
|
870 |
|
|
MIMRXWDATA => mim_rx_wdata,
|
871 |
|
|
MIMRXWEN => mim_rx_wen,
|
872 |
|
|
MIMTXRADDR => mim_tx_raddr,
|
873 |
|
|
MIMTXRDATA => mim_tx_rdata,
|
874 |
|
|
MIMTXREN => mim_tx_ren,
|
875 |
|
|
MIMTXWADDR => mim_tx_waddr,
|
876 |
|
|
MIMTXWDATA => mim_tx_wdata,
|
877 |
|
|
MIMTXWEN => mim_tx_wen,
|
878 |
|
|
PIPEGTPOWERDOWNA => pipe_gt_power_down_a,
|
879 |
|
|
PIPEGTPOWERDOWNB => pipe_gt_power_down_b,
|
880 |
|
|
PIPEGTRESETDONEA => pipe_gt_reset_done_a,
|
881 |
|
|
PIPEGTRESETDONEB => pipe_gt_reset_done_b,
|
882 |
|
|
PIPEGTTXELECIDLEA => pipe_gt_tx_elec_idle_a,
|
883 |
|
|
PIPEGTTXELECIDLEB => pipe_gt_tx_elec_idle_b,
|
884 |
|
|
PIPEPHYSTATUSA => pipe_phy_status_a,
|
885 |
|
|
PIPEPHYSTATUSB => pipe_phy_status_b,
|
886 |
|
|
PIPERXCHARISKA => pipe_rx_charisk_a,
|
887 |
|
|
PIPERXCHARISKB => pipe_rx_charisk_b,
|
888 |
|
|
PIPERXDATAA => pipe_rx_data_a,
|
889 |
|
|
PIPERXDATAB => pipe_rx_data_b,
|
890 |
|
|
PIPERXENTERELECIDLEA => pipe_rx_enter_elec_idle_a,
|
891 |
|
|
PIPERXENTERELECIDLEB => pipe_rx_enter_elec_idle_b,
|
892 |
|
|
PIPERXPOLARITYA => pipe_rx_polarity_a,
|
893 |
|
|
PIPERXPOLARITYB => pipe_rx_polarity_b,
|
894 |
|
|
PIPERXRESETA => pipe_rxreset_a,
|
895 |
|
|
PIPERXRESETB => pipe_rxreset_b,
|
896 |
|
|
PIPERXSTATUSA => pipe_rx_status_a,
|
897 |
|
|
PIPERXSTATUSB => pipe_rx_status_b,
|
898 |
|
|
PIPETXCHARDISPMODEA => pipe_tx_char_disp_mode_a,
|
899 |
|
|
PIPETXCHARDISPMODEB => pipe_tx_char_disp_mode_b,
|
900 |
|
|
PIPETXCHARDISPVALA => pipe_tx_char_disp_val_a,
|
901 |
|
|
PIPETXCHARDISPVALB => pipe_tx_char_disp_val_b,
|
902 |
|
|
PIPETXCHARISKA => pipe_tx_char_is_k_a,
|
903 |
|
|
PIPETXCHARISKB => pipe_tx_char_is_k_b,
|
904 |
|
|
PIPETXDATAA => pipe_tx_data_a,
|
905 |
|
|
PIPETXDATAB => pipe_tx_data_b,
|
906 |
|
|
PIPETXRCVRDETA => pipe_tx_rcvr_det_a,
|
907 |
|
|
PIPETXRCVRDETB => pipe_tx_rcvr_det_b,
|
908 |
|
|
RECEIVEDHOTRESET => received_hot_reset,
|
909 |
|
|
SYSRESETN => sys_reset_n,
|
910 |
|
|
TRNFCCPLD => trn_fc_cpld,
|
911 |
|
|
TRNFCCPLH => trn_fc_cplh,
|
912 |
|
|
TRNFCNPD => trn_fc_npd,
|
913 |
|
|
TRNFCNPH => trn_fc_nph,
|
914 |
|
|
TRNFCPD => trn_fc_pd,
|
915 |
|
|
TRNFCPH => trn_fc_ph,
|
916 |
|
|
TRNFCSEL => trn_fc_sel,
|
917 |
|
|
TRNLNKUPN => trn_lnk_up_n,
|
918 |
|
|
TRNRBARHITN => trn_rbar_hit_n,
|
919 |
|
|
TRNRD => trn_rd,
|
920 |
|
|
TRNRDSTRDYN => trn_rdst_rdy_n,
|
921 |
|
|
TRNREOFN => trn_reof_n,
|
922 |
|
|
TRNRERRFWDN => trn_rerrfwd_n,
|
923 |
|
|
TRNRNPOKN => trn_rnp_ok_n,
|
924 |
|
|
TRNRSOFN => trn_rsof_n,
|
925 |
|
|
TRNRSRCDSCN => trn_rsrc_dsc_n,
|
926 |
|
|
TRNRSRCRDYN => trn_rsrc_rdy_n,
|
927 |
|
|
TRNTBUFAV => trn_tbuf_av,
|
928 |
|
|
TRNTCFGGNTN => trn_tcfg_gnt_n,
|
929 |
|
|
TRNTCFGREQN => trn_tcfg_req_n,
|
930 |
|
|
TRNTD => trn_td,
|
931 |
|
|
TRNTDSTRDYN => trn_tdst_rdy_n,
|
932 |
|
|
TRNTEOFN => trn_teof_n,
|
933 |
|
|
TRNTERRDROPN => trn_terr_drop_n,
|
934 |
|
|
TRNTERRFWDN => trn_terrfwd_n,
|
935 |
|
|
TRNTSOFN => trn_tsof_n,
|
936 |
|
|
TRNTSRCDSCN => trn_tsrc_dsc_n,
|
937 |
|
|
TRNTSRCRDYN => trn_tsrc_rdy_n,
|
938 |
|
|
TRNTSTRN => trn_tstr_n,
|
939 |
|
|
USERCLK => trn_clk_c,
|
940 |
|
|
USERRSTN => trn_reset_n_c
|
941 |
|
|
);
|
942 |
|
|
|
943 |
|
|
----------------------------------------------------
|
944 |
|
|
-- Recreate wrapper outputs from the PCIE_A1 signals
|
945 |
|
|
----------------------------------------------------
|
946 |
|
|
cfg_status <= x"0000";
|
947 |
|
|
|
948 |
|
|
cfg_command <= "00000" &
|
949 |
|
|
cfg_command_interrupt_disable &
|
950 |
|
|
"0" &
|
951 |
|
|
cfg_command_serr_en &
|
952 |
|
|
"00000" &
|
953 |
|
|
cfg_command_bus_master_enable &
|
954 |
|
|
cfg_command_mem_enable &
|
955 |
|
|
cfg_command_io_enable;
|
956 |
|
|
|
957 |
|
|
cfg_dstatus <= "0000000000" &
|
958 |
|
|
not cfg_trn_pending_n &
|
959 |
|
|
'0' &
|
960 |
|
|
cfg_dev_status_ur_detected &
|
961 |
|
|
cfg_dev_status_fatal_err_detected &
|
962 |
|
|
cfg_dev_status_nonfatal_err_detected &
|
963 |
|
|
cfg_dev_status_corr_err_detected;
|
964 |
|
|
|
965 |
|
|
cfg_dcommand <= '0' &
|
966 |
|
|
cfg_dev_control_max_read_req &
|
967 |
|
|
cfg_dev_control_no_snoop_en &
|
968 |
|
|
cfg_dev_control_aux_power_en &
|
969 |
|
|
cfg_dev_control_phantom_en &
|
970 |
|
|
cfg_dev_control_ext_tag_en &
|
971 |
|
|
cfg_dev_control_max_payload &
|
972 |
|
|
cfg_dev_control_enable_ro &
|
973 |
|
|
cfg_dev_control_ur_err_reporting_en &
|
974 |
|
|
cfg_dev_control_fatal_err_reporting_en &
|
975 |
|
|
cfg_dev_control_non_fatal_reporting_en &
|
976 |
|
|
cfg_dev_control_corr_err_reporting_en;
|
977 |
|
|
|
978 |
|
|
cfg_lstatus <= x"0011";
|
979 |
|
|
|
980 |
|
|
cfg_lcommand <= x"00" &
|
981 |
|
|
cfg_link_control_extended_sync &
|
982 |
|
|
cfg_link_control_common_clock &
|
983 |
|
|
"00" &
|
984 |
|
|
cfg_link_control_rcb &
|
985 |
|
|
'0' &
|
986 |
|
|
cfg_link_control_aspm_control;
|
987 |
|
|
|
988 |
|
|
end rtl;
|