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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [orpsocv2/] [boards/] [xilinx/] [ml501/] [rtl/] [verilog/] [xilinx_ddr2/] [ddr2_mem_if_top.v] - Blame information for rev 412

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 412 julius
//*****************************************************************************
2
// DISCLAIMER OF LIABILITY
3
//
4
// This file contains proprietary and confidential information of
5
// Xilinx, Inc. ("Xilinx"), that is distributed under a license
6
// from Xilinx, and may be used, copied and/or disclosed only
7
// pursuant to the terms of a valid license agreement with Xilinx.
8
//
9
// XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION
10
// ("MATERIALS") "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
11
// EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING WITHOUT
12
// LIMITATION, ANY WARRANTY WITH RESPECT TO NONINFRINGEMENT,
13
// MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE. Xilinx
14
// does not warrant that functions included in the Materials will
15
// meet the requirements of Licensee, or that the operation of the
16
// Materials will be uninterrupted or error-free, or that defects
17
// in the Materials will be corrected. Furthermore, Xilinx does
18
// not warrant or make any representations regarding use, or the
19
// results of the use, of the Materials in terms of correctness,
20
// accuracy, reliability or otherwise.
21
//
22
// Xilinx products are not designed or intended to be fail-safe,
23
// or for use in any application requiring fail-safe performance,
24
// such as life-support or safety devices or systems, Class III
25
// medical devices, nuclear facilities, applications related to
26
// the deployment of airbags, or any other applications that could
27
// lead to death, personal injury or severe property or
28
// environmental damage (individually and collectively, "critical
29
// applications"). Customer assumes the sole risk and liability
30
// of any use of Xilinx products in critical applications,
31
// subject only to applicable laws and regulations governing
32
// limitations on product liability.
33
//
34
// Copyright 2006, 2007, 2008 Xilinx, Inc.
35
// All rights reserved.
36
//
37
// This disclaimer and copyright notice must be retained as part
38
// of this file at all times.
39
//*****************************************************************************
40
//   ____  ____
41
//  /   /\/   /
42
// /___/  \  /    Vendor: Xilinx
43
// \   \   \/     Version: 3.0
44
//  \   \         Application: MIG
45
//  /   /         Filename: ddr2_mem_if_top.v
46
// /___/   /\     Date Last Modified: $Date: 2009/01/15 14:22:14 $
47
// \   \  /  \    Date Created: Wed Aug 16 2006
48
//  \___\/\___\
49
//
50
//Device: Virtex-5
51
//Design Name: DDR/DDR2
52
//Purpose:
53
//   Top-level for parameterizable (DDR or DDR2) memory interface
54
//Reference:
55
//Revision History:
56
//   Rev 1.1 - Parameter USE_DM_PORT added. PK. 6/25/08
57
//   Rev 1.2 - Parameter HIGH_PERFORMANCE_MODE added. PK. 7/10/08
58
//   Rev 1.3 - Parameter CS_BITS added. PK. 10/8/08
59
//   Rev 1.4 - Parameter IODELAY_GRP added. PK. 11/27/08
60
//*****************************************************************************
61
 
