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

Subversion Repositories pcie_ds_dma

[/] [pcie_ds_dma/] [trunk/] [core/] [ds_dma64/] [pcie_src/] [pcie_core64_m1/] [source_artix7/] [cl_a7pcie_x4_axi_basic_top.vhd] - Blame information for rev 48

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 46 dsmv
-------------------------------------------------------------------------------
2
--
3
-- (c) Copyright 2010-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    : Series-7 Integrated Block for PCI Express
51
-- File       : cl_a7pcie_x4_axi_basic_top.vhd
52 48 dsmv
-- Version    : 1.10
53 46 dsmv
--
54
-- Description:
55
--  TRN/AXI4-S Bridge top level module. Instantiates RX and TX modules.
56
--
57
--  Notes:
58
--  Optional notes section.
59
--
60
--  Hierarchical:
61
--    axi_basic_top
62
--------------------------------------------------------------------------------
63
-- Library Declarations
64
--------------------------------------------------------------------------------
65
 
66
LIBRARY ieee;
67
   USE ieee.std_logic_1164.all;
68
   USE ieee.std_logic_unsigned.all;
69
 
70
 
71
ENTITY cl_a7pcie_x4_axi_basic_top IS
72
   GENERIC (
73
      C_DATA_WIDTH              : INTEGER := 128;     -- RX/TX interface data width
74
      C_FAMILY                  : STRING := "X7";    -- Targeted FPGA family
75
      C_ROOT_PORT               : BOOLEAN := FALSE; -- PCIe block is in root port mode
76
      C_PM_PRIORITY             : BOOLEAN := FALSE; -- Disable TX packet boundary thrtl
77
      TCQ                       : INTEGER := 1;      -- Clock to Q time
78
      C_REM_WIDTH               : INTEGER := 1       -- trem/rrem width 
79
   );
80
   PORT (
81
      -----------------------------------------------
82
      -- User Design I/O
83
      -----------------------------------------------
84
 
85
      -- AXI TX
86
      -------------
87
      s_axis_tx_tdata         : IN STD_LOGIC_VECTOR(C_DATA_WIDTH - 1 DOWNTO 0) := (OTHERS=>'0');
88
      s_axis_tx_tvalid        : IN STD_LOGIC                                   := '0';
89
      s_axis_tx_tready        : OUT STD_LOGIC                                  := '0';
90
      s_axis_tx_tkeep         : IN STD_LOGIC_VECTOR((C_DATA_WIDTH/8)-1 DOWNTO 0) := (OTHERS=>'0');
91
      s_axis_tx_tlast         : IN STD_LOGIC                                   := '0';
92
      s_axis_tx_tuser         : IN STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS=>'0');
93
 
94
      -- AXI RX
95
      -------------
96
      m_axis_rx_tdata         : OUT STD_LOGIC_VECTOR(C_DATA_WIDTH - 1 DOWNTO 0) := (OTHERS=>'0');
97
      m_axis_rx_tvalid        : OUT STD_LOGIC                                   := '0';
98
      m_axis_rx_tready        : IN STD_LOGIC                                    := '0';
99
      m_axis_rx_tkeep         : OUT STD_LOGIC_VECTOR((C_DATA_WIDTH/8)-1 DOWNTO 0) := (OTHERS=>'0');
100
      m_axis_rx_tlast         : OUT STD_LOGIC                                   := '0';
101
      m_axis_rx_tuser         : OUT STD_LOGIC_VECTOR(21 DOWNTO 0) := (OTHERS=>'0');
102
 
103
      -- User Misc.
104
      -------------
105
      user_turnoff_ok         : IN STD_LOGIC                                   := '0';
106
      user_tcfg_gnt           : IN STD_LOGIC                                   := '0';
107
 
108
      -----------------------------------------------
109
      -- PCIe Block I/O
110
      -----------------------------------------------
111
 
112
      -- TRN TX
113
      -------------
114
      trn_td                  : OUT STD_LOGIC_VECTOR(C_DATA_WIDTH - 1 DOWNTO 0) := (OTHERS=>'0');
