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

Subversion Repositories sata_controller_core

[/] [sata_controller_core/] [trunk/] [sata2_bus_v1_00_a/] [base_system/] [pcores/] [sata_core_v1_00_a/] [hdl/] [vhdl/] [sata_core.vhd] - Blame information for rev 11

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 11 ashwin_men
------------------------------------------------------------------------------
2
-- sata_core.vhd - entity/architecture pair
3
------------------------------------------------------------------------------
4
-- IMPORTANT:
5
-- DO NOT MODIFY THIS FILE EXCEPT IN THE DESIGNATED SECTIONS.
6
--
7
-- SEARCH FOR --USER TO DETERMINE WHERE CHANGES ARE ALLOWED.
8
--
9
-- TYPICALLY, THE ONLY ACCEPTABLE CHANGES INVOLVE ADDING NEW
10
-- PORTS AND GENERICS THAT GET PASSED THROUGH TO THE INSTANTIATION
11
-- OF THE USER_LOGIC ENTITY.
12
------------------------------------------------------------------------------
13
--
14
-- ***************************************************************************
15
-- ** Copyright (c) 1995-2010 Xilinx, Inc.  All rights reserved.            **
16
-- **                                                                       **
17
-- ** Xilinx, Inc.                                                          **
18
-- ** XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"         **
19
-- ** AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND       **
20
-- ** SOLUTIONS FOR XILINX DEVICES.  BY PROVIDING THIS DESIGN, CODE,        **
21
-- ** OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE,        **
22
-- ** APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION           **
23
-- ** THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT,     **
24
-- ** AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE      **
25
-- ** FOR YOUR IMPLEMENTATION.  XILINX EXPRESSLY DISCLAIMS ANY              **
26
-- ** WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE               **
27
-- ** IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR        **
28
-- ** REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF       **
29
-- ** INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS       **
30
-- ** FOR A PARTICULAR PURPOSE.                                             **
31
-- **                                                                       **
32
-- ***************************************************************************
33
--
34
------------------------------------------------------------------------------
35
-- Filename:          sata_core.vhd
36
-- Version:           1.00.a
37
-- Description:       Top level design, instantiates library components and user logic.
38
-- Date:              Fri Jun 17 14:13:01 2011 (by Create and Import Peripheral Wizard)
39
-- VHDL Standard:     VHDL'93
40
------------------------------------------------------------------------------
41
-- Naming Conventions:
42
--   active low signals:                    "*_n"
43
--   clock signals:                         "clk", "clk_div#", "clk_#x"
44
--   reset signals:                         "rst", "rst_n"
45
--   generics:                              "C_*"
46
--   user defined types:                    "*_TYPE"
47
--   state machine next state:              "*_ns"
48
--   state machine current state:           "*_cs"
49
--   combinatorial signals:                 "*_com"
50
--   pipelined or register delay signals:   "*_d#"
51
--   counter signals:                       "*cnt*"
52
--   clock enable signals:                  "*_ce"
53
--   internal version of output port:       "*_i"
54
--   device pins:                           "*_pin"
55
--   ports:                                 "- Names begin with Uppercase"
56
--   processes:                             "*_PROCESS"
57
--   component instantiations:              "<ENTITY_>I_<#|FUNC>"
58
------------------------------------------------------------------------------
59
 
60
library ieee;
61
use ieee.std_logic_1164.all;
62
use ieee.std_logic_arith.all;
63
use ieee.std_logic_unsigned.all;
64
 
65
library proc_common_v3_00_a;
66
use proc_common_v3_00_a.proc_common_pkg.all;
67
use proc_common_v3_00_a.ipif_pkg.all;
68
 
69
library plbv46_slave_single_v1_01_a;
70
use plbv46_slave_single_v1_01_a.plbv46_slave_single;
71
 
72
library sata_core_v1_00_a;
73
use sata_core_v1_00_a.user_logic;
74
 
