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

Subversion Repositories next186_soc_pc

[/] [next186_soc_pc/] [trunk/] [HW/] [ddr/] [user_design/] [rtl/] [ddr_infrastructure_top0.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 ndumitrach
//*****************************************************************************
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 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           : ddr_infrastructure_top.v
46
// /___/   /\    Date Last Modified : $Date: 2010/11/26 18:25:41 $
47
// \   \  /  \   Date Created       : Mon May 2 2005
48
//  \___\/\___\
49
// Device       : Spartan-3/3A/3A-DSP
50
// Design Name  : DDR2 SDRAM
51
// Purpose      : This module has instantiation cal_top and generate reset 
52
//                signals.
53
//*****************************************************************************
54
 
55
`timescale 1ns/100ps
56
`include "../rtl/ddr_parameters_0.v"
57
 
58
module ddr_infrastructure_top0
59
  (
60
   input        clk_int,
61
   input        clk90_int,
62
   input        reset_in_n,
63
   input        dcm_lock,
64
   output [4:0] delay_sel_val1_val,
65
   output       sys_rst_val,
66
   output       sys_rst90_val,
67
   output       sys_rst180_val,
68
   output reg   wait_200us_rout,
69
   // debug signals
70
   output [4:0] dbg_phase_cnt,
71
   output [5:0] dbg_cnt,
72
   output       dbg_trans_onedtct,
73
   output       dbg_trans_twodtct,
74
   output       dbg_enb_trans_two_dtct
75
    );
76
 
77
   reg        sys_rst_o;
78
   reg        sys_rst_1;
79
   reg        sys_rst;
80
   reg        sys_rst90_o;
81
   reg        sys_rst90_1;
82
   reg        sys_rst90;
83
   reg        sys_rst180_o;
84
   reg        sys_rst180_1;
85
   reg        sys_rst180;
86
   reg [15:0] counter200;
87
   reg        wait_200us;
88
   reg        wait_clk90;
89
   reg        wait_clk270;
90
   reg        wait_200us_r;
91
 
92
   wire       clk_int_val1;
93
   wire       clk_int_val2;
94
   wire       clk90_int_val1;
95
   wire       clk90_int_val2;
96
   wire [4:0] delay_sel_val;
97
   wire       user_rst;
98
   wire       sys_clk_ibuf;
99
   wire       user_cal_rst;
100
 
101
   assign clk_int_val        = clk_int;
102
   assign clk90_int_val      = clk90_int;
103
   assign sys_rst_val        = sys_rst;
104
   assign sys_rst90_val      = sys_rst90;
105
   assign sys_rst180_val     = sys_rst180;
106
   assign delay_sel_val1_val = delay_sel_val;
107
   assign clk_int_val1       = clk_int;
108
   assign clk90_int_val1     = clk90_int;
109
   assign clk_int_val2       = clk_int_val1;
110
   assign clk90_int_val2     = clk90_int_val1;
111
 
112
   assign user_rst           = `RESET_ACTIVE_LOW  == 1'b1 ?
113
                                ~reset_in_n :  reset_in_n;
114
   assign user_cal_rst       = `RESET_ACTIVE_LOW  == 1'b1 ?
115
                                reset_in_n : ~reset_in_n;
116
 
117
 
118
   always @(posedge clk_int_val2) begin
119
      if(user_rst == 1'b1 || dcm_lock == 1'b0) begin
120
         wait_200us <= 1'b1;
121
         counter200     <= 16'd0;
122
      end
123
      else
124
`ifdef simulation
125
        wait_200us <= 1'b0;
126
`else
127
      if ( counter200 < 16'd33400 ) begin
128
         counter200 <= counter200 + 1'b1;
129
         wait_200us <= 1'b1;
130
      end
131
      else begin
132
         counter200 <= counter200;
133
         wait_200us <= 1'b0;
134
      end
135
`endif
136
   end
137
 
138
   always @( posedge clk_int_val2 )
139
     wait_200us_r <= wait_200us;
140
 
141
   always @( posedge clk_int_val2 )
142
     wait_200us_rout <= wait_200us;
143
 
144
   always @(negedge clk90_int_val2) begin
145
      if(user_rst == 1'b1 || dcm_lock == 1'b0)
146
        wait_clk270 <= 1'b1;
147
      else
148
        wait_clk270 <= wait_200us_r;
149
   end
150
 
151
   always @(posedge clk90_int_val2) begin
152
      wait_clk90 <= wait_clk270;
153
   end
154
 
155
   always@(posedge clk_int_val2) begin
156
      if(user_rst == 1'b1 || dcm_lock == 1'b0 || wait_200us_r == 1'b1 ) begin
157
         sys_rst_o <= 1'b1;
158
         sys_rst_1 <= 1'b1;
159
         sys_rst   <= 1'b1;
160
      end
161
      else begin
162
         sys_rst_o <= 1'b0;
163
         sys_rst_1 <= sys_rst_o;
164
         sys_rst   <= sys_rst_1;
165
      end
166
     end
167
 
168
 
169
   always@(posedge clk90_int_val2) begin
170
      if (user_rst == 1'b1 || dcm_lock == 1'b0 || wait_clk90 == 1'b1) begin
171
         sys_rst90_o <= 1'b1;
172
         sys_rst90_1 <= 1'b1;
173
         sys_rst90   <= 1'b1;
174
      end
175
        else begin
176
           sys_rst90_o <= 1'b0;
177
           sys_rst90_1 <= sys_rst90_o;
178
           sys_rst90   <= sys_rst90_1;
179
        end
180
   end
181
 
182
 
183
   always@(negedge clk_int_val2) begin
184
      if (user_rst == 1'b1 || dcm_lock == 1'b0 || wait_clk270 == 1'b1) begin
185
         sys_rst180_o <= 1'b1;
186
         sys_rst180_1 <= 1'b1;
187
         sys_rst180   <= 1'b1;
188
      end
189
      else begin
190
         sys_rst180_o <= 1'b0;
191
         sys_rst180_1 <= sys_rst180_o;
192
         sys_rst180   <= sys_rst180_1;
193
      end
194
   end
195
 
196
   ddr_cal_top cal_top0 (
197
      .clk0                   (clk_int_val2),
198
      .clk0dcmlock            (dcm_lock),
199
      .reset                  (user_cal_rst),
200
      .tapfordqs              (delay_sel_val),
201
      .dbg_phase_cnt          (dbg_phase_cnt),
202
      .dbg_cnt                (dbg_cnt),
203
      .dbg_trans_onedtct      (dbg_trans_onedtct),
204
      .dbg_trans_twodtct      (dbg_trans_twodtct),
205
      .dbg_enb_trans_two_dtct (dbg_enb_trans_two_dtct)
206
     );
207
 
208
endmodule

powered by: WebSVN 2.1.0

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