115
      trn_tsof                : OUT STD_LOGIC                                   := '0';
116
      trn_teof                : OUT STD_LOGIC                                   := '0';
117
      trn_tsrc_rdy            : OUT STD_LOGIC                                   := '0';
118
      trn_tdst_rdy            : IN STD_LOGIC                                    := '0';
119
      trn_tsrc_dsc            : OUT STD_LOGIC                                   := '0';
120
      trn_trem                : OUT STD_LOGIC_VECTOR(C_REM_WIDTH - 1 DOWNTO 0)  := (OTHERS=>'0');
121
      trn_terrfwd             : OUT STD_LOGIC                                   := '0';
122
      trn_tstr                : OUT STD_LOGIC                                   := '0';
123
      trn_tbuf_av             : IN STD_LOGIC_VECTOR(5 DOWNTO 0)                 := (OTHERS=>'0');
124
      trn_tecrc_gen           : OUT STD_LOGIC                                   := '0';
125
 
126
      -- TRN RX
127
      -------------
128
      trn_rd                  : IN STD_LOGIC_VECTOR(C_DATA_WIDTH - 1 DOWNTO 0) := (OTHERS=>'0');
129
      trn_rsof                : IN STD_LOGIC                                   := '0';
130
      trn_reof                : IN STD_LOGIC                                   := '0';
131
      trn_rsrc_rdy            : IN STD_LOGIC                                   := '0';
132
      trn_rdst_rdy            : OUT STD_LOGIC                                  := '0';
133
      trn_rsrc_dsc            : IN STD_LOGIC                                   := '0';
134
      trn_rrem                : IN STD_LOGIC_VECTOR(C_REM_WIDTH - 1 DOWNTO 0)  := (OTHERS=>'0');
135
      trn_rerrfwd             : IN STD_LOGIC                                   := '0';
136
      trn_rbar_hit            : IN STD_LOGIC_VECTOR(6 DOWNTO 0)                := (OTHERS=>'0');
137
      trn_recrc_err           : IN STD_LOGIC                                   := '0';
138
 
139
      -- TRN Misc.
140
      -------------
141
      trn_tcfg_req            : IN STD_LOGIC                                   := '0';
142
      trn_tcfg_gnt            : OUT STD_LOGIC                                  := '0';
143
      trn_lnk_up              : IN STD_LOGIC                                   := '0';
144
 
145
      -- 7 Series/Virtex6 PM
146
      -------------
147
      cfg_pcie_link_state     : IN STD_LOGIC_VECTOR(2 DOWNTO 0)                := (OTHERS=>'0');
148
 
149
      -- Virtex6 PM
150
      -------------
151
      cfg_pm_send_pme_to      : IN STD_LOGIC                                   := '0';
152
      cfg_pmcsr_powerstate    : IN STD_LOGIC_VECTOR(1 DOWNTO 0)                := (OTHERS=>'0');
153
      trn_rdllp_data          : IN STD_LOGIC_VECTOR(31 DOWNTO 0)               := (OTHERS=>'0');
154
      trn_rdllp_src_rdy       : IN STD_LOGIC                                   := '0';
155
 
156
      -- Virtex6/Spartan6 PM
157
      -------------
158
      cfg_to_turnoff          : IN STD_LOGIC                                   := '0';
159
      cfg_turnoff_ok          : OUT STD_LOGIC                                  := '0';
160
 
161
      np_counter              : OUT STD_LOGIC_VECTOR(2 DOWNTO 0)               := (OTHERS=>'0');
162
      user_clk                : IN STD_LOGIC                                   := '0';
163
      user_rst                : IN STD_LOGIC                                   := '0'
164
   );
165
END cl_a7pcie_x4_axi_basic_top;
166
 
167
 
168
-----------------------------------------------
169
-- RX Data Pipeline
170
-----------------------------------------------
171
 
172
ARCHITECTURE trans OF cl_a7pcie_x4_axi_basic_top IS
173
 
174
   COMPONENT cl_a7pcie_x4_axi_basic_rx IS
