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_x1/] [example_design/] [pcie_app_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       : pcie_app_v6.vhd
52
-- Version    : 1.7
53
--
54
-- Description:  PCI Express Endpoint Core sample application design.
55
--
56
------------------------------------------------------------------------------
57
 
58
library ieee;
59
use ieee.std_logic_1164.all;
60
 
61
library work;
62
 
63
entity pcie_app_v6 is
64
 
65
port  (
66
 
67
  -- Common
68
 
69
  trn_clk                   : in std_logic;
70
  trn_reset_n               : in std_logic;
71
  trn_lnk_up_n              : in std_logic;
72
 
73
  -- Tx
74
 
75
  trn_td                    : out std_logic_vector(63 downto 0);
76
  trn_trem_n                : out std_logic;
77
  trn_tsof_n                : out std_logic;
78
  trn_teof_n                : out std_logic;
79
  trn_tsrc_rdy_n            : out std_logic;
80
  trn_tdst_rdy_n            : in std_logic;
81
  trn_tsrc_dsc_n            : out std_logic;
82
  trn_terrfwd_n             : out std_logic;
83
  trn_tcfg_req_n            : in std_logic;
84
  trn_tcfg_gnt_n            : out std_logic;
85
  trn_terr_drop_n           : in std_logic;
86
  trn_tbuf_av               : in std_logic_vector(5 downto 0);
87
  trn_tstr_n                : out std_logic;
88
 
89
  -- Rx
90
 
91
  trn_rd                    : in std_logic_vector(63 downto 0);
92
  trn_rrem_n                : in std_logic;
93
  trn_rsof_n                : in std_logic;
94
  trn_reof_n                : in std_logic;
95
  trn_rsrc_rdy_n            : in std_logic;
96
  trn_rsrc_dsc_n            : in std_logic;
97
  trn_rdst_rdy_n            : out std_logic;
98
  trn_rerrfwd_n             : in std_logic;
99
  trn_rnp_ok_n              : out std_logic;
100
  trn_rbar_hit_n            : in std_logic_vector(6 downto 0);
101
  trn_fc_nph                : in std_logic_vector(7 downto 0);
102
  trn_fc_npd                : in std_logic_vector(11 downto 0);
103
  trn_fc_ph                 : in std_logic_vector(7 downto 0);
104
  trn_fc_pd                 : in std_logic_vector(11 downto 0);
105
  trn_fc_cplh               : in std_logic_vector(7 downto 0);
106
  trn_fc_cpld               : in std_logic_vector(11 downto 0);
107
  trn_fc_sel                : out std_logic_vector(2 downto 0);
108
 
109
  -- Host (CFG) Interface
110
 
111
  cfg_do                    : in std_logic_vector(31 downto 0);
112
  cfg_di                    : out std_logic_vector(31 downto 0);
113
  cfg_byte_en_n             : out std_logic_vector(3 downto 0);
114
  cfg_dwaddr                : out std_logic_vector(9 downto 0);
115
  cfg_rd_wr_done_n          : in std_logic;
116
  cfg_wr_en_n               : out std_logic;
117
  cfg_rd_en_n               : out std_logic;
118
  cfg_err_cor_n             : out std_logic;
119
  cfg_err_ur_n              : out std_logic;
120
  cfg_err_cpl_rdy_n         : in std_logic;
121
  cfg_err_ecrc_n            : out std_logic;
122
  cfg_err_cpl_timeout_n     : out std_logic;
123
  cfg_err_cpl_abort_n       : out std_logic;
124
  cfg_err_cpl_unexpect_n    : out std_logic;
125
  cfg_err_posted_n          : out std_logic;
126
  cfg_err_locked_n          : out std_logic;
127
  cfg_interrupt_n           : out std_logic;
128
  cfg_interrupt_rdy_n       : in std_logic;
129
 
130
  cfg_interrupt_assert_n    : out std_logic;
131
  cfg_interrupt_di          : out std_logic_vector(7 downto 0);
132
  cfg_interrupt_do          : in  std_logic_vector(7 downto 0);
133
  cfg_interrupt_mmenable    : in  std_logic_vector(2 downto 0);
134
  cfg_interrupt_msienable   : in  std_logic;
135
  cfg_interrupt_msixenable  : in  std_logic;
136
  cfg_interrupt_msixfm      : in  std_logic;
137
 
138
  cfg_turnoff_ok_n          : out std_logic;
139
  cfg_to_turnoff_n          : in std_logic;
140
  cfg_pm_wake_n             : out std_logic;
141
  cfg_pcie_link_state_n     : in std_logic_vector(2 downto 0);
142
  cfg_trn_pending_n         : out std_logic;
143
  cfg_err_tlp_cpl_header    : out std_logic_vector(47 downto 0);
144
  cfg_bus_number            : in std_logic_vector(7 downto 0);
145
  cfg_device_number         : in std_logic_vector(4 downto 0);
146
  cfg_function_number       : in std_logic_vector(2 downto 0);
147
  cfg_status                : in std_logic_vector(15 downto 0);
148
  cfg_command               : in std_logic_vector(15 downto 0);
149
  cfg_dstatus               : in std_logic_vector(15 downto 0);
150
  cfg_dcommand              : in std_logic_vector(15 downto 0);
151
  cfg_lstatus               : in std_logic_vector(15 downto 0);
152
  cfg_lcommand              : in std_logic_vector(15 downto 0);
153
  cfg_dcommand2             : in std_logic_vector(15 downto 0);
154
 
155
  pl_directed_link_change   : out std_logic_vector(1 downto 0);
156
  pl_ltssm_state            : in std_logic_vector(5 downto 0);
157
  pl_directed_link_width    : out std_logic_vector(1 downto 0);
158
  pl_directed_link_speed    : out std_logic;
159
  pl_directed_link_auton    : out std_logic;
160
  pl_upstream_prefer_deemph : out std_logic;
161
 
162
  pl_sel_link_width         : in std_logic_vector(1 downto 0);
163
  pl_sel_link_rate          : in std_logic;
164
  pl_link_gen2_capable      : in std_logic;
165
  pl_link_partner_gen2_supported : in std_logic;
166
  pl_initial_link_width     : in std_logic_vector(2 downto 0);
167
  pl_link_upcfg_capable     : in std_logic;
168
  pl_lane_reversal_mode     : in std_logic_vector(1 downto 0);
169
  pl_received_hot_rst       : in std_logic;
170
 
171
  cfg_dsn                   : out std_logic_vector(63 downto 0)
172
 
173
);
174
end pcie_app_v6;
175
 
176
architecture v6_pcie of pcie_app_v6 is
177
 
178
component PIO
179
port (
180
  trn_clk                : in std_logic;
181
  trn_reset_n            : in std_logic;
182
  trn_lnk_up_n           : in std_logic;
183
  trn_td                 : out std_logic_vector(63 downto 0);
184
  trn_trem_n             : out std_logic_vector(7 downto 0);
185
  trn_tsof_n             : out std_logic;
186
  trn_teof_n             : out std_logic;
187
  trn_tsrc_rdy_n         : out std_logic;
188
  trn_tsrc_dsc_n         : out std_logic;
189
  trn_tdst_rdy_n         : in std_logic;
190
  trn_tdst_dsc_n         : in std_logic;
191
  trn_rd                 : in std_logic_vector(63 downto 0);
192
  trn_rrem_n             : in std_logic_vector(7 downto 0);
193
  trn_rsof_n             : in std_logic;
194
  trn_reof_n             : in std_logic;
195
  trn_rsrc_rdy_n         : in std_logic;
196
  trn_rsrc_dsc_n         : in std_logic;
197
  trn_rbar_hit_n         : in std_logic_vector(6 downto 0);
198
  trn_rdst_rdy_n         : out std_logic;
199
  cfg_to_turnoff_n       : in std_logic;
200
  cfg_turnoff_ok_n       : out std_logic;
201
  cfg_completer_id       : in std_logic_vector(15 downto 0);
202
  cfg_bus_mstr_enable    : in std_logic);
203
 
204
end component;
205
 
206
-- Local wires 
207
 
208
signal cfg_completer_id       : std_logic_vector(15 downto 0);
209
signal cfg_bus_mstr_enable    : std_logic;
210
signal trn_trem_n_out         : std_logic_vector(7 downto 0);
211
signal trn_rrem_n_in          : std_logic_vector(7 downto 0);
212
 
213
begin
214
 
215
  -- Core input tie-offs
216
 
217
  trn_rnp_ok_n              <= '0';
218
  trn_terrfwd_n             <= '1';
219
  trn_fc_sel                <= "000";
220
  trn_tcfg_gnt_n            <= '0';
221
  trn_tstr_n                <= '0';
222
 
223
  pl_directed_link_change   <= "00";
224
  pl_directed_link_width    <= "00";
225
  pl_directed_link_speed    <= '0';
226
  pl_directed_link_auton    <= '0';
227
  pl_upstream_prefer_deemph <= '1';
228
 
229
  cfg_err_cor_n             <= '1';
230
  cfg_err_ur_n              <= '1';
231
  cfg_err_ecrc_n            <= '1';
232
  cfg_err_cpl_timeout_n     <= '1';
233
  cfg_err_cpl_abort_n       <= '1';
234
  cfg_err_cpl_unexpect_n    <= '1';
235
  cfg_err_posted_n          <= '0';
236
  cfg_err_locked_n          <= '1';
237
 
238
  cfg_interrupt_n           <= '1';
239
  cfg_interrupt_assert_n    <= '0';
240
  cfg_interrupt_di          <= X"00";
241
 
242
  cfg_pm_wake_n             <= '1';
243
  cfg_trn_pending_n         <= '1';
244
  cfg_dwaddr                <= (others => '0');
245
  cfg_err_tlp_cpl_header    <= (others => '0');
246
  cfg_di                    <= (others => '0');
247
  cfg_byte_en_n             <= X"F"; -- 4-bit bus
248
  cfg_wr_en_n               <= '1';
249
  cfg_rd_en_n               <= '1';
250
  cfg_dsn                   <= X"0000000101000A35";
251
 
252
  cfg_completer_id          <= (cfg_bus_number &
253
                                cfg_device_number &
254
                                cfg_function_number);
255
  cfg_bus_mstr_enable       <= cfg_command(2);
256
 
257
  trn_trem_n                <= '1' when (trn_trem_n_out = X"0F") else
258
                               '0';
259
  trn_rrem_n_in             <= X"0F" when (trn_rrem_n = '1') else
260
                               X"00";
261
 
262
-- Programmable I/O Module
263
 
264
PIO_interface : PIO
265
 
266
port map (
267
 
268
  trn_clk  =>  trn_clk,                       -- I
269
  trn_reset_n  =>  trn_reset_n,               -- I
270
  trn_lnk_up_n  =>  trn_lnk_up_n,             -- I
271
 
272
  trn_td  => trn_td,                          -- O (63:0)
273
  trn_tsof_n  => trn_tsof_n,
274
  trn_trem_n  => trn_trem_n_out,
275
  trn_teof_n  => trn_teof_n,                  -- O
276
  trn_tsrc_rdy_n  => trn_tsrc_rdy_n,          -- O
277
  trn_tsrc_dsc_n  => trn_tsrc_dsc_n,          -- O
278
  trn_tdst_rdy_n  => trn_tdst_rdy_n,          -- I
279
  trn_tdst_dsc_n  => '1',                     -- I
280
 
281
  trn_rd  => trn_rd ,                         -- I (63:0)
282
  trn_rrem_n  => trn_rrem_n_in,
283
  trn_rsof_n  => trn_rsof_n,                  -- I
284
  trn_reof_n  => trn_reof_n,                  -- I
285
  trn_rsrc_rdy_n  => trn_rsrc_rdy_n,          -- I
286
  trn_rsrc_dsc_n  => trn_rsrc_dsc_n,          -- I
287
  trn_rbar_hit_n => trn_rbar_hit_n,           -- I (6:0)
288
  trn_rdst_rdy_n  => trn_rdst_rdy_n,          -- O
289
 
290
  cfg_to_turnoff_n  => cfg_to_turnoff_n,      -- I
291
  cfg_turnoff_ok_n => cfg_turnoff_ok_n,    -- O
292
  cfg_completer_id  => cfg_completer_id,      -- I (15:0)
293
  cfg_bus_mstr_enable => cfg_bus_mstr_enable  -- I
294
 
295
);
296
 
297
end; -- pcie_app_v6

powered by: WebSVN 2.1.0

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