75
------------------------------------------------------------------------------
76
-- Entity section
77
------------------------------------------------------------------------------
78
-- Definition of Generics:
79
--   C_BASEADDR                   -- PLBv46 slave: base address
80
--   C_HIGHADDR                   -- PLBv46 slave: high address
81
--   C_SPLB_AWIDTH                -- PLBv46 slave: address bus width
82
--   C_SPLB_DWIDTH                -- PLBv46 slave: data bus width
83
--   C_SPLB_NUM_MASTERS           -- PLBv46 slave: Number of masters
84
--   C_SPLB_MID_WIDTH             -- PLBv46 slave: master ID bus width
85
--   C_SPLB_NATIVE_DWIDTH         -- PLBv46 slave: internal native data bus width
86
--   C_SPLB_P2P                   -- PLBv46 slave: point to point interconnect scheme
87
--   C_SPLB_SUPPORT_BURSTS        -- PLBv46 slave: support bursts
88
--   C_SPLB_SMALLEST_MASTER       -- PLBv46 slave: width of the smallest master
89
--   C_SPLB_CLK_PERIOD_PS         -- PLBv46 slave: bus clock in picoseconds
90
--   C_INCLUDE_DPHASE_TIMER       -- PLBv46 slave: Data Phase Timer configuration; 0 = exclude timer, 1 = include timer
91
--   C_FAMILY                     -- Xilinx FPGA family
92
--
93
-- Definition of Ports:
94
--   SPLB_Clk                     -- PLB main bus clock
95
--   SPLB_Rst                     -- PLB main bus reset
96
--   PLB_ABus                     -- PLB address bus
97
--   PLB_UABus                    -- PLB upper address bus
98
--   PLB_PAValid                  -- PLB primary address valid indicator
99
--   PLB_SAValid                  -- PLB secondary address valid indicator
100
--   PLB_rdPrim                   -- PLB secondary to primary read request indicator
101
--   PLB_wrPrim                   -- PLB secondary to primary write request indicator
102
--   PLB_masterID                 -- PLB current master identifier
103
--   PLB_abort                    -- PLB abort request indicator
104
--   PLB_busLock                  -- PLB bus lock
105
--   PLB_RNW                      -- PLB read/not write
106
--   PLB_BE                       -- PLB byte enables
107
--   PLB_MSize                    -- PLB master data bus size
108
--   PLB_size                     -- PLB transfer size
109
--   PLB_type                     -- PLB transfer type
110
--   PLB_lockErr                  -- PLB lock error indicator
111
--   PLB_wrDBus                   -- PLB write data bus
112
--   PLB_wrBurst                  -- PLB burst write transfer indicator
113
--   PLB_rdBurst                  -- PLB burst read transfer indicator
114
--   PLB_wrPendReq                -- PLB write pending bus request indicator
115
--   PLB_rdPendReq                -- PLB read pending bus request indicator
116
--   PLB_wrPendPri                -- PLB write pending request priority
117
--   PLB_rdPendPri                -- PLB read pending request priority
118
--   PLB_reqPri                   -- PLB current request priority
119
--   PLB_TAttribute               -- PLB transfer attribute
120
--   Sl_addrAck                   -- Slave address acknowledge
121
--   Sl_SSize                     -- Slave data bus size
122
--   Sl_wait                      -- Slave wait indicator
123
--   Sl_rearbitrate               -- Slave re-arbitrate bus indicator
124
--   Sl_wrDAck                    -- Slave write data acknowledge
125
--   Sl_wrComp                    -- Slave write transfer complete indicator
126
--   Sl_wrBTerm                   -- Slave terminate write burst transfer
127
--   Sl_rdDBus                    -- Slave read data bus
128
--   Sl_rdWdAddr                  -- Slave read word address
129
--   Sl_rdDAck                    -- Slave read data acknowledge
130
--   Sl_rdComp                    -- Slave read transfer complete indicator
131
--   Sl_rdBTerm                   -- Slave terminate read burst transfer
132
--   Sl_MBusy                     -- Slave busy indicator
133
--   Sl_MWrErr                    -- Slave write error indicator
134
--   Sl_MRdErr                    -- Slave read error indicator
135
--   Sl_MIRQ                      -- Slave interrupt indicator
136
------------------------------------------------------------------------------
137
 
138
entity sata_core is
139
  generic