175
      GENERIC (
176
         C_DATA_WIDTH              : INTEGER := 128;
177
         C_FAMILY                  : STRING := "X7";
178
         C_ROOT_PORT               : BOOLEAN := FALSE;
179
         C_PM_PRIORITY             : BOOLEAN := FALSE;
180
         TCQ                       : INTEGER := 1;
181
         C_REM_WIDTH               : INTEGER := 1
182
      );
183
      PORT (
184
 
185
         -- Outgoing AXI TX
186
         -------------
187
         M_AXIS_RX_TDATA         : OUT STD_LOGIC_VECTOR(C_DATA_WIDTH - 1 DOWNTO 0) := (OTHERS=>'0');
188
         M_AXIS_RX_TVALID        : OUT STD_LOGIC                                   := '0';
189
         M_AXIS_RX_TREADY        : IN STD_LOGIC                                    := '0';
190
         m_axis_rx_tkeep         : OUT STD_LOGIC_VECTOR((C_DATA_WIDTH/8)-1 DOWNTO 0) := (OTHERS=>'0');
191
         M_AXIS_RX_TLAST         : OUT STD_LOGIC                                   := '0';
192
         M_AXIS_RX_TUSER         : OUT STD_LOGIC_VECTOR(21 DOWNTO 0) := (OTHERS=>'0');
193
 
194
         -- Incoming TRN RX
195
        -------------
196
         TRN_RD                  : IN STD_LOGIC_VECTOR(C_DATA_WIDTH - 1 DOWNTO 0) := (OTHERS=>'0');
197
         TRN_RSOF                : IN STD_LOGIC                                   := '0';
198
         TRN_REOF                : IN STD_LOGIC                                   := '0';
199
         TRN_RSRC_RDY            : IN STD_LOGIC                                   := '0';
200
         TRN_RDST_RDY            : OUT STD_LOGIC                                  := '0';
201
         TRN_RSRC_DSC            : IN STD_LOGIC                                   := '0';
202
         TRN_RREM                : IN STD_LOGIC_VECTOR(C_REM_WIDTH - 1 DOWNTO 0)  := (OTHERS=>'0');
203
         TRN_RERRFWD             : IN STD_LOGIC                                   := '0';
204
         TRN_RBAR_HIT            : IN STD_LOGIC_VECTOR(6 DOWNTO 0)                := (OTHERS=>'0');
205
         TRN_RECRC_ERR           : IN STD_LOGIC                                   := '0';
206
 
207
         -- System
208
         -------------
209
         NP_COUNTER              : OUT STD_LOGIC_VECTOR(2 DOWNTO 0)               := (OTHERS=>'0');
210
         USER_CLK                : IN STD_LOGIC                                   := '0';
211
         USER_RST                : IN STD_LOGIC                                   := '0'
212
      );
213
   END COMPONENT cl_a7pcie_x4_axi_basic_rx;
214
 
215
    -----------------------------------------------
216
    -- TX Data Pipeline
217
    -----------------------------------------------
218
   COMPONENT  cl_a7pcie_x4_axi_basic_tx IS
219
   GENERIC (
220
      C_DATA_WIDTH            : INTEGER := 128;
221
      C_FAMILY                : STRING := "X7";
222
      C_ROOT_PORT             : BOOLEAN := FALSE;
223
      C_PM_PRIORITY           : BOOLEAN := FALSE;
224
      TCQ                     : INTEGER := 1;
225
 
226
      C_REM_WIDTH               : INTEGER :=  1
227
   );
