OpenCores
URL https://opencores.org/ocsvn/connect-6/connect-6/trunk

Subversion Repositories connect-6

[/] [connect-6/] [trunk/] [XILINX/] [BUILD_SCC_SRCH/] [SP6/] [SP605_BRD_clocks.v] - Blame information for rev 17

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 17 sumanta.ch
`timescale  100 ps / 10 ps
2
//-------------------------------------
3
// SP601_BRD_CLOCKS.v
4
//-------------------------------------
5
// History of Changes:
6
//      5-5-2009 Initial creation
7
//  6-15-2009 Added PLL to generate MCB clocks, also used PLL to generate some others.
8
//-------------------------------------
9
// This module contains all of the clock related stuff
10
//-------------------------------------
11
//
12
module SP605_BRD_CLOCKS(
13
 
14
// Differential sys clock         
15
input   wire            SYSCLK_P,SYSCLK_N,
16
 
17
output  wire            CLK20,      // 20 Mhz
18
output  wire            CLK200,     // 200 Mhz
19
output  wire            PROC_CLK,   // Processing Clock (200 Mhz?)
20
output  wire            CLK125,  // 125 Mhz
21
 
22
// Master Clock for memory controller block 
23
output  wire            MCBCLK_2X_0,   // CLKOUT0 from PLL @ 667 MHz
24
output  wire            MCBCLK_2X_180, // CLKOUT1 from PLL @ 667 MHz, 180 degree phase
25
output  wire            MCBCLK_PLL_LOCK, CLK_PLL_LOCK,// from PLL 
26
output  wire            CALIB_CLK, // GCLK.  MIN = 50MHz, MAX = 100MHz.
27
 
28
// 125 Mhz clocks (from PHY RXCLK)
29
input   wire            PHY_RXCLK,
30
output  wire            CLK125_RX,   // 125 Mhz
31
output  wire            CLK125_RX_BUFIO,
32
input   wire            RST // system reset - resets PLLs, DCM's
33
 
34
);
35
 
36
parameter [7:0]  PROC_CLK_FREQ = 8'd100;
37
 
38
/* System Clock */
39
// IBUFG the raw clock input
40
wire                            osc_clk_ibufg;
41
IBUFGDS #(
42
  .DIFF_TERM("FALSE"),    // Differential Termination (Virtex-4/5, Spartan-3E/3A)
43
  .IBUF_DELAY_VALUE("0"), // Specify the amount of added input delay for 
44
                          //   the buffer, "0"-"16" (Spartan-3E/3A only)
45
  .IOSTANDARD("LVDS_25")  // Specify the input I/O standard
46
) inibufg (
47
  .O(osc_clk_ibufg),  // Clock buffer output
48
  .I(SYSCLK_P),  // Diff_p clock buffer input (connect directly to top-level port)
49
  .IB(SYSCLK_N) // Diff_n clock buffer input (connect directly to top-level port)
50
);
51
 
52
        wire    clk20_bufg_in, calib_clk_bufg_in, clk200_bufg_in, proc_clk_bufg_in; // raw PLL outputs
53
        BUFG clk20_bufg     (.I(clk20_bufg_in),     .O(CLK20) );
54
        BUFG calib_clk_bufg (.I(calib_clk_bufg_in), .O(CALIB_CLK) );
55
        BUFG clk200_bufg    (.I(clk200_bufg_in),    .O(CLK200) );
56
        BUFG proc_clk_bufg  (.I(proc_clk_bufg_in),  .O(PROC_CLK) );
57
 
58
 
59
        wire    clkfbout_clkfbin; // Clock from PLLFBOUT to PLLFBIN
60
        wire    clkfbout_clkfbin_125; // Clock from PLLFBOUT to PLLFBIN
61
 
62
        PLL_ADV #
63
                (
64
                .BANDWIDTH          ("OPTIMIZED"),
65
                .CLKIN1_PERIOD      (5), // 200 MHz = 5ns
66
                .CLKIN2_PERIOD      (1),
67
                .DIVCLK_DIVIDE      (3),
68
                .CLKFBOUT_MULT      (10), // 200 MHz x 10 / 3 = 667 Mhz
69
                .CLKFBOUT_PHASE     (0.0),
70
                .CLKOUT0_DIVIDE     (1), // 667 Mhz /1  = 667 Mhz
71
                .CLKOUT1_DIVIDE     (1), // 667 Mhz /1  = 667 Mhz
72
                .CLKOUT2_DIVIDE     (),
73
                .CLKOUT3_DIVIDE     (),
74
                .CLKOUT4_DIVIDE     (),
75
                .CLKOUT5_DIVIDE     (),
76
                .CLKOUT0_PHASE      (0.000),
77
                .CLKOUT1_PHASE      (180.000),
78
                .CLKOUT2_PHASE      (0.000),
79
                .CLKOUT3_PHASE      (0.000),
80
                .CLKOUT4_PHASE      (0.000),
81
                .CLKOUT5_PHASE      (0.000),
82
                .CLKOUT0_DUTY_CYCLE (0.500),
83
                .CLKOUT1_DUTY_CYCLE (0.500),
84
                .CLKOUT2_DUTY_CYCLE (0.500),
85
                .CLKOUT3_DUTY_CYCLE (0.500),
86
                .CLKOUT4_DUTY_CYCLE (0.500),
87
                .CLKOUT5_DUTY_CYCLE (0.500),
88
                .COMPENSATION       ("SYSTEM_SYNCHRONOUS"),
89
                .REF_JITTER         (0.005000)
90
                )
91
        u_pll_adv
92
                (
93
                .CLKFBIN     (clkfbout_clkfbin),
94
                .CLKINSEL    (1'b1),
95
                .CLKIN1      (osc_clk_ibufg),
96
                .CLKIN2      (1'b0),
97
                .DADDR       (5'b0),
98
                .DCLK        (1'b0),
99
                .DEN         (1'b0),
100
                .DI          (16'b0),
101
                .DWE         (1'b0),
102
                .REL         (1'b0),
103
                .RST         (RST),
104
                .CLKFBDCM    (),
105
                .CLKFBOUT    (clkfbout_clkfbin),
106
                .CLKOUTDCM0  (),
107
                .CLKOUTDCM1  (),
108
                .CLKOUTDCM2  (),
109
                .CLKOUTDCM3  (),
110
                .CLKOUTDCM4  (),
111
                .CLKOUTDCM5  (),
112
                .CLKOUT0     (MCBCLK_2X_0),
113
                .CLKOUT1     (MCBCLK_2X_180),
114
                .CLKOUT2     (),
115
                .CLKOUT3     (),
116
                .CLKOUT4     (),
117
                .CLKOUT5     (),
118
                .DO          (),
119
                .DRDY        (),
120
                .LOCKED      (MCBCLK_PLL_LOCK)
121
                );
122
 
123
 
124
wire                    xclk125_tx;
125
BUFG bufg125_tx(.I(xclk125_tx), .O(CLK125));
126
 
127
 
128
        PLL_ADV #
129
                (
130
                .BANDWIDTH          ("OPTIMIZED"),
131
                .CLKIN1_PERIOD      (5), // 200 MHz = 5ns
132
                .CLKIN2_PERIOD      (1),
133
                .DIVCLK_DIVIDE      (1),
134
                .CLKFBOUT_MULT      (5), // 200 * 5 = 1000 MHz 
135
                .CLKFBOUT_PHASE     (0.0),
136
                .CLKOUT0_DIVIDE     (8), // 125 MHz
137
                .CLKOUT1_DIVIDE     (5), // 200 MHz
138
                .CLKOUT2_DIVIDE     (50), // 20 MHz
139
                .CLKOUT3_DIVIDE     (20), // 50 MHz
140
                .CLKOUT4_DIVIDE     (32), // 1000 / 32 = 31.25 MHz
141
                .CLKOUT5_DIVIDE     (),
142
                .CLKOUT0_PHASE      (0.000),
143
                .CLKOUT1_PHASE      (180.000),
144
                .CLKOUT2_PHASE      (0.000),
145
                .CLKOUT3_PHASE      (0.000),
146
                .CLKOUT4_PHASE      (0.000),
147
                .CLKOUT5_PHASE      (0.000),
148
                .CLKOUT0_DUTY_CYCLE (0.500),
149
                .CLKOUT1_DUTY_CYCLE (0.500),
150
                .CLKOUT2_DUTY_CYCLE (0.500),
151
                .CLKOUT3_DUTY_CYCLE (0.500),
152
                .CLKOUT4_DUTY_CYCLE (0.500),
153
                .CLKOUT5_DUTY_CYCLE (0.500),
154
                .COMPENSATION       ("SYSTEM_SYNCHRONOUS"),
155
                .REF_JITTER         (0.005000)
156
                )
157
        u_pll_adv_125
158
                (
159
                .CLKFBIN     (clkfbout_clkfbin_125),
160
                .CLKINSEL    (1'b1),
161
                .CLKIN1      (osc_clk_ibufg),
162
                .CLKIN2      (1'b0),
163
                .DADDR       (5'b0),
164
                .DCLK        (1'b0),
165
                .DEN         (1'b0),
166
                .DI          (16'b0),
167
                .DWE         (1'b0),
168
                .REL         (1'b0),
169
                .RST         (RST),
170
                .CLKFBDCM    (),
171
                .CLKFBOUT    (clkfbout_clkfbin_125),
172
                .CLKOUTDCM0  (),
173
                .CLKOUTDCM1  (),
174
                .CLKOUTDCM2  (),
175
                .CLKOUTDCM3  (),
176
                .CLKOUTDCM4  (),
177
                .CLKOUTDCM5  (),
178
                .CLKOUT0     (xclk125_tx),
179
                .CLKOUT1     (clk200_bufg_in),
180
                .CLKOUT2     (clk20_bufg_in),
181
                .CLKOUT3     (calib_clk_bufg_in),
182
                .CLKOUT4     (proc_clk_bufg_in),
183
                .CLKOUT5     (),
184
                .DO          (),
185
                .DRDY        (),
186
                .LOCKED      (CLK_PLL_LOCK)
187
                );
188
 
189
 
190
 
191
wire                    phy_rxclk_ibufg;
192
//psk replaced IBUFG with BUFIO2 
193
/*
194
IBUFG ibufg125rx(.I(PHY_RXCLK), .O(CLK125_RX_int));
195
 
196
 
197
 
198
 
199
//---------------------------------------------------------------------------
200
// GMII Receiver Clock Logic
201
//---------------------------------------------------------------------------
202
 
203
// Route gmii_rx_clk through a BUFIO2/BUFG and onto global clock routing
204
  BUFIO2 bufio_gmii_rx_clk (
205
     .DIVCLK           (),
206
     .I                (CLK125_RX_int),
207
     .IOCLK            (CLK125_RX_BUFIO),
208
     .SERDESSTROBE     ()
209
  );
210
 
211
   // Route rx_clk through a BUFG onto global clock routing
212
   BUFG bufg_gmii_rx_clk (
213
      .I                (CLK125_RX_int),
214
      .O                (CLK125_RX)
215
   );
216
*/
217
 
218
endmodule

powered by: WebSVN 2.1.0

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