140
  (
141
    -- ADD USER GENERICS BELOW THIS LINE ---------------
142
    CHIPSCOPE                      : boolean := false;
143
    DATA_WIDTH                     : natural := 32;
144
    -- ADD USER GENERICS ABOVE THIS LINE ---------------
145
 
146
    -- DO NOT EDIT BELOW THIS LINE ---------------------
147
    -- Bus protocol parameters, do not add to or delete
148
    C_BASEADDR                     : std_logic_vector     := X"FFFFFFFF";
149
    C_HIGHADDR                     : std_logic_vector     := X"00000000";
150
    C_SPLB_AWIDTH                  : integer              := 32;
151
    C_SPLB_DWIDTH                  : integer              := 128;
152
    C_SPLB_NUM_MASTERS             : integer              := 8;
153
    C_SPLB_MID_WIDTH               : integer              := 3;
154
    C_SPLB_NATIVE_DWIDTH           : integer              := 32;
155
    C_SPLB_P2P                     : integer              := 0;
156
    C_SPLB_SUPPORT_BURSTS          : integer              := 0;
157
    C_SPLB_SMALLEST_MASTER         : integer              := 32;
158
    C_SPLB_CLK_PERIOD_PS           : integer              := 10000;
159
    C_INCLUDE_DPHASE_TIMER         : integer              := 1;
160
    C_FAMILY                       : string               := "virtex5"
161
    -- DO NOT EDIT ABOVE THIS LINE ---------------------
162
  );
163
  port
164
  (
165
    -- ADD USER PORTS BELOW THIS LINE ------------------
166
    --USER ports added here
167
    user_logic_ila_control    : in std_logic_vector (35 downto 0);
168
    cmd_layer_ila_control    : in std_logic_vector (35 downto 0);
169
    sata_rx_frame_ila_control    : in std_logic_vector (35 downto 0);
170
    sata_tx_frame_ila_control    : in std_logic_vector (35 downto 0);
171
    sata_phy_ila_control    : in std_logic_vector (35 downto 0);
172
    oob_control_ila_control    : in std_logic_vector (35 downto 0);
173
    scrambler_ila_control    : in std_logic_vector (35 downto 0);
174
    descrambler_ila_control    : in std_logic_vector (35 downto 0);
175
     -----------------------------------------------------
176
    --TILE0_REFCLK_PAD_P_IN : in std_logic;     -- MGTCLKA,  clocks GTP_X0Y0-2 
177
    --TILE0_REFCLK_PAD_N_IN : in std_logic;     -- MGTCLKA 
178
 
179
    TXP0_OUT              : out std_logic;
180
    TXN0_OUT              : out std_logic;
181
    RXP0_IN               : in std_logic;
182
    RXN0_IN               : in std_logic;
183
    TILE0_PLLLKDET_OUT_N  : out std_logic;    -- TX PLL LOCK
184
    DCMLOCKED_OUT         : out std_logic;
185
    LINKUP_led            : out std_logic;
186
    GEN2_led              : out std_logic;
187
    RESET                 : in std_logic;
188
    --GTX_RESET_IN          : in std_logic;
189
    --new_cmd               : in std_logic;
190
    CLKIN_150             : in std_logic;
191
    SATA_CORE_DOUT        : out std_logic_vector (0 to 31);
192
    SATA_CORE_DOUT_WE     : out std_logic;
193
    SATA_CORE_CLK_OUT     : out std_logic;
194
    SATA_CORE_DIN         : in std_logic_vector (0 to 31);
195
    SATA_CORE_DIN_WE      : in std_logic;
196
    SATA_CORE_FULL        : out std_logic;
197
    NPI_CORE_REQ_TYPE     : out std_logic_vector (0 to 1);
198
    NPI_CORE_NEW_CMD      : out std_logic;
199
    NPI_CORE_NUM_RD_BYTES : out std_logic_vector (0 to 31);
200
    NPI_CORE_NUM_WR_BYTES : out std_logic_vector (0 to 31);
201
    NPI_CORE_INIT_WR_ADDR : out std_logic_vector (0 to 31);
202
    NPI_CORE_INIT_RD_ADDR : out std_logic_vector (0 to 31);
203
    NPI_CORE_READY_FOR_CMD: in std_logic;
204
 
205
    -- ADD USER PORTS ABOVE THIS LINE ------------------
206
 
207
    -- DO NOT EDIT BELOW THIS LINE ---------------------
208
    -- Bus protocol ports, do not add to or delete
209
    SPLB_Clk                       : in  std_logic;
210
    SPLB_Rst                       : in  std_logic;
211
    PLB_ABus                       : in  std_logic_vector(0 to 31);
212
    PLB_UABus                      : in  std_logic_vector(0 to 31);
213
    PLB_PAValid                    : in  std_logic;
214
    PLB_SAValid                    : in  std_logic;
215
    PLB_rdPrim                     : in  std_logic;
216
    PLB_wrPrim                     : in  std_logic;
217
    PLB_masterID                   : in  std_logic_vector(0 to C_SPLB_MID_WIDTH-1);
218
    PLB_abort                      : in  std_logic;
219
    PLB_busLock                    : in  std_logic;
220
    PLB_RNW                        : in  std_logic;
221
    PLB_BE                         : in  std_logic_vector(0 to C_SPLB_DWIDTH/8-1);
222
    PLB_MSize                      : in  std_logic_vector(0 to 1);
223
    PLB_size                       : in  std_logic_vector(0 to 3);
224
    PLB_type                       : in  std_logic_vector(0 to 2);
225
    PLB_lockErr                    : in  std_logic;
226
    PLB_wrDBus                     : in  std_logic_vector(0 to C_SPLB_DWIDTH-1);
227
    PLB_wrBurst                    : in  std_logic;
228
    PLB_rdBurst                    : in  std_logic;
229
    PLB_wrPendReq                  : in  std_logic;
230
    PLB_rdPendReq                  : in  std_logic;
231
    PLB_wrPendPri                  : in  std_logic_vector(0 to 1);
232
    PLB_rdPendPri                  : in  std_logic_vector(0 to 1);
233
    PLB_reqPri                     : in  std_logic_vector(0 to 1);
234
    PLB_TAttribute                 : in  std_logic_vector(0 to 15);
235
    Sl_addrAck                     : out std_logic;
236
    Sl_SSize                       : out std_logic_vector(0 to 1);
237
    Sl_wait                        : out std_logic;
238
    Sl_rearbitrate                 : out std_logic;
239
    Sl_wrDAck                      : out std_logic;
240
    Sl_wrComp                      : out std_logic;
241
    Sl_wrBTerm                     : out std_logic;
242
    Sl_rdDBus                      : out std_logic_vector(0 to C_SPLB_DWIDTH-1);
243
    Sl_rdWdAddr                    : out std_logic_vector(0 to 3);
244
    Sl_rdDAck                      : out std_logic;
245
    Sl_rdComp                      : out std_logic;
246
    Sl_rdBTerm                     : out std_logic;
247
    Sl_MBusy                       : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
248
    Sl_MWrErr                      : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
249
    Sl_MRdErr                      : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
250
    Sl_MIRQ                        : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1)
