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/] [RxPath/] [sip_rxaui_rx_top.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 tsahidanie
//-----------------------------------------------------------------------------
2
// Title         : Rxaui Rx top
3
// Project       : SIP
4
//-----------------------------------------------------------------------------
5
// File          : sip_rxaui_rx_top.v
6
// Author        : Lior Valency
7
// Created       : 17/02/2008 
8
// Last modified : 17/02/2008 
9
//-----------------------------------------------------------------------------
10
// Description : This is the top of rxaui receive block the purpose of this block
11
// is to receive data from serdes and to separate it to 2 different lanes.     
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
 
29
module sip_rxaui_rx_top(/*AUTOARG*/
30
   // Outputs
31
   lock, rxdata_serdes0, rxdata_serdes1, rxaui_status,
32
   // Inputs
33
   serdes_rx_clk, serdes_rx_clk_div2, serdes_rx_clk_reset_,
34
   serdes_rx_clk_reset, serdes_rx_clk_div2_reset_, rx_clk0, rx_clk1,
35
   media_interface_mode, serdes_mode, lane0_sync_ok, lane1_sync_ok,
36
   s_sigdet, serdes_rx_data
37
   );
38
 
39
`include "sip_rxaui_params.inc"
40
 
41
   /* AUTO_CONSTANT (1'b0 or 1'b1 or 10'd0)*/
42
 
43
   ///////////////
44
   // INTERFACE //
45
   ///////////////
46
 
47
   // General
48
   input                               serdes_rx_clk;
49
   input                               serdes_rx_clk_div2;
50
   input                               serdes_rx_clk_reset_;
51
   input                               serdes_rx_clk_reset;
52
   input                               serdes_rx_clk_div2_reset_;
53
   input                               rx_clk0;
54
   input                               rx_clk1;
55
 
56
   // Configuration
57
   input                               media_interface_mode;
58
   input                               serdes_mode;
59
 
60
   // XPCS interface
61
   input                               lane0_sync_ok;
62
   input                               lane1_sync_ok;
63
   output                              lock;
64
   output [SERDES_DATA_W-1:0]           rxdata_serdes0;
65
   output [SERDES_DATA_W-1:0]           rxdata_serdes1;
66
 
67
   // Serdes interface
68
   input                               s_sigdet;
69
   input [SERDES_DATA_W-1:0]            serdes_rx_data;
70
 
71
   // Status
72
   output [STATUS_REG_W-1:0]            rxaui_status;
73
 
74
 
75
   // 
76
 
77
   /*AUTOOUTPUT*/
78
   // Beginning of automatic outputs (from unused autoinst outputs)
79
   // End of automatics
80
   /*AUTOINPUT*/
81
   // Beginning of automatic inputs (from unused autoinst inputs)
82
   // End of automatics
83
   /*AUTOWIRE*/
84
   // Beginning of automatic wires (for undeclared instantiated-module outputs)
85
   // End of automatics
86
 
87
 
88
 
89
   ////////////////////
90
   // INTERNAL WIRES //
91
   ////////////////////
92
   wire                                comma_aligned_en;
93
   wire [SERDES_DATA_W-1:0]             rxdata_rxaui_lane0;
94
   wire [SERDES_DATA_W-1:0]             rxdata_rxaui_lane1;
95
   wire [STD_DATA_W-1:0]                lane0_rx;
96
   wire [STD_DATA_W-1:0]                lane1_rx;
97
   wire [19:0]                          rx_aligned_data;
98
 
99
   /* sip_xpcs_comma_detect AUTO_TEMPLATE(
100
    .rout                (rx_aligned_data[SERDES_DATA_W-1:0]),
101
    .bypass              ({1'b0}),
102
    .clk                 (serdes_rx_clk),
103
    .comma_valid0        ({1'b0}), // Only if use internal sync-sm
104
    .comma_valid1        ({1'b0}), // Only if use internal sync-sm
105
    .commaa              ({10'd0}), // Not in use
106
    .commab              ({10'd0}), // Not in use
107
    .data_special_valid0 ({1'b0}), // Only if use internal sync-sm
108
    .data_special_valid1 ({1'b0}), // Only if use internal sync-sm
109
    .reset               (serdes_rx_clk_reset),
110
    .rin                 (serdes_rx_data[SERDES_DATA_W-1:0]),
111
    .sel_comma           ({1'b1}), // use standard 7 bits comma
112
    .en_comma_align_glob (comma_aligned_en),
113
    .rf_en_2sync         ({1'b0}), // Use external sync-sm
114
    .sigdet              (s_sigdet),
115
    );*/
116
 
117
   sip_xpcs_comma_detect
118
     xpcs_comma_detect(/*AUTOINST*/
119
                          // Outputs
120
                          .lock                 (lock),
121
                          .rout                 (rx_aligned_data[SERDES_DATA_W-1:0]), // Templated
122
                          // Inputs
123
                          .bypass               ({1'b0}),        // Templated
124
                          .clk                  (serdes_rx_clk), // Templated
125
                          .comma_valid0         ({1'b0}),        // Templated
126
                          .comma_valid1         ({1'b0}),        // Templated
127
                          .commaa               ({10'd0}),        // Templated
128
                          .commab               ({10'd0}),        // Templated
129
                          .data_special_valid0  ({1'b0}),        // Templated
130
                          .data_special_valid1  ({1'b0}),        // Templated
131
                          .reset                (serdes_rx_clk_reset), // Templated
132
                          .rin                  (serdes_rx_data[SERDES_DATA_W-1:0]), // Templated
133
                          .sel_comma            ({1'b1}),        // Templated
134
                          .sigdet               (s_sigdet),      // Templated
135
                          .en_comma_align_glob  (comma_aligned_en), // Templated
136
                          .rf_en_2sync          ({1'b0}));       // Templated
137
 
138
   /* sip_rxaui_aa_detection AUTO_TEMPLATE(
139
    .reset_             (serdes_rx_clk_reset_),
140
    .clk                (serdes_rx_clk),
141
    );*/
142
 
143
   sip_rxaui_aa_detection
144
     sip_rxaui_aa_detection(/*AUTOINST*/
145
                            // Outputs
146
                            .lane0_rx           (lane0_rx[STD_DATA_W-1:0]),
147
                            .lane1_rx           (lane1_rx[STD_DATA_W-1:0]),
148
                            .rxaui_status       (rxaui_status[STATUS_REG_W-1:0]),
149
                            // Inputs
150
                            .clk                (serdes_rx_clk), // Templated
151
                            .reset_             (serdes_rx_clk_reset_), // Templated
152
                            .serdes_mode        (serdes_mode),
153
                            .rx_aligned_data    (rx_aligned_data[SERDES_DATA_W-1:0]),
154
                            .serdes_rx_data     (serdes_rx_data[SERDES_DATA_W-1:0]));
155
 
156
   /* sip_phase_sync_fifo_fast_2_slow AUTO_TEMPLATE(
157
    .fifo_data_out      ({rxdata_rxaui_lane1[SERDES_DATA_W-1:STD_DATA_W],rxdata_rxaui_lane0[SERDES_DATA_W-1:STD_DATA_W],rxdata_rxaui_lane1[STD_DATA_W-1:0],rxdata_rxaui_lane0[STD_DATA_W-1:0]}),
158
    .fifo_data_in       ({lane1_rx[STD_DATA_W-1:0],lane0_rx[STD_DATA_W-1:0]}),
159
    .wr_clk             (serdes_rx_clk),
160
    .rd_clk             (serdes_rx_clk_div2),
161
    .wr_reset_          (serdes_rx_clk_reset_),
162
    .rd_reset_          (serdes_rx_clk_div2_reset_),
163
    );*/
164
 
165
   sip_phase_sync_fifo_fast_2_slow
166
     sip_phase_sync_fifo_fast_2_slow(/*AUTOINST*/
167
                                     // Outputs
168
                                     .fifo_data_out     ({rxdata_rxaui_lane1[SERDES_DATA_W-1:STD_DATA_W],rxdata_rxaui_lane0[SERDES_DATA_W-1:STD_DATA_W],rxdata_rxaui_lane1[STD_DATA_W-1:0],rxdata_rxaui_lane0[STD_DATA_W-1:0]}), // Templated
169
                                     // Inputs
170
                                     .wr_clk            (serdes_rx_clk), // Templated
171
                                     .rd_clk            (serdes_rx_clk_div2), // Templated
172
                                     .wr_reset_         (serdes_rx_clk_reset_), // Templated
173
                                     .rd_reset_         (serdes_rx_clk_div2_reset_), // Templated
174
                                     .fifo_data_in      ({lane1_rx[STD_DATA_W-1:0],lane0_rx[STD_DATA_W-1:0]})); // Templated
175
 
176
   /*sip_rxaui_rx_glue  AUTO_TEMPLATE(
177
   );*/
178
   sip_rxaui_rx_glue
179
     sip_rxaui_rx_glue(/*AUTOINST*/
180
                       // Outputs
181
                       .comma_aligned_en(comma_aligned_en),
182
                       .rxdata_serdes0  (rxdata_serdes0[SERDES_DATA_W-1:0]),
183
                       .rxdata_serdes1  (rxdata_serdes1[SERDES_DATA_W-1:0]),
184
                       // Inputs
185
                       .rx_clk0         (rx_clk0),
186
                       .rx_clk1         (rx_clk1),
187
                       .media_interface_mode(media_interface_mode),
188
                       .serdes_mode     (serdes_mode),
189
                       .rxdata_rxaui_lane0(rxdata_rxaui_lane0[SERDES_DATA_W-1:0]),
190
                       .rxdata_rxaui_lane1(rxdata_rxaui_lane1[SERDES_DATA_W-1:0]),
191
                       .serdes_rx_data  (serdes_rx_data[SERDES_DATA_W-1:0]),
192
                       .lane0_sync_ok   (lane0_sync_ok),
193
                       .lane1_sync_ok   (lane1_sync_ok));
194
 
195
endmodule // sip_rxaui_rx_top
196
 
197
// Local Variables:
198
// verilog-library-directories:( "." "/proj1/galileo101/tomcat/MODELS/current/Model_link/")
199
// End:
200
 

powered by: WebSVN 2.1.0

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