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

Subversion Repositories ddr2_sdram

[/] [ddr2_sdram/] [trunk/] [ipcore_dir/] [DDR2_Ram_Core/] [user_design/] [rtl/] [DDR2_Ram_Core_top_0.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 john_fpga
--*****************************************************************************
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 2005, 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.6.1
44
--  \   \        Application        : MIG
45
--  /   /        Filename           : DDR2_Ram_Core_top_0.vhd
46
-- /___/   /\    Date Last Modified : $Date: 2010/11/26 18:25:42 $
47
-- \   \  /  \   Date Created       : Mon May 2 2005
48
--  \___\/\___\
49
-- Device      : Spartan-3/3A/3A-DSP
50
-- Design Name : DDR2 SDRAM
51
-- Purpose     : This modules has the instantiations infrastructure, iobs, 
52
--                controller and data_paths modules
53
--*****************************************************************************
54
 
55
library ieee;
56
library UNISIM;
57
use ieee.std_logic_1164.all;
58
use work.DDR2_Ram_Core_parameters_0.all;
59
use UNISIM.VCOMPONENTS.all;
60
 
61
entity DDR2_Ram_Core_top_0 is
62
  port(
63
    wait_200us            : in    std_logic;
64
    rst_dqs_div_in        : in    std_logic;
65
    rst_dqs_div_out       : out   std_logic;
66
 
67
    user_input_data       : in    std_logic_vector(((2*DATA_WIDTH)-1) downto 0);
68
    user_data_mask        : in    std_logic_vector(((DATA_MASK_WIDTH*2)-1) downto 0);
69
    user_output_data      : out   std_logic_vector(((2*DATA_WIDTH)-1)
70
                                                   downto 0) := (others => 'Z');
71
    user_data_valid       : out   std_logic;
72
    user_input_address    : in    std_logic_vector(((ROW_ADDRESS +
73
                                                     COLUMN_ADDRESS + BANK_ADDRESS)-1) downto 0);
74
    user_command_register : in    std_logic_vector(2 downto 0);
75
    burst_done            : in    std_logic;
76
    auto_ref_req          : out   std_logic;
77
    user_cmd_ack          : out   std_logic;
78
    init_done              : out   std_logic;
79
    ar_done               : out   std_logic;
80
    ddr2_dqs              : inout std_logic_vector((DATA_STROBE_WIDTH -1) downto 0);
81
    ddr2_dqs_n         : inout std_logic_vector((DATA_STROBE_WIDTH-1) downto 0);
82
 
83
    ddr2_dq               : inout std_logic_vector((DATA_WIDTH-1) downto 0)
84
                                                             := (others => 'Z');
85
    ddr2_cke              : out   std_logic;
86
    ddr2_cs_n             : out   std_logic;
87
    ddr2_ras_n            : out   std_logic;
88
    ddr2_cas_n            : out   std_logic;
89
    ddr2_we_n             : out   std_logic;
90
    ddr2_dm               : out std_logic_vector((DATA_MASK_WIDTH-1) downto 0);
91
    ddr2_ba               : out   std_logic_vector((BANK_ADDRESS-1) downto 0);
92
    ddr2_a                : out   std_logic_vector((ROW_ADDRESS-1) downto 0);
93
    ddr2_odt              : out   std_logic;
94
    ddr2_ck               : out   std_logic_vector((CLK_WIDTH-1) downto 0);
95
    ddr2_ck_n             : out   std_logic_vector((CLK_WIDTH-1) downto 0);
96
  clk_tb                : out  std_logic;
97
    clk90_tb          : out  std_logic;
98
    sys_rst_tb        : out std_logic;
99
    sys_rst90_tb          : out  std_logic;
100
    sys_rst180_tb         : out  std_logic;
101
    clk_int               : in    std_logic;
102
    clk90_int             : in    std_logic;
103
    delay_sel_val         : in    std_logic_vector(4 downto 0);
104
    sys_rst               : in    std_logic;
105
    sys_rst90             : in    std_logic;
106
    sys_rst180            : in    std_logic;
107
    -- debug signals
108
    dbg_delay_sel          : out std_logic_vector(4 downto 0);
109
    dbg_rst_calib          : out std_logic;
110
    vio_out_dqs            : in  std_logic_vector(4 downto 0);
111
    vio_out_dqs_en         : in  std_logic;
112
    vio_out_rst_dqs_div    : in  std_logic_vector(4 downto 0);
113
    vio_out_rst_dqs_div_en : in  std_logic
114
    );
115
 
116
end DDR2_Ram_Core_top_0;
117
 
118
architecture arc of DDR2_Ram_Core_top_0 is
119
 
120
  component DDR2_Ram_Core_controller_0
121
    port(
122
      auto_ref_req      : out std_logic;
123
      wait_200us        : in  std_logic;
124
      clk               : in  std_logic;
125
      rst0              : in  std_logic;
126
      rst180            : in  std_logic;
127
      address           : in  std_logic_vector(((ROW_ADDRESS + COLUMN_ADDRESS)-1)
128
                                               downto 0);
129
      bank_addr         : in  std_logic_vector((BANK_ADDRESS-1) downto 0);
130
      command_register  : in  std_logic_vector(2 downto 0);
131
      burst_done        : in  std_logic;
132
      ddr_rasb_cntrl    : out std_logic;
133
      ddr_casb_cntrl    : out std_logic;
134
      ddr_web_cntrl     : out std_logic;
135
      ddr_ba_cntrl      : out std_logic_vector((BANK_ADDRESS-1) downto 0);
136
      ddr_address_cntrl : out std_logic_vector((ROW_ADDRESS-1) downto 0);
137
      ddr_cke_cntrl     : out std_logic;
138
      ddr_csb_cntrl     : out std_logic;
139
      ddr_ODT_cntrl     : out std_logic;
140
      dqs_enable        : out std_logic;
141
      dqs_reset         : out std_logic;
142
      write_enable      : out std_logic;
143
      rst_calib         : out std_logic;
144
      rst_dqs_div_int   : out std_logic;
145
      cmd_ack           : out std_logic;
146
      init              : out std_logic;
147
      ar_done           : out std_logic;
148
      read_fifo_rden    : out std_logic  -- Added new signal                         
149
      );
150
  end component;
151
 
152
  component DDR2_Ram_Core_data_path_0
153
    port(
154
      user_input_data    : in  std_logic_vector(((2*DATA_WIDTH)-1) downto 0);
155
      user_data_mask     : in  std_logic_vector(((2*DATA_MASK_WIDTH)-1) downto 0);
156
      clk                : in  std_logic;
157
      clk90              : in  std_logic;
158
      reset              : in  std_logic;
159
      reset90            : in  std_logic;
160
      write_enable       : in  std_logic;
161
      rst_dqs_div_in     : in  std_logic;
162
      delay_sel          : in  std_logic_vector(4 downto 0);
163
      dqs_int_delay_in   : in  std_logic_vector((DATA_STROBE_WIDTH-1) downto 0);
164
      dq                 : in  std_logic_vector((DATA_WIDTH-1) downto 0);
165
      u_data_val         : out std_logic;
166
      user_output_data   : out std_logic_vector(((2*DATA_WIDTH)-1) downto 0);
167
      write_en_val       : out std_logic;
168
      data_mask_f        : out std_logic_vector((DATA_MASK_WIDTH-1) downto 0);
169
      data_mask_r        : out std_logic_vector((DATA_MASK_WIDTH-1) downto 0);
170
      write_data_falling : out std_logic_vector((DATA_WIDTH-1) downto 0);
171
      write_data_rising  : out std_logic_vector((DATA_WIDTH-1) downto 0);
172
      read_fifo_rden     : in std_logic;  -- Added new signal
173
    -- debug singals
174
     vio_out_dqs            : in  std_logic_vector(4 downto 0);
175
     vio_out_dqs_en         : in  std_logic;
176
     vio_out_rst_dqs_div    : in  std_logic_vector(4 downto 0);
177
     vio_out_rst_dqs_div_en : in  std_logic
178
 
179
      );
180
  end component;
181
 
182
  component DDR2_Ram_Core_infrastructure
183
    port(
184
      clk_int            : in  std_logic;
185
      rst_calib1         : in  std_logic;
186
      delay_sel_val      : in  std_logic_vector(4 downto 0);
187
      delay_sel_val1_val : out std_logic_vector(4 downto 0);
188
    -- debug signals
189
      dbg_delay_sel      : out std_logic_vector(4 downto 0);
190
      dbg_rst_calib      : out std_logic
191
      );
192
  end component;
193
 
194
  component DDR2_Ram_Core_iobs_0
195
    port(
196
      clk                : in    std_logic;
197
      clk90              : in    std_logic;
198
      ddr_rasb_cntrl     : in    std_logic;
199
      ddr_casb_cntrl     : in    std_logic;
200
      ddr_web_cntrl      : in    std_logic;
201
      ddr_cke_cntrl      : in    std_logic;
202
      ddr_csb_cntrl      : in    std_logic;
203
      ddr_ODT_cntrl      : in    std_logic;
204
      ddr_address_cntrl  : in    std_logic_vector((ROW_ADDRESS-1) downto 0);
205
      ddr_ba_cntrl       : in    std_logic_vector((BANK_ADDRESS-1) downto 0);
206
      rst_dqs_div_int    : in    std_logic;
207
      dqs_reset          : in    std_logic;
208
      dqs_enable         : in    std_logic;
209
      ddr_dqs            : inout std_logic_vector((DATA_STROBE_WIDTH-1) downto 0);
210
    ddr_dqs_n         : inout std_logic_vector((DATA_STROBE_WIDTH-1) downto 0);
211
 
212
      ddr_dq             : inout std_logic_vector((DATA_WIDTH-1) downto 0);
213
      write_data_falling : in    std_logic_vector((DATA_WIDTH-1) downto 0);
214
      write_data_rising  : in    std_logic_vector((DATA_WIDTH-1) downto 0);
215
      write_en_val       : in    std_logic;
216
      data_mask_f        : in    std_logic_vector((DATA_MASK_WIDTH-1) downto 0);
217
      data_mask_r        : in    std_logic_vector((DATA_MASK_WIDTH-1) downto 0);
218
      ddr_odt            : out   std_logic;
219
      ddr2_ck            : out   std_logic_vector((CLK_WIDTH-1) downto 0);
220
      ddr2_ck_n          : out   std_logic_vector((CLK_WIDTH-1) downto 0);
221
      ddr_rasb           : out   std_logic;
222
      ddr_casb           : out   std_logic;
223
      ddr_web            : out   std_logic;
224
      ddr_ba             : out   std_logic_vector((BANK_ADDRESS-1) downto 0);
225
      ddr_address        : out   std_logic_vector((ROW_ADDRESS-1) downto 0);
226
      ddr_cke            : out   std_logic;
227
      ddr_csb            : out   std_logic;
228
      rst_dqs_div        : out   std_logic;
229
      rst_dqs_div_in     : in    std_logic;
230
      rst_dqs_div_out    : out   std_logic;
231
      dqs_int_delay_in   : out   std_logic_vector((DATA_STROBE_WIDTH-1) downto 0);
232
      ddr_dm             : out std_logic_vector((DATA_MASK_WIDTH-1) downto 0);
233
      dq                 : out   std_logic_vector((DATA_WIDTH-1) downto 0)
234
      );
235
  end component;
236
 
237
  signal rst_calib          : std_logic;
238
  signal delay_sel          : std_logic_vector(4 downto 0);
239
  signal write_enable       : std_logic;
240
  signal dqs_div_rst        : std_logic;
241
  signal dqs_enable         : std_logic;
242
  signal dqs_reset          : std_logic;
243
  signal dqs_int_delay_in   : std_logic_vector((DATA_STROBE_WIDTH-1) downto 0);
244
  signal dq                 : std_logic_vector((DATA_WIDTH-1) downto 0);
245
  signal write_en_val       : std_logic;
246
  signal data_mask_f        : std_logic_vector((DATA_MASK_WIDTH-1) downto 0);
247
  signal data_mask_r        : std_logic_vector((DATA_MASK_WIDTH-1) downto 0);
248
  signal write_data_falling : std_logic_vector((DATA_WIDTH-1) downto 0);
249
  signal write_data_rising  : std_logic_vector((DATA_WIDTH-1) downto 0);
250
  signal ddr_rasb_cntrl     : std_logic;
251
  signal ddr_casb_cntrl     : std_logic;
252
  signal ddr_web_cntrl      : std_logic;
253
  signal ddr_ba_cntrl       : std_logic_vector((BANK_ADDRESS-1) downto 0);
254
  signal ddr_address_cntrl  : std_logic_vector((ROW_ADDRESS-1) downto 0);
255
  signal ddr_cke_cntrl      : std_logic;
256
  signal ddr_csb_cntrl      : std_logic;
257
  signal ddr_odt_cntrl      : std_logic;
258
  signal rst_dqs_div_int    : std_logic;
259
  signal read_fifo_rden     : std_logic;
260
begin
261
 
262
 
263
  clk_tb            <=  clk_int after 1 ps;
264
  clk90_tb          <=  clk90_int after 1 ps;
265
  sys_rst_tb        <=  sys_rst;
266
  sys_rst90_tb      <=  sys_rst90;
267
  sys_rst180_tb     <=  sys_rst180;
268
 
269
  controller0 : DDR2_Ram_Core_controller_0
270
  port map (
271
    auto_ref_req      => auto_ref_req,
272
    wait_200us        => wait_200us,
273
    clk               => clk_int,
274
    rst0              => sys_rst,
275
    rst180            => sys_rst180,
276
    address           => user_input_address(((ROW_ADDRESS + COLUMN_ADDRESS +
277
                                              BANK_ADDRESS)-1) downto BANK_ADDRESS),
278
    bank_addr         => user_input_address(BANK_ADDRESS-1 downto 0),
279
    command_register  => user_command_register,
280
    burst_done        => burst_done,
281
    ddr_rasb_cntrl    => ddr_rasb_cntrl,
282
    ddr_casb_cntrl    => ddr_casb_cntrl,
283
    ddr_web_cntrl     => ddr_web_cntrl,
284
    ddr_ba_cntrl      => ddr_ba_cntrl,
285
    ddr_address_cntrl => ddr_address_cntrl,
286
    ddr_cke_cntrl     => ddr_cke_cntrl,
287
    ddr_csb_cntrl     => ddr_csb_cntrl,
288
    ddr_odt_cntrl     => ddr_odt_cntrl,
289
    dqs_enable        => dqs_enable,
290
    dqs_reset         => dqs_reset,
291
    write_enable      => write_enable,
292
    rst_calib         => rst_calib,
293
    rst_dqs_div_int   => rst_dqs_div_int,
294
    cmd_ack           => user_cmd_ack,
295
    init              => init_done,
296
      ar_done           => ar_done,
297
      read_fifo_rden    => read_fifo_rden -- Added new signal
298
    );
299
 
300
  data_path0 : DDR2_Ram_Core_data_path_0
301
    port map (
302
      user_input_data    => user_input_data,
303
      user_data_mask     => user_data_mask,
304
      clk                => clk_int,
305
      clk90              => clk90_int,
306
      reset              => sys_rst,
307
      reset90            => sys_rst90,
308
      write_enable       => write_enable,
309
      rst_dqs_div_in     => dqs_div_rst,
310
      delay_sel          => delay_sel,
311
      dqs_int_delay_in   => dqs_int_delay_in,
312
      dq                 => dq,
313
      u_data_val         => user_data_valid,
314
      user_output_data   => user_output_data,
315
      write_en_val       => write_en_val,
316
      data_mask_f        => data_mask_f,
317
      data_mask_r        => data_mask_r,
318
      write_data_falling => write_data_falling,
319
      write_data_rising  => write_data_rising,
320
      read_fifo_rden     => read_fifo_rden, -- Added new signal
321
--debug signals
322
      vio_out_dqs            => vio_out_dqs,
323
      vio_out_dqs_en         => vio_out_dqs_en,
324
      vio_out_rst_dqs_div    => vio_out_rst_dqs_div,
325
      vio_out_rst_dqs_div_en => vio_out_rst_dqs_div_en
326
      );
327
 
328
  infrastructure0 : DDR2_Ram_Core_infrastructure
329
    port map (
330
      clk_int            => clk_int,
331
      rst_calib1         => rst_calib,
332
      delay_sel_val      => delay_sel_val,
333
      delay_sel_val1_val => delay_sel,
334
      dbg_delay_sel      => dbg_delay_sel,
335
      dbg_rst_calib      => dbg_rst_calib
336
      );
337
 
338
  iobs0 : DDR2_Ram_Core_iobs_0
339
    port map (
340
      clk                => clk_int,
341
      clk90              => clk90_int,
342
      ddr_rasb_cntrl     => ddr_rasb_cntrl,
343
      ddr_casb_cntrl     => ddr_casb_cntrl,
344
      ddr_odt_cntrl      => ddr_odt_cntrl,
345
      ddr_web_cntrl      => ddr_web_cntrl,
346
      ddr_cke_cntrl      => ddr_cke_cntrl,
347
      ddr_csb_cntrl      => ddr_csb_cntrl,
348
      ddr_address_cntrl  => ddr_address_cntrl,
349
      ddr_ba_cntrl       => ddr_ba_cntrl,
350
      rst_dqs_div_int    => rst_dqs_div_int,
351
      dqs_reset          => dqs_reset,
352
      dqs_enable         => dqs_enable,
353
      ddr_dqs            => ddr2_dqs,
354
          ddr_dqs_n            => ddr2_dqs_n,
355
      ddr_dq             => ddr2_dq,
356
      write_data_falling => write_data_falling,
357
      write_data_rising  => write_data_rising,
358
      write_en_val       => write_en_val,
359
      data_mask_f        => data_mask_f,
360
      data_mask_r        => data_mask_r,
361
      ddr_odt            => ddr2_odt,
362
      ddr2_ck            => ddr2_ck,
363
      ddr2_ck_n          => ddr2_ck_n,
364
      ddr_rasb           => ddr2_ras_n,
365
      ddr_casb           => ddr2_cas_n,
366
      ddr_web            => ddr2_we_n,
367
      ddr_ba             => ddr2_ba,
368
      ddr_address        => ddr2_a,
369
      ddr_cke            => ddr2_cke,
370
      ddr_csb            => ddr2_cs_n,
371
      rst_dqs_div        => dqs_div_rst,
372
      rst_dqs_div_in     => rst_dqs_div_in,
373
      rst_dqs_div_out    => rst_dqs_div_out,
374
      dqs_int_delay_in   => dqs_int_delay_in,
375
      ddr_dm             => ddr2_dm,
376
      dq                 => dq
377
      );
378
 
379
end arc;

powered by: WebSVN 2.1.0

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