251
    -- DO NOT EDIT ABOVE THIS LINE ---------------------
252
  );
253
 
254
  attribute SIGIS : string;
255
  attribute SIGIS of SPLB_Clk      : signal is "CLK";
256
  attribute SIGIS of SPLB_Rst      : signal is "RST";
257
 
258
end entity sata_core;
259
 
260
------------------------------------------------------------------------------
261
-- Architecture section
262
------------------------------------------------------------------------------
263
 
264
architecture IMP of sata_core is
265
 
266
  ------------------------------------------
267
  -- Array of base/high address pairs for each address range
268
  ------------------------------------------
269
  constant ZERO_ADDR_PAD                  : std_logic_vector(0 to 31) := (others => '0');
270
  constant USER_SLV_BASEADDR              : std_logic_vector     := C_BASEADDR;
271
  constant USER_SLV_HIGHADDR              : std_logic_vector     := C_HIGHADDR;
272
 
273
  constant IPIF_ARD_ADDR_RANGE_ARRAY      : SLV64_ARRAY_TYPE     :=
274
    (
275
      ZERO_ADDR_PAD & USER_SLV_BASEADDR,  -- user logic slave space base address
276
      ZERO_ADDR_PAD & USER_SLV_HIGHADDR   -- user logic slave space high address
277
    );
278
 
279
  ------------------------------------------
280
  -- Array of desired number of chip enables for each address range
281
  ------------------------------------------
282
  constant USER_SLV_NUM_REG               : integer              := 8;
283
  constant USER_NUM_REG                   : integer              := USER_SLV_NUM_REG;
284
 
285
  constant IPIF_ARD_NUM_CE_ARRAY          : INTEGER_ARRAY_TYPE   :=
286
    (
287
 
288
    );
289
 
290
  ------------------------------------------
291
  -- Ratio of bus clock to core clock (for use in dual clock systems)
292
  -- 1 = ratio is 1:1
293
  -- 2 = ratio is 2:1
294
  ------------------------------------------
295
  constant IPIF_BUS2CORE_CLK_RATIO        : integer              := 1;
296
 
297
  ------------------------------------------
298
  -- Width of the slave data bus (32 only)
299
  ------------------------------------------
