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

Subversion Repositories rxaui_interface_and_xaui_to_rxaui_interface_adapter

[/] [rxaui_interface_and_xaui_to_rxaui_interface_adapter/] [ClockReset/] [sip_rxaui_clk_reset.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 tsahidanie
//-----------------------------------------------------------------------------
2
// Title         : Cloks and Reset generation
3
// Project       : SIP
4
//-----------------------------------------------------------------------------
5
// File          : sip_rxaui_clk_reset.v
6
// Author        : Lior Valency
7
// Created       : 20/02/2008
8
// Last modified : 20/02/2008
9
//-----------------------------------------------------------------------------
10
// Description : This block receive clock from serdes and generate clock for
11
// port (serdes divided by 2). It also generate reset for all clock domains.
12
//-----------------------------------------------------------------------------
13
// Copyright (c) 2007  Marvell International Ltd.
14
//
15
// THIS CODE CONTAINS CONFIDENTIAL INFORMATION OF MARVELL SEMICONDUCTOR, INC.
16
// NO RIGHTS ARE GRANTED HEREIN UNDER ANY PATENT, MASK WORK RIGHT OR COPYRIGHT
17
// OF MARVELL OR ANY THIRD PARTY. MARVELL RESERVES THE RIGHT AT ITS SOLE
18
// DISCRETION TO REQUEST THAT THIS CODE BE IMMEDIATELY RETURNED TO MARVELL.
19
// THIS CODE IS PROVIDED "AS IS". MARVELL MAKES NO WARRANTIES, EXPRESS,
20
// IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, COMPLETENESS OR PERFORMANCE.
21
//
22
//------------------------------------------------------------------------------
23
// Modification history :
24
// 12/12/2007  : created
25
//-----------------------------------------------------------------------------
26
`timescale 10ps / 10ps
27
 
28
module sip_rxaui_clk_reset (/*AUTOARG*/
29
   // Outputs
30
   serdes_rx_clk_div2, rx_clk0, rx_clk1, serdes_rx_clk_reset_,
31
   serdes_rx_clk_div2_reset_, txclk_out, serdes_txclk_in0_reset_,
32
   serdes_txclk_in1_reset_, serdes_tx_clk_reset_,
33
   // Inputs
34
   scan_mode_, reset_, media_interface_mode, serdes_mode,
35
   serdes_rx_clk, serdes_tx_clk, txclk_in0, txclk_in1
36
   );
37
 
38
   ///////////////
39
   // INTERFACE // 
40
   ///////////////
41
 
42
   // General
43
   input      scan_mode_;
44
   input      reset_;
45
   input      media_interface_mode;
46
   input      serdes_mode;
47
 
48
   // Rx Clocks
49
   input      serdes_rx_clk;
50
   output     serdes_rx_clk_div2;
51
   output     rx_clk0;
52
   output     rx_clk1;
53
 
54
   // Rx reset
55
   output     serdes_rx_clk_reset_;
56
   output     serdes_rx_clk_div2_reset_;
57
 
58
   // TX Clocks
59
   input      serdes_tx_clk;
60
   input      txclk_in0;
61
   input      txclk_in1;
62
   output     txclk_out;
63
 
64
   // Tx Reset
65
   output     serdes_txclk_in0_reset_;
66
   output     serdes_txclk_in1_reset_;
67
   output     serdes_tx_clk_reset_;
68
 
69
   /*AUTO-OUTPUT*/
70
   // Beginning of automatic outputs (from unused autoinst outputs)
71
   // End of automatics
72
   /*AUTOINPUT*/
73
   // Beginning of automatic inputs (from unused autoinst inputs)
74
   // End of automatics
75
   /*AUTOWIRE*/
76
   // Beginning of automatic wires (for undeclared instantiated-module outputs)
77
   // End of automatics
78
 
79
   ////////////////////
80
   // INTERNAL WIRES //
81
   ////////////////////
82
 
83
   wire       bypass_divider;
84
   wire       serdes_tx_clk_div2;
85
   wire       serdes_rx_clk_reset;
86
 
87
   ///////////
88
   // Logic //
89
   ///////////
90
 
91
   assign bypass_divider = ((scan_mode_ == 1'b0) |
92
                            ((media_interface_mode == 1'b0) && (serdes_mode == 1'b0)));
93
 
94
   ////////////
95
   // CLOCKS //
96
   ////////////
97
 
98
   /* sip_clock_divider_by_2 AUTO_TEMPLATE(
99
    .clk_div2           (serdes_rx_clk_div2),
100
    .reset_             (serdes_rx_clk_reset_),
101
    .clk                (serdes_rx_clk),
102
    )*/
103
   sip_clock_divider_by_2
104
     rx_clk_div2(/*AUTOINST*/
105
                 // Outputs
106
                 .clk_div2              (serdes_rx_clk_div2),    // Templated
107
                 // Inputs
108
                 .reset_                (serdes_rx_clk_reset_),  // Templated
109
                 .clk                   (serdes_rx_clk));        // Templated
110
 
111
   sip_clk_mux rx_clk_mux0(.clk_in0(serdes_rx_clk_div2), .clk_in1(serdes_rx_clk), .selector(bypass_divider), .clk_out(rx_clk0));
112
   sip_clk_mux rx_clk_mux1(.clk_in0(serdes_rx_clk_div2), .clk_in1(serdes_rx_clk), .selector(bypass_divider), .clk_out(rx_clk1));
113
 
114
   /*sip_clock_divider_by_2 AUTO_TEMPLATE(
115
    .clk_div2           (serdes_tx_clk_div2),
116
    .reset_             (serdes_tx_clk_reset_),
117
    .clk                (serdes_tx_clk),
118
    )*/
119
   sip_clock_divider_by_2
120
     tx_clk_div2(/*AUTOINST*/
121
                 // Outputs
122
                 .clk_div2              (serdes_tx_clk_div2),    // Templated
123
                 // Inputs
124
                 .reset_                (serdes_tx_clk_reset_),  // Templated
125
                 .clk                   (serdes_tx_clk));        // Templated
126
 
127
   // Interface to the xpcs
128
   sip_clk_mux xpcs_tx_clk_mux0(.clk_in0(serdes_tx_clk_div2), .clk_in1(serdes_tx_clk), .selector(bypass_divider), .clk_out(txclk_out));
129
 
130
   ////////////
131
   // RESETS //
132
   ////////////
133
 
134
   /*sip_reset_sync AUTO_TEMPLATE(
135
    .load_config_       (),
136
    .reset_out_         (serdes_rx_clk_reset_),
137
    .reset_chg_         (),
138
    .clk                (serdes_rx_clk),
139
    .reset_in_          (reset_),
140
   )*/
141
   sip_reset_sync
142
     rx_clk_reset(/*AUTOINST*/
143
                  // Outputs
144
                  .load_config_         (),                      // Templated
145
                  .reset_out_           (serdes_rx_clk_reset_),  // Templated
146
                  .reset_chg_           (),                      // Templated
147
                  // Inputs
148
                  .clk                  (serdes_rx_clk),         // Templated
149
                  .reset_in_            (reset_),                // Templated
150
                  .scan_mode_           (scan_mode_));
151
 
152
   /*sip_reset_sync AUTO_TEMPLATE(
153
    .load_config_       (),
154
    .reset_out_         (serdes_rx_clk_div2_reset_),
155
    .reset_chg_         (),
156
    .clk                (serdes_rx_clk_div2),
157
    .reset_in_          (reset_),
158
   )*/
159
   sip_reset_sync
160
     rx_clk_div2_reset(/*AUTOINST*/
161
                       // Outputs
162
                       .load_config_    (),                      // Templated
163
                       .reset_out_      (serdes_rx_clk_div2_reset_), // Templated
164
                       .reset_chg_      (),                      // Templated
165
                       // Inputs
166
                       .clk             (serdes_rx_clk_div2),    // Templated
167
                       .reset_in_       (reset_),                // Templated
168
                       .scan_mode_      (scan_mode_));
169
 
170
   /*sip_reset_sync AUTO_TEMPLATE(
171
    .load_config_       (),
172
    .reset_out_         (serdes_tx_clk_reset_),
173
    .reset_chg_         (),
174
    .clk                (serdes_tx_clk),
175
    .reset_in_          (reset_),
176
   )*/
177
   sip_reset_sync
178
     tx_clk_reset(/*AUTOINST*/
179
                  // Outputs
180
                  .load_config_         (),                      // Templated
181
                  .reset_out_           (serdes_tx_clk_reset_),  // Templated
182
                  .reset_chg_           (),                      // Templated
183
                  // Inputs
184
                  .clk                  (serdes_tx_clk),         // Templated
185
                  .reset_in_            (reset_),                // Templated
186
                  .scan_mode_           (scan_mode_));
187
 
188
   /*sip_reset_sync AUTO_TEMPLATE(
189
    .load_config_       (),
190
    .reset_out_         (serdes_txclk_in0_reset_),
191
    .reset_chg_         (),
192
    .clk                (txclk_in0),
193
    .reset_in_          (reset_),
194
   )*/
195
   sip_reset_sync
196
     txclk_in0_reset(/*AUTOINST*/
197
                     // Outputs
198
                     .load_config_      (),                      // Templated
199
                     .reset_out_        (serdes_txclk_in0_reset_), // Templated
200
                     .reset_chg_        (),                      // Templated
201
                     // Inputs
202
                     .clk               (txclk_in0),             // Templated
203
                     .reset_in_         (reset_),                // Templated
204
                     .scan_mode_        (scan_mode_));
205
 
206
   /*sip_reset_sync AUTO_TEMPLATE(
207
    .load_config_       (),
208
    .reset_out_         (serdes_txclk_in1_reset_),
209
    .reset_chg_         (),
210
    .clk                (txclk_in1),
211
    .reset_in_          (reset_),
212
   )*/
213
   sip_reset_sync
214
     txclk_in1_reset(/*AUTOINST*/
215
                     // Outputs
216
                     .load_config_      (),                      // Templated
217
                     .reset_out_        (serdes_txclk_in1_reset_), // Templated
218
                     .reset_chg_        (),                      // Templated
219
                     // Inputs
220
                     .clk               (txclk_in1),             // Templated
221
                     .reset_in_         (reset_),                // Templated
222
                     .scan_mode_        (scan_mode_));
223
 
224
endmodule
225
// Local Variables:
226
// verilog-library-directories:( "." "../GenericModules/")
227
// End:
228
 
229
 

powered by: WebSVN 2.1.0

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