228
   PORT (
229
      -- Incoming AXI RX
230
      -------------
231
      S_AXIS_TX_TDATA         : IN STD_LOGIC_VECTOR(C_DATA_WIDTH - 1 DOWNTO 0) := (OTHERS=>'0');
232
      S_AXIS_TX_TVALID        : IN STD_LOGIC                                   := '0';
233
      S_AXIS_TX_TREADY        : OUT STD_LOGIC                                  := '0';
234
      s_axis_tx_tkeep         : IN STD_LOGIC_VECTOR((C_DATA_WIDTH/8)-1 DOWNTO 0) := (OTHERS=>'0');
235
      S_AXIS_TX_TLAST         : IN STD_LOGIC                                   := '0';
236
      S_AXIS_TX_TUSER         : IN STD_LOGIC_VECTOR(3 DOWNTO 0)                := (OTHERS=>'0');
237
 
238
      -- User Misc.
239
      -------------
240
      USER_TURNOFF_OK         : IN STD_LOGIC                                   := '0';
241
      USER_TCFG_GNT           : IN STD_LOGIC                                   := '0';
242
 
243
      -- Outgoing TRN TX
244
      -------------
245
      TRN_TD                  : OUT STD_LOGIC_VECTOR(C_DATA_WIDTH - 1 DOWNTO 0) := (OTHERS=>'0');
246
      TRN_TSOF                : OUT STD_LOGIC                                   := '0';
247
      TRN_TEOF                : OUT STD_LOGIC                                   := '0';
248
      TRN_TSRC_RDY            : OUT STD_LOGIC                                   := '0';
249
      TRN_TDST_RDY            : IN STD_LOGIC                                    := '0';
250
      TRN_TSRC_DSC            : OUT STD_LOGIC;
251
      TRN_TREM                : OUT STD_LOGIC_VECTOR(C_REM_WIDTH - 1 DOWNTO 0) := (OTHERS=>'0');
252
      TRN_TERRFWD             : OUT STD_LOGIC                                   := '0';
253
      TRN_TSTR                : OUT STD_LOGIC                                   := '0';
254
      TRN_TBUF_AV             : IN STD_LOGIC_VECTOR(5 DOWNTO 0) := (OTHERS=>'0');
255
      TRN_TECRC_GEN           : OUT STD_LOGIC                                   := '0';
256
 
257
      -- TRN Misc.
258
      -------------
259
      TRN_TCFG_REQ            : IN STD_LOGIC                                   := '0';
260
      TRN_TCFG_GNT            : OUT STD_LOGIC                                  := '0';
261
      TRN_LNK_UP              : IN STD_LOGIC                                   := '0';
262
 
263
      -- 7 Series/Virtex6 PM
264
      -------------
265
      CFG_PCIE_LINK_STATE     : IN STD_LOGIC_VECTOR(2 DOWNTO 0)                := (OTHERS=>'0');
266
 
267
      -- Virtex6 PM
268
      -------------
269
      CFG_PM_SEND_PME_TO      : IN STD_LOGIC                                   := '0';
270
      CFG_PMCSR_POWERSTATE    : IN STD_LOGIC_VECTOR(1 DOWNTO 0)                := (OTHERS=>'0');
271
      TRN_RDLLP_DATA          : IN STD_LOGIC_VECTOR(31 DOWNTO 0)               := (OTHERS=>'0');
272
      TRN_RDLLP_SRC_RDY       : IN STD_LOGIC;
273
 
274
      -- Spartan6 PM
275
      -------------
276
      CFG_TO_TURNOFF          : IN STD_LOGIC                                    := '0';
277
      CFG_TURNOFF_OK          : OUT STD_LOGIC                                   := '0';
278
 
279
      -- System
280
      -------------
281
      USER_CLK                : IN STD_LOGIC                                    := '0';
282
      USER_RST                : IN STD_LOGIC                                    := '0'
283
   );
284
END COMPONENT cl_a7pcie_x4_axi_basic_tx;
285
 
286
 
287
BEGIN
288
 
289
   rx_inst : cl_a7pcie_x4_axi_basic_rx
290
      GENERIC MAP (
291
         C_DATA_WIDTH  => C_DATA_WIDTH,
292
         TCQ           => TCQ,
293
         C_FAMILY      => C_FAMILY,
294
         C_REM_WIDTH   => C_REM_WIDTH
295
      )