300
  constant USER_SLV_DWIDTH                : integer              := C_SPLB_NATIVE_DWIDTH;
301
 
302
  constant IPIF_SLV_DWIDTH                : integer              := C_SPLB_NATIVE_DWIDTH;
303
 
304
  ------------------------------------------
305
  -- Index for CS/CE
306
  ------------------------------------------
307
  constant USER_SLV_CS_INDEX              : integer              := 0;
308
  constant USER_SLV_CE_INDEX              : integer              := calc_start_ce_index(IPIF_ARD_NUM_CE_ARRAY, USER_SLV_CS_INDEX);
309
 
310
  constant USER_CE_INDEX                  : integer              := USER_SLV_CE_INDEX;
311
 
312
  ------------------------------------------
313
  -- IP Interconnect (IPIC) signal declarations
314
  ------------------------------------------
315
  signal ipif_Bus2IP_Clk                : std_logic;
316
  signal ipif_Bus2IP_Reset              : std_logic;
317
  signal ipif_IP2Bus_Data               : std_logic_vector(0 to IPIF_SLV_DWIDTH-1);
318
  signal ipif_IP2Bus_WrAck              : std_logic;
319
  signal ipif_IP2Bus_RdAck              : std_logic;
320
  signal ipif_IP2Bus_Error              : std_logic;
321
  signal ipif_Bus2IP_Addr               : std_logic_vector(0 to C_SPLB_AWIDTH-1);
322
  signal ipif_Bus2IP_Data               : std_logic_vector(0 to IPIF_SLV_DWIDTH-1);
323
  signal ipif_Bus2IP_RNW                : std_logic;
324
  signal ipif_Bus2IP_BE                 : std_logic_vector(0 to IPIF_SLV_DWIDTH/8-1);