62
`timescale 1ns/1ps
63
 
64
module ddr2_mem_if_top #
65
  (
66
   // Following parameters are for 72-bit RDIMM design (for ML561 Reference
67
   // board design). Actual values may be different. Actual parameters values
68
   // are passed from design top module ddr2_mig module. Please refer to
69
   // the ddr2_mig module for actual values.
70
   parameter BANK_WIDTH            = 2,
71
   parameter CKE_WIDTH             = 1,
72
   parameter CLK_WIDTH             = 1,
73
   parameter COL_WIDTH             = 10,
74
   parameter CS_BITS               = 0,
75
   parameter CS_NUM                = 1,
76
   parameter CS_WIDTH              = 1,
77
   parameter USE_DM_PORT           = 1,
78
   parameter DM_WIDTH              = 9,
79
   parameter DQ_WIDTH              = 72,
80
   parameter DQ_BITS               = 7,
81
   parameter DQ_PER_DQS            = 8,
82
   parameter DQS_BITS              = 4,
83
   parameter DQS_WIDTH             = 9,
84
   parameter HIGH_PERFORMANCE_MODE = "TRUE",
85
   parameter IODELAY_GRP           = "IODELAY_MIG",
86
   parameter ODT_WIDTH             = 1,
87
   parameter ROW_WIDTH             = 14,
88
   parameter APPDATA_WIDTH         = 144,
89
   parameter ADDITIVE_LAT          = 0,
90
   parameter BURST_LEN             = 4,
91
   parameter BURST_TYPE            = 0,
92
   parameter CAS_LAT               = 5,
93
   parameter ECC_ENABLE            = 0,
94
   parameter MULTI_BANK_EN         = 1,
95
   parameter TWO_T_TIME_EN         = 0,
96
   parameter ODT_TYPE              = 1,
97
   parameter DDR_TYPE              = 1,
98
   parameter REDUCE_DRV            = 0,
99
   parameter REG_ENABLE            = 1,
100
   parameter TREFI_NS              = 7800,
101
   parameter TRAS                  = 40000,
102
   parameter TRCD                  = 15000,
103
   parameter TRFC                  = 105000,
104
   parameter TRP                   = 15000,
105
   parameter TRTP                  = 7500,
106
   parameter TWR                   = 15000,
107
   parameter TWTR                  = 10000,
108
   parameter CLK_PERIOD            = 3000,
109
   parameter SIM_ONLY              = 0,
110
   parameter DEBUG_EN              = 0,
111
   parameter FPGA_SPEED_GRADE      = 2
112
   )
113
  (
114
   input                                    clk0,
115
   input usr_clk, // jb
116
   input                                    clk90,
117
   input                                    clkdiv0,
118
   input                                    rst0,
119
   input                                    rst90,
120
   input                                    rstdiv0,
121
   input [2:0]                              app_af_cmd,
122
   input [30:0]                             app_af_addr,
123
   input                                    app_af_wren,
124
   input                                    app_wdf_wren,
125
   input [APPDATA_WIDTH-1:0]                app_wdf_data,
126
   input [(APPDATA_WIDTH/8)-1:0]            app_wdf_mask_data,
127
   output [1:0]                             rd_ecc_error,
128
   output                                   app_af_afull,
129
   output                                   app_wdf_afull,
130
   output                                   rd_data_valid,
131
   output [APPDATA_WIDTH-1:0]               rd_data_fifo_out,
132
   output                                   phy_init_done,
133
   output [CLK_WIDTH-1:0]                   ddr_ck,
134
   output [CLK_WIDTH-1:0]                   ddr_ck_n,
135
   output [ROW_WIDTH-1:0]                   ddr_addr,
136
   output [BANK_WIDTH-1:0]                  ddr_ba,
137
   output                                   ddr_ras_n,
138
   output                                   ddr_cas_n,
139
   output                                   ddr_we_n,
140
   output [CS_WIDTH-1:0]                    ddr_cs_n,
141
   output [CKE_WIDTH-1:0]                   ddr_cke,
142
   output [ODT_WIDTH-1:0]                   ddr_odt,
143
   output [DM_WIDTH-1:0]                    ddr_dm,
144
   inout [DQS_WIDTH-1:0]                    ddr_dqs,
145
   inout [DQS_WIDTH-1:0]                    ddr_dqs_n,
146
   inout [DQ_WIDTH-1:0]                     ddr_dq,
147
   // Debug signals (optional use)
148
   input                                    dbg_idel_up_all,
149
   input                                    dbg_idel_down_all,
150
   input                                    dbg_idel_up_dq,
151
   input                                    dbg_idel_down_dq,
152
   input                                    dbg_idel_up_dqs,
153
   input                                    dbg_idel_down_dqs,
154
   input                                    dbg_idel_up_gate,
155
   input                                    dbg_idel_down_gate,
156
   input [DQ_BITS-1:0]                      dbg_sel_idel_dq,
157
   input                                    dbg_sel_all_idel_dq,
158
   input [DQS_BITS:0]                       dbg_sel_idel_dqs,
159
   input                                    dbg_sel_all_idel_dqs,
160
   input [DQS_BITS:0]                       dbg_sel_idel_gate,
161
   input                                    dbg_sel_all_idel_gate,
162
   output [3:0]                             dbg_calib_done,
163
   output [3:0]                             dbg_calib_err,
164
   output [(6*DQ_WIDTH)-1:0]                dbg_calib_dq_tap_cnt,
165
   output [(6*DQS_WIDTH)-1:0]               dbg_calib_dqs_tap_cnt,
166
   output [(6*DQS_WIDTH)-1:0]               dbg_calib_gate_tap_cnt,
167
   output [DQS_WIDTH-1:0]                   dbg_calib_rd_data_sel,
168
   output [(5*DQS_WIDTH)-1:0]               dbg_calib_rden_dly,
169
   output [(5*DQS_WIDTH)-1:0]               dbg_calib_gate_dly
170
   );
171
 
172
  wire [30:0]                       af_addr;
173
  wire [2:0]                        af_cmd;
174
  wire                              af_empty;
175
  wire [ROW_WIDTH-1:0]              ctrl_addr;
176
  wire                              ctrl_af_rden;
177
  wire [BANK_WIDTH-1:0]             ctrl_ba;
178
  wire                              ctrl_cas_n;
179
  wire [CS_NUM-1:0]                 ctrl_cs_n;
180
  wire                              ctrl_ras_n;
181
  wire                              ctrl_rden;
182
  wire                              ctrl_ref_flag;
183
  wire                              ctrl_we_n;
184
  wire                              ctrl_wren;
185
  wire [DQS_WIDTH-1:0]              phy_calib_rden;
186
  wire [DQS_WIDTH-1:0]              phy_calib_rden_sel;
187
  wire [DQ_WIDTH-1:0]               rd_data_fall;
188
  wire [DQ_WIDTH-1:0]               rd_data_rise;
189
  wire [(2*DQ_WIDTH)-1:0]           wdf_data;
190
  wire [((2*DQ_WIDTH)/8)-1:0]       wdf_mask_data;
191
  wire                              wdf_rden;
192
 
193
  //***************************************************************************
194
 
195
  ddr2_phy_top #
196
    (
197
     .BANK_WIDTH            (BANK_WIDTH),
198
     .CKE_WIDTH             (CKE_WIDTH),
199
     .CLK_WIDTH             (CLK_WIDTH),
200
     .COL_WIDTH             (COL_WIDTH),
201
     .CS_BITS               (CS_BITS),
202
     .CS_NUM                (CS_NUM),
203
     .CS_WIDTH              (CS_WIDTH),
204
     .USE_DM_PORT           (USE_DM_PORT),
205
     .DM_WIDTH              (DM_WIDTH),
206
     .DQ_WIDTH              (DQ_WIDTH),
207
     .DQ_BITS               (DQ_BITS),
208
     .DQ_PER_DQS            (DQ_PER_DQS),
209
     .DQS_BITS              (DQS_BITS),
210
     .DQS_WIDTH             (DQS_WIDTH),
211
     .HIGH_PERFORMANCE_MODE (HIGH_PERFORMANCE_MODE),
212
     .IODELAY_GRP           (IODELAY_GRP),
213
     .ODT_WIDTH             (ODT_WIDTH),
214
     .ROW_WIDTH             (ROW_WIDTH),
215
     .TWO_T_TIME_EN         (TWO_T_TIME_EN),
216
     .ADDITIVE_LAT          (ADDITIVE_LAT),
217
     .BURST_LEN             (BURST_LEN),
218
     .BURST_TYPE            (BURST_TYPE),
219
     .CAS_LAT               (CAS_LAT),
220
     .ECC_ENABLE            (ECC_ENABLE),
221
     .ODT_TYPE              (ODT_TYPE),
222
     .DDR_TYPE              (DDR_TYPE),
223
     .REDUCE_DRV            (REDUCE_DRV),
224
     .REG_ENABLE            (REG_ENABLE),
225
     .TWR                   (TWR),
226
     .CLK_PERIOD            (CLK_PERIOD),
227
     .SIM_ONLY              (SIM_ONLY),
228
     .DEBUG_EN              (DEBUG_EN),
229
     .FPGA_SPEED_GRADE      (FPGA_SPEED_GRADE)
230
     )
231
    u_phy_top
232
      (
233
       .clk0                   (clk0),
234
       .clk90                  (clk90),
235
       .clkdiv0                (clkdiv0),
236
       .rst0                   (rst0),
237
       .rst90                  (rst90),
238
       .rstdiv0                (rstdiv0),
239
       .ctrl_wren              (ctrl_wren),
240
       .ctrl_addr              (ctrl_addr),
241
       .ctrl_ba                (ctrl_ba),
242
       .ctrl_ras_n             (ctrl_ras_n),
243
       .ctrl_cas_n             (ctrl_cas_n),
244
       .ctrl_we_n              (ctrl_we_n),
245
       .ctrl_cs_n              (ctrl_cs_n),
246
       .ctrl_rden              (ctrl_rden),
247
       .ctrl_ref_flag          (ctrl_ref_flag),
248
       .wdf_data               (wdf_data),
249
       .wdf_mask_data          (wdf_mask_data),
250
       .wdf_rden               (wdf_rden),
251
       .phy_init_done          (phy_init_done),
252
       .phy_calib_rden         (phy_calib_rden),
253
       .phy_calib_rden_sel     (phy_calib_rden_sel),
254
       .rd_data_rise           (rd_data_rise),
255
       .rd_data_fall           (rd_data_fall),
256
       .ddr_ck                 (ddr_ck),
257
       .ddr_ck_n               (ddr_ck_n),
258
       .ddr_addr               (ddr_addr),
259
       .ddr_ba                 (ddr_ba),
260
       .ddr_ras_n              (ddr_ras_n),
261
       .ddr_cas_n              (ddr_cas_n),
262
       .ddr_we_n               (ddr_we_n),
263
       .ddr_cs_n               (ddr_cs_n),
264
       .ddr_cke                (ddr_cke),
265
       .ddr_odt                (ddr_odt),
266
       .ddr_dm                 (ddr_dm),
267
       .ddr_dqs                (ddr_dqs),
268
       .ddr_dqs_n              (ddr_dqs_n),
269
       .ddr_dq                 (ddr_dq),
270
       .dbg_idel_up_all        (dbg_idel_up_all),
271
       .dbg_idel_down_all      (dbg_idel_down_all),
272
       .dbg_idel_up_dq         (dbg_idel_up_dq),
273
       .dbg_idel_down_dq       (dbg_idel_down_dq),
274
       .dbg_idel_up_dqs        (dbg_idel_up_dqs),
275
       .dbg_idel_down_dqs      (dbg_idel_down_dqs),
276
       .dbg_idel_up_gate       (dbg_idel_up_gate),
277
       .dbg_idel_down_gate     (dbg_idel_down_gate),
278
       .dbg_sel_idel_dq        (dbg_sel_idel_dq),
279
       .dbg_sel_all_idel_dq    (dbg_sel_all_idel_dq),
280
       .dbg_sel_idel_dqs       (dbg_sel_idel_dqs),
281
       .dbg_sel_all_idel_dqs   (dbg_sel_all_idel_dqs),
282
       .dbg_sel_idel_gate      (dbg_sel_idel_gate),
283
       .dbg_sel_all_idel_gate  (dbg_sel_all_idel_gate),
284
       .dbg_calib_done         (dbg_calib_done),
285
       .dbg_calib_err          (dbg_calib_err),
286
       .dbg_calib_dq_tap_cnt   (dbg_calib_dq_tap_cnt),
287
       .dbg_calib_dqs_tap_cnt  (dbg_calib_dqs_tap_cnt),
288
       .dbg_calib_gate_tap_cnt (dbg_calib_gate_tap_cnt),
289
       .dbg_calib_rd_data_sel  (dbg_calib_rd_data_sel),
290
       .dbg_calib_rden_dly     (dbg_calib_rden_dly),
291
       .dbg_calib_gate_dly     (dbg_calib_gate_dly)
292
       );
293
 
294
  ddr2_usr_top #
295
    (
296
     .BANK_WIDTH    (BANK_WIDTH),
297
     .COL_WIDTH     (COL_WIDTH),
298
     .CS_BITS       (CS_BITS),
299
     .DQ_WIDTH      (DQ_WIDTH),
300
     .DQ_PER_DQS    (DQ_PER_DQS),
301
     .DQS_WIDTH     (DQS_WIDTH),
302
     .APPDATA_WIDTH (APPDATA_WIDTH),
303
     .ECC_ENABLE    (ECC_ENABLE),
304
     .ROW_WIDTH     (ROW_WIDTH)
305
     )
306
    u_usr_top
307
      (
308
       .clk0              (clk0),
309
       .usr_clk (usr_clk), //jb
310
       .clk90             (clk90),
311
       .rst0              (rst0),
312
       .rd_data_in_rise   (rd_data_rise),
313
       .rd_data_in_fall   (rd_data_fall),
314
       .phy_calib_rden    (phy_calib_rden),
315
       .phy_calib_rden_sel(phy_calib_rden_sel),
316
       .rd_data_valid     (rd_data_valid),
317
       .rd_ecc_error      (rd_ecc_error),
318
       .rd_data_fifo_out  (rd_data_fifo_out),
319
       .app_af_cmd        (app_af_cmd),
320
       .app_af_addr       (app_af_addr),
321
       .app_af_wren       (app_af_wren),
322
       .ctrl_af_rden      (ctrl_af_rden),
323
       .af_cmd            (af_cmd),
324
       .af_addr           (af_addr),
325
       .af_empty          (af_empty),
326
       .app_af_afull      (app_af_afull),
327
       .app_wdf_wren      (app_wdf_wren),
328
       .app_wdf_data      (app_wdf_data),
329
       .app_wdf_mask_data (app_wdf_mask_data),
330
       .wdf_rden          (wdf_rden),
331
       .app_wdf_afull     (app_wdf_afull),
332
       .wdf_data          (wdf_data),
333
       .wdf_mask_data     (wdf_mask_data)
334
       );
335
 
336
 
337
  ddr2_ctrl #
338
    (
339
     .BANK_WIDTH    (BANK_WIDTH),
340
     .COL_WIDTH     (COL_WIDTH),
341
     .CS_BITS       (CS_BITS),
342
     .CS_NUM        (CS_NUM),
343
     .ROW_WIDTH     (ROW_WIDTH),
344
     .ADDITIVE_LAT  (ADDITIVE_LAT),
345
     .BURST_LEN     (BURST_LEN),
346
     .CAS_LAT       (CAS_LAT),
347
     .ECC_ENABLE    (ECC_ENABLE),
348
     .REG_ENABLE    (REG_ENABLE),
349
     .MULTI_BANK_EN (MULTI_BANK_EN),
350
     .TWO_T_TIME_EN (TWO_T_TIME_EN),
351
     .TREFI_NS      (TREFI_NS),
352
     .TRAS          (TRAS),
353
     .TRCD          (TRCD),
354
     .TRFC          (TRFC),
355
     .TRP           (TRP),
356
     .TRTP          (TRTP),
357
     .TWR           (TWR),
358
     .TWTR          (TWTR),
359
     .CLK_PERIOD    (CLK_PERIOD),
360
     .DDR_TYPE      (DDR_TYPE)
361
     )
362
    u_ctrl
363
      (
364
       .clk           (clk0),
365
       .rst           (rst0),
366
       .af_cmd        (af_cmd),
367
       .af_addr       (af_addr),
368
       .af_empty      (af_empty),
369
       .phy_init_done (phy_init_done),
370
       .ctrl_ref_flag (ctrl_ref_flag),
371
       .ctrl_af_rden  (ctrl_af_rden),
372
       .ctrl_wren     (ctrl_wren),
373
       .ctrl_rden     (ctrl_rden),
374
       .ctrl_addr     (ctrl_addr),
375
       .ctrl_ba       (ctrl_ba),
376
       .ctrl_ras_n    (ctrl_ras_n),
377
       .ctrl_cas_n    (ctrl_cas_n),
378
       .ctrl_we_n     (ctrl_we_n),
379
       .ctrl_cs_n     (ctrl_cs_n)
380
       );
381
 
382
endmodule

powered by: WebSVN 2.1.0

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