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

Subversion Repositories usb_fpga_2_14

[/] [usb_fpga_2_14/] [trunk/] [examples/] [memfifo/] [fpga-2.18/] [memfifo.srcs/] [sources_1/] [ip/] [mig_7series_0/] [mig_7series_0/] [user_design/] [rtl/] [controller/] [mig_7series_v2_3_rank_mach.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 ZTEX
//*****************************************************************************
2
// (c) Copyright 2008 - 2013 Xilinx, Inc. All rights reserved.
3
//
4
// This file contains confidential and proprietary information
5
// of Xilinx, Inc. and is protected under U.S. and
6
// international copyright and other intellectual property
7
// laws.
8
//
9
// DISCLAIMER
10
// This disclaimer is not a license and does not grant any
11
// rights to the materials distributed herewith. Except as
12
// otherwise provided in a valid license issued to you by
13
// Xilinx, and to the maximum extent permitted by applicable
14
// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
15
// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
16
// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
17
// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
18
// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
19
// (2) Xilinx shall not be liable (whether in contract or tort,
20
// including negligence, or under any other theory of
21
// liability) for any loss or damage of any kind or nature
22
// related to, arising under or in connection with these
23
// materials, including for any direct, or any indirect,
24
// special, incidental, or consequential loss or damage
25
// (including loss of data, profits, goodwill, or any type of
26
// loss or damage suffered as a result of any action brought
27
// by a third party) even if such damage or loss was
28
// reasonably foreseeable or Xilinx had been advised of the
29
// possibility of the same.
30
//
31
// CRITICAL APPLICATIONS
32
// Xilinx products are not designed or intended to be fail-
33
// safe, or for use in any application requiring fail-safe
34
// performance, such as life-support or safety devices or
35
// systems, Class III medical devices, nuclear facilities,
36
// applications related to the deployment of airbags, or any
37
// other applications that could lead to death, personal
38
// injury, or severe property or environmental damage
39
// (individually and collectively, "Critical
40
// Applications"). Customer assumes the sole risk and
41
// liability of any use of Xilinx products in Critical
42
// Applications, subject only to applicable laws and
43
// regulations governing limitations on product liability.
44
//
45
// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
46
// PART OF THIS FILE AT ALL TIMES.
47
//
48
//*****************************************************************************
49
//   ____  ____
50
//  /   /\/   /
51
// /___/  \  /    Vendor                : Xilinx
52
// \   \   \/     Version               : %version
53
//  \   \         Application           : MIG
54
//  /   /         Filename              : rank_mach.v
55
// /___/   /\     Date Last Modified    : $date$
56
// \   \  /  \    Date Created          : Tue Jun 30 2009
57
//  \___\/\___\
58
//
59
//Device            : 7-Series
60
//Design Name       : DDR3 SDRAM
61
//Purpose           :
62
//Reference         :
63
//Revision History  :
64
//*****************************************************************************
65
 
66
// Top level rank machine structural block.  This block
67
// instantiates a configurable number of rank controller blocks.
68
 
69
`timescale 1ps/1ps
70
 
71
module mig_7series_v2_3_rank_mach #
72
  (
73
   parameter BURST_MODE               = "8",
74
   parameter CS_WIDTH                 = 4,
75
   parameter DRAM_TYPE                = "DDR3",
76
   parameter MAINT_PRESCALER_DIV      = 40,
77
   parameter nBANK_MACHS              = 4,
78
   parameter nCKESR                   = 4,
79
   parameter nCK_PER_CLK              = 2,
80
   parameter CL                       = 5,
81
   parameter CWL                      = 5,
82
   parameter DQRD2DQWR_DLY            = 2,
83
   parameter nFAW                     = 30,
84
   parameter nREFRESH_BANK            = 8,
85
   parameter nRRD                     = 4,
86
   parameter nWTR                     = 4,
87
   parameter PERIODIC_RD_TIMER_DIV    = 20,
88
   parameter RANK_BM_BV_WIDTH         = 16,
89
   parameter RANK_WIDTH               = 2,
90
   parameter RANKS                    = 4,
91
   parameter REFRESH_TIMER_DIV        = 39,
92
   parameter ZQ_TIMER_DIV             = 640000
93
  )
94
  (/*AUTOARG*/
95
  // Outputs
96
  periodic_rd_rank_r, periodic_rd_r, maint_req_r, inhbt_act_faw_r, inhbt_rd,
97
  inhbt_wr, maint_rank_r, maint_zq_r, maint_sre_r, maint_srx_r, app_sr_active,
98
  app_ref_ack, app_zq_ack, col_rd_wr, maint_ref_zq_wip,
99
  // Inputs
100
  wr_this_rank_r, slot_1_present, slot_0_present, sending_row,
101
  sending_col, rst, rd_this_rank_r, rank_busy_r, periodic_rd_ack_r,
102
  maint_wip_r, insert_maint_r1, init_calib_complete, clk, app_zq_req,
103
  app_sr_req, app_ref_req, app_periodic_rd_req, act_this_rank_r
104
  );
105
 
106
  /*AUTOINPUT*/
107
  // Beginning of automatic inputs (from unused autoinst inputs)
108
  input [RANK_BM_BV_WIDTH-1:0] act_this_rank_r; // To rank_cntrl0 of rank_cntrl.v
109
  input                 app_periodic_rd_req;    // To rank_cntrl0 of rank_cntrl.v
110
  input                 app_ref_req;            // To rank_cntrl0 of rank_cntrl.v
111
  input                 app_zq_req;             // To rank_common0 of rank_common.v
112
  input                 app_sr_req;             // To rank_common0 of rank_common.v
113
  input                 clk;                    // To rank_cntrl0 of rank_cntrl.v, ...
114
  input                 col_rd_wr;              // To rank_cntrl0 of rank_cntrl.v, ...
115
  input                 init_calib_complete;    // To rank_cntrl0 of rank_cntrl.v, ...
116
  input                 insert_maint_r1;        // To rank_cntrl0 of rank_cntrl.v, ...
117
  input                 maint_wip_r;            // To rank_common0 of rank_common.v
118
  input                 periodic_rd_ack_r;      // To rank_common0 of rank_common.v
119
  input [(RANKS*nBANK_MACHS)-1:0] rank_busy_r;  // To rank_cntrl0 of rank_cntrl.v
120
  input [RANK_BM_BV_WIDTH-1:0] rd_this_rank_r;  // To rank_cntrl0 of rank_cntrl.v
121
  input                 rst;                    // To rank_cntrl0 of rank_cntrl.v, ...
122
  input [nBANK_MACHS-1:0] sending_col;          // To rank_cntrl0 of rank_cntrl.v
123
  input [nBANK_MACHS-1:0] sending_row;          // To rank_cntrl0 of rank_cntrl.v
124
  input [7:0]           slot_0_present;         // To rank_common0 of rank_common.v
125
  input [7:0]           slot_1_present;         // To rank_common0 of rank_common.v
126
  input [RANK_BM_BV_WIDTH-1:0] wr_this_rank_r;  // To rank_cntrl0 of rank_cntrl.v
127
  // End of automatics
128
 
129
  /*AUTOOUTPUT*/
130
  // Beginning of automatic outputs (from unused autoinst outputs)
131
  output                maint_req_r;            // From rank_common0 of rank_common.v
132
  output                periodic_rd_r;          // From rank_common0 of rank_common.v
133
  output [RANK_WIDTH-1:0] periodic_rd_rank_r;   // From rank_common0 of rank_common.v
134
  // End of automatics
135
 
136
  /*AUTOWIRE*/
137
  // Beginning of automatic wires (for undeclared instantiated-module outputs)
138
  wire                  maint_prescaler_tick_r; // From rank_common0 of rank_common.v
139
  wire                  refresh_tick;           // From rank_common0 of rank_common.v
140
  // End of automatics
141
 
142
 
143
  output [RANKS-1:0] inhbt_act_faw_r;
144
  output [RANKS-1:0] inhbt_rd;
145
  output [RANKS-1:0] inhbt_wr;
146
  output [RANK_WIDTH-1:0] maint_rank_r;
147
  output maint_zq_r;
148
  output maint_sre_r;
149
  output maint_srx_r;
150
  output app_sr_active;
151
  output app_ref_ack;
152
  output app_zq_ack;
153
  output maint_ref_zq_wip;
154
 
155
  wire [RANKS-1:0] refresh_request;
156
  wire [RANKS-1:0] periodic_rd_request;
157
  wire [RANKS-1:0] clear_periodic_rd_request;
158
 
159
  genvar ID;
160
  generate
161
    for (ID=0; ID<RANKS; ID=ID+1) begin:rank_cntrl
162
      mig_7series_v2_3_rank_cntrl #
163
        (/*AUTOINSTPARAM*/
164
         // Parameters
165
         .BURST_MODE                    (BURST_MODE),
166
         .ID                            (ID),
167
         .nBANK_MACHS                   (nBANK_MACHS),
168
         .nCK_PER_CLK                   (nCK_PER_CLK),
169
         .CL                            (CL),
170
         .CWL                           (CWL),
171
         .DQRD2DQWR_DLY                 (DQRD2DQWR_DLY),
172
         .nFAW                          (nFAW),
173
         .nREFRESH_BANK                 (nREFRESH_BANK),
174
         .nRRD                          (nRRD),
175
         .nWTR                          (nWTR),
176
         .PERIODIC_RD_TIMER_DIV         (PERIODIC_RD_TIMER_DIV),
177
         .RANK_BM_BV_WIDTH              (RANK_BM_BV_WIDTH),
178
         .RANK_WIDTH                    (RANK_WIDTH),
179
         .RANKS                         (RANKS),
180
         .REFRESH_TIMER_DIV             (REFRESH_TIMER_DIV))
181
        rank_cntrl0
182
          (.clear_periodic_rd_request   (clear_periodic_rd_request[ID]),
183
           .inhbt_act_faw_r             (inhbt_act_faw_r[ID]),
184
           .inhbt_rd                    (inhbt_rd[ID]),
185
           .inhbt_wr                    (inhbt_wr[ID]),
186
           .periodic_rd_request         (periodic_rd_request[ID]),
187
           .refresh_request             (refresh_request[ID]),
188
           /*AUTOINST*/
189
           // Inputs
190
           .clk                         (clk),
191
           .rst                         (rst),
192
           .col_rd_wr                   (col_rd_wr),
193
           .sending_row                 (sending_row[nBANK_MACHS-1:0]),
194
           .act_this_rank_r             (act_this_rank_r[RANK_BM_BV_WIDTH-1:0]),
195
           .sending_col                 (sending_col[nBANK_MACHS-1:0]),
196
           .wr_this_rank_r              (wr_this_rank_r[RANK_BM_BV_WIDTH-1:0]),
197
           .app_ref_req                 (app_ref_req),
198
           .init_calib_complete         (init_calib_complete),
199
           .rank_busy_r                 (rank_busy_r[(RANKS*nBANK_MACHS)-1:0]),
200
           .refresh_tick                (refresh_tick),
201
           .insert_maint_r1             (insert_maint_r1),
202
           .maint_zq_r                  (maint_zq_r),
203
           .maint_sre_r                 (maint_sre_r),
204
           .maint_srx_r                 (maint_srx_r),
205
           .maint_rank_r                (maint_rank_r[RANK_WIDTH-1:0]),
206
           .app_periodic_rd_req         (app_periodic_rd_req),
207
           .maint_prescaler_tick_r      (maint_prescaler_tick_r),
208
           .rd_this_rank_r              (rd_this_rank_r[RANK_BM_BV_WIDTH-1:0]));
209
    end
210
  endgenerate
211
 
212
  mig_7series_v2_3_rank_common #
213
    (/*AUTOINSTPARAM*/
214
     // Parameters
215
     .DRAM_TYPE                         (DRAM_TYPE),
216
     .MAINT_PRESCALER_DIV               (MAINT_PRESCALER_DIV),
217
     .nBANK_MACHS                       (nBANK_MACHS),
218
     .nCKESR                            (nCKESR),
219
     .nCK_PER_CLK                       (nCK_PER_CLK),
220
     .PERIODIC_RD_TIMER_DIV             (PERIODIC_RD_TIMER_DIV),
221
     .RANK_WIDTH                        (RANK_WIDTH),
222
     .RANKS                             (RANKS),
223
     .REFRESH_TIMER_DIV                 (REFRESH_TIMER_DIV),
224
     .ZQ_TIMER_DIV                      (ZQ_TIMER_DIV))
225
    rank_common0
226
    (.clear_periodic_rd_request         (clear_periodic_rd_request[RANKS-1:0]),
227
     /*AUTOINST*/
228
     // Outputs
229
     .maint_prescaler_tick_r            (maint_prescaler_tick_r),
230
     .refresh_tick                      (refresh_tick),
231
     .maint_zq_r                        (maint_zq_r),
232
     .maint_sre_r                       (maint_sre_r),
233
     .maint_srx_r                       (maint_srx_r),
234
     .maint_req_r                       (maint_req_r),
235
     .maint_rank_r                      (maint_rank_r[RANK_WIDTH-1:0]),
236
     .maint_ref_zq_wip                  (maint_ref_zq_wip),
237
     .periodic_rd_r                     (periodic_rd_r),
238
     .periodic_rd_rank_r                (periodic_rd_rank_r[RANK_WIDTH-1:0]),
239
     // Inputs
240
     .clk                               (clk),
241
     .rst                               (rst),
242
     .init_calib_complete               (init_calib_complete),
243
     .app_ref_req                       (app_ref_req),
244
     .app_ref_ack                       (app_ref_ack),
245
     .app_zq_req                        (app_zq_req),
246
     .app_zq_ack                        (app_zq_ack),
247
     .app_sr_req                        (app_sr_req),
248
     .app_sr_active                     (app_sr_active),
249
     .insert_maint_r1                   (insert_maint_r1),
250
     .refresh_request                   (refresh_request[RANKS-1:0]),
251
     .maint_wip_r                       (maint_wip_r),
252
     .slot_0_present                    (slot_0_present[7:0]),
253
     .slot_1_present                    (slot_1_present[7:0]),
254
     .periodic_rd_request               (periodic_rd_request[RANKS-1:0]),
255
     .periodic_rd_ack_r                 (periodic_rd_ack_r));
256
 
257
 
258
endmodule

powered by: WebSVN 2.1.0

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