325
  signal ipif_Bus2IP_CS                 : std_logic_vector(0 to ((IPIF_ARD_ADDR_RANGE_ARRAY'length)/2)-1);
326
  signal ipif_Bus2IP_RdCE               : std_logic_vector(0 to calc_num_ce(IPIF_ARD_NUM_CE_ARRAY)-1);
327
  signal ipif_Bus2IP_WrCE               : std_logic_vector(0 to calc_num_ce(IPIF_ARD_NUM_CE_ARRAY)-1);
328
  signal user_Bus2IP_RdCE               : std_logic_vector(0 to USER_NUM_REG-1);
329
  signal user_Bus2IP_WrCE               : std_logic_vector(0 to USER_NUM_REG-1);
330
  signal user_IP2Bus_Data               : std_logic_vector(0 to USER_SLV_DWIDTH-1);
331
  signal user_IP2Bus_RdAck              : std_logic;
332
  signal user_IP2Bus_WrAck              : std_logic;
333
  signal user_IP2Bus_Error              : std_logic;
334
 
335
begin
336
 
337
  ------------------------------------------
338
  -- instantiate plbv46_slave_single
339
  ------------------------------------------
340
  PLBV46_SLAVE_SINGLE_I : entity plbv46_slave_single_v1_01_a.plbv46_slave_single
341
    generic map
342
    (
343
      C_ARD_ADDR_RANGE_ARRAY         => IPIF_ARD_ADDR_RANGE_ARRAY,
344
      C_ARD_NUM_CE_ARRAY             => IPIF_ARD_NUM_CE_ARRAY,
345
      C_SPLB_P2P                     => C_SPLB_P2P,
346
      C_BUS2CORE_CLK_RATIO           => IPIF_BUS2CORE_CLK_RATIO,
347
      C_SPLB_MID_WIDTH               => C_SPLB_MID_WIDTH,
348
      C_SPLB_NUM_MASTERS             => C_SPLB_NUM_MASTERS,
349
      C_SPLB_AWIDTH                  => C_SPLB_AWIDTH,
350
      C_SPLB_DWIDTH                  => C_SPLB_DWIDTH,
351
      C_SIPIF_DWIDTH                 => IPIF_SLV_DWIDTH,
352
      C_INCLUDE_DPHASE_TIMER         => C_INCLUDE_DPHASE_TIMER,
353
      C_FAMILY                       => C_FAMILY
354
    )
355
    port map
356
    (
357
      SPLB_Clk                       => SPLB_Clk,
358
      SPLB_Rst                       => SPLB_Rst,
359
      PLB_ABus                       => PLB_ABus,
360
      PLB_UABus                      => PLB_UABus,
361
      PLB_PAValid                    => PLB_PAValid,
362
      PLB_SAValid                    => PLB_SAValid,
363
      PLB_rdPrim                     => PLB_rdPrim,
364
      PLB_wrPrim                     => PLB_wrPrim,
365
      PLB_masterID                   => PLB_masterID,
366
      PLB_abort                      => PLB_abort,
367
      PLB_busLock                    => PLB_busLock,
368
      PLB_RNW                        => PLB_RNW,
369
      PLB_BE                         => PLB_BE,
370
      PLB_MSize                      => PLB_MSize,
371
      PLB_size                       => PLB_size,
372
      PLB_type                       => PLB_type,
373
      PLB_lockErr                    => PLB_lockErr,
374
      PLB_wrDBus                     => PLB_wrDBus,
375
      PLB_wrBurst                    => PLB_wrBurst,
376
      PLB_rdBurst                    => PLB_rdBurst,
377
      PLB_wrPendReq                  => PLB_wrPendReq,
378
      PLB_rdPendReq                  => PLB_rdPendReq,
379
      PLB_wrPendPri                  => PLB_wrPendPri,
380
      PLB_rdPendPri                  => PLB_rdPendPri,
381
      PLB_reqPri                     => PLB_reqPri,
382
      PLB_TAttribute                 => PLB_TAttribute,
383
      Sl_addrAck                     => Sl_addrAck,
384
      Sl_SSize                       => Sl_SSize,
385
      Sl_wait                        => Sl_wait,
386
      Sl_rearbitrate                 => Sl_rearbitrate,
387
      Sl_wrDAck                      => Sl_wrDAck,
388
      Sl_wrComp                      => Sl_wrComp,
389
      Sl_wrBTerm                     => Sl_wrBTerm,
390
      Sl_rdDBus                      => Sl_rdDBus,
391
      Sl_rdWdAddr                    => Sl_rdWdAddr,
392
      Sl_rdDAck                      => Sl_rdDAck,
393
      Sl_rdComp                      => Sl_rdComp,
394
      Sl_rdBTerm                     => Sl_rdBTerm,
395
      Sl_MBusy                       => Sl_MBusy,
396
      Sl_MWrErr                      => Sl_MWrErr,
397
      Sl_MRdErr                      => Sl_MRdErr,
398
      Sl_MIRQ                        => Sl_MIRQ,
399
      Bus2IP_Clk                     => ipif_Bus2IP_Clk,
400
      Bus2IP_Reset                   => ipif_Bus2IP_Reset,
401
      IP2Bus_Data                    => ipif_IP2Bus_Data,
402
      IP2Bus_WrAck                   => ipif_IP2Bus_WrAck,
403
      IP2Bus_RdAck                   => ipif_IP2Bus_RdAck,
404
      IP2Bus_Error                   => ipif_IP2Bus_Error,
405
      Bus2IP_Addr                    => ipif_Bus2IP_Addr,
406
      Bus2IP_Data                    => ipif_Bus2IP_Data,
407
      Bus2IP_RNW                     => ipif_Bus2IP_RNW,
408
      Bus2IP_BE                      => ipif_Bus2IP_BE,
409
      Bus2IP_CS                      => ipif_Bus2IP_CS,
410
      Bus2IP_RdCE                    => ipif_Bus2IP_RdCE,
411
      Bus2IP_WrCE                    => ipif_Bus2IP_WrCE
412
    );
413
 
414
  ------------------------------------------
415
  -- instantiate User Logic
416
  ------------------------------------------
417
  USER_LOGIC_I : entity sata_core_v1_00_a.user_logic
418
    generic map
419
    (
420
      -- MAP USER GENERICS BELOW THIS LINE ---------------
421
      --USER generics mapped here
422
      -- MAP USER GENERICS ABOVE THIS LINE ---------------
423
 
424
      C_SLV_DWIDTH        => USER_SLV_DWIDTH,
425
      C_NUM_REG           => USER_NUM_REG,
426
      CHIPSCOPE           => CHIPSCOPE,
427
      DATA_WIDTH          => DATA_WIDTH
428
    )
429
    port map
430
    (
431
      -- MAP USER PORTS BELOW THIS LINE ------------------
432
      user_logic_ila_control => user_logic_ila_control,
433
      cmd_layer_ila_control => cmd_layer_ila_control,
434
      sata_rx_frame_ila_control => sata_rx_frame_ila_control,
435
      sata_tx_frame_ila_control => sata_tx_frame_ila_control,
436
      sata_phy_ila_control    => sata_phy_ila_control,
437
      oob_control_ila_control => oob_control_ila_control,
438
      scrambler_ila_control => scrambler_ila_control,
439
      descrambler_ila_control => descrambler_ila_control,
440
      --TILE0_REFCLK_PAD_P_IN => TILE0_REFCLK_PAD_P_IN,     -- MGTCLKA,  clocks GTP_X0Y0-2 
441
      --TILE0_REFCLK_PAD_N_IN => TILE0_REFCLK_PAD_N_IN,    -- MGTCLKA 
442
      TXP0_OUT              => TXP0_OUT,
443
      TXN0_OUT              => TXN0_OUT,
444
      RXP0_IN               => RXP0_IN,
445
      RXN0_IN               => RXN0_IN,
446
      TILE0_PLLLKDET_OUT_N  => TILE0_PLLLKDET_OUT_N   , -- TX PLL LOCK
447
      DCMLOCKED_OUT         => DCMLOCKED_OUT ,
448
      LINKUP_led            => LINKUP_led    ,
449
      GEN2_led              => GEN2_led,
450
      RESET                 => RESET,
451
      --GTX_RESET_IN          => GTX_RESET_IN,      
452
      --new_cmd_in            => new_cmd,           
453
      CLKIN_150             => CLKIN_150,
454
      SATA_CORE_DOUT        => SATA_CORE_DOUT,
455
      SATA_CORE_DOUT_WE     => SATA_CORE_DOUT_WE,
456
      SATA_CORE_CLK_OUT     => SATA_CORE_CLK_OUT,
457
      SATA_CORE_DIN         => SATA_CORE_DIN,
458
      SATA_CORE_DIN_WE      => SATA_CORE_DIN_WE,
459
      SATA_CORE_FULL        => SATA_CORE_FULL,
460
      NPI_CORE_REQ_TYPE     => NPI_CORE_REQ_TYPE,
461
      NPI_CORE_NEW_CMD      => NPI_CORE_NEW_CMD,
462
      NPI_CORE_NUM_RD_BYTES => NPI_CORE_NUM_RD_BYTES,
463
      NPI_CORE_NUM_WR_BYTES => NPI_CORE_NUM_WR_BYTES,
464
      NPI_CORE_INIT_WR_ADDR => NPI_CORE_INIT_WR_ADDR,
465
      NPI_CORE_INIT_RD_ADDR => NPI_CORE_INIT_RD_ADDR,
466
      NPI_CORE_READY_FOR_CMD => NPI_CORE_READY_FOR_CMD,
467
 
468
      --USER ports mapped here
469
      -- MAP USER PORTS ABOVE THIS LINE ------------------
470
 
471
      Bus2IP_Clk                     => ipif_Bus2IP_Clk,
472
      Bus2IP_Reset                   => ipif_Bus2IP_Reset,
473
      Bus2IP_Data                    => ipif_Bus2IP_Data,
474
      Bus2IP_BE                      => ipif_Bus2IP_BE,
475
      Bus2IP_RdCE                    => user_Bus2IP_RdCE,
476
      Bus2IP_WrCE                    => user_Bus2IP_WrCE,
477
      IP2Bus_Data                    => user_IP2Bus_Data,
478
      IP2Bus_RdAck                   => user_IP2Bus_RdAck,
479
      IP2Bus_WrAck                   => user_IP2Bus_WrAck,
480
      IP2Bus_Error                   => user_IP2Bus_Error
481
    );
482
 
483
  ------------------------------------------
484
  -- connect internal signals
485
  ------------------------------------------
486
  ipif_IP2Bus_Data <= user_IP2Bus_Data;
487
  ipif_IP2Bus_WrAck <= user_IP2Bus_WrAck;
488
  ipif_IP2Bus_RdAck <= user_IP2Bus_RdAck;
489
  ipif_IP2Bus_Error <= user_IP2Bus_Error;
490
 
491
  user_Bus2IP_RdCE <= ipif_Bus2IP_RdCE(USER_CE_INDEX to USER_CE_INDEX+USER_NUM_REG-1);
492
  user_Bus2IP_WrCE <= ipif_Bus2IP_WrCE(USER_CE_INDEX to USER_CE_INDEX+USER_NUM_REG-1);
493
 
494
 
495
end IMP;

powered by: WebSVN 2.1.0

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