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

Subversion Repositories pcie_sg_dma

[/] [pcie_sg_dma/] [branches/] [Virtex6/] [ML605_ISE13.3/] [ipcore_dir_ISE13.3/] [v6_pcie_v1_7_x4/] [simulation/] [dsport/] [xilinx_pcie_2_0_rport_v6.vhd] - Blame information for rev 13

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 13 barabba
-------------------------------------------------------------------------------
2
--
3
-- (c) Copyright 2009-2011 Xilinx, Inc. All rights reserved.
4
--
5
-- This file contains confidential and proprietary information
6
-- of Xilinx, Inc. and is protected under U.S. and
7
-- international copyright and other intellectual property
8
-- laws.
9
--
10
-- DISCLAIMER
11
-- This disclaimer is not a license and does not grant any
12
-- rights to the materials distributed herewith. Except as
13
-- otherwise provided in a valid license issued to you by
14
-- Xilinx, and to the maximum extent permitted by applicable
15
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
16
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
17
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
18
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
19
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
20
-- (2) Xilinx shall not be liable (whether in contract or tort,
21
-- including negligence, or under any other theory of
22
-- liability) for any loss or damage of any kind or nature
23
-- related to, arising under or in connection with these
24
-- materials, including for any direct, or any indirect,
25
-- special, incidental, or consequential loss or damage
26
-- (including loss of data, profits, goodwill, or any type of
27
-- loss or damage suffered as a result of any action brought
28
-- by a third party) even if such damage or loss was
29
-- reasonably foreseeable or Xilinx had been advised of the
30
-- possibility of the same.
31
--
32
-- CRITICAL APPLICATIONS
33
-- Xilinx products are not designed or intended to be fail-
34
-- safe, or for use in any application requiring fail-safe
35
-- performance, such as life-support or safety devices or
36
-- systems, Class III medical devices, nuclear facilities,
37
-- applications related to the deployment of airbags, or any
38
-- other applications that could lead to death, personal
39
-- injury, or severe property or environmental damage
40
-- (individually and collectively, "Critical
41
-- Applications"). Customer assumes the sole risk and
42
-- liability of any use of Xilinx products in Critical
43
-- Applications, subject only to applicable laws and
44
-- regulations governing limitations on product liability.
45
--
46
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
47
-- PART OF THIS FILE AT ALL TIMES.
48
--
49
-------------------------------------------------------------------------------
50
-- Project    : Virtex-6 Integrated Block for PCI Express
51
-- File       : xilinx_pcie_2_0_rport_v6.vhd
52
-- Version    : 1.7
53
--
54
-- Description:  PCI Express Root Port example FPGA design
55
--
56
------------------------------------------------------------------------------
57
 
58
library ieee;
59
use ieee.std_logic_1164.all;
60
 
61
library work;
62
 
63
entity xilinx_pcie_2_0_rport_v6 is
64
  generic (
65
     REF_CLK_FREQ                      : integer := 0;           -- 0 - 100MHz, 1 - 125 MHz, 2 - 250 MHz
66
     ALLOW_X8_GEN2                     : boolean := FALSE;
67
     PL_FAST_TRAIN                     : boolean := FALSE;
68
     LINK_CAP_MAX_LINK_SPEED           : bit_vector := X"1";
69
     DEVICE_ID                         : bit_vector := X"0007";
70
     LINK_CAP_MAX_LINK_WIDTH           : bit_vector := X"08";
71
     LTSSM_MAX_LINK_WIDTH              : bit_vector := X"08";
72
     LINK_CAP_MAX_LINK_WIDTH_int       : integer := 8;
73
     LINK_CTRL2_TARGET_LINK_SPEED      : bit_vector := X"2";
74
     DEV_CAP_MAX_PAYLOAD_SUPPORTED     : integer := 2;
75
     USER_CLK_FREQ                     : integer := 3;
76
     VC0_TX_LASTPACKET                 : integer := 31;
77
     VC0_RX_RAM_LIMIT                  : bit_vector := X"03FF";
78
     VC0_TOTAL_CREDITS_CD              : integer := 154;
79
     VC0_TOTAL_CREDITS_PD              : integer := 154
80
    );
81
  port (
82
  pci_exp_txp                   : out std_logic_vector((LINK_CAP_MAX_LINK_WIDTH_int - 1) downto 0);
83
  pci_exp_txn                   : out std_logic_vector((LINK_CAP_MAX_LINK_WIDTH_int - 1) downto 0);
84
  pci_exp_rxp                   : in std_logic_vector((LINK_CAP_MAX_LINK_WIDTH_int - 1) downto 0);
85
  pci_exp_rxn                   : in std_logic_vector((LINK_CAP_MAX_LINK_WIDTH_int - 1) downto 0);
86
 
87
  sys_clk                       : in std_logic;
88
  sys_reset_n                   : in std_logic
89
);
90
end xilinx_pcie_2_0_rport_v6;
91
 
92
architecture rtl of xilinx_pcie_2_0_rport_v6 is
93
 
94
  component pcie_2_0_rport_v6
95
    generic (
96
      REF_CLK_FREQ : integer;
97
      ALLOW_X8_GEN2 : boolean;
98
      PL_FAST_TRAIN : boolean;
99
      LINK_CAP_MAX_LINK_SPEED : bit_vector;
100
      DEVICE_ID : bit_vector;
101
      LINK_CAP_MAX_LINK_WIDTH : bit_vector;
102
      LINK_CAP_MAX_LINK_WIDTH_int : integer;
103
      LINK_CTRL2_TARGET_LINK_SPEED : bit_vector;
104
      LTSSM_MAX_LINK_WIDTH : bit_vector;
105
      DEV_CAP_MAX_PAYLOAD_SUPPORTED : integer;
106
      USER_CLK_FREQ : integer;
107
      VC0_TX_LASTPACKET : integer;
108
      VC0_RX_RAM_LIMIT : bit_vector;
109
      VC0_TOTAL_CREDITS_CD : integer;
110
      VC0_TOTAL_CREDITS_PD : integer
111
);
112
    port (
113
      pci_exp_txp                               : out std_logic_vector((LINK_CAP_MAX_LINK_WIDTH_int - 1) downto 0);
114
      pci_exp_txn                               : out std_logic_vector((LINK_CAP_MAX_LINK_WIDTH_int - 1) downto 0);
115
      pci_exp_rxp                               : in std_logic_vector((LINK_CAP_MAX_LINK_WIDTH_int - 1) downto 0);
116
      pci_exp_rxn                               : in std_logic_vector((LINK_CAP_MAX_LINK_WIDTH_int - 1) downto 0);
117
      trn_clk                                   : out std_logic;
118
      trn_reset_n                               : out std_logic;
119
      trn_lnk_up_n                              : out std_logic;
120
      trn_tbuf_av                               : out std_logic_vector(5 downto 0);
121
      trn_tcfg_req_n                            : out std_logic;
122
      trn_terr_drop_n                           : out std_logic;
123
      trn_tdst_rdy_n                            : out std_logic;
124
      trn_td                                    : in std_logic_vector(63 downto 0);
125
      trn_trem_n                                : in std_logic;
126
      trn_tsof_n                                : in std_logic;
127
      trn_teof_n                                : in std_logic;
128
      trn_tsrc_rdy_n                            : in std_logic;
129
      trn_tsrc_dsc_n                            : in std_logic;
130
      trn_terrfwd_n                             : in std_logic;
131
      trn_tcfg_gnt_n                            : in std_logic;
132
      trn_tstr_n                                : in std_logic;
133
      trn_rd                                    : out std_logic_vector(63 downto 0);
134
      trn_rrem_n                                : out std_logic;
135
      trn_rsof_n                                : out std_logic;
136
      trn_reof_n                                : out std_logic;
137
      trn_rsrc_rdy_n                            : out std_logic;
138
      trn_rsrc_dsc_n                            : out std_logic;
139
      trn_rerrfwd_n                             : out std_logic;
140
      trn_rbar_hit_n                            : out std_logic_vector(6 downto 0);
141
      trn_rdst_rdy_n                            : in std_logic;
142
      trn_rnp_ok_n                              : in std_logic;
143
      trn_recrc_err_n                           : out std_logic;
144
      trn_fc_cpld                               : out std_logic_vector(11 downto 0);
145
      trn_fc_cplh                               : out std_logic_vector(7 downto 0);
146
      trn_fc_npd                                : out std_logic_vector(11 downto 0);
147
      trn_fc_nph                                : out std_logic_vector(7 downto 0);
148
      trn_fc_pd                                 : out std_logic_vector(11 downto 0);
149
      trn_fc_ph                                 : out std_logic_vector(7 downto 0);
150
      trn_fc_sel                                : in std_logic_vector(2 downto 0);
151
      cfg_do                                    : out std_logic_vector(31 downto 0);
152
      cfg_rd_wr_done_n                          : out std_logic;
153
      cfg_di                                    : in std_logic_vector(31 downto 0);
154
      cfg_byte_en_n                             : in std_logic_vector(3 downto 0);
155
      cfg_dwaddr                                : in std_logic_vector(9 downto 0);
156
      cfg_wr_en_n                               : in std_logic;
157
      cfg_wr_rw1c_as_rw_n                       : in std_logic;
158
      cfg_rd_en_n                               : in std_logic;
159
      cfg_err_cor_n                             : in std_logic;
160
      cfg_err_ur_n                              : in std_logic;
161
      cfg_err_ecrc_n                            : in std_logic;
162
      cfg_err_cpl_timeout_n                     : in std_logic;
163
      cfg_err_cpl_abort_n                       : in std_logic;
164
      cfg_err_cpl_unexpect_n                    : in std_logic;
165
      cfg_err_posted_n                          : in std_logic;
166
      cfg_err_locked_n                          : in std_logic;
167
      cfg_err_tlp_cpl_header                    : in std_logic_vector(47 downto 0);
168
      cfg_err_cpl_rdy_n                         : out std_logic;
169
      cfg_interrupt_n                           : in std_logic;
170
      cfg_interrupt_rdy_n                       : out std_logic;
171
      cfg_interrupt_assert_n                    : in std_logic;
172
      cfg_interrupt_di                          : in std_logic_vector(7 downto 0);
173
      cfg_interrupt_do                          : out std_logic_vector(7 downto 0);
174
      cfg_interrupt_mmenable                    : out std_logic_vector(2 downto 0);
175
      cfg_interrupt_msienable                   : out std_logic;
176
      cfg_interrupt_msixenable                  : out std_logic;
177
      cfg_interrupt_msixfm                      : out std_logic;
178
      cfg_trn_pending_n                         : in std_logic;
179
      cfg_pm_send_pme_to_n                      : in std_logic;
180
      cfg_status                                : out std_logic_vector(15 downto 0);
181
      cfg_command                               : out std_logic_vector(15 downto 0);
182
      cfg_dstatus                               : out std_logic_vector(15 downto 0);
183
      cfg_dcommand                              : out std_logic_vector(15 downto 0);
184
      cfg_lstatus                               : out std_logic_vector(15 downto 0);
185
      cfg_lcommand                              : out std_logic_vector(15 downto 0);
186
      cfg_dcommand2                             : out std_logic_vector(15 downto 0);
187
      cfg_pcie_link_state_n                     : out std_logic_vector(2 downto 0);
188
      cfg_dsn                                   : in std_logic_vector(63 downto 0);
189
      cfg_pmcsr_pme_en                          : out std_logic;
190
      cfg_pmcsr_pme_status                      : out std_logic;
191
      cfg_pmcsr_powerstate                      : out std_logic_vector(1 downto 0);
192
      cfg_msg_received                          : out std_logic;
193
      cfg_msg_data                              : out std_logic_vector(15 downto 0);
194
      cfg_msg_received_err_cor                  : out std_logic;
195
      cfg_msg_received_err_non_fatal            : out std_logic;
196
      cfg_msg_received_err_fatal                : out std_logic;
197
      cfg_msg_received_pme_to_ack               : out std_logic;
198
      cfg_msg_received_assert_inta              : out std_logic;
199
      cfg_msg_received_assert_intb              : out std_logic;
200
      cfg_msg_received_assert_intc              : out std_logic;
201
      cfg_msg_received_assert_intd              : out std_logic;
202
      cfg_msg_received_deassert_inta            : out std_logic;
203
      cfg_msg_received_deassert_intb            : out std_logic;
204
      cfg_msg_received_deassert_intc            : out std_logic;
205
      cfg_msg_received_deassert_intd            : out std_logic;
206
      cfg_ds_bus_number                         : in std_logic_vector(7 downto 0);
207
      cfg_ds_device_number                      : in std_logic_vector(4 downto 0);
208
      pl_initial_link_width                     : out std_logic_vector(2 downto 0);
209
      pl_lane_reversal_mode                     : out std_logic_vector(1 downto 0);
210
      pl_link_gen2_capable                      : out std_logic;
211
      pl_link_partner_gen2_supported            : out std_logic;
212
      pl_link_upcfg_capable                     : out std_logic;
213
      pl_ltssm_state                            : out std_logic_vector(5 downto 0);
214
      pl_sel_link_rate                          : out std_logic;
215
      pl_sel_link_width                         : out std_logic_vector(1 downto 0);
216
      pl_directed_link_auton                    : in std_logic;
217
      pl_directed_link_change                   : in std_logic_vector(1 downto 0);
218
      pl_directed_link_speed                    : in std_logic;
219
      pl_directed_link_width                    : in std_logic_vector(1 downto 0);
220
      pl_upstream_prefer_deemph                 : in std_logic;
221
      pl_transmit_hot_rst                       : in std_logic;
222
      pcie_drp_clk                              : in std_logic;
223
      pcie_drp_den                              : in std_logic;
224
      pcie_drp_dwe                              : in std_logic;
225
      pcie_drp_daddr                            : in std_logic_vector(8 downto 0);
226
      pcie_drp_di                               : in std_logic_vector(15 downto 0);
227
      pcie_drp_do                               : out std_logic_vector(15 downto 0);
228
      pcie_drp_drdy                             : out std_logic;
229
      sys_clk                                   : in std_logic;
230
      sys_reset_n                               : in std_logic);
231
  end component;
232
 
233
component pci_exp_usrapp_cfg
234
  port (
235
    cfg_do                 : in  std_logic_vector(31 downto 0);
236
    cfg_di                 : out std_logic_vector(31 downto 0);
237
    cfg_byte_en_n          : out std_logic_vector(3 downto 0);
238
    cfg_dwaddr             : out std_logic_vector(9 downto 0);
239
    cfg_wr_en_n            : out std_logic;
240
    cfg_rd_en_n            : out std_logic;
241
    cfg_rd_wr_done_n       : in  std_logic;
242
    cfg_err_cor_n          : out std_logic;
243
    cfg_err_ur_n           : out std_logic;
244
    cfg_err_ecrc_n         : out std_logic;
245
    cfg_err_cpl_timeout_n  : out std_logic;
246
    cfg_err_cpl_abort_n    : out std_logic;
247
    cfg_err_cpl_unexpect_n : out std_logic;
248
    cfg_err_posted_n       : out std_logic;
249
    cfg_err_tlp_cpl_header : out std_logic_vector(47 downto 0);
250
    cfg_interrupt_n        : out std_logic;
251
    cfg_interrupt_rdy_n    : in  std_logic;
252
    cfg_turnoff_ok_n       : out std_logic;
253
    cfg_to_turnoff_n       : in  std_logic;
254
    cfg_pm_wake_n          : out std_logic;
255
    cfg_bus_number         : in  std_logic_vector((8 -1) downto 0);
256
    cfg_device_number      : in  std_logic_vector((5 - 1) downto 0);
257
    cfg_function_number    : in  std_logic_vector((3 - 1) downto 0);
258
    cfg_status             : in  std_logic_vector((16 - 1) downto 0);
259
    cfg_command            : in  std_logic_vector((16 - 1) downto 0);
260
    cfg_dstatus            : in  std_logic_vector((16 - 1) downto 0);
261
    cfg_dcommand           : in  std_logic_vector((16 - 1) downto 0);
262
    cfg_lstatus            : in  std_logic_vector((16 - 1) downto 0);
263
    cfg_lcommand           : in  std_logic_vector((16 - 1) downto 0);
264
    cfg_pcie_link_state_n  : in  std_logic_vector((3 - 1) downto 0);
265
    cfg_trn_pending_n      : out std_logic;
266
    trn_clk                : in  std_logic;
267
    trn_reset_n            : in  std_logic);
268
end component;
269
 
270
component pci_exp_usrapp_rx
271
  port (
272
    trn_rdst_rdy_n        : out std_logic;
273
    trn_rnp_ok_n          : out std_logic;
274
    trn_rd                : in  std_logic_vector (63 downto 0);
275
    trn_rrem_n            : in  std_logic_vector (7 downto 0);
276
    trn_rsof_n            : in  std_logic;
277
    trn_reof_n            : in  std_logic;
278
    trn_rsrc_rdy_n        : in  std_logic;
279
    trn_rsrc_dsc_n        : in  std_logic;
280
    trn_rerrfwd_n         : in  std_logic;
281
    trn_rbar_hit_n        : in  std_logic_vector (6 downto 0);
282
    trn_clk               : in  std_logic;
283
    trn_reset_n           : in  std_logic;
284
    trn_lnk_up_n          : in  std_logic;
285
    rx_tx_read_data       : out std_logic_vector(31 downto 0);
286
    rx_tx_read_data_valid : out std_logic;
287
    tx_rx_read_data_valid : in  std_logic);
288
end component;
289
 
290
component pci_exp_usrapp_tx
291
  port (
292
    trn_td                : out std_logic_vector (63 downto 0);
293
    trn_trem_n            : out std_logic_vector (7 downto 0);
294
    trn_tsof_n            : out std_logic;
295
    trn_teof_n            : out std_logic;
296
    trn_terrfwd_n         : out std_logic;
297
    trn_tsrc_rdy_n        : out std_logic;
298
    trn_tsrc_dsc_n        : out std_logic;
299
    trn_clk               : in  std_logic;
300
    trn_reset_n           : in  std_logic;
301
    trn_lnk_up_n          : in  std_logic;
302
    trn_tdst_rdy_n        : in  std_logic;
303
    trn_tdst_dsc_n        : in  std_logic;
304
    trn_tbuf_av           : in  std_logic_vector (5 downto 0);
305
    rx_tx_read_data       : in  std_logic_vector(31 downto 0);
306
    rx_tx_read_data_valid : in  std_logic;
307
    tx_rx_read_data_valid : out std_logic);
308
end component;
309
 
310
component pci_exp_usrapp_pl
311
  generic (
312
    LINK_CAP_MAX_LINK_SPEED : integer);
313
  port (
314
    pl_initial_link_width          : in  std_logic_vector(2 downto 0);
315
    pl_lane_reversal_mode          : in  std_logic_vector(1 downto 0);
316
    pl_link_gen2_capable           : in  std_logic;
317
    pl_link_partner_gen2_supported : in  std_logic;
318
    pl_link_upcfg_capable          : in  std_logic;
319
    pl_ltssm_state                 : in  std_logic_vector(5 downto 0);
320
    pl_received_hot_rst            : in  std_logic;
321
    pl_sel_link_rate               : in  std_logic;
322
    pl_sel_link_width              : in  std_logic_vector(1 downto 0);
323
    pl_directed_link_auton         : out std_logic;
324
    pl_directed_link_change        : out std_logic_vector(1 downto 0);
325
    pl_directed_link_speed         : out std_logic;
326
    pl_directed_link_width         : out std_logic_vector(1 downto 0);
327
    pl_upstream_prefer_deemph      : out std_logic;
328
    speed_change_done_n            : out std_logic;
329
    trn_lnk_up_n                   : in  std_logic;
330
    trn_clk                        : in  std_logic;
331
    trn_reset_n                    : in  std_logic);
332
end component;
333
 
334
  FUNCTION to_integer (
335
      val_in    : bit_vector) RETURN integer IS
336
 
337
      CONSTANT vctr   : bit_vector(val_in'high-val_in'low DOWNTO 0) := val_in;
338
      VARIABLE ret    : integer := 0;
339
   BEGIN
340
      FOR index IN vctr'RANGE LOOP
341
         IF (vctr(index) = '1') THEN
342
            ret := ret + (2**index);
343
         END IF;
344
      END LOOP;
345
      RETURN(ret);
346
   END to_integer;
347
 
348
   constant LINK_CAP_MAX_LINK_SPEED_int : integer := to_integer(LINK_CAP_MAX_LINK_SPEED);
349
 
350
  signal rx_tx_read_data       : std_logic_vector(31 downto 0);
351
  signal rx_tx_read_data_valid : std_logic;
352
  signal tx_rx_read_data_valid : std_logic;
353
 
354
  -- Tx
355
  signal trn_tbuf_av : std_logic_vector(5 downto 0);
356
  signal trn_tdst_dsc_n : std_logic;
357
  signal trn_tdst_rdy_n : std_logic;
358
  signal trn_td : std_logic_vector(63 downto 0);
359
  signal trn_trem_n : std_logic;
360
  signal trn_trem_n_out : std_logic_vector(7 downto 0);
361
  signal trn_tsof_n : std_logic;
362
  signal trn_teof_n : std_logic;
363
  signal trn_tsrc_rdy_n : std_logic;
364
  signal trn_tsrc_dsc_n : std_logic;
365
  signal trn_terrfwd_n : std_logic;
366
 
367
  -- Rx
368
  signal trn_rd : std_logic_vector(63 downto 0);
369
  signal trn_rrem_n : std_logic;
370
  signal trn_rrem_n_in : std_logic_vector(7 downto 0);
371
  signal trn_rsof_n : std_logic;
372
  signal trn_reof_n : std_logic;
373
  signal trn_rsrc_rdy_n : std_logic;
374
  signal trn_rsrc_dsc_n : std_logic;
375
  signal trn_rerrfwd_n : std_logic;
376
  signal trn_rbar_hit_n : std_logic_vector(6 downto 0);
377
  signal trn_rdst_rdy_n : std_logic;
378
  signal trn_rnp_ok_n : std_logic;
379
 
380
  signal trn_clk : std_logic;
381
  signal trn_reset_n : std_logic;
382
  signal trn_lnk_up_n : std_logic;
383
 
384
  ---------------------------------------------------------
385
  -- 3. Configuration (CFG) Interface
386
  ---------------------------------------------------------
387
 
388
  signal cfg_do : std_logic_vector(31 downto 0);
389
  signal cfg_rd_wr_done_n : std_logic;
390
  signal cfg_di : std_logic_vector(31 downto 0);
391
  signal cfg_byte_en_n : std_logic_vector(3 downto 0);
392
  signal cfg_dwaddr : std_logic_vector(9 downto 0);
393
  signal cfg_wr_en_n : std_logic;
394
  signal cfg_rd_en_n : std_logic;
395
 
396
  signal cfg_err_cor_n: std_logic;
397
  signal cfg_err_ur_n : std_logic;
398
  signal cfg_err_ecrc_n : std_logic;
399
  signal cfg_err_cpl_timeout_n : std_logic;
400
  signal cfg_err_cpl_abort_n : std_logic;
401
  signal cfg_err_cpl_unexpect_n : std_logic;
402
  signal cfg_err_posted_n : std_logic;
403
  signal cfg_err_tlp_cpl_header : std_logic_vector(47 downto 0);
404
  signal cfg_err_cpl_rdy_n : std_logic;
405
  signal cfg_interrupt_n : std_logic;
406
  signal cfg_interrupt_rdy_n : std_logic;
407
  signal cfg_interrupt_mmenable : std_logic_vector(2 downto 0);
408
  signal cfg_interrupt_msienable : std_logic;
409
  signal cfg_interrupt_msixenable : std_logic;
410
  signal cfg_interrupt_msixfm : std_logic;
411
  signal cfg_trn_pending_n : std_logic;
412
  signal cfg_status : std_logic_vector(15 downto 0);
413
  signal cfg_command : std_logic_vector(15 downto 0);
414
  signal cfg_dstatus : std_logic_vector(15 downto 0);
415
  signal cfg_dcommand : std_logic_vector(15 downto 0);
416
  signal cfg_lstatus : std_logic_vector(15 downto 0);
417
  signal cfg_lcommand : std_logic_vector(15 downto 0);
418
  signal cfg_pcie_link_state_n : std_logic_vector(2 downto 0);
419
 
420
  signal cfg_msg_received : std_logic;
421
  signal cfg_msg_data     : std_logic_vector(15 downto 0);
422
  signal cfg_msg_received_err_cor : std_logic;
423
  signal cfg_msg_received_err_non_fatal : std_logic;
424
  signal cfg_msg_received_err_fatal : std_logic;
425
  signal cfg_msg_received_pme_to_ack : std_logic;
426
  signal cfg_msg_received_assert_inta : std_logic;
427
  signal cfg_msg_received_assert_intb : std_logic;
428
  signal cfg_msg_received_assert_intc : std_logic;
429
  signal cfg_msg_received_assert_intd : std_logic;
430
  signal cfg_msg_received_deassert_inta : std_logic;
431
  signal cfg_msg_received_deassert_intb : std_logic;
432
  signal cfg_msg_received_deassert_intc : std_logic;
433
  signal cfg_msg_received_deassert_intd : std_logic;
434
 
435
  ---------------------------------------------------------
436
  -- 4. Physical Layer Control and Status (PL) Interface
437
  ---------------------------------------------------------
438
 
439
  signal pl_initial_link_width : std_logic_vector(2 downto 0);
440
  signal pl_lane_reversal_mode : std_logic_vector(1 downto 0);
441
  signal pl_link_gen2_capable : std_logic;
442
  signal pl_link_partner_gen2_supported : std_logic;
443
  signal pl_link_upcfg_capable : std_logic;
444
  signal pl_ltssm_state : std_logic_vector(5 downto 0);
445
  signal pl_sel_link_rate : std_logic;
446
  signal pl_sel_link_width : std_logic_vector(1 downto 0);
447
  signal pl_directed_link_auton : std_logic;
448
  signal pl_directed_link_change : std_logic_vector(1 downto 0);
449
  signal pl_directed_link_speed : std_logic;
450
  signal pl_directed_link_width : std_logic_vector(1 downto 0);
451
  signal pl_upstream_prefer_deemph : std_logic;
452
 
453
  -------------------------------------------------------
454
 
455
begin
456
 
457
  trn_trem_n                <= '1' when (trn_trem_n_out = X"0F") else
458
                               '0';
459
  trn_rrem_n_in             <= X"0F" when (trn_rrem_n = '1') else
460
                               X"00";
461
 
462
rport : pcie_2_0_rport_v6
463
  generic map(
464
     REF_CLK_FREQ                   => REF_CLK_FREQ,
465
     ALLOW_X8_GEN2                  => ALLOW_X8_GEN2,
466
     PL_FAST_TRAIN                  => PL_FAST_TRAIN,
467
     LINK_CAP_MAX_LINK_SPEED        => LINK_CAP_MAX_LINK_SPEED,
468
     DEVICE_ID                      => DEVICE_ID,
469
     LINK_CAP_MAX_LINK_WIDTH        => LINK_CAP_MAX_LINK_WIDTH,
470
     LINK_CAP_MAX_LINK_WIDTH_int    => LINK_CAP_MAX_LINK_WIDTH_int,
471
     LINK_CTRL2_TARGET_LINK_SPEED   => LINK_CTRL2_TARGET_LINK_SPEED,
472
     LTSSM_MAX_LINK_WIDTH           => LTSSM_MAX_LINK_WIDTH,
473
     DEV_CAP_MAX_PAYLOAD_SUPPORTED  => DEV_CAP_MAX_PAYLOAD_SUPPORTED,
474
     USER_CLK_FREQ                  => USER_CLK_FREQ,
475
     VC0_TX_LASTPACKET              => VC0_TX_LASTPACKET,
476
     VC0_RX_RAM_LIMIT               => VC0_RX_RAM_LIMIT,
477
     VC0_TOTAL_CREDITS_CD           => VC0_TOTAL_CREDITS_CD,
478
     VC0_TOTAL_CREDITS_PD           => VC0_TOTAL_CREDITS_CD
479
)
480
  port map(
481
  pci_exp_txp        =>  pci_exp_txp,
482
  pci_exp_txn        =>  pci_exp_txn,
483
  pci_exp_rxp        =>  pci_exp_rxp,
484
  pci_exp_rxn        =>  pci_exp_rxn,
485
  trn_clk            =>  trn_clk ,
486
  trn_reset_n        =>  trn_reset_n ,
487
  trn_lnk_up_n       =>  trn_lnk_up_n ,
488
  trn_tbuf_av        =>  trn_tbuf_av ,
489
  trn_tcfg_req_n     =>  open,
490
  trn_terr_drop_n    =>  trn_tdst_dsc_n ,
491
  trn_tdst_rdy_n     =>  trn_tdst_rdy_n ,
492
  trn_td             =>  trn_td ,
493
  trn_trem_n         =>  trn_trem_n,
494
  trn_tsof_n         =>  trn_tsof_n ,
495
  trn_teof_n         =>  trn_teof_n ,
496
  trn_tsrc_rdy_n     =>  trn_tsrc_rdy_n ,
497
  trn_tsrc_dsc_n     =>  trn_tsrc_dsc_n ,
498
  trn_terrfwd_n      =>  trn_terrfwd_n ,
499
  trn_tcfg_gnt_n     =>  '0' ,
500
  trn_tstr_n         =>  '1' ,
501
  trn_rd             =>  trn_rd ,
502
  trn_rrem_n         =>  trn_rrem_n ,
503
  trn_rsof_n         =>  trn_rsof_n ,
504
  trn_reof_n         =>  trn_reof_n ,
505
  trn_rsrc_rdy_n     =>  trn_rsrc_rdy_n ,
506
  trn_rsrc_dsc_n     =>  trn_rsrc_dsc_n ,
507
  trn_rerrfwd_n      =>  trn_rerrfwd_n ,
508
  trn_rbar_hit_n     =>  trn_rbar_hit_n ,
509
  trn_rdst_rdy_n     =>  trn_rdst_rdy_n ,
510
  trn_rnp_ok_n       =>  trn_rnp_ok_n ,
511
  trn_recrc_err_n    =>  open,
512
  trn_fc_cpld        =>  open,
513
  trn_fc_cplh        =>  open,
514
  trn_fc_npd         =>  open,
515
  trn_fc_nph         =>  open,
516
  trn_fc_pd          =>  open,
517
  trn_fc_ph          =>  open,
518
  trn_fc_sel         =>  "000" ,
519
  cfg_do             =>  cfg_do ,
520
  cfg_rd_wr_done_n   =>  cfg_rd_wr_done_n,
521
  cfg_di             =>  cfg_di ,
522
  cfg_byte_en_n      =>  cfg_byte_en_n ,
523
  cfg_dwaddr         =>  cfg_dwaddr ,
524
  cfg_wr_en_n        =>  cfg_wr_en_n ,
525
  cfg_wr_rw1c_as_rw_n  => '1',
526
  cfg_rd_en_n        =>  cfg_rd_en_n ,
527
 
528
  cfg_err_cor_n                   =>  cfg_err_cor_n ,
529
  cfg_err_ur_n                    =>  cfg_err_ur_n ,
530
  cfg_err_ecrc_n                  =>  cfg_err_ecrc_n ,
531
  cfg_err_cpl_timeout_n           =>  cfg_err_cpl_timeout_n ,
532
  cfg_err_cpl_abort_n             =>  cfg_err_cpl_abort_n ,
533
  cfg_err_cpl_unexpect_n          =>  cfg_err_cpl_unexpect_n ,
534
  cfg_err_posted_n                =>  cfg_err_posted_n ,
535
  cfg_err_locked_n                =>  '1',
536
  cfg_err_tlp_cpl_header          =>  cfg_err_tlp_cpl_header ,
537
  cfg_err_cpl_rdy_n               =>  open,
538
  cfg_interrupt_n                 =>  cfg_interrupt_n ,
539
  cfg_interrupt_rdy_n             =>  cfg_interrupt_rdy_n ,
540
  cfg_interrupt_assert_n          =>  '1' ,
541
  cfg_interrupt_di                =>  X"00" ,
542
  cfg_interrupt_do                =>  open,
543
  cfg_interrupt_mmenable          =>  open,
544
  cfg_interrupt_msienable         =>  open,
545
  cfg_interrupt_msixenable        =>  open,
546
  cfg_interrupt_msixfm            =>  open,
547
  cfg_trn_pending_n               =>  cfg_trn_pending_n ,
548
  cfg_pm_send_pme_to_n            =>  '1' ,
549
  cfg_status                      =>  cfg_status ,
550
  cfg_command                     =>  cfg_command ,
551
  cfg_dstatus                     =>  cfg_dstatus ,
552
  cfg_dcommand                    =>  cfg_dcommand ,
553
  cfg_lstatus                     =>  cfg_lstatus ,
554
  cfg_lcommand                    =>  cfg_lcommand ,
555
  cfg_dcommand2                   =>  open,
556
  cfg_pcie_link_state_n           =>  cfg_pcie_link_state_n ,
557
  cfg_dsn                         =>  (others => '0') ,
558
  cfg_pmcsr_pme_en                =>  open,
559
  cfg_pmcsr_pme_status            =>  open,
560
  cfg_pmcsr_powerstate            =>  open,
561
  cfg_msg_received                =>  cfg_msg_received ,
562
  cfg_msg_data                    =>  cfg_msg_data ,
563
  cfg_msg_received_err_cor        =>  cfg_msg_received_err_cor ,
564
  cfg_msg_received_err_non_fatal  =>  cfg_msg_received_err_non_fatal ,
565
  cfg_msg_received_err_fatal      =>  cfg_msg_received_err_fatal ,
566
  cfg_msg_received_pme_to_ack     =>  cfg_msg_received_pme_to_ack ,
567
  cfg_msg_received_assert_inta    =>  cfg_msg_received_assert_inta ,
568
  cfg_msg_received_assert_intb    =>  cfg_msg_received_assert_intb ,
569
  cfg_msg_received_assert_intc    =>  cfg_msg_received_assert_intc ,
570
  cfg_msg_received_assert_intd    =>  cfg_msg_received_assert_intd ,
571
  cfg_msg_received_deassert_inta  =>  cfg_msg_received_deassert_inta ,
572
  cfg_msg_received_deassert_intb  =>  cfg_msg_received_deassert_intb ,
573
  cfg_msg_received_deassert_intc  =>  cfg_msg_received_deassert_intc ,
574
  cfg_msg_received_deassert_intd  =>  cfg_msg_received_deassert_intd ,
575
  cfg_ds_bus_number               =>  X"00",
576
  cfg_ds_device_number            =>  "00000",
577
  pl_initial_link_width           =>  pl_initial_link_width ,
578
  pl_lane_reversal_mode           =>  pl_lane_reversal_mode ,
579
  pl_link_gen2_capable            =>  pl_link_gen2_capable ,
580
  pl_link_partner_gen2_supported  =>  pl_link_partner_gen2_supported ,
581
  pl_link_upcfg_capable           =>  pl_link_upcfg_capable ,
582
  pl_ltssm_state                  =>  pl_ltssm_state ,
583
  pl_sel_link_rate                =>  pl_sel_link_rate ,
584
  pl_sel_link_width               =>  pl_sel_link_width ,
585
  pl_directed_link_auton          =>  pl_directed_link_auton ,
586
  pl_directed_link_change         =>  pl_directed_link_change ,
587
  pl_directed_link_speed          =>  pl_directed_link_speed ,
588
  pl_directed_link_width          =>  pl_directed_link_width ,
589
  pl_upstream_prefer_deemph       =>  pl_upstream_prefer_deemph ,
590
  pl_transmit_hot_rst             =>  '0',
591
  pcie_drp_clk                    => '0',
592
  pcie_drp_den                    => '0',
593
  pcie_drp_dwe                    => '0',
594
  pcie_drp_daddr                  => "000000000",
595
  pcie_drp_di                     => X"0000",
596
  pcie_drp_do                     => open,
597
  pcie_drp_drdy                   => open,
598
  sys_clk                         =>  sys_clk ,
599
  sys_reset_n                     =>  sys_reset_n
600
 
601
);
602
 
603
CFG_APP : pci_exp_usrapp_cfg
604
  port map (
605
    cfg_do                 => cfg_do,
606
    cfg_di                 => cfg_di,
607
    cfg_byte_en_n          => cfg_byte_en_n,
608
    cfg_dwaddr             => cfg_dwaddr,
609
    cfg_wr_en_n            => cfg_wr_en_n,
610
    cfg_rd_en_n            => cfg_rd_en_n,
611
    cfg_rd_wr_done_n       => cfg_rd_wr_done_n,
612
    cfg_err_cor_n          => cfg_err_cor_n,
613
    cfg_err_ur_n           => cfg_err_ur_n,
614
    cfg_err_ecrc_n         => cfg_err_ecrc_n,
615
    cfg_err_cpl_timeout_n  => cfg_err_cpl_timeout_n,
616
    cfg_err_cpl_abort_n    => cfg_err_cpl_abort_n,
617
    cfg_err_cpl_unexpect_n => cfg_err_cpl_unexpect_n,
618
    cfg_err_posted_n       => cfg_err_posted_n,
619
    cfg_err_tlp_cpl_header => cfg_err_tlp_cpl_header,
620
    cfg_interrupt_n        => cfg_interrupt_n,
621
    cfg_interrupt_rdy_n    => cfg_interrupt_rdy_n,
622
    cfg_turnoff_ok_n       => open,
623
    cfg_to_turnoff_n       => '1',
624
    cfg_pm_wake_n          => open,
625
    cfg_bus_number         => X"00",
626
    cfg_device_number      => "00000",
627
    cfg_function_number    => "000",
628
    cfg_status             => cfg_status,
629
    cfg_command            => cfg_command,
630
    cfg_dstatus            => cfg_dstatus,
631
    cfg_dcommand           => cfg_dcommand,
632
    cfg_lstatus            => cfg_lstatus,
633
    cfg_lcommand           => cfg_lcommand,
634
    cfg_pcie_link_state_n  => cfg_pcie_link_state_n,
635
    cfg_trn_pending_n      => cfg_trn_pending_n,
636
    trn_clk                => trn_clk,
637
    trn_reset_n            => trn_reset_n);
638
 
639
 
640
RX_APP : pci_exp_usrapp_rx
641
  port map (
642
    trn_rdst_rdy_n        => trn_rdst_rdy_n,
643
    trn_rnp_ok_n          => trn_rnp_ok_n,
644
    trn_rd                => trn_rd,
645
    trn_rrem_n            => trn_rrem_n_in,
646
    trn_rsof_n            => trn_rsof_n,
647
    trn_reof_n            => trn_reof_n,
648
    trn_rsrc_rdy_n        => trn_rsrc_rdy_n,
649
    trn_rsrc_dsc_n        => trn_rsrc_dsc_n,
650
    trn_rerrfwd_n         => trn_rerrfwd_n,
651
    trn_rbar_hit_n        => trn_rbar_hit_n,
652
    trn_clk               => trn_clk,
653
    trn_reset_n           => trn_reset_n,
654
    trn_lnk_up_n          => trn_lnk_up_n,
655
    rx_tx_read_data       => rx_tx_read_data,
656
    rx_tx_read_data_valid => rx_tx_read_data_valid,
657
    tx_rx_read_data_valid => tx_rx_read_data_valid);
658
 
659
TX_APP : pci_exp_usrapp_tx
660
  port map (
661
    trn_td                => trn_td,
662
    trn_trem_n            => trn_trem_n_out,
663
    trn_tsof_n            => trn_tsof_n,
664
    trn_teof_n            => trn_teof_n,
665
    trn_terrfwd_n         => trn_terrfwd_n,
666
    trn_tsrc_rdy_n        => trn_tsrc_rdy_n,
667
    trn_tsrc_dsc_n        => trn_tsrc_dsc_n,
668
    trn_clk               => trn_clk,
669
    trn_reset_n           => trn_reset_n,
670
    trn_lnk_up_n          => trn_lnk_up_n,
671
    trn_tdst_rdy_n        => trn_tdst_rdy_n,
672
    trn_tdst_dsc_n        => trn_tdst_dsc_n,
673
    trn_tbuf_av           => trn_tbuf_av,
674
    rx_tx_read_data       => rx_tx_read_data,
675
    rx_tx_read_data_valid => rx_tx_read_data_valid,
676
    tx_rx_read_data_valid => tx_rx_read_data_valid);
677
 
678
PL_APP : pci_exp_usrapp_pl
679
  generic map (
680
    LINK_CAP_MAX_LINK_SPEED => LINK_CAP_MAX_LINK_SPEED_int)
681
  port map (
682
    pl_initial_link_width          => pl_initial_link_width,
683
    pl_lane_reversal_mode          => pl_lane_reversal_mode,
684
    pl_link_gen2_capable           => pl_link_gen2_capable,
685
    pl_link_partner_gen2_supported => pl_link_partner_gen2_supported,
686
    pl_link_upcfg_capable          => pl_link_upcfg_capable,
687
    pl_ltssm_state                 => pl_ltssm_state,
688
    pl_received_hot_rst            => '0',
689
    pl_sel_link_rate               => pl_sel_link_rate,
690
    pl_sel_link_width              => pl_sel_link_width,
691
    pl_directed_link_auton         => pl_directed_link_auton,
692
    pl_directed_link_change        => pl_directed_link_change,
693
    pl_directed_link_speed         => pl_directed_link_speed,
694
    pl_directed_link_width         => pl_directed_link_width,
695
    pl_upstream_prefer_deemph      => pl_upstream_prefer_deemph,
696
    speed_change_done_n            => open,
697
    trn_lnk_up_n                   => trn_lnk_up_n,
698
    trn_clk                        => trn_clk,
699
    trn_reset_n                    => trn_reset_n);
700
 
701
end rtl;

powered by: WebSVN 2.1.0

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