1 |
12 |
xianfeng |
//Legal Notice: (C)2006 Altera Corporation. All rights reserved. Your
|
2 |
|
|
//use of Altera Corporation's design tools, logic functions and other
|
3 |
|
|
//software and tools, and its AMPP partner logic functions, and any
|
4 |
|
|
//output files any of the foregoing (including device programming or
|
5 |
|
|
//simulation files), and any associated documentation or information are
|
6 |
|
|
//expressly subject to the terms and conditions of the Altera Program
|
7 |
|
|
//License Subscription Agreement or other applicable license agreement,
|
8 |
|
|
//including, without limitation, that your use is for the sole purpose
|
9 |
|
|
//of programming logic devices manufactured by Altera and sold by Altera
|
10 |
|
|
//or its authorized distributors. Please refer to the applicable
|
11 |
|
|
//agreement for further details.
|
12 |
|
|
|
13 |
|
|
|
14 |
|
|
///////////////////////////////////////////////////////////////////////////////
|
15 |
|
|
// Title : Controller Wrapper
|
16 |
|
|
//
|
17 |
|
|
// File : $RCSfile: auk_ddr_hp_controller_wrapper.v,v $
|
18 |
|
|
//
|
19 |
|
|
// Last modified : $Date: 2009/04/01 $
|
20 |
|
|
//
|
21 |
|
|
// Revision : $Revision: #1 $
|
22 |
|
|
//
|
23 |
|
|
// Abstract : A wrapper for the controller as it is encrypted
|
24 |
|
|
///////////////////////////////////////////////////////////////////////////////
|
25 |
|
|
|
26 |
|
|
`timescale 1 ps / 1 ps
|
27 |
|
|
//
|
28 |
|
|
module altera_ddr_auk_ddr_hp_controller_wrapper (
|
29 |
|
|
local_ready ,
|
30 |
|
|
local_rdata_valid ,
|
31 |
|
|
local_rdata ,
|
32 |
|
|
local_wdata_req ,
|
33 |
|
|
local_init_done ,
|
34 |
|
|
local_refresh_ack ,
|
35 |
|
|
local_powerdn_ack ,
|
36 |
|
|
local_self_rfsh_ack ,
|
37 |
|
|
ddr_cs_n ,
|
38 |
|
|
ddr_cke_l ,
|
39 |
|
|
ddr_cke_h ,
|
40 |
|
|
ddr_odt ,
|
41 |
|
|
ddr_a ,
|
42 |
|
|
ddr_ba ,
|
43 |
|
|
ddr_ras_n ,
|
44 |
|
|
ddr_cas_n ,
|
45 |
|
|
ddr_we_n ,
|
46 |
|
|
control_doing_wr ,
|
47 |
|
|
control_dqs_burst ,
|
48 |
|
|
control_wdata_valid ,
|
49 |
|
|
control_wdata ,
|
50 |
|
|
control_be ,
|
51 |
|
|
control_dm ,
|
52 |
|
|
control_doing_rd ,
|
53 |
|
|
|
54 |
|
|
clk ,
|
55 |
|
|
reset_n ,
|
56 |
|
|
seq_cal_complete ,
|
57 |
|
|
local_read_req ,
|
58 |
|
|
local_write_req ,
|
59 |
|
|
local_autopch_req ,
|
60 |
|
|
local_size ,
|
61 |
|
|
local_burstbegin ,
|
62 |
|
|
local_cs_addr ,
|
63 |
|
|
local_row_addr ,
|
64 |
|
|
local_bank_addr ,
|
65 |
|
|
local_col_addr ,
|
66 |
|
|
local_wdata ,
|
67 |
|
|
local_be ,
|
68 |
|
|
local_refresh_req ,
|
69 |
|
|
local_powerdn_req ,
|
70 |
|
|
local_self_rfsh_req ,
|
71 |
|
|
control_rdata ,
|
72 |
|
|
control_rdata_valid ,
|
73 |
|
|
control_wlat
|
74 |
|
|
);
|
75 |
|
|
|
76 |
|
|
//Inserted Generics
|
77 |
|
|
localparam gLOCAL_DATA_BITS = 32;
|
78 |
|
|
localparam gLOCAL_BURST_LEN = 2;
|
79 |
|
|
localparam gLOCAL_BURST_LEN_BITS = 2;
|
80 |
|
|
localparam gLOCAL_AVALON_IF = "true";
|
81 |
|
|
localparam gDWIDTH_RATIO = 2;
|
82 |
|
|
localparam gMEM_TYPE = "ddr_sdram";
|
83 |
|
|
localparam gMEM_CHIPSELS = 1;
|
84 |
|
|
localparam gMEM_CHIP_BITS = 1;
|
85 |
|
|
localparam gMEM_ROW_BITS = 13;
|
86 |
|
|
localparam gMEM_BANK_BITS = 2;
|
87 |
|
|
localparam gMEM_COL_BITS = 9;
|
88 |
|
|
localparam gMEM_DQ_PER_DQS = 8;
|
89 |
|
|
localparam gMEM_PCH_BIT = 10;
|
90 |
|
|
localparam gMEM_ODT_RANKS = 1;
|
91 |
|
|
localparam gPIPELINE_COMMANDS = "false";
|
92 |
|
|
localparam gFAMILY = "Cyclone III";
|
93 |
|
|
localparam gREG_DIMM = "false";
|
94 |
|
|
localparam gUSER_REFRESH = "false";
|
95 |
|
|
localparam ECC_CSR_ADDR_WIDTH = 8;
|
96 |
|
|
localparam LOCAL_IF_AWIDTH = 23;
|
97 |
|
|
localparam gUSE_AFI_IF = "true";
|
98 |
|
|
|
99 |
|
|
output wire local_ready ;
|
100 |
|
|
output wire local_rdata_valid ;
|
101 |
|
|
output wire [gLOCAL_DATA_BITS - 1 : 0] local_rdata ;
|
102 |
|
|
output wire local_wdata_req ;
|
103 |
|
|
output wire local_init_done ;
|
104 |
|
|
output wire local_refresh_ack ;
|
105 |
|
|
output wire local_powerdn_ack ;
|
106 |
|
|
output wire local_self_rfsh_ack;
|
107 |
|
|
output wire [gMEM_CHIPSELS - 1 : 0] ddr_cs_n ;
|
108 |
|
|
output wire [gMEM_CHIPSELS - 1 : 0] ddr_cke_l ;
|
109 |
|
|
output wire [gMEM_CHIPSELS - 1 : 0] ddr_cke_h ;
|
110 |
|
|
output wire [gMEM_CHIPSELS - 1 : 0] ddr_odt ;
|
111 |
|
|
output wire [gMEM_ROW_BITS - 1 : 0] ddr_a ;
|
112 |
|
|
output wire [gMEM_BANK_BITS - 1 : 0] ddr_ba ;
|
113 |
|
|
output wire ddr_ras_n ;
|
114 |
|
|
output wire ddr_cas_n ;
|
115 |
|
|
output wire ddr_we_n ;
|
116 |
|
|
output wire control_doing_wr ;
|
117 |
|
|
output wire [(gLOCAL_DATA_BITS/(gMEM_DQ_PER_DQS*2))-1 : 0] control_dqs_burst ;
|
118 |
|
|
output wire [(gLOCAL_DATA_BITS/(gMEM_DQ_PER_DQS*2))-1 : 0] control_wdata_valid;
|
119 |
|
|
output wire [gLOCAL_DATA_BITS - 1 : 0] control_wdata ;
|
120 |
|
|
output wire [gLOCAL_DATA_BITS/8 - 1 : 0] control_be ;
|
121 |
|
|
output wire [gLOCAL_DATA_BITS/8 - 1 : 0] control_dm ;
|
122 |
|
|
output wire [(gLOCAL_DATA_BITS/(gMEM_DQ_PER_DQS*2))-1 : 0] control_doing_rd ;
|
123 |
|
|
|
124 |
|
|
input wire clk ;
|
125 |
|
|
input wire reset_n ;
|
126 |
|
|
input wire seq_cal_complete ;
|
127 |
|
|
input wire local_read_req ;
|
128 |
|
|
input wire local_write_req ;
|
129 |
|
|
input wire local_autopch_req ;
|
130 |
|
|
input wire local_powerdn_req ;
|
131 |
|
|
input wire local_self_rfsh_req;
|
132 |
|
|
input wire [gLOCAL_BURST_LEN_BITS - 1 : 0] local_size ;
|
133 |
|
|
input wire local_burstbegin ;
|
134 |
|
|
input wire [gMEM_CHIP_BITS - 1 : 0] local_cs_addr ;
|
135 |
|
|
input wire [gMEM_ROW_BITS - 1 : 0] local_row_addr ;
|
136 |
|
|
input wire [gMEM_BANK_BITS - 1 : 0] local_bank_addr ;
|
137 |
|
|
input wire [gMEM_COL_BITS - 2 : 0] local_col_addr ;
|
138 |
|
|
input wire [gLOCAL_DATA_BITS - 1 : 0] local_wdata ;
|
139 |
|
|
input wire [gLOCAL_DATA_BITS/8 - 1 : 0] local_be ;
|
140 |
|
|
input wire local_refresh_req ;
|
141 |
|
|
input wire [gLOCAL_DATA_BITS - 1 : 0] control_rdata ;
|
142 |
|
|
input wire [gDWIDTH_RATIO / 2 - 1 : 0] control_rdata_valid;
|
143 |
|
|
input wire [4 : 0] control_wlat ;
|
144 |
|
|
|
145 |
|
|
// memory params for controller
|
146 |
|
|
wire [2 : 0] mem_tcl ;
|
147 |
|
|
wire [2 : 0] mem_bl ;
|
148 |
|
|
wire mem_btype ;
|
149 |
|
|
wire mem_dll_en ;
|
150 |
|
|
wire mem_dqsn_en ;
|
151 |
|
|
wire mem_drv_str ;
|
152 |
|
|
wire [1 : 0] mem_odt ;
|
153 |
|
|
wire [2 : 0] mem_trcd ;
|
154 |
|
|
wire [3 : 0] mem_tras ;
|
155 |
|
|
wire [1 : 0] mem_twtr ;
|
156 |
|
|
wire [2 : 0] mem_twr ;
|
157 |
|
|
wire [2 : 0] mem_trp ;
|
158 |
|
|
wire [6 : 0] mem_trfc ;
|
159 |
|
|
wire [1 : 0] mem_tmrd ;
|
160 |
|
|
wire [15 : 0] mem_trefi ;
|
161 |
|
|
wire [15 : 0] mem_tinit_time ;
|
162 |
|
|
|
163 |
|
|
|
164 |
|
|
//this is to comply with the ecc wrapper port map. in the non-ecc case route these signals straight through
|
165 |
|
|
assign local_rdata = control_rdata;
|
166 |
|
|
assign local_rdata_valid = control_rdata_valid;
|
167 |
|
|
|
168 |
|
|
|
169 |
|
|
//////////////////////////////////////////////////////////////////////////////-
|
170 |
|
|
// Instantiate the controller according to the memory type
|
171 |
|
|
//////////////////////////////////////////////////////////////////////////////-
|
172 |
|
|
|
173 |
|
|
auk_ddr_hp_controller # (
|
174 |
|
|
.gMEM_TYPE (gMEM_TYPE),
|
175 |
|
|
.gLOCAL_AVALON_IF (gLOCAL_AVALON_IF),
|
176 |
|
|
.gREG_DIMM (gREG_DIMM),
|
177 |
|
|
.gFAMILY (gFAMILY),
|
178 |
|
|
.gUSER_REFRESH (gUSER_REFRESH),
|
179 |
|
|
.gMEM_ODT_RANKS (gMEM_ODT_RANKS),
|
180 |
|
|
.gLOCAL_BURST_LEN (gLOCAL_BURST_LEN),
|
181 |
|
|
.gLOCAL_BURST_LEN_BITS (gLOCAL_BURST_LEN_BITS),
|
182 |
|
|
.gLOCAL_DATA_BITS (gLOCAL_DATA_BITS),
|
183 |
|
|
.gMEM_BANK_BITS (gMEM_BANK_BITS),
|
184 |
|
|
.gMEM_CHIPSELS (gMEM_CHIPSELS),
|
185 |
|
|
.gMEM_CHIP_BITS (gMEM_CHIP_BITS),
|
186 |
|
|
.gMEM_COL_BITS (gMEM_COL_BITS),
|
187 |
|
|
.gMEM_DQ_PER_DQS (gMEM_DQ_PER_DQS),
|
188 |
|
|
.gMEM_PCH_BIT (gMEM_PCH_BIT),
|
189 |
|
|
.gMEM_ROW_BITS (gMEM_ROW_BITS),
|
190 |
|
|
.gDWIDTH_RATIO (gDWIDTH_RATIO),
|
191 |
|
|
.gPIPELINE_COMMANDS (gPIPELINE_COMMANDS),
|
192 |
|
|
.gUSE_AFI_IF (gUSE_AFI_IF)
|
193 |
|
|
) auk_ddr_hp_controller_inst (
|
194 |
|
|
.clk (clk),
|
195 |
|
|
.seq_cal_complete (seq_cal_complete),
|
196 |
|
|
.control_be (control_be),
|
197 |
|
|
.control_dm (control_dm),
|
198 |
|
|
.control_doing_rd (control_doing_rd),
|
199 |
|
|
.control_doing_wr (control_doing_wr),
|
200 |
|
|
.control_dqs_burst (control_dqs_burst),
|
201 |
|
|
.control_wdata (control_wdata),
|
202 |
|
|
.control_wdata_valid (control_wdata_valid),
|
203 |
|
|
.control_wlat (control_wlat),
|
204 |
|
|
.ddr_a (ddr_a),
|
205 |
|
|
.ddr_ba (ddr_ba),
|
206 |
|
|
.ddr_cas_n (ddr_cas_n),
|
207 |
|
|
.ddr_cke_l (ddr_cke_l),
|
208 |
|
|
.ddr_cke_h (ddr_cke_h),
|
209 |
|
|
.ddr_cs_n (ddr_cs_n),
|
210 |
|
|
.ddr_odt (ddr_odt),
|
211 |
|
|
.ddr_ras_n (ddr_ras_n),
|
212 |
|
|
.ddr_we_n (ddr_we_n),
|
213 |
|
|
.local_write_req (local_write_req),
|
214 |
|
|
.local_read_req (local_read_req),
|
215 |
|
|
.local_autopch_req (local_autopch_req),
|
216 |
|
|
.local_ready (local_ready),
|
217 |
|
|
.local_cs_addr (local_cs_addr),
|
218 |
|
|
.local_row_addr (local_row_addr),
|
219 |
|
|
.local_bank_addr (local_bank_addr),
|
220 |
|
|
.local_col_addr (local_col_addr),
|
221 |
|
|
.local_size (local_size),
|
222 |
|
|
.local_wdata (local_wdata),
|
223 |
|
|
.local_be (local_be),
|
224 |
|
|
.local_wdata_req (local_wdata_req),
|
225 |
|
|
.local_init_done (local_init_done),
|
226 |
|
|
.local_refresh_ack (local_refresh_ack),
|
227 |
|
|
.local_refresh_req (local_refresh_req),
|
228 |
|
|
.local_powerdn_ack (local_powerdn_ack),
|
229 |
|
|
.local_powerdn_req (local_powerdn_req),
|
230 |
|
|
.local_self_rfsh_ack (local_self_rfsh_ack),
|
231 |
|
|
.local_self_rfsh_req (local_self_rfsh_req),
|
232 |
|
|
.local_burstbegin (local_burstbegin),
|
233 |
|
|
.mem_bl (mem_bl),
|
234 |
|
|
.mem_btype (mem_btype),
|
235 |
|
|
.mem_dll_en (mem_dll_en),
|
236 |
|
|
.mem_dqsn_en (mem_dqsn_en),
|
237 |
|
|
.mem_drv_str (mem_drv_str),
|
238 |
|
|
.mem_odt (mem_odt),
|
239 |
|
|
.mem_tcl (mem_tcl),
|
240 |
|
|
.mem_tinit_time (mem_tinit_time),
|
241 |
|
|
.mem_tmrd (mem_tmrd),
|
242 |
|
|
.mem_tras (mem_tras),
|
243 |
|
|
.mem_trcd (mem_trcd),
|
244 |
|
|
.mem_trefi (mem_trefi),
|
245 |
|
|
.mem_trfc (mem_trfc),
|
246 |
|
|
.mem_trp (mem_trp),
|
247 |
|
|
.mem_twr (mem_twr),
|
248 |
|
|
.mem_twtr (mem_twtr),
|
249 |
|
|
.reset_n (reset_n)
|
250 |
|
|
);
|
251 |
|
|
|
252 |
|
|
|
253 |
|
|
//////////////////////////////////////////////////////////////////////////////-
|
254 |
|
|
// Controller timing parameters
|
255 |
|
|
//////////////////////////////////////////////////////////////////////////////-
|
256 |
|
|
|
257 |
|
|
//
|
258 |
|
|
assign mem_tcl = 3'b011;
|
259 |
|
|
assign mem_bl = 3'b010;
|
260 |
|
|
assign mem_btype = 1'b0;
|
261 |
|
|
assign mem_dll_en = 1'b0;
|
262 |
|
|
assign mem_dqsn_en = 1'b1;
|
263 |
|
|
assign mem_drv_str = 1'b0;
|
264 |
|
|
assign mem_odt = 2'b00;
|
265 |
|
|
assign mem_twtr = 2'b10;
|
266 |
|
|
assign mem_tinit_time = 16'b0111010100110100;
|
267 |
|
|
assign mem_trcd = 3'b011;
|
268 |
|
|
assign mem_twr = 3'b011;
|
269 |
|
|
assign mem_tras = 4'b0110;
|
270 |
|
|
assign mem_trp = 3'b011;
|
271 |
|
|
assign mem_trfc = 7'b0001011;
|
272 |
|
|
assign mem_tmrd = 2'b10;
|
273 |
|
|
assign mem_trefi = 16'b0000010000011010;
|
274 |
|
|
|
275 |
|
|
endmodule
|