296
      PORT MAP (
297
 
298
         M_AXIS_RX_TDATA   => m_axis_rx_tdata,
299
         M_AXIS_RX_TVALID  => m_axis_rx_tvalid,
300
         M_AXIS_RX_TREADY  => m_axis_rx_tready,
301
         m_axis_rx_tkeep   => m_axis_rx_tkeep,
302
         M_AXIS_RX_TLAST   => m_axis_rx_tlast,
303
         M_AXIS_RX_TUSER   => m_axis_rx_tuser,
304
 
305
         TRN_RD            => trn_rd,
306
         TRN_RSOF          => trn_rsof,
307
         TRN_REOF          => trn_reof,
308
         TRN_RSRC_RDY      => trn_rsrc_rdy,
309
         TRN_RDST_RDY      => trn_rdst_rdy,
310
         TRN_RSRC_DSC      => trn_rsrc_dsc,
311
         TRN_RREM          => trn_rrem,
312
         TRN_RERRFWD       => trn_rerrfwd,
313
         TRN_RBAR_HIT      => trn_rbar_hit,
314
         TRN_RECRC_ERR     => trn_recrc_err,
315
 
316
         NP_COUNTER        => np_counter,
317
         USER_CLK          => user_clk,
318
         USER_RST          => user_rst
319
      );
320
 
321
   tx_inst : cl_a7pcie_x4_axi_basic_tx
322
      GENERIC MAP (
323
         C_DATA_WIDTH      => C_DATA_WIDTH,
324
         C_FAMILY          => C_FAMILY,
325
         C_ROOT_PORT       => C_ROOT_PORT,
326
         C_PM_PRIORITY     => C_PM_PRIORITY,
327
         TCQ               => TCQ,
328
         C_REM_WIDTH       => C_REM_WIDTH
329
      )
330
      PORT MAP (
331
 
332
         S_AXIS_TX_TDATA       => s_axis_tx_tdata,
333
         S_AXIS_TX_TVALID      => s_axis_tx_tvalid,
334
         S_AXIS_TX_TREADY      => s_axis_tx_tready,
335
         s_axis_tx_tkeep       => s_axis_tx_tkeep,
336
         S_AXIS_TX_TLAST       => s_axis_tx_tlast,
337
         S_AXIS_TX_TUSER       => s_axis_tx_tuser,
338
 
339
         USER_TURNOFF_OK       => user_turnoff_ok,
340
         USER_TCFG_GNT         => user_tcfg_gnt,
341
 
342
         TRN_TD                => trn_td,
343
         TRN_TSOF              => trn_tsof,
344
         TRN_TEOF              => trn_teof,
345
         TRN_TSRC_RDY          => trn_tsrc_rdy,
346
         TRN_TDST_RDY          => trn_tdst_rdy,
347
         TRN_TSRC_DSC          => trn_tsrc_dsc,
348
         TRN_TREM              => trn_trem,
349
         TRN_TERRFWD           => trn_terrfwd,
350
         TRN_TSTR              => trn_tstr,
351
         TRN_TBUF_AV           => trn_tbuf_av,
352
         TRN_TECRC_GEN         => trn_tecrc_gen,
353
 
354
         TRN_TCFG_REQ          => trn_tcfg_req,
355
         TRN_TCFG_GNT          => trn_tcfg_gnt,
356
         TRN_LNK_UP            => trn_lnk_up,
357
 
358
         CFG_PCIE_LINK_STATE   => cfg_pcie_link_state,
359
 
360
         CFG_PM_SEND_PME_TO    => cfg_pm_send_pme_to,
361
         CFG_PMCSR_POWERSTATe  => cfg_pmcsr_powerstate,
362
         TRN_RDLLP_DATA        => trn_rdllp_data,
363
         TRN_RDLLP_SRC_RDY     => trn_rdllp_src_rdy,
364
 
365
         CFG_TO_TURNOFF        => cfg_to_turnoff,
366
         CFG_TURNOFF_OK        => cfg_turnoff_ok,
367
 
368
         USER_CLK              => user_clk,
369
         USER_RST              => user_rst
370
      );
371
 
372
END trans;

powered by: WebSVN 2.1.0

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