OpenCores
URL https://opencores.org/ocsvn/pcie_mini/pcie_mini/trunk

Subversion Repositories pcie_mini

[/] [pcie_mini/] [trunk/] [example_design/] [pcie.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
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;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.