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

Subversion Repositories sgmii

[/] [sgmii/] [trunk/] [sim/] [BFMs/] [SGMII_altera/] [triple_speed_ethernet-library/] [altera_tse_multi_mac_pcs_pma.v] - Blame information for rev 9

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 9 jefflieu
// -------------------------------------------------------------------------
2
// -------------------------------------------------------------------------
3
//
4
// Revision Control Information
5
//
6
// $RCSfile: altera_tse_multi_mac_pcs_pma.v,v $
7
// $Source: /ipbu/cvs/sio/projects/TriSpeedEthernet/src/RTL/Top_level_modules/altera_tse_multi_mac_pcs_pma.v,v $
8
//
9
// $Revision: #1 $
10
// $Date: 2011/11/10 $
11
// Check in by : $Author: max $
12
// Author      : Arul Paniandi
13
//
14
// Project     : Triple Speed Ethernet - 10/100/1000 MAC
15
//
16
// Description : 
17
//
18
// Top Level Triple Speed Ethernet(10/100/1000) MAC with MII/GMII
19
// interfaces, mdio module and register space (statistic, control and 
20
// management)
21
 
22
// 
23
// ALTERA Confidential and Proprietary
24
// Copyright 2006 (c) Altera Corporation  
25
// All rights reserved
26
//
27
// -------------------------------------------------------------------------
28
// -------------------------------------------------------------------------
29
 
30
(*altera_attribute = {"-name SYNCHRONIZER_IDENTIFICATION OFF" } *)
31
module altera_tse_multi_mac_pcs_pma
32
/* synthesis ALTERA_ATTRIBUTE = "SUPPRESS_DA_RULE_INTERNAL=\"R102,R105,D102,D101,D103\"" */
33
#(
34
parameter USE_SYNC_RESET        = 0,                    //  Use Synchronized Reset Inputs
35
parameter RESET_LEVEL           = 1'b 1 ,               //  Reset Active Level
36
parameter ENABLE_GMII_LOOPBACK  = 1,                    //  GMII_LOOPBACK_ENA : Enable GMII Loopback Logic 
37
parameter ENABLE_HD_LOGIC       = 1,                    //  HD_LOGIC_ENA : Enable Half Duplex Logic
38
parameter ENABLE_SUP_ADDR       = 1,                    //  SUP_ADDR_ENA : Enable Supplemental Addresses
39
parameter ENA_HASH              = 1,                    //  ENA_HASH Enable Hash Table 
40
parameter STAT_CNT_ENA          = 1,                    //  STAT_CNT_ENA Enable Statistic Counters
41
parameter MDIO_CLK_DIV          = 40 ,                  //  Host Clock Division - MDC Generation
42
parameter CORE_VERSION          = 16'h3,                //  ALTERA Core Version
43
parameter CUST_VERSION          = 1 ,                   //  Customer Core Version
44
parameter REDUCED_INTERFACE_ENA = 0,                    //  Enable the RGMII Interface
45
parameter ENABLE_MDIO           = 1,                    //  Enable the MDIO Interface
46
parameter ENABLE_MAGIC_DETECT   = 1,                    //  Enable magic packet detection 
47
parameter ENABLE_PADDING        = 1,                    //  Enable padding operation.
48
parameter ENABLE_LGTH_CHECK     = 1,                    //  Enable frame length checking.
49
parameter GBIT_ONLY             = 1,                    //  Enable Gigabit only operation.
50
parameter MBIT_ONLY             = 1,                    //  Enable Megabit (10/100) only operation.
51
parameter REDUCED_CONTROL       = 0,                    //  Reduced control for MAC LITE
52
parameter CRC32DWIDTH           = 4'b 1000,             //  input data width (informal, not for change)
53
parameter CRC32GENDELAY         = 3'b 110,              //  when the data from the generator is valid
54
parameter CRC32CHECK16BIT       = 1'b 0,                //  1 compare two times 16 bit of the CRC (adds one pipeline step) 
55
parameter CRC32S1L2_EXTERN      = 1'b0,                 //  false: merge enable
56
parameter ENABLE_SHIFT16        = 0,                    //  Enable byte stuffing at packet header 
57
parameter ENABLE_MAC_FLOW_CTRL  = 1'b1,                 //  Option to enable flow control 
58
parameter ENABLE_MAC_TXADDR_SET = 1'b1,                 //  Option to enable MAC address insertion onto 'to-be-transmitted' Ethernet frames on MAC TX data path
59
parameter ENABLE_MAC_RX_VLAN    = 1'b1,                 //  Option to enable VLAN tagged Ethernet frames on MAC RX data path
60
parameter ENABLE_MAC_TX_VLAN    = 1'b1,                 //  Option to enable VLAN tagged Ethernet frames on MAC TX data path
61
parameter PHY_IDENTIFIER        = 32'h 00000000,        //  PHY Identifier
62
parameter DEV_VERSION           = 16'h 0001 ,           //  Customer Phy's Core Version
63
parameter ENABLE_SGMII          = 1,                    //  Enable SGMII logic for synthesis
64
parameter ENABLE_CLK_SHARING    = 0,                    //  Option to share clock for multiple channels (Clocks are rate-matched).
65
parameter ENABLE_REG_SHARING    = 0,                    //  Option to share register space. Uses certain hard-coded values from input.
66
parameter ENABLE_EXTENDED_STAT_REG = 0,                 //  Enable a few extended statistic registers
67
parameter MAX_CHANNELS          = 1,                    //  The number of channels in Multi-TSE component
68
parameter ENABLE_PKT_CLASS      = 1,                    //  Enable Packet Classification Av-ST Interface
69
parameter ENABLE_RX_FIFO_STATUS = 1,                    //  Enable Receive FIFO Almost Full status interface
70
parameter CHANNEL_WIDTH         = 1,                    //  The width of the channel interface
71
parameter EXPORT_PWRDN          = 1'b0,                 //  Option to export the Alt2gxb powerdown signal
72
parameter DEVICE_FAMILY         = "ARRIAGX",            //  The device family the the core is targetted for.
73
parameter TRANSCEIVER_OPTION    = 1'b1,                 //  Option to select transceiver block for MAC PCS PMA Instantiation. Valid Values are 0 and 1:  0 - GXB (GIGE Mode) 1 - LVDS I/O
74
parameter ENABLE_ALT_RECONFIG   = 0,                    //  Option to have the Alt_Reconfig ports exposed
75
parameter SYNCHRONIZER_DEPTH    = 3,                    //  Number of synchronizer
76
// Internal parameters
77
parameter ADDR_WIDTH = (MAX_CHANNELS > 16)? 13 :
78
                       (MAX_CHANNELS > 8)? 12 :
79
                       (MAX_CHANNELS > 4)? 11 :
80
                       (MAX_CHANNELS > 2)? 10 :
81
                       (MAX_CHANNELS > 1)? 9 : 8
82
)
83
 
84
 
85
// Port List
86
(
87
 
88
    // RESET / MAC REG IF / MDIO
89
    input wire   reset,                      //  Asynchronous Reset - clk Domain
90
    input wire   clk,                        //  25MHz Host Interface Clock
91
    input wire   read,                       //  Register Read Strobe
92
    input wire   write,                      //  Register Write Strobe
93
    input wire   [ADDR_WIDTH-1:0] address,   //  Register Address
94
    input wire   [31:0] writedata,           //  Write Data for Host Bus
95
    output wire  [31:0] readdata,            //  Read Data to Host Bus
96
    output wire  waitrequest,                //  Interface Busy
97
    output wire  mdc,                        //  2.5MHz Inteface
98
    input wire   mdio_in,                    //  MDIO Input
99
    output wire  mdio_out,                   //  MDIO Output
100
    output wire  mdio_oen,                   //  MDIO Output Enable
101
 
102
    // DEVICE SPECIFIC SIGNALS
103
    input wire   gxb_cal_blk_clk,            //  GXB Calibration Clock
104
    input wire   ref_clk,                    //  Rference Clock
105
 
106
        // SHARED CLK SIGNALS
107
    output wire  mac_rx_clk,                 //  Av-ST Receive Clock
108
        output wire  mac_tx_clk,                 //  Av-ST Transmit Clock 
109
 
110
        // SHARED RX STATUS
111
        input wire   rx_afull_clk,                             //  Almost full clock
112
    input wire   [1:0] rx_afull_data,                      //  Almost full data
113
    input wire   rx_afull_valid,                           //  Almost full valid
114
    input wire   [CHANNEL_WIDTH-1:0] rx_afull_channel,     //  Almost full channel
115
 
116
 
117
    // CHANNEL 0
118
 
119
    // PCS SIGNALS TO PHY
120
    input wire   rxp_0,                    //  Differential Receive Data 
121
    output wire  txp_0,                    //  Differential Transmit Data 
122
    input wire   gxb_pwrdn_in_0,           //  Powerdown signal to GXB
123
    output wire  pcs_pwrdn_out_0,          //  Powerdown Enable from PCS
124
    output wire  led_crs_0,                //  Carrier Sense
125
    output wire  led_link_0,               //  Valid Link 
126
    output wire  led_col_0,                //  Collision Indication
127
    output wire  led_an_0,                 //  Auto-Negotiation Status
128
    output wire  led_char_err_0,           //  Character Error
129
    output wire  led_disp_err_0,           //  Disparity Error
130
 
131
    // AV-ST TX & RX
132
    output wire  mac_rx_clk_0,             //  Av-ST Receive Clock
133
    output wire  mac_tx_clk_0,             //  Av-ST Transmit Clock   
134
    output wire  data_rx_sop_0,            //  Start of Packet
135
    output wire  data_rx_eop_0,            //  End of Packet
136
    output wire  [7:0] data_rx_data_0,     //  Data from FIFO
137
    output wire  [4:0] data_rx_error_0,    //  Receive packet error
138
    output wire  data_rx_valid_0,          //  Data Receive FIFO Valid
139
    input wire   data_rx_ready_0,          //  Data Receive Ready
140
    output wire  [4:0] pkt_class_data_0,   //  Frame Type Indication
141
    output wire  pkt_class_valid_0,        //  Frame Type Indication Valid 
142
    output wire  rx_recovclkout_0,         //  Frame Type Indication Valid 
143
    input wire   data_tx_error_0,          //  STATUS FIFO (Tx frame Error from Apps)
144
    input wire   [7:0] data_tx_data_0,     //  Data from FIFO transmit
145
    input wire   data_tx_valid_0,          //  Data FIFO transmit Empty
146
    input wire   data_tx_sop_0,            //  Start of Packet
147
    input wire   data_tx_eop_0,            //  END of Packet
148
    output wire  data_tx_ready_0,          //  Data FIFO transmit Read Enable   
149
 
150
    // STAND_ALONE CONDUITS 
151
    output wire  tx_ff_uflow_0,            //  TX FIFO underflow occured (Synchronous with tx_clk)
152
    input wire   tx_crc_fwd_0,             //  Forward Current Frame with CRC from Application
153
    input wire   xoff_gen_0,               //  Xoff Pause frame generate 
154
    input wire   xon_gen_0,                //  Xon Pause frame generate 
155
    input wire   magic_sleep_n_0,          //  Enable Sleep Mode
156
    output wire  magic_wakeup_0,           //  Wake Up Request
157
 
158
 
159
    // CHANNEL 1
160
 
161
    // PCS SIGNALS TO PHY
162
    input wire   rxp_1,                    //  Differential Receive Data 
163
    output wire  txp_1,                    //  Differential Transmit Data 
164
    input wire   gxb_pwrdn_in_1,           //  Powerdown signal to GXB
165
    output wire  pcs_pwrdn_out_1,          //  Powerdown Enable from PCS
166
    output wire  led_crs_1,                //  Carrier Sense
167
    output wire  led_link_1,               //  Valid Link 
168
    output wire  led_col_1,                //  Collision Indication
169
    output wire  led_an_1,                 //  Auto-Negotiation Status
170
    output wire  led_char_err_1,           //  Character Error
171
    output wire  led_disp_err_1,           //  Disparity Error
172
 
173
    // AV-ST TX & RX
174
    output wire  mac_rx_clk_1,             //  Av-ST Receive Clock
175
    output wire  mac_tx_clk_1,             //  Av-ST Transmit Clock   
176
    output wire  data_rx_sop_1,            //  Start of Packet
177
    output wire  data_rx_eop_1,            //  End of Packet
178
    output wire  [7:0] data_rx_data_1,     //  Data from FIFO
179
    output wire  [4:0] data_rx_error_1,    //  Receive packet error
180
    output wire  data_rx_valid_1,          //  Data Receive FIFO Valid
181
    input wire   data_rx_ready_1,          //  Data Receive Ready
182
    output wire  [4:0] pkt_class_data_1,   //  Frame Type Indication
183
    output wire  pkt_class_valid_1,        //  Frame Type Indication Valid 
184
    output wire  rx_recovclkout_1,         //  Frame Type Indication Valid 
185
    input wire   data_tx_error_1,          //  STATUS FIFO (Tx frame Error from Apps)
186
    input wire   [7:0] data_tx_data_1,     //  Data from FIFO transmit
187
    input wire   data_tx_valid_1,          //  Data FIFO transmit Empty
188
    input wire   data_tx_sop_1,            //  Start of Packet
189
    input wire   data_tx_eop_1,            //  END of Packet
190
    output wire  data_tx_ready_1,          //  Data FIFO transmit Read Enable   
191
 
192
    // STAND_ALONE CONDUITS 
193
    output wire  tx_ff_uflow_1,            //  TX FIFO underflow occured (Synchronous with tx_clk)
194
    input wire   tx_crc_fwd_1,             //  Forward Current Frame with CRC from Application
195
    input wire   xoff_gen_1,               //  Xoff Pause frame generate 
196
    input wire   xon_gen_1,                //  Xon Pause frame generate 
197
    input wire   magic_sleep_n_1,          //  Enable Sleep Mode
198
    output wire  magic_wakeup_1,           //  Wake Up Request
199
 
200
 
201
    // CHANNEL 2
202
 
203
    // PCS SIGNALS TO PHY
204
    input wire   rxp_2,                    //  Differential Receive Data 
205
    output wire  txp_2,                    //  Differential Transmit Data 
206
    input wire   gxb_pwrdn_in_2,           //  Powerdown signal to GXB
207
    output wire  pcs_pwrdn_out_2,          //  Powerdown Enable from PCS
208
    output wire  led_crs_2,                //  Carrier Sense
209
    output wire  led_link_2,               //  Valid Link 
210
    output wire  led_col_2,                //  Collision Indication
211
    output wire  led_an_2,                 //  Auto-Negotiation Status
212
    output wire  led_char_err_2,           //  Character Error
213
    output wire  led_disp_err_2,           //  Disparity Error
214
 
215
    // AV-ST TX & RX
216
    output wire  mac_rx_clk_2,             //  Av-ST Receive Clock
217
    output wire  mac_tx_clk_2,             //  Av-ST Transmit Clock   
218
    output wire  data_rx_sop_2,            //  Start of Packet
219
    output wire  data_rx_eop_2,            //  End of Packet
220
    output wire  [7:0] data_rx_data_2,     //  Data from FIFO
221
    output wire  [4:0] data_rx_error_2,    //  Receive packet error
222
    output wire  data_rx_valid_2,          //  Data Receive FIFO Valid
223
    input wire   data_rx_ready_2,          //  Data Receive Ready
224
    output wire  [4:0] pkt_class_data_2,   //  Frame Type Indication
225
    output wire  pkt_class_valid_2,        //  Frame Type Indication Valid 
226
    output wire  rx_recovclkout_2,         //  Frame Type Indication Valid 
227
    input wire   data_tx_error_2,          //  STATUS FIFO (Tx frame Error from Apps)
228
    input wire   [7:0] data_tx_data_2,     //  Data from FIFO transmit
229
    input wire   data_tx_valid_2,          //  Data FIFO transmit Empty
230
    input wire   data_tx_sop_2,            //  Start of Packet
231
    input wire   data_tx_eop_2,            //  END of Packet
232
    output wire  data_tx_ready_2,          //  Data FIFO transmit Read Enable   
233
 
234
    // STAND_ALONE CONDUITS 
235
    output wire  tx_ff_uflow_2,            //  TX FIFO underflow occured (Synchronous with tx_clk)
236
    input wire   tx_crc_fwd_2,             //  Forward Current Frame with CRC from Application
237
    input wire   xoff_gen_2,               //  Xoff Pause frame generate 
238
    input wire   xon_gen_2,                //  Xon Pause frame generate 
239
    input wire   magic_sleep_n_2,          //  Enable Sleep Mode
240
    output wire  magic_wakeup_2,           //  Wake Up Request
241
 
242
 
243
    // CHANNEL 3
244
 
245
    // PCS SIGNALS TO PHY
246
    input wire   rxp_3,                    //  Differential Receive Data 
247
    output wire  txp_3,                    //  Differential Transmit Data 
248
    input wire   gxb_pwrdn_in_3,           //  Powerdown signal to GXB
249
    output wire  pcs_pwrdn_out_3,          //  Powerdown Enable from PCS
250
    output wire  led_crs_3,                //  Carrier Sense
251
    output wire  led_link_3,               //  Valid Link 
252
    output wire  led_col_3,                //  Collision Indication
253
    output wire  led_an_3,                 //  Auto-Negotiation Status
254
    output wire  led_char_err_3,           //  Character Error
255
    output wire  led_disp_err_3,           //  Disparity Error
256
 
257
    // AV-ST TX & RX
258
    output wire  mac_rx_clk_3,             //  Av-ST Receive Clock
259
    output wire  mac_tx_clk_3,             //  Av-ST Transmit Clock   
260
    output wire  data_rx_sop_3,            //  Start of Packet
261
    output wire  data_rx_eop_3,            //  End of Packet
262
    output wire  [7:0] data_rx_data_3,     //  Data from FIFO
263
    output wire  [4:0] data_rx_error_3,    //  Receive packet error
264
    output wire  data_rx_valid_3,          //  Data Receive FIFO Valid
265
    input wire   data_rx_ready_3,          //  Data Receive Ready
266
    output wire  [4:0] pkt_class_data_3,   //  Frame Type Indication
267
    output wire  pkt_class_valid_3,        //  Frame Type Indication Valid 
268
    output wire  rx_recovclkout_3,         //  Frame Type Indication Valid 
269
    input wire   data_tx_error_3,          //  STATUS FIFO (Tx frame Error from Apps)
270
    input wire   [7:0] data_tx_data_3,     //  Data from FIFO transmit
271
    input wire   data_tx_valid_3,          //  Data FIFO transmit Empty
272
    input wire   data_tx_sop_3,            //  Start of Packet
273
    input wire   data_tx_eop_3,            //  END of Packet
274
    output wire  data_tx_ready_3,          //  Data FIFO transmit Read Enable   
275
 
276
    // STAND_ALONE CONDUITS 
277
    output wire  tx_ff_uflow_3,            //  TX FIFO underflow occured (Synchronous with tx_clk)
278
    input wire   tx_crc_fwd_3,             //  Forward Current Frame with CRC from Application
279
    input wire   xoff_gen_3,               //  Xoff Pause frame generate 
280
    input wire   xon_gen_3,                //  Xon Pause frame generate 
281
    input wire   magic_sleep_n_3,          //  Enable Sleep Mode
282
    output wire  magic_wakeup_3,           //  Wake Up Request
283
 
284
 
285
    // CHANNEL 4
286
 
287
    // PCS SIGNALS TO PHY
288
    input wire   rxp_4,                    //  Differential Receive Data 
289
    output wire  txp_4,                    //  Differential Transmit Data 
290
    input wire   gxb_pwrdn_in_4,           //  Powerdown signal to GXB
291
    output wire  pcs_pwrdn_out_4,          //  Powerdown Enable from PCS
292
    output wire  led_crs_4,                //  Carrier Sense
293
    output wire  led_link_4,               //  Valid Link 
294
    output wire  led_col_4,                //  Collision Indication
295
    output wire  led_an_4,                 //  Auto-Negotiation Status
296
    output wire  led_char_err_4,           //  Character Error
297
    output wire  led_disp_err_4,           //  Disparity Error
298
 
299
    // AV-ST TX & RX
300
    output wire  mac_rx_clk_4,             //  Av-ST Receive Clock
301
    output wire  mac_tx_clk_4,             //  Av-ST Transmit Clock   
302
    output wire  data_rx_sop_4,            //  Start of Packet
303
    output wire  data_rx_eop_4,            //  End of Packet
304
    output wire  [7:0] data_rx_data_4,     //  Data from FIFO
305
    output wire  [4:0] data_rx_error_4,    //  Receive packet error
306
    output wire  data_rx_valid_4,          //  Data Receive FIFO Valid
307
    input wire   data_rx_ready_4,          //  Data Receive Ready
308
    output wire  [4:0] pkt_class_data_4,   //  Frame Type Indication
309
    output wire  pkt_class_valid_4,        //  Frame Type Indication Valid 
310
    output wire  rx_recovclkout_4,         //  Frame Type Indication Valid 
311
    input wire   data_tx_error_4,          //  STATUS FIFO (Tx frame Error from Apps)
312
    input wire   [7:0] data_tx_data_4,     //  Data from FIFO transmit
313
    input wire   data_tx_valid_4,          //  Data FIFO transmit Empty
314
    input wire   data_tx_sop_4,            //  Start of Packet
315
    input wire   data_tx_eop_4,            //  END of Packet
316
    output wire  data_tx_ready_4,          //  Data FIFO transmit Read Enable   
317
 
318
    // STAND_ALONE CONDUITS 
319
    output wire  tx_ff_uflow_4,            //  TX FIFO underflow occured (Synchronous with tx_clk)
320
    input wire   tx_crc_fwd_4,             //  Forward Current Frame with CRC from Application
321
    input wire   xoff_gen_4,               //  Xoff Pause frame generate 
322
    input wire   xon_gen_4,                //  Xon Pause frame generate 
323
    input wire   magic_sleep_n_4,          //  Enable Sleep Mode
324
    output wire  magic_wakeup_4,           //  Wake Up Request
325
 
326
 
327
    // CHANNEL 5
328
 
329
    // PCS SIGNALS TO PHY
330
    input wire   rxp_5,                    //  Differential Receive Data 
331
    output wire  txp_5,                    //  Differential Transmit Data 
332
    input wire   gxb_pwrdn_in_5,           //  Powerdown signal to GXB
333
    output wire  pcs_pwrdn_out_5,          //  Powerdown Enable from PCS
334
    output wire  led_crs_5,                //  Carrier Sense
335
    output wire  led_link_5,               //  Valid Link 
336
    output wire  led_col_5,                //  Collision Indication
337
    output wire  led_an_5,                 //  Auto-Negotiation Status
338
    output wire  led_char_err_5,           //  Character Error
339
    output wire  led_disp_err_5,           //  Disparity Error
340
 
341
    // AV-ST TX & RX
342
    output wire  mac_rx_clk_5,             //  Av-ST Receive Clock
343
    output wire  mac_tx_clk_5,             //  Av-ST Transmit Clock   
344
    output wire  data_rx_sop_5,            //  Start of Packet
345
    output wire  data_rx_eop_5,            //  End of Packet
346
    output wire  [7:0] data_rx_data_5,     //  Data from FIFO
347
    output wire  [4:0] data_rx_error_5,    //  Receive packet error
348
    output wire  data_rx_valid_5,          //  Data Receive FIFO Valid
349
    input wire   data_rx_ready_5,          //  Data Receive Ready
350
    output wire  [4:0] pkt_class_data_5,   //  Frame Type Indication
351
    output wire  pkt_class_valid_5,        //  Frame Type Indication Valid 
352
    output wire  rx_recovclkout_5,         //  Frame Type Indication Valid 
353
    input wire   data_tx_error_5,          //  STATUS FIFO (Tx frame Error from Apps)
354
    input wire   [7:0] data_tx_data_5,     //  Data from FIFO transmit
355
    input wire   data_tx_valid_5,          //  Data FIFO transmit Empty
356
    input wire   data_tx_sop_5,            //  Start of Packet
357
    input wire   data_tx_eop_5,            //  END of Packet
358
    output wire  data_tx_ready_5,          //  Data FIFO transmit Read Enable   
359
 
360
    // STAND_ALONE CONDUITS 
361
    output wire  tx_ff_uflow_5,            //  TX FIFO underflow occured (Synchronous with tx_clk)
362
    input wire   tx_crc_fwd_5,             //  Forward Current Frame with CRC from Application
363
    input wire   xoff_gen_5,               //  Xoff Pause frame generate 
364
    input wire   xon_gen_5,                //  Xon Pause frame generate 
365
    input wire   magic_sleep_n_5,          //  Enable Sleep Mode
366
    output wire  magic_wakeup_5,           //  Wake Up Request
367
 
368
 
369
    // CHANNEL 6
370
 
371
    // PCS SIGNALS TO PHY
372
    input wire   rxp_6,                    //  Differential Receive Data 
373
    output wire  txp_6,                    //  Differential Transmit Data 
374
    input wire   gxb_pwrdn_in_6,           //  Powerdown signal to GXB
375
    output wire  pcs_pwrdn_out_6,          //  Powerdown Enable from PCS
376
    output wire  led_crs_6,                //  Carrier Sense
377
    output wire  led_link_6,               //  Valid Link 
378
    output wire  led_col_6,                //  Collision Indication
379
    output wire  led_an_6,                 //  Auto-Negotiation Status
380
    output wire  led_char_err_6,           //  Character Error
381
    output wire  led_disp_err_6,           //  Disparity Error
382
 
383
    // AV-ST TX & RX
384
    output wire  mac_rx_clk_6,             //  Av-ST Receive Clock
385
    output wire  mac_tx_clk_6,             //  Av-ST Transmit Clock   
386
    output wire  data_rx_sop_6,            //  Start of Packet
387
    output wire  data_rx_eop_6,            //  End of Packet
388
    output wire  [7:0] data_rx_data_6,     //  Data from FIFO
389
    output wire  [4:0] data_rx_error_6,    //  Receive packet error
390
    output wire  data_rx_valid_6,          //  Data Receive FIFO Valid
391
    input wire   data_rx_ready_6,          //  Data Receive Ready
392
    output wire  [4:0] pkt_class_data_6,   //  Frame Type Indication
393
    output wire  pkt_class_valid_6,        //  Frame Type Indication Valid 
394
    output wire  rx_recovclkout_6,         //  Frame Type Indication Valid 
395
    input wire   data_tx_error_6,          //  STATUS FIFO (Tx frame Error from Apps)
396
    input wire   [7:0] data_tx_data_6,     //  Data from FIFO transmit
397
    input wire   data_tx_valid_6,          //  Data FIFO transmit Empty
398
    input wire   data_tx_sop_6,            //  Start of Packet
399
    input wire   data_tx_eop_6,            //  END of Packet
400
    output wire  data_tx_ready_6,          //  Data FIFO transmit Read Enable   
401
 
402
    // STAND_ALONE CONDUITS 
403
    output wire  tx_ff_uflow_6,            //  TX FIFO underflow occured (Synchronous with tx_clk)
404
    input wire   tx_crc_fwd_6,             //  Forward Current Frame with CRC from Application
405
    input wire   xoff_gen_6,               //  Xoff Pause frame generate 
406
    input wire   xon_gen_6,                //  Xon Pause frame generate 
407
    input wire   magic_sleep_n_6,          //  Enable Sleep Mode
408
    output wire  magic_wakeup_6,           //  Wake Up Request
409
 
410
 
411
    // CHANNEL 7
412
 
413
    // PCS SIGNALS TO PHY
414
    input wire   rxp_7,                    //  Differential Receive Data 
415
    output wire  txp_7,                    //  Differential Transmit Data 
416
    input wire   gxb_pwrdn_in_7,           //  Powerdown signal to GXB
417
    output wire  pcs_pwrdn_out_7,          //  Powerdown Enable from PCS
418
    output wire  led_crs_7,                //  Carrier Sense
419
    output wire  led_link_7,               //  Valid Link 
420
    output wire  led_col_7,                //  Collision Indication
421
    output wire  led_an_7,                 //  Auto-Negotiation Status
422
    output wire  led_char_err_7,           //  Character Error
423
    output wire  led_disp_err_7,           //  Disparity Error
424
 
425
    // AV-ST TX & RX
426
    output wire  mac_rx_clk_7,             //  Av-ST Receive Clock
427
    output wire  mac_tx_clk_7,             //  Av-ST Transmit Clock   
428
    output wire  data_rx_sop_7,            //  Start of Packet
429
    output wire  data_rx_eop_7,            //  End of Packet
430
    output wire  [7:0] data_rx_data_7,     //  Data from FIFO
431
    output wire  [4:0] data_rx_error_7,    //  Receive packet error
432
    output wire  data_rx_valid_7,          //  Data Receive FIFO Valid
433
    input wire   data_rx_ready_7,          //  Data Receive Ready
434
    output wire  [4:0] pkt_class_data_7,   //  Frame Type Indication
435
    output wire  pkt_class_valid_7,        //  Frame Type Indication Valid 
436
    output wire  rx_recovclkout_7,         //  Frame Type Indication Valid 
437
    input wire   data_tx_error_7,          //  STATUS FIFO (Tx frame Error from Apps)
438
    input wire   [7:0] data_tx_data_7,     //  Data from FIFO transmit
439
    input wire   data_tx_valid_7,          //  Data FIFO transmit Empty
440
    input wire   data_tx_sop_7,            //  Start of Packet
441
    input wire   data_tx_eop_7,            //  END of Packet
442
    output wire  data_tx_ready_7,          //  Data FIFO transmit Read Enable   
443
 
444
    // STAND_ALONE CONDUITS 
445
    output wire  tx_ff_uflow_7,            //  TX FIFO underflow occured (Synchronous with tx_clk)
446
    input wire   tx_crc_fwd_7,             //  Forward Current Frame with CRC from Application
447
    input wire   xoff_gen_7,               //  Xoff Pause frame generate 
448
    input wire   xon_gen_7,                //  Xon Pause frame generate 
449
    input wire   magic_sleep_n_7,          //  Enable Sleep Mode
450
    output wire  magic_wakeup_7,           //  Wake Up Request
451
 
452
 
453
    // CHANNEL 8
454
 
455
    // PCS SIGNALS TO PHY
456
    input wire   rxp_8,                    //  Differential Receive Data 
457
    output wire  txp_8,                    //  Differential Transmit Data 
458
    input wire   gxb_pwrdn_in_8,           //  Powerdown signal to GXB
459
    output wire  pcs_pwrdn_out_8,          //  Powerdown Enable from PCS
460
    output wire  led_crs_8,                //  Carrier Sense
461
    output wire  led_link_8,               //  Valid Link 
462
    output wire  led_col_8,                //  Collision Indication
463
    output wire  led_an_8,                 //  Auto-Negotiation Status
464
    output wire  led_char_err_8,           //  Character Error
465
    output wire  led_disp_err_8,           //  Disparity Error
466
 
467
    // AV-ST TX & RX
468
    output wire  mac_rx_clk_8,             //  Av-ST Receive Clock
469
    output wire  mac_tx_clk_8,             //  Av-ST Transmit Clock   
470
    output wire  data_rx_sop_8,            //  Start of Packet
471
    output wire  data_rx_eop_8,            //  End of Packet
472
    output wire  [7:0] data_rx_data_8,     //  Data from FIFO
473
    output wire  [4:0] data_rx_error_8,    //  Receive packet error
474
    output wire  data_rx_valid_8,          //  Data Receive FIFO Valid
475
    input wire   data_rx_ready_8,          //  Data Receive Ready
476
    output wire  [4:0] pkt_class_data_8,   //  Frame Type Indication
477
    output wire  pkt_class_valid_8,        //  Frame Type Indication Valid 
478
    output wire  rx_recovclkout_8,         //  Frame Type Indication Valid 
479
    input wire   data_tx_error_8,          //  STATUS FIFO (Tx frame Error from Apps)
480
    input wire   [7:0] data_tx_data_8,     //  Data from FIFO transmit
481
    input wire   data_tx_valid_8,          //  Data FIFO transmit Empty
482
    input wire   data_tx_sop_8,            //  Start of Packet
483
    input wire   data_tx_eop_8,            //  END of Packet
484
    output wire  data_tx_ready_8,          //  Data FIFO transmit Read Enable   
485
 
486
    // STAND_ALONE CONDUITS 
487
    output wire  tx_ff_uflow_8,            //  TX FIFO underflow occured (Synchronous with tx_clk)
488
    input wire   tx_crc_fwd_8,             //  Forward Current Frame with CRC from Application
489
    input wire   xoff_gen_8,               //  Xoff Pause frame generate 
490
    input wire   xon_gen_8,                //  Xon Pause frame generate 
491
    input wire   magic_sleep_n_8,          //  Enable Sleep Mode
492
    output wire  magic_wakeup_8,           //  Wake Up Request
493
 
494
 
495
    // CHANNEL 9
496
 
497
    // PCS SIGNALS TO PHY
498
    input wire   rxp_9,                    //  Differential Receive Data 
499
    output wire  txp_9,                    //  Differential Transmit Data 
500
    input wire   gxb_pwrdn_in_9,           //  Powerdown signal to GXB
501
    output wire  pcs_pwrdn_out_9,          //  Powerdown Enable from PCS
502
    output wire  led_crs_9,                //  Carrier Sense
503
    output wire  led_link_9,               //  Valid Link 
504
    output wire  led_col_9,                //  Collision Indication
505
    output wire  led_an_9,                 //  Auto-Negotiation Status
506
    output wire  led_char_err_9,           //  Character Error
507
    output wire  led_disp_err_9,           //  Disparity Error
508
 
509
    // AV-ST TX & RX
510
    output wire  mac_rx_clk_9,             //  Av-ST Receive Clock
511
    output wire  mac_tx_clk_9,             //  Av-ST Transmit Clock   
512
    output wire  data_rx_sop_9,            //  Start of Packet
513
    output wire  data_rx_eop_9,            //  End of Packet
514
    output wire  [7:0] data_rx_data_9,     //  Data from FIFO
515
    output wire  [4:0] data_rx_error_9,    //  Receive packet error
516
    output wire  data_rx_valid_9,          //  Data Receive FIFO Valid
517
    input wire   data_rx_ready_9,          //  Data Receive Ready
518
    output wire  [4:0] pkt_class_data_9,   //  Frame Type Indication
519
    output wire  pkt_class_valid_9,        //  Frame Type Indication Valid 
520
    output wire  rx_recovclkout_9,         //  Frame Type Indication Valid 
521
    input wire   data_tx_error_9,          //  STATUS FIFO (Tx frame Error from Apps)
522
    input wire   [7:0] data_tx_data_9,     //  Data from FIFO transmit
523
    input wire   data_tx_valid_9,          //  Data FIFO transmit Empty
524
    input wire   data_tx_sop_9,            //  Start of Packet
525
    input wire   data_tx_eop_9,            //  END of Packet
526
    output wire  data_tx_ready_9,          //  Data FIFO transmit Read Enable   
527
 
528
    // STAND_ALONE CONDUITS 
529
    output wire  tx_ff_uflow_9,            //  TX FIFO underflow occured (Synchronous with tx_clk)
530
    input wire   tx_crc_fwd_9,             //  Forward Current Frame with CRC from Application
531
    input wire   xoff_gen_9,               //  Xoff Pause frame generate 
532
    input wire   xon_gen_9,                //  Xon Pause frame generate 
533
    input wire   magic_sleep_n_9,          //  Enable Sleep Mode
534
    output wire  magic_wakeup_9,           //  Wake Up Request
535
 
536
 
537
    // CHANNEL 10
538
 
539
    // PCS SIGNALS TO PHY
540
    input wire   rxp_10,                    //  Differential Receive Data 
541
    output wire  txp_10,                    //  Differential Transmit Data 
542
    input wire   gxb_pwrdn_in_10,           //  Powerdown signal to GXB
543
    output wire  pcs_pwrdn_out_10,          //  Powerdown Enable from PCS
544
    output wire  led_crs_10,                //  Carrier Sense
545
    output wire  led_link_10,               //  Valid Link 
546
    output wire  led_col_10,                //  Collision Indication
547
    output wire  led_an_10,                 //  Auto-Negotiation Status
548
    output wire  led_char_err_10,           //  Character Error
549
    output wire  led_disp_err_10,           //  Disparity Error
550
 
551
    // AV-ST TX & RX
552
    output wire  mac_rx_clk_10,             //  Av-ST Receive Clock
553
    output wire  mac_tx_clk_10,             //  Av-ST Transmit Clock   
554
    output wire  data_rx_sop_10,            //  Start of Packet
555
    output wire  data_rx_eop_10,            //  End of Packet
556
    output wire  [7:0] data_rx_data_10,     //  Data from FIFO
557
    output wire  [4:0] data_rx_error_10,    //  Receive packet error
558
    output wire  data_rx_valid_10,          //  Data Receive FIFO Valid
559
    input wire   data_rx_ready_10,          //  Data Receive Ready
560
    output wire  [4:0] pkt_class_data_10,   //  Frame Type Indication
561
    output wire  pkt_class_valid_10,        //  Frame Type Indication Valid 
562
    output wire  rx_recovclkout_10,         //  Frame Type Indication Valid 
563
    input wire   data_tx_error_10,          //  STATUS FIFO (Tx frame Error from Apps)
564
    input wire   [7:0] data_tx_data_10,     //  Data from FIFO transmit
565
    input wire   data_tx_valid_10,          //  Data FIFO transmit Empty
566
    input wire   data_tx_sop_10,            //  Start of Packet
567
    input wire   data_tx_eop_10,            //  END of Packet
568
    output wire  data_tx_ready_10,          //  Data FIFO transmit Read Enable  
569
 
570
    // STAND_ALONE CONDUITS 
571
    output wire  tx_ff_uflow_10,            //  TX FIFO underflow occured (Synchronous with tx_clk)
572
    input wire   tx_crc_fwd_10,             //  Forward Current Frame with CRC from Application
573
    input wire   xoff_gen_10,               //  Xoff Pause frame generate 
574
    input wire   xon_gen_10,                //  Xon Pause frame generate 
575
    input wire   magic_sleep_n_10,          //  Enable Sleep Mode
576
    output wire  magic_wakeup_10,           //  Wake Up Request
577
 
578
 
579
    // CHANNEL 11
580
 
581
    // PCS SIGNALS TO PHY
582
    input wire   rxp_11,                    //  Differential Receive Data 
583
    output wire  txp_11,                    //  Differential Transmit Data 
584
    input wire   gxb_pwrdn_in_11,           //  Powerdown signal to GXB
585
    output wire  pcs_pwrdn_out_11,          //  Powerdown Enable from PCS
586
    output wire  led_crs_11,                //  Carrier Sense
587
    output wire  led_link_11,               //  Valid Link 
588
    output wire  led_col_11,                //  Collision Indication
589
    output wire  led_an_11,                 //  Auto-Negotiation Status
590
    output wire  led_char_err_11,           //  Character Error
591
    output wire  led_disp_err_11,           //  Disparity Error
592
 
593
    // AV-ST TX & RX
594
    output wire  mac_rx_clk_11,             //  Av-ST Receive Clock
595
    output wire  mac_tx_clk_11,             //  Av-ST Transmit Clock   
596
    output wire  data_rx_sop_11,            //  Start of Packet
597
    output wire  data_rx_eop_11,            //  End of Packet
598
    output wire  [7:0] data_rx_data_11,     //  Data from FIFO
599
    output wire  [4:0] data_rx_error_11,    //  Receive packet error
600
    output wire  data_rx_valid_11,          //  Data Receive FIFO Valid
601
    input wire   data_rx_ready_11,          //  Data Receive Ready
602
    output wire  [4:0] pkt_class_data_11,   //  Frame Type Indication
603
    output wire  pkt_class_valid_11,        //  Frame Type Indication Valid 
604
    output wire  rx_recovclkout_11,         //  Frame Type Indication Valid 
605
    input wire   data_tx_error_11,          //  STATUS FIFO (Tx frame Error from Apps)
606
    input wire   [7:0] data_tx_data_11,     //  Data from FIFO transmit
607
    input wire   data_tx_valid_11,          //  Data FIFO transmit Empty
608
    input wire   data_tx_sop_11,            //  Start of Packet
609
    input wire   data_tx_eop_11,            //  END of Packet
610
    output wire  data_tx_ready_11,          //  Data FIFO transmit Read Enable  
611
 
612
    // STAND_ALONE CONDUITS 
613
    output wire  tx_ff_uflow_11,            //  TX FIFO underflow occured (Synchronous with tx_clk)
614
    input wire   tx_crc_fwd_11,             //  Forward Current Frame with CRC from Application
615
    input wire   xoff_gen_11,               //  Xoff Pause frame generate 
616
    input wire   xon_gen_11,                //  Xon Pause frame generate 
617
    input wire   magic_sleep_n_11,          //  Enable Sleep Mode
618
    output wire  magic_wakeup_11,           //  Wake Up Request
619
 
620
 
621
    // CHANNEL 12
622
 
623
    // PCS SIGNALS TO PHY
624
    input wire   rxp_12,                    //  Differential Receive Data 
625
    output wire  txp_12,                    //  Differential Transmit Data 
626
    input wire   gxb_pwrdn_in_12,           //  Powerdown signal to GXB
627
    output wire  pcs_pwrdn_out_12,          //  Powerdown Enable from PCS
628
    output wire  led_crs_12,                //  Carrier Sense
629
    output wire  led_link_12,               //  Valid Link 
630
    output wire  led_col_12,                //  Collision Indication
631
    output wire  led_an_12,                 //  Auto-Negotiation Status
632
    output wire  led_char_err_12,           //  Character Error
633
    output wire  led_disp_err_12,           //  Disparity Error
634
 
635
    // AV-ST TX & RX
636
    output wire  mac_rx_clk_12,             //  Av-ST Receive Clock
637
    output wire  mac_tx_clk_12,             //  Av-ST Transmit Clock   
638
    output wire  data_rx_sop_12,            //  Start of Packet
639
    output wire  data_rx_eop_12,            //  End of Packet
640
    output wire  [7:0] data_rx_data_12,     //  Data from FIFO
641
    output wire  [4:0] data_rx_error_12,    //  Receive packet error
642
    output wire  data_rx_valid_12,          //  Data Receive FIFO Valid
643
    input wire   data_rx_ready_12,          //  Data Receive Ready
644
    output wire  [4:0] pkt_class_data_12,   //  Frame Type Indication
645
    output wire  pkt_class_valid_12,        //  Frame Type Indication Valid 
646
    output wire  rx_recovclkout_12,         //  Frame Type Indication Valid 
647
    input wire   data_tx_error_12,          //  STATUS FIFO (Tx frame Error from Apps)
648
    input wire   [7:0] data_tx_data_12,     //  Data from FIFO transmit
649
    input wire   data_tx_valid_12,          //  Data FIFO transmit Empty
650
    input wire   data_tx_sop_12,            //  Start of Packet
651
    input wire   data_tx_eop_12,            //  END of Packet
652
    output wire  data_tx_ready_12,          //  Data FIFO transmit Read Enable  
653
 
654
    // STAND_ALONE CONDUITS 
655
    output wire  tx_ff_uflow_12,            //  TX FIFO underflow occured (Synchronous with tx_clk)
656
    input wire   tx_crc_fwd_12,             //  Forward Current Frame with CRC from Application
657
    input wire   xoff_gen_12,               //  Xoff Pause frame generate 
658
    input wire   xon_gen_12,                //  Xon Pause frame generate 
659
    input wire   magic_sleep_n_12,          //  Enable Sleep Mode
660
    output wire  magic_wakeup_12,           //  Wake Up Request
661
 
662
 
663
    // CHANNEL 13
664
 
665
    // PCS SIGNALS TO PHY
666
    input wire   rxp_13,                    //  Differential Receive Data 
667
    output wire  txp_13,                    //  Differential Transmit Data 
668
    input wire   gxb_pwrdn_in_13,           //  Powerdown signal to GXB
669
    output wire  pcs_pwrdn_out_13,          //  Powerdown Enable from PCS
670
    output wire  led_crs_13,                //  Carrier Sense
671
    output wire  led_link_13,               //  Valid Link 
672
    output wire  led_col_13,                //  Collision Indication
673
    output wire  led_an_13,                 //  Auto-Negotiation Status
674
    output wire  led_char_err_13,           //  Character Error
675
    output wire  led_disp_err_13,           //  Disparity Error
676
 
677
    // AV-ST TX & RX
678
    output wire  mac_rx_clk_13,             //  Av-ST Receive Clock
679
    output wire  mac_tx_clk_13,             //  Av-ST Transmit Clock   
680
    output wire  data_rx_sop_13,            //  Start of Packet
681
    output wire  data_rx_eop_13,            //  End of Packet
682
    output wire  [7:0] data_rx_data_13,     //  Data from FIFO
683
    output wire  [4:0] data_rx_error_13,    //  Receive packet error
684
    output wire  data_rx_valid_13,          //  Data Receive FIFO Valid
685
    input wire   data_rx_ready_13,          //  Data Receive Ready
686
    output wire  [4:0] pkt_class_data_13,   //  Frame Type Indication
687
    output wire  pkt_class_valid_13,        //  Frame Type Indication Valid 
688
    output wire  rx_recovclkout_13,         //  Frame Type Indication Valid 
689
    input wire   data_tx_error_13,          //  STATUS FIFO (Tx frame Error from Apps)
690
    input wire   [7:0] data_tx_data_13,     //  Data from FIFO transmit
691
    input wire   data_tx_valid_13,          //  Data FIFO transmit Empty
692
    input wire   data_tx_sop_13,            //  Start of Packet
693
    input wire   data_tx_eop_13,            //  END of Packet
694
    output wire  data_tx_ready_13,          //  Data FIFO transmit Read Enable  
695
 
696
    // STAND_ALONE CONDUITS 
697
    output wire  tx_ff_uflow_13,            //  TX FIFO underflow occured (Synchronous with tx_clk)
698
    input wire   tx_crc_fwd_13,             //  Forward Current Frame with CRC from Application
699
    input wire   xoff_gen_13,               //  Xoff Pause frame generate 
700
    input wire   xon_gen_13,                //  Xon Pause frame generate 
701
    input wire   magic_sleep_n_13,          //  Enable Sleep Mode
702
    output wire  magic_wakeup_13,           //  Wake Up Request
703
 
704
 
705
    // CHANNEL 14
706
 
707
    // PCS SIGNALS TO PHY
708
    input wire   rxp_14,                    //  Differential Receive Data 
709
    output wire  txp_14,                    //  Differential Transmit Data 
710
    input wire   gxb_pwrdn_in_14,           //  Powerdown signal to GXB
711
    output wire  pcs_pwrdn_out_14,          //  Powerdown Enable from PCS
712
    output wire  led_crs_14,                //  Carrier Sense
713
    output wire  led_link_14,               //  Valid Link 
714
    output wire  led_col_14,                //  Collision Indication
715
    output wire  led_an_14,                 //  Auto-Negotiation Status
716
    output wire  led_char_err_14,           //  Character Error
717
    output wire  led_disp_err_14,           //  Disparity Error
718
 
719
    // AV-ST TX & RX
720
    output wire  mac_rx_clk_14,             //  Av-ST Receive Clock
721
    output wire  mac_tx_clk_14,             //  Av-ST Transmit Clock   
722
    output wire  data_rx_sop_14,            //  Start of Packet
723
    output wire  data_rx_eop_14,            //  End of Packet
724
    output wire  [7:0] data_rx_data_14,     //  Data from FIFO
725
    output wire  [4:0] data_rx_error_14,    //  Receive packet error
726
    output wire  data_rx_valid_14,          //  Data Receive FIFO Valid
727
    input wire   data_rx_ready_14,          //  Data Receive Ready
728
    output wire  [4:0] pkt_class_data_14,   //  Frame Type Indication
729
    output wire  pkt_class_valid_14,        //  Frame Type Indication Valid 
730
    output wire  rx_recovclkout_14,         //  Frame Type Indication Valid 
731
    input wire   data_tx_error_14,          //  STATUS FIFO (Tx frame Error from Apps)
732
    input wire   [7:0] data_tx_data_14,     //  Data from FIFO transmit
733
    input wire   data_tx_valid_14,          //  Data FIFO transmit Empty
734
    input wire   data_tx_sop_14,            //  Start of Packet
735
    input wire   data_tx_eop_14,            //  END of Packet
736
    output wire  data_tx_ready_14,          //  Data FIFO transmit Read Enable  
737
 
738
    // STAND_ALONE CONDUITS 
739
    output wire  tx_ff_uflow_14,            //  TX FIFO underflow occured (Synchronous with tx_clk)
740
    input wire   tx_crc_fwd_14,             //  Forward Current Frame with CRC from Application
741
    input wire   xoff_gen_14,               //  Xoff Pause frame generate 
742
    input wire   xon_gen_14,                //  Xon Pause frame generate 
743
    input wire   magic_sleep_n_14,          //  Enable Sleep Mode
744
    output wire  magic_wakeup_14,           //  Wake Up Request
745
 
746
 
747
    // CHANNEL 15
748
 
749
    // PCS SIGNALS TO PHY
750
    input wire   rxp_15,                    //  Differential Receive Data 
751
    output wire  txp_15,                    //  Differential Transmit Data 
752
    input wire   gxb_pwrdn_in_15,           //  Powerdown signal to GXB
753
    output wire  pcs_pwrdn_out_15,          //  Powerdown Enable from PCS
754
    output wire  led_crs_15,                //  Carrier Sense
755
    output wire  led_link_15,               //  Valid Link 
756
    output wire  led_col_15,                //  Collision Indication
757
    output wire  led_an_15,                 //  Auto-Negotiation Status
758
    output wire  led_char_err_15,           //  Character Error
759
    output wire  led_disp_err_15,           //  Disparity Error
760
 
761
    // AV-ST TX & RX
762
    output wire  mac_rx_clk_15,             //  Av-ST Receive Clock
763
    output wire  mac_tx_clk_15,             //  Av-ST Transmit Clock   
764
    output wire  data_rx_sop_15,            //  Start of Packet
765
    output wire  data_rx_eop_15,            //  End of Packet
766
    output wire  [7:0] data_rx_data_15,     //  Data from FIFO
767
    output wire  [4:0] data_rx_error_15,    //  Receive packet error
768
    output wire  data_rx_valid_15,          //  Data Receive FIFO Valid
769
    input wire   data_rx_ready_15,          //  Data Receive Ready
770
    output wire  [4:0] pkt_class_data_15,   //  Frame Type Indication
771
    output wire  pkt_class_valid_15,        //  Frame Type Indication Valid 
772
    output wire  rx_recovclkout_15,         //  Frame Type Indication Valid 
773
    input wire   data_tx_error_15,          //  STATUS FIFO (Tx frame Error from Apps)
774
    input wire   [7:0] data_tx_data_15,     //  Data from FIFO transmit
775
    input wire   data_tx_valid_15,          //  Data FIFO transmit Empty
776
    input wire   data_tx_sop_15,            //  Start of Packet
777
    input wire   data_tx_eop_15,            //  END of Packet
778
    output wire  data_tx_ready_15,          //  Data FIFO transmit Read Enable  
779
 
780
    // STAND_ALONE CONDUITS 
781
    output wire  tx_ff_uflow_15,            //  TX FIFO underflow occured (Synchronous with tx_clk)
782
    input wire   tx_crc_fwd_15,             //  Forward Current Frame with CRC from Application
783
    input wire   xoff_gen_15,               //  Xoff Pause frame generate 
784
    input wire   xon_gen_15,                //  Xon Pause frame generate 
785
    input wire   magic_sleep_n_15,          //  Enable Sleep Mode
786
    output wire  magic_wakeup_15,           //  Wake Up Request
787
 
788
 
789
    // CHANNEL 16
790
 
791
    // PCS SIGNALS TO PHY
792
    input wire   rxp_16,                    //  Differential Receive Data 
793
    output wire  txp_16,                    //  Differential Transmit Data 
794
    input wire   gxb_pwrdn_in_16,           //  Powerdown signal to GXB
795
    output wire  pcs_pwrdn_out_16,          //  Powerdown Enable from PCS
796
    output wire  led_crs_16,                //  Carrier Sense
797
    output wire  led_link_16,               //  Valid Link 
798
    output wire  led_col_16,                //  Collision Indication
799
    output wire  led_an_16,                 //  Auto-Negotiation Status
800
    output wire  led_char_err_16,           //  Character Error
801
    output wire  led_disp_err_16,           //  Disparity Error
802
 
803
    // AV-ST TX & RX
804
    output wire  mac_rx_clk_16,             //  Av-ST Receive Clock
805
    output wire  mac_tx_clk_16,             //  Av-ST Transmit Clock   
806
    output wire  data_rx_sop_16,            //  Start of Packet
807
    output wire  data_rx_eop_16,            //  End of Packet
808
    output wire  [7:0] data_rx_data_16,     //  Data from FIFO
809
    output wire  [4:0] data_rx_error_16,    //  Receive packet error
810
    output wire  data_rx_valid_16,          //  Data Receive FIFO Valid
811
    input wire   data_rx_ready_16,          //  Data Receive Ready
812
    output wire  [4:0] pkt_class_data_16,   //  Frame Type Indication
813
    output wire  pkt_class_valid_16,        //  Frame Type Indication Valid 
814
    output wire  rx_recovclkout_16,         //  Frame Type Indication Valid 
815
    input wire   data_tx_error_16,          //  STATUS FIFO (Tx frame Error from Apps)
816
    input wire   [7:0] data_tx_data_16,     //  Data from FIFO transmit
817
    input wire   data_tx_valid_16,          //  Data FIFO transmit Empty
818
    input wire   data_tx_sop_16,            //  Start of Packet
819
    input wire   data_tx_eop_16,            //  END of Packet
820
    output wire  data_tx_ready_16,          //  Data FIFO transmit Read Enable  
821
 
822
    // STAND_ALONE CONDUITS 
823
    output wire  tx_ff_uflow_16,            //  TX FIFO underflow occured (Synchronous with tx_clk)
824
    input wire   tx_crc_fwd_16,             //  Forward Current Frame with CRC from Application
825
    input wire   xoff_gen_16,               //  Xoff Pause frame generate 
826
    input wire   xon_gen_16,                //  Xon Pause frame generate 
827
    input wire   magic_sleep_n_16,          //  Enable Sleep Mode
828
    output wire  magic_wakeup_16,           //  Wake Up Request
829
 
830
 
831
    // CHANNEL 17
832
 
833
    // PCS SIGNALS TO PHY
834
    input wire   rxp_17,                    //  Differential Receive Data 
835
    output wire  txp_17,                    //  Differential Transmit Data 
836
    input wire   gxb_pwrdn_in_17,           //  Powerdown signal to GXB
837
    output wire  pcs_pwrdn_out_17,          //  Powerdown Enable from PCS
838
    output wire  led_crs_17,                //  Carrier Sense
839
    output wire  led_link_17,               //  Valid Link 
840
    output wire  led_col_17,                //  Collision Indication
841
    output wire  led_an_17,                 //  Auto-Negotiation Status
842
    output wire  led_char_err_17,           //  Character Error
843
    output wire  led_disp_err_17,           //  Disparity Error
844
 
845
    // AV-ST TX & RX
846
    output wire  mac_rx_clk_17,             //  Av-ST Receive Clock
847
    output wire  mac_tx_clk_17,             //  Av-ST Transmit Clock   
848
    output wire  data_rx_sop_17,            //  Start of Packet
849
    output wire  data_rx_eop_17,            //  End of Packet
850
    output wire  [7:0] data_rx_data_17,     //  Data from FIFO
851
    output wire  [4:0] data_rx_error_17,    //  Receive packet error
852
    output wire  data_rx_valid_17,          //  Data Receive FIFO Valid
853
    input wire   data_rx_ready_17,          //  Data Receive Ready
854
    output wire  [4:0] pkt_class_data_17,   //  Frame Type Indication
855
    output wire  pkt_class_valid_17,        //  Frame Type Indication Valid 
856
    output wire  rx_recovclkout_17,         //  Frame Type Indication Valid 
857
    input wire   data_tx_error_17,          //  STATUS FIFO (Tx frame Error from Apps)
858
    input wire   [7:0] data_tx_data_17,     //  Data from FIFO transmit
859
    input wire   data_tx_valid_17,          //  Data FIFO transmit Empty
860
    input wire   data_tx_sop_17,            //  Start of Packet
861
    input wire   data_tx_eop_17,            //  END of Packet
862
    output wire  data_tx_ready_17,          //  Data FIFO transmit Read Enable  
863
 
864
    // STAND_ALONE CONDUITS 
865
    output wire  tx_ff_uflow_17,            //  TX FIFO underflow occured (Synchronous with tx_clk)
866
    input wire   tx_crc_fwd_17,             //  Forward Current Frame with CRC from Application
867
    input wire   xoff_gen_17,               //  Xoff Pause frame generate 
868
    input wire   xon_gen_17,                //  Xon Pause frame generate 
869
    input wire   magic_sleep_n_17,          //  Enable Sleep Mode
870
    output wire  magic_wakeup_17,           //  Wake Up Request
871
 
872
 
873
    // CHANNEL 18
874
 
875
    // PCS SIGNALS TO PHY
876
    input wire   rxp_18,                    //  Differential Receive Data 
877
    output wire  txp_18,                    //  Differential Transmit Data 
878
    input wire   gxb_pwrdn_in_18,           //  Powerdown signal to GXB
879
    output wire  pcs_pwrdn_out_18,          //  Powerdown Enable from PCS
880
    output wire  led_crs_18,                //  Carrier Sense
881
    output wire  led_link_18,               //  Valid Link 
882
    output wire  led_col_18,                //  Collision Indication
883
    output wire  led_an_18,                 //  Auto-Negotiation Status
884
    output wire  led_char_err_18,           //  Character Error
885
    output wire  led_disp_err_18,           //  Disparity Error
886
 
887
    // AV-ST TX & RX
888
    output wire  mac_rx_clk_18,             //  Av-ST Receive Clock
889
    output wire  mac_tx_clk_18,             //  Av-ST Transmit Clock   
890
    output wire  data_rx_sop_18,            //  Start of Packet
891
    output wire  data_rx_eop_18,            //  End of Packet
892
    output wire  [7:0] data_rx_data_18,     //  Data from FIFO
893
    output wire  [4:0] data_rx_error_18,    //  Receive packet error
894
    output wire  data_rx_valid_18,          //  Data Receive FIFO Valid
895
    input wire   data_rx_ready_18,          //  Data Receive Ready
896
    output wire  [4:0] pkt_class_data_18,   //  Frame Type Indication
897
    output wire  pkt_class_valid_18,        //  Frame Type Indication Valid 
898
    output wire  rx_recovclkout_18,         //  Frame Type Indication Valid 
899
    input wire   data_tx_error_18,          //  STATUS FIFO (Tx frame Error from Apps)
900
    input wire   [7:0] data_tx_data_18,     //  Data from FIFO transmit
901
    input wire   data_tx_valid_18,          //  Data FIFO transmit Empty
902
    input wire   data_tx_sop_18,            //  Start of Packet
903
    input wire   data_tx_eop_18,            //  END of Packet
904
    output wire  data_tx_ready_18,          //  Data FIFO transmit Read Enable  
905
 
906
    // STAND_ALONE CONDUITS 
907
    output wire  tx_ff_uflow_18,            //  TX FIFO underflow occured (Synchronous with tx_clk)
908
    input wire   tx_crc_fwd_18,             //  Forward Current Frame with CRC from Application
909
    input wire   xoff_gen_18,               //  Xoff Pause frame generate 
910
    input wire   xon_gen_18,                //  Xon Pause frame generate 
911
    input wire   magic_sleep_n_18,          //  Enable Sleep Mode
912
    output wire  magic_wakeup_18,           //  Wake Up Request
913
 
914
 
915
    // CHANNEL 19
916
 
917
    // PCS SIGNALS TO PHY
918
    input wire   rxp_19,                    //  Differential Receive Data 
919
    output wire  txp_19,                    //  Differential Transmit Data 
920
    input wire   gxb_pwrdn_in_19,           //  Powerdown signal to GXB
921
    output wire  pcs_pwrdn_out_19,          //  Powerdown Enable from PCS
922
    output wire  led_crs_19,                //  Carrier Sense
923
    output wire  led_link_19,               //  Valid Link 
924
    output wire  led_col_19,                //  Collision Indication
925
    output wire  led_an_19,                 //  Auto-Negotiation Status
926
    output wire  led_char_err_19,           //  Character Error
927
    output wire  led_disp_err_19,           //  Disparity Error
928
 
929
    // AV-ST TX & RX
930
    output wire  mac_rx_clk_19,             //  Av-ST Receive Clock
931
    output wire  mac_tx_clk_19,             //  Av-ST Transmit Clock   
932
    output wire  data_rx_sop_19,            //  Start of Packet
933
    output wire  data_rx_eop_19,            //  End of Packet
934
    output wire  [7:0] data_rx_data_19,     //  Data from FIFO
935
    output wire  [4:0] data_rx_error_19,    //  Receive packet error
936
    output wire  data_rx_valid_19,          //  Data Receive FIFO Valid
937
    input wire   data_rx_ready_19,          //  Data Receive Ready
938
    output wire  [4:0] pkt_class_data_19,   //  Frame Type Indication
939
    output wire  pkt_class_valid_19,        //  Frame Type Indication Valid 
940
    output wire  rx_recovclkout_19,         //  Frame Type Indication Valid 
941
    input wire   data_tx_error_19,          //  STATUS FIFO (Tx frame Error from Apps)
942
    input wire   [7:0] data_tx_data_19,     //  Data from FIFO transmit
943
    input wire   data_tx_valid_19,          //  Data FIFO transmit Empty
944
    input wire   data_tx_sop_19,            //  Start of Packet
945
    input wire   data_tx_eop_19,            //  END of Packet
946
    output wire  data_tx_ready_19,          //  Data FIFO transmit Read Enable  
947
 
948
    // STAND_ALONE CONDUITS 
949
    output wire  tx_ff_uflow_19,            //  TX FIFO underflow occured (Synchronous with tx_clk)
950
    input wire   tx_crc_fwd_19,             //  Forward Current Frame with CRC from Application
951
    input wire   xoff_gen_19,               //  Xoff Pause frame generate 
952
    input wire   xon_gen_19,                //  Xon Pause frame generate 
953
    input wire   magic_sleep_n_19,          //  Enable Sleep Mode
954
    output wire  magic_wakeup_19,           //  Wake Up Request
955
 
956
 
957
    // CHANNEL 20
958
 
959
    // PCS SIGNALS TO PHY
960
    input wire   rxp_20,                    //  Differential Receive Data 
961
    output wire  txp_20,                    //  Differential Transmit Data 
962
    input wire   gxb_pwrdn_in_20,           //  Powerdown signal to GXB
963
    output wire  pcs_pwrdn_out_20,          //  Powerdown Enable from PCS
964
    output wire  led_crs_20,                //  Carrier Sense
965
    output wire  led_link_20,               //  Valid Link 
966
    output wire  led_col_20,                //  Collision Indication
967
    output wire  led_an_20,                 //  Auto-Negotiation Status
968
    output wire  led_char_err_20,           //  Character Error
969
    output wire  led_disp_err_20,           //  Disparity Error
970
 
971
    // AV-ST TX & RX
972
    output wire  mac_rx_clk_20,             //  Av-ST Receive Clock
973
    output wire  mac_tx_clk_20,             //  Av-ST Transmit Clock   
974
    output wire  data_rx_sop_20,            //  Start of Packet
975
    output wire  data_rx_eop_20,            //  End of Packet
976
    output wire  [7:0] data_rx_data_20,     //  Data from FIFO
977
    output wire  [4:0] data_rx_error_20,    //  Receive packet error
978
    output wire  data_rx_valid_20,          //  Data Receive FIFO Valid
979
    input wire   data_rx_ready_20,          //  Data Receive Ready
980
    output wire  [4:0] pkt_class_data_20,   //  Frame Type Indication
981
    output wire  pkt_class_valid_20,        //  Frame Type Indication Valid 
982
    output wire  rx_recovclkout_20,         //  Frame Type Indication Valid 
983
    input wire   data_tx_error_20,          //  STATUS FIFO (Tx frame Error from Apps)
984
    input wire   [7:0] data_tx_data_20,     //  Data from FIFO transmit
985
    input wire   data_tx_valid_20,          //  Data FIFO transmit Empty
986
    input wire   data_tx_sop_20,            //  Start of Packet
987
    input wire   data_tx_eop_20,            //  END of Packet
988
    output wire  data_tx_ready_20,          //  Data FIFO transmit Read Enable  
989
 
990
    // STAND_ALONE CONDUITS 
991
    output wire  tx_ff_uflow_20,            //  TX FIFO underflow occured (Synchronous with tx_clk)
992
    input wire   tx_crc_fwd_20,             //  Forward Current Frame with CRC from Application
993
    input wire   xoff_gen_20,               //  Xoff Pause frame generate 
994
    input wire   xon_gen_20,                //  Xon Pause frame generate 
995
    input wire   magic_sleep_n_20,          //  Enable Sleep Mode
996
    output wire  magic_wakeup_20,           //  Wake Up Request
997
 
998
 
999
    // CHANNEL 21
1000
 
1001
    // PCS SIGNALS TO PHY
1002
    input wire   rxp_21,                    //  Differential Receive Data 
1003
    output wire  txp_21,                    //  Differential Transmit Data 
1004
    input wire   gxb_pwrdn_in_21,           //  Powerdown signal to GXB
1005
    output wire  pcs_pwrdn_out_21,          //  Powerdown Enable from PCS
1006
    output wire  led_crs_21,                //  Carrier Sense
1007
    output wire  led_link_21,               //  Valid Link 
1008
    output wire  led_col_21,                //  Collision Indication
1009
    output wire  led_an_21,                 //  Auto-Negotiation Status
1010
    output wire  led_char_err_21,           //  Character Error
1011
    output wire  led_disp_err_21,           //  Disparity Error
1012
 
1013
    // AV-ST TX & RX
1014
    output wire  mac_rx_clk_21,             //  Av-ST Receive Clock
1015
    output wire  mac_tx_clk_21,             //  Av-ST Transmit Clock   
1016
    output wire  data_rx_sop_21,            //  Start of Packet
1017
    output wire  data_rx_eop_21,            //  End of Packet
1018
    output wire  [7:0] data_rx_data_21,     //  Data from FIFO
1019
    output wire  [4:0] data_rx_error_21,    //  Receive packet error
1020
    output wire  data_rx_valid_21,          //  Data Receive FIFO Valid
1021
    input wire   data_rx_ready_21,          //  Data Receive Ready
1022
    output wire  [4:0] pkt_class_data_21,   //  Frame Type Indication
1023
    output wire  pkt_class_valid_21,        //  Frame Type Indication Valid 
1024
    output wire  rx_recovclkout_21,         //  Frame Type Indication Valid 
1025
    input wire   data_tx_error_21,          //  STATUS FIFO (Tx frame Error from Apps)
1026
    input wire   [7:0] data_tx_data_21,     //  Data from FIFO transmit
1027
    input wire   data_tx_valid_21,          //  Data FIFO transmit Empty
1028
    input wire   data_tx_sop_21,            //  Start of Packet
1029
    input wire   data_tx_eop_21,            //  END of Packet
1030
    output wire  data_tx_ready_21,          //  Data FIFO transmit Read Enable  
1031
 
1032
    // STAND_ALONE CONDUITS 
1033
    output wire  tx_ff_uflow_21,            //  TX FIFO underflow occured (Synchronous with tx_clk)
1034
    input wire   tx_crc_fwd_21,             //  Forward Current Frame with CRC from Application
1035
    input wire   xoff_gen_21,               //  Xoff Pause frame generate 
1036
    input wire   xon_gen_21,                //  Xon Pause frame generate 
1037
    input wire   magic_sleep_n_21,          //  Enable Sleep Mode
1038
    output wire  magic_wakeup_21,           //  Wake Up Request
1039
 
1040
 
1041
    // CHANNEL 22
1042
 
1043
    // PCS SIGNALS TO PHY
1044
    input wire   rxp_22,                    //  Differential Receive Data 
1045
    output wire  txp_22,                    //  Differential Transmit Data 
1046
    input wire   gxb_pwrdn_in_22,           //  Powerdown signal to GXB
1047
    output wire  pcs_pwrdn_out_22,          //  Powerdown Enable from PCS
1048
    output wire  led_crs_22,                //  Carrier Sense
1049
    output wire  led_link_22,               //  Valid Link 
1050
    output wire  led_col_22,                //  Collision Indication
1051
    output wire  led_an_22,                 //  Auto-Negotiation Status
1052
    output wire  led_char_err_22,           //  Character Error
1053
    output wire  led_disp_err_22,           //  Disparity Error
1054
 
1055
    // AV-ST TX & RX
1056
    output wire  mac_rx_clk_22,             //  Av-ST Receive Clock
1057
    output wire  mac_tx_clk_22,             //  Av-ST Transmit Clock   
1058
    output wire  data_rx_sop_22,            //  Start of Packet
1059
    output wire  data_rx_eop_22,            //  End of Packet
1060
    output wire  [7:0] data_rx_data_22,     //  Data from FIFO
1061
    output wire  [4:0] data_rx_error_22,    //  Receive packet error
1062
    output wire  data_rx_valid_22,          //  Data Receive FIFO Valid
1063
    input wire   data_rx_ready_22,          //  Data Receive Ready
1064
    output wire  [4:0] pkt_class_data_22,   //  Frame Type Indication
1065
    output wire  pkt_class_valid_22,        //  Frame Type Indication Valid 
1066
    output wire  rx_recovclkout_22,         //  Frame Type Indication Valid 
1067
    input wire   data_tx_error_22,          //  STATUS FIFO (Tx frame Error from Apps)
1068
    input wire   [7:0] data_tx_data_22,     //  Data from FIFO transmit
1069
    input wire   data_tx_valid_22,          //  Data FIFO transmit Empty
1070
    input wire   data_tx_sop_22,            //  Start of Packet
1071
    input wire   data_tx_eop_22,            //  END of Packet
1072
    output wire  data_tx_ready_22,          //  Data FIFO transmit Read Enable  
1073
 
1074
    // STAND_ALONE CONDUITS 
1075
    output wire  tx_ff_uflow_22,            //  TX FIFO underflow occured (Synchronous with tx_clk)
1076
    input wire   tx_crc_fwd_22,             //  Forward Current Frame with CRC from Application
1077
    input wire   xoff_gen_22,               //  Xoff Pause frame generate 
1078
    input wire   xon_gen_22,                //  Xon Pause frame generate 
1079
    input wire   magic_sleep_n_22,          //  Enable Sleep Mode
1080
    output wire  magic_wakeup_22,           //  Wake Up Request
1081
 
1082
 
1083
    // CHANNEL 23
1084
 
1085
    // PCS SIGNALS TO PHY
1086
    input wire   rxp_23,                    //  Differential Receive Data 
1087
    output wire  txp_23,                    //  Differential Transmit Data 
1088
    input wire   gxb_pwrdn_in_23,           //  Powerdown signal to GXB
1089
    output wire  pcs_pwrdn_out_23,          //  Powerdown Enable from PCS
1090
    output wire  led_crs_23,                //  Carrier Sense
1091
    output wire  led_link_23,               //  Valid Link 
1092
    output wire  led_col_23,                //  Collision Indication
1093
    output wire  led_an_23,                 //  Auto-Negotiation Status
1094
    output wire  led_char_err_23,           //  Character Error
1095
    output wire  led_disp_err_23,           //  Disparity Error
1096
 
1097
    // AV-ST TX & RX
1098
    output wire  mac_rx_clk_23,             //  Av-ST Receive Clock
1099
    output wire  mac_tx_clk_23,             //  Av-ST Transmit Clock   
1100
    output wire  data_rx_sop_23,            //  Start of Packet
1101
    output wire  data_rx_eop_23,            //  End of Packet
1102
    output wire  [7:0] data_rx_data_23,     //  Data from FIFO
1103
    output wire  [4:0] data_rx_error_23,    //  Receive packet error
1104
    output wire  data_rx_valid_23,          //  Data Receive FIFO Valid
1105
    input wire   data_rx_ready_23,          //  Data Receive Ready
1106
    output wire  [4:0] pkt_class_data_23,   //  Frame Type Indication
1107
    output wire  pkt_class_valid_23,        //  Frame Type Indication Valid 
1108
    output wire  rx_recovclkout_23,         //  Frame Type Indication Valid 
1109
    input wire   data_tx_error_23,          //  STATUS FIFO (Tx frame Error from Apps)
1110
    input wire   [7:0] data_tx_data_23,     //  Data from FIFO transmit
1111
    input wire   data_tx_valid_23,          //  Data FIFO transmit Empty
1112
    input wire   data_tx_sop_23,            //  Start of Packet
1113
    input wire   data_tx_eop_23,            //  END of Packet
1114
    output wire  data_tx_ready_23,          //  Data FIFO transmit Read Enable  
1115
 
1116
    // STAND_ALONE CONDUITS 
1117
    output wire  tx_ff_uflow_23,            //  TX FIFO underflow occured (Synchronous with tx_clk)
1118
    input wire   tx_crc_fwd_23,             //  Forward Current Frame with CRC from Application
1119
    input wire   xoff_gen_23,               //  Xoff Pause frame generate 
1120
    input wire   xon_gen_23,                //  Xon Pause frame generate 
1121
    input wire   magic_sleep_n_23,          //  Enable Sleep Mode
1122
    output wire  magic_wakeup_23);          //  Wake Up Request
1123
 
1124
 
1125
wire    [23:0] pcs_pwrdn_out_sig;
1126
wire    [23:0] gxb_pwrdn_in_sig;
1127
 
1128
wire    [9:0] tbi_rx_d_lvds_0;
1129
reg     [9:0] tbi_rx_d_flip_0;
1130
reg     [9:0] tbi_tx_d_flip_0;
1131
wire    [9:0] tbi_rx_d_0;
1132
wire    [9:0] tbi_tx_d_0;
1133
wire    [9:0] tbi_rx_d_lvds_1;
1134
reg     [9:0] tbi_rx_d_flip_1;
1135
reg     [9:0] tbi_tx_d_flip_1;
1136
wire    [9:0] tbi_rx_d_1;
1137
wire    [9:0] tbi_tx_d_1;
1138
wire    [9:0] tbi_rx_d_lvds_2;
1139
reg     [9:0] tbi_rx_d_flip_2;
1140
reg     [9:0] tbi_tx_d_flip_2;
1141
wire    [9:0] tbi_rx_d_2;
1142
wire    [9:0] tbi_tx_d_2;
1143
wire    [9:0] tbi_rx_d_lvds_3;
1144
reg     [9:0] tbi_rx_d_flip_3;
1145
reg     [9:0] tbi_tx_d_flip_3;
1146
wire    [9:0] tbi_rx_d_3;
1147
wire    [9:0] tbi_tx_d_3;
1148
wire    [9:0] tbi_rx_d_lvds_4;
1149
reg     [9:0] tbi_rx_d_flip_4;
1150
reg     [9:0] tbi_tx_d_flip_4;
1151
wire    [9:0] tbi_rx_d_4;
1152
wire    [9:0] tbi_tx_d_4;
1153
wire    [9:0] tbi_rx_d_lvds_5;
1154
reg     [9:0] tbi_rx_d_flip_5;
1155
reg     [9:0] tbi_tx_d_flip_5;
1156
wire    [9:0] tbi_rx_d_5;
1157
wire    [9:0] tbi_tx_d_5;
1158
wire    [9:0] tbi_rx_d_lvds_6;
1159
reg     [9:0] tbi_rx_d_flip_6;
1160
reg     [9:0] tbi_tx_d_flip_6;
1161
wire    [9:0] tbi_rx_d_6;
1162
wire    [9:0] tbi_tx_d_6;
1163
wire    [9:0] tbi_rx_d_lvds_7;
1164
reg     [9:0] tbi_rx_d_flip_7;
1165
reg     [9:0] tbi_tx_d_flip_7;
1166
wire    [9:0] tbi_rx_d_7;
1167
wire    [9:0] tbi_tx_d_7;
1168
wire    [9:0] tbi_rx_d_lvds_8;
1169
reg     [9:0] tbi_rx_d_flip_8;
1170
reg     [9:0] tbi_tx_d_flip_8;
1171
wire    [9:0] tbi_rx_d_8;
1172
wire    [9:0] tbi_tx_d_8;
1173
wire    [9:0] tbi_rx_d_lvds_9;
1174
reg     [9:0] tbi_rx_d_flip_9;
1175
reg     [9:0] tbi_tx_d_flip_9;
1176
wire    [9:0] tbi_rx_d_9;
1177
wire    [9:0] tbi_tx_d_9;
1178
wire    [9:0] tbi_rx_d_lvds_10;
1179
reg     [9:0] tbi_rx_d_flip_10;
1180
reg     [9:0] tbi_tx_d_flip_10;
1181
wire    [9:0] tbi_rx_d_10;
1182
wire    [9:0] tbi_tx_d_10;
1183
wire    [9:0] tbi_rx_d_lvds_11;
1184
reg     [9:0] tbi_rx_d_flip_11;
1185
reg     [9:0] tbi_tx_d_flip_11;
1186
wire    [9:0] tbi_rx_d_11;
1187
wire    [9:0] tbi_tx_d_11;
1188
wire    [9:0] tbi_rx_d_lvds_12;
1189
reg     [9:0] tbi_rx_d_flip_12;
1190
reg     [9:0] tbi_tx_d_flip_12;
1191
wire    [9:0] tbi_rx_d_12;
1192
wire    [9:0] tbi_tx_d_12;
1193
wire    [9:0] tbi_rx_d_lvds_13;
1194
reg     [9:0] tbi_rx_d_flip_13;
1195
reg     [9:0] tbi_tx_d_flip_13;
1196
wire    [9:0] tbi_rx_d_13;
1197
wire    [9:0] tbi_tx_d_13;
1198
wire    [9:0] tbi_rx_d_lvds_14;
1199
reg     [9:0] tbi_rx_d_flip_14;
1200
reg     [9:0] tbi_tx_d_flip_14;
1201
wire    [9:0] tbi_rx_d_14;
1202
wire    [9:0] tbi_tx_d_14;
1203
wire    [9:0] tbi_rx_d_lvds_15;
1204
reg     [9:0] tbi_rx_d_flip_15;
1205
reg     [9:0] tbi_tx_d_flip_15;
1206
wire    [9:0] tbi_rx_d_15;
1207
wire    [9:0] tbi_tx_d_15;
1208
wire    [9:0] tbi_rx_d_lvds_16;
1209
reg     [9:0] tbi_rx_d_flip_16;
1210
reg     [9:0] tbi_tx_d_flip_16;
1211
wire    [9:0] tbi_rx_d_16;
1212
wire    [9:0] tbi_tx_d_16;
1213
wire    [9:0] tbi_rx_d_lvds_17;
1214
reg     [9:0] tbi_rx_d_flip_17;
1215
reg     [9:0] tbi_tx_d_flip_17;
1216
wire    [9:0] tbi_rx_d_17;
1217
wire    [9:0] tbi_tx_d_17;
1218
wire    [9:0] tbi_rx_d_lvds_18;
1219
reg     [9:0] tbi_rx_d_flip_18;
1220
reg     [9:0] tbi_tx_d_flip_18;
1221
wire    [9:0] tbi_rx_d_18;
1222
wire    [9:0] tbi_tx_d_18;
1223
wire    [9:0] tbi_rx_d_lvds_19;
1224
reg     [9:0] tbi_rx_d_flip_19;
1225
reg     [9:0] tbi_tx_d_flip_19;
1226
wire    [9:0] tbi_rx_d_19;
1227
wire    [9:0] tbi_tx_d_19;
1228
wire    [9:0] tbi_rx_d_lvds_20;
1229
reg     [9:0] tbi_rx_d_flip_20;
1230
reg     [9:0] tbi_tx_d_flip_20;
1231
wire    [9:0] tbi_rx_d_20;
1232
wire    [9:0] tbi_tx_d_20;
1233
wire    [9:0] tbi_rx_d_lvds_21;
1234
reg     [9:0] tbi_rx_d_flip_21;
1235
reg     [9:0] tbi_tx_d_flip_21;
1236
wire    [9:0] tbi_rx_d_21;
1237
wire    [9:0] tbi_tx_d_21;
1238
wire    [9:0] tbi_rx_d_lvds_22;
1239
reg     [9:0] tbi_rx_d_flip_22;
1240
reg     [9:0] tbi_tx_d_flip_22;
1241
wire    [9:0] tbi_rx_d_22;
1242
wire    [9:0] tbi_tx_d_22;
1243
wire    [9:0] tbi_rx_d_lvds_23;
1244
reg     [9:0] tbi_rx_d_flip_23;
1245
reg     [9:0] tbi_tx_d_flip_23;
1246
wire    [9:0] tbi_rx_d_23;
1247
wire    [9:0] tbi_tx_d_23;
1248
 
1249
wire    sd_loopback_0;
1250
wire    sd_loopback_1;
1251
wire    sd_loopback_2;
1252
wire    sd_loopback_3;
1253
wire    sd_loopback_4;
1254
wire    sd_loopback_5;
1255
wire    sd_loopback_6;
1256
wire    sd_loopback_7;
1257
wire    sd_loopback_8;
1258
wire    sd_loopback_9;
1259
wire    sd_loopback_10;
1260
wire    sd_loopback_11;
1261
wire    sd_loopback_12;
1262
wire    sd_loopback_13;
1263
wire    sd_loopback_14;
1264
wire    sd_loopback_15;
1265
wire    sd_loopback_16;
1266
wire    sd_loopback_17;
1267
wire    sd_loopback_18;
1268
wire    sd_loopback_19;
1269
wire    sd_loopback_20;
1270
wire    sd_loopback_21;
1271
wire    sd_loopback_22;
1272
wire    sd_loopback_23;
1273
 
1274
wire    tbi_rx_clk_0;
1275
wire    tbi_rx_clk_1;
1276
wire    tbi_rx_clk_2;
1277
wire    tbi_rx_clk_3;
1278
wire    tbi_rx_clk_4;
1279
wire    tbi_rx_clk_5;
1280
wire    tbi_rx_clk_6;
1281
wire    tbi_rx_clk_7;
1282
wire    tbi_rx_clk_8;
1283
wire    tbi_rx_clk_9;
1284
wire    tbi_rx_clk_10;
1285
wire    tbi_rx_clk_11;
1286
wire    tbi_rx_clk_12;
1287
wire    tbi_rx_clk_13;
1288
wire    tbi_rx_clk_14;
1289
wire    tbi_rx_clk_15;
1290
wire    tbi_rx_clk_16;
1291
wire    tbi_rx_clk_17;
1292
wire    tbi_rx_clk_18;
1293
wire    tbi_rx_clk_19;
1294
wire    tbi_rx_clk_20;
1295
wire    tbi_rx_clk_21;
1296
wire    tbi_rx_clk_22;
1297
wire    tbi_rx_clk_23;
1298
 
1299
wire    tbi_tx_clk_0;
1300
wire    tbi_tx_clk_1;
1301
wire    tbi_tx_clk_2;
1302
wire    tbi_tx_clk_3;
1303
wire    tbi_tx_clk_4;
1304
wire    tbi_tx_clk_5;
1305
wire    tbi_tx_clk_6;
1306
wire    tbi_tx_clk_7;
1307
wire    tbi_tx_clk_8;
1308
wire    tbi_tx_clk_9;
1309
wire    tbi_tx_clk_10;
1310
wire    tbi_tx_clk_11;
1311
wire    tbi_tx_clk_12;
1312
wire    tbi_tx_clk_13;
1313
wire    tbi_tx_clk_14;
1314
wire    tbi_tx_clk_15;
1315
wire    tbi_tx_clk_16;
1316
wire    tbi_tx_clk_17;
1317
wire    tbi_tx_clk_18;
1318
wire    tbi_tx_clk_19;
1319
wire    tbi_tx_clk_20;
1320
wire    tbi_tx_clk_21;
1321
wire    tbi_tx_clk_22;
1322
wire    tbi_tx_clk_23;
1323
 
1324
wire pll_areset_0,rx_cda_reset_0,rx_channel_data_align_0,rx_locked_0,rx_reset_0;
1325
wire pll_areset_1,rx_cda_reset_1,rx_channel_data_align_1,rx_locked_1,rx_reset_1;
1326
wire pll_areset_2,rx_cda_reset_2,rx_channel_data_align_2,rx_locked_2,rx_reset_2;
1327
wire pll_areset_3,rx_cda_reset_3,rx_channel_data_align_3,rx_locked_3,rx_reset_3;
1328
wire pll_areset_4,rx_cda_reset_4,rx_channel_data_align_4,rx_locked_4,rx_reset_4;
1329
wire pll_areset_5,rx_cda_reset_5,rx_channel_data_align_5,rx_locked_5,rx_reset_5;
1330
wire pll_areset_6,rx_cda_reset_6,rx_channel_data_align_6,rx_locked_6,rx_reset_6;
1331
wire pll_areset_7,rx_cda_reset_7,rx_channel_data_align_7,rx_locked_7,rx_reset_7;
1332
wire pll_areset_8,rx_cda_reset_8,rx_channel_data_align_8,rx_locked_8,rx_reset_8;
1333
wire pll_areset_9,rx_cda_reset_9,rx_channel_data_align_9,rx_locked_9,rx_reset_9;
1334
wire pll_areset_10,rx_cda_reset_10,rx_channel_data_align_10,rx_locked_10,rx_reset_10;
1335
wire pll_areset_11,rx_cda_reset_11,rx_channel_data_align_11,rx_locked_11,rx_reset_11;
1336
wire pll_areset_12,rx_cda_reset_12,rx_channel_data_align_12,rx_locked_12,rx_reset_12;
1337
wire pll_areset_13,rx_cda_reset_13,rx_channel_data_align_13,rx_locked_13,rx_reset_13;
1338
wire pll_areset_14,rx_cda_reset_14,rx_channel_data_align_14,rx_locked_14,rx_reset_14;
1339
wire pll_areset_15,rx_cda_reset_15,rx_channel_data_align_15,rx_locked_15,rx_reset_15;
1340
wire pll_areset_16,rx_cda_reset_16,rx_channel_data_align_16,rx_locked_16,rx_reset_16;
1341
wire pll_areset_17,rx_cda_reset_17,rx_channel_data_align_17,rx_locked_17,rx_reset_17;
1342
wire pll_areset_18,rx_cda_reset_18,rx_channel_data_align_18,rx_locked_18,rx_reset_18;
1343
wire pll_areset_19,rx_cda_reset_19,rx_channel_data_align_19,rx_locked_19,rx_reset_19;
1344
wire pll_areset_20,rx_cda_reset_20,rx_channel_data_align_20,rx_locked_20,rx_reset_20;
1345
wire pll_areset_21,rx_cda_reset_21,rx_channel_data_align_21,rx_locked_21,rx_reset_21;
1346
wire pll_areset_22,rx_cda_reset_22,rx_channel_data_align_22,rx_locked_22,rx_reset_22;
1347
wire pll_areset_23,rx_cda_reset_23,rx_channel_data_align_23,rx_locked_23,rx_reset_23;
1348
 
1349
assign rx_recovclkout_0 = tbi_rx_clk_0;
1350
assign rx_recovclkout_1 = tbi_rx_clk_1;
1351
assign rx_recovclkout_2 = tbi_rx_clk_2;
1352
assign rx_recovclkout_3 = tbi_rx_clk_3;
1353
assign rx_recovclkout_4 = tbi_rx_clk_4;
1354
assign rx_recovclkout_5 = tbi_rx_clk_5;
1355
assign rx_recovclkout_6 = tbi_rx_clk_6;
1356
assign rx_recovclkout_7 = tbi_rx_clk_7;
1357
assign rx_recovclkout_8 = tbi_rx_clk_8;
1358
assign rx_recovclkout_9 = tbi_rx_clk_9;
1359
assign rx_recovclkout_10 = tbi_rx_clk_10;
1360
assign rx_recovclkout_11 = tbi_rx_clk_11;
1361
assign rx_recovclkout_12 = tbi_rx_clk_12;
1362
assign rx_recovclkout_13 = tbi_rx_clk_13;
1363
assign rx_recovclkout_14 = tbi_rx_clk_14;
1364
assign rx_recovclkout_15 = tbi_rx_clk_15;
1365
assign rx_recovclkout_16 = tbi_rx_clk_16;
1366
assign rx_recovclkout_17 = tbi_rx_clk_17;
1367
assign rx_recovclkout_18 = tbi_rx_clk_18;
1368
assign rx_recovclkout_19 = tbi_rx_clk_19;
1369
assign rx_recovclkout_20 = tbi_rx_clk_20;
1370
assign rx_recovclkout_21 = tbi_rx_clk_21;
1371
assign rx_recovclkout_22 = tbi_rx_clk_22;
1372
assign rx_recovclkout_23 = tbi_rx_clk_23;
1373
 
1374
    // Instantiation of the MAC_PCS core that connects to a PMA
1375
    // --------------------------------------------------------
1376
 
1377
    altera_tse_top_multi_mac_pcs U_MULTI_MAC_PCS(
1378
 
1379
        .reset(reset),                            //INPUT  : ASYNCHRONOUS RESET - clk DOMAIN
1380
        .clk(clk),                                //INPUT  : CLOCK
1381
        .read(read),                              //INPUT  : REGISTER READ TRANSACTION
1382
        .ref_clk(ref_clk),                        //INPUT  : REFERENCE CLOCK 
1383
        .write(write),                            //INPUT  : REGISTER WRITE TRANSACTION
1384
        .address(address),                        //INPUT  : REGISTER ADDRESS
1385
        .writedata(writedata),                    //INPUT  : REGISTER WRITE DATA
1386
        .readdata(readdata),                      //OUTPUT : REGISTER READ DATA
1387
        .waitrequest(waitrequest),                //OUTPUT : TRANSACTION BUSY, ACTIVE LOW
1388
        .mdc(mdc),                                //OUTPUT : MDIO Clock 
1389
        .mdio_out(mdio_out),                      //OUTPUT : Outgoing MDIO DATA
1390
        .mdio_in(mdio_in),                        //INPUT  : Incoming MDIO DATA       
1391
        .mdio_oen(mdio_oen),                      //OUTPUT : MDIO Output Enable
1392
        .mac_rx_clk(mac_rx_clk),                  //OUTPUT : Av-ST Rx Clock
1393
        .mac_tx_clk(mac_tx_clk),                  //OUTPUT : Av-ST Tx Clock
1394
        .rx_afull_clk(rx_afull_clk),              //INPUT  : AFull Status Clock
1395
            .rx_afull_data(rx_afull_data),            //INPUT  : AFull Status Data
1396
            .rx_afull_valid(rx_afull_valid),          //INPUT  : AFull Status Valid
1397
            .rx_afull_channel(rx_afull_channel),      //INPUT  : AFull Status Channel
1398
 
1399
         // Channel 0 
1400
 
1401
        .tbi_rx_clk_0(tbi_rx_clk_0),              //INPUT  : Receive TBI Clock
1402
        .tbi_tx_clk_0(tbi_tx_clk_0),              //INPUT  : Transmit TBI Clock
1403
        .tbi_rx_d_0(tbi_rx_d_0),                  //INPUT  : Receive TBI Interface
1404
        .tbi_tx_d_0(tbi_tx_d_0),                  //OUTPUT : Transmit TBI Interface
1405
        .sd_loopback_0(sd_loopback_0),            //OUTPUT : SERDES Loopback Enable
1406
        .powerdown_0(pcs_pwrdn_out_sig[0]),       //OUTPUT : Powerdown Enable
1407
        .led_col_0(led_col_0),                    //OUTPUT : Collision Indication
1408
        .led_an_0(led_an_0),                      //OUTPUT : Auto Negotiation Status
1409
        .led_char_err_0(led_char_err_0),          //OUTPUT : Character error
1410
        .led_disp_err_0(led_disp_err_0),          //OUTPUT : Disparity error
1411
        .led_crs_0(led_crs_0),                    //OUTPUT : Carrier sense
1412
        .led_link_0(led_link_0),                  //OUTPUT : Valid link    
1413
        .mac_rx_clk_0(mac_rx_clk_0),              //OUTPUT : Av-ST Rx Clock
1414
        .mac_tx_clk_0(mac_tx_clk_0),              //OUTPUT : Av-ST Tx Clock
1415
        .data_rx_sop_0(data_rx_sop_0),            //OUTPUT : Start of Packet
1416
        .data_rx_eop_0(data_rx_eop_0),            //OUTPUT : End of Packet
1417
        .data_rx_data_0(data_rx_data_0),          //OUTPUT : Data from FIFO
1418
        .data_rx_error_0(data_rx_error_0),        //OUTPUT : Receive packet error
1419
        .data_rx_valid_0(data_rx_valid_0),        //OUTPUT : Data Receive FIFO Valid
1420
        .data_rx_ready_0(data_rx_ready_0),        //OUTPUT : Data Receive Ready
1421
        .pkt_class_data_0(pkt_class_data_0),      //OUTPUT : Frame Type Indication
1422
        .pkt_class_valid_0(pkt_class_valid_0),    //OUTPUT : Frame Type Indication Valid
1423
        .data_tx_error_0(data_tx_error_0),        //INPUT  : Status
1424
        .data_tx_data_0(data_tx_data_0),          //INPUT  : Data from FIFO transmit
1425
        .data_tx_valid_0(data_tx_valid_0),        //INPUT  : Data FIFO transmit Empty
1426
        .data_tx_sop_0(data_tx_sop_0),            //INPUT  : Start of Packet
1427
        .data_tx_eop_0(data_tx_eop_0),            //INPUT  : End of Packet
1428
        .data_tx_ready_0(data_tx_ready_0),        //OUTPUT : Data FIFO transmit Read Enable  
1429
        .tx_ff_uflow_0(tx_ff_uflow_0),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
1430
        .tx_crc_fwd_0(tx_crc_fwd_0),              //INPUT  : Forward Current Frame with CRC from Application
1431
        .xoff_gen_0(xoff_gen_0),                  //INPUT  : XOFF PAUSE FRAME GENERATE
1432
        .xon_gen_0(xon_gen_0),                    //INPUT  : XON PAUSE FRAME GENERATE
1433
        .magic_sleep_n_0(magic_sleep_n_0),        //INPUT  : MAC SLEEP MODE CONTROL
1434
        .magic_wakeup_0(magic_wakeup_0),          //OUTPUT : MAC WAKE-UP INDICATION
1435
 
1436
         // Channel 1 
1437
 
1438
        .tbi_rx_clk_1(tbi_rx_clk_1),              //INPUT  : Receive TBI Clock
1439
        .tbi_tx_clk_1(tbi_tx_clk_1),              //INPUT  : Transmit TBI Clock
1440
        .tbi_rx_d_1(tbi_rx_d_1),                  //INPUT  : Receive TBI Interface
1441
        .tbi_tx_d_1(tbi_tx_d_1),                  //OUTPUT : Transmit TBI Interface
1442
        .sd_loopback_1(sd_loopback_1),            //OUTPUT : SERDES Loopback Enable
1443
        .powerdown_1(pcs_pwrdn_out_sig[1]),       //OUTPUT : Powerdown Enable
1444
        .led_col_1(led_col_1),                    //OUTPUT : Collision Indication
1445
        .led_an_1(led_an_1),                      //OUTPUT : Auto Negotiation Status
1446
        .led_char_err_1(led_char_err_1),          //OUTPUT : Character error
1447
        .led_disp_err_1(led_disp_err_1),          //OUTPUT : Disparity error
1448
        .led_crs_1(led_crs_1),                    //OUTPUT : Carrier sense
1449
        .led_link_1(led_link_1),                  //OUTPUT : Valid link    
1450
        .mac_rx_clk_1(mac_rx_clk_1),              //OUTPUT : Av-ST Rx Clock
1451
        .mac_tx_clk_1(mac_tx_clk_1),              //OUTPUT : Av-ST Tx Clock
1452
        .data_rx_sop_1(data_rx_sop_1),            //OUTPUT : Start of Packet
1453
        .data_rx_eop_1(data_rx_eop_1),            //OUTPUT : End of Packet
1454
        .data_rx_data_1(data_rx_data_1),          //OUTPUT : Data from FIFO
1455
        .data_rx_error_1(data_rx_error_1),        //OUTPUT : Receive packet error
1456
        .data_rx_valid_1(data_rx_valid_1),        //OUTPUT : Data Receive FIFO Valid
1457
        .data_rx_ready_1(data_rx_ready_1),        //OUTPUT : Data Receive Ready
1458
        .pkt_class_data_1(pkt_class_data_1),      //OUTPUT : Frame Type Indication
1459
        .pkt_class_valid_1(pkt_class_valid_1),    //OUTPUT : Frame Type Indication Valid
1460
        .data_tx_error_1(data_tx_error_1),        //INPUT  : Status
1461
        .data_tx_data_1(data_tx_data_1),          //INPUT  : Data from FIFO transmit
1462
        .data_tx_valid_1(data_tx_valid_1),        //INPUT  : Data FIFO transmit Empty
1463
        .data_tx_sop_1(data_tx_sop_1),            //INPUT  : Start of Packet
1464
        .data_tx_eop_1(data_tx_eop_1),            //INPUT  : End of Packet
1465
        .data_tx_ready_1(data_tx_ready_1),        //OUTPUT : Data FIFO transmit Read Enable  
1466
        .tx_ff_uflow_1(tx_ff_uflow_1),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
1467
        .tx_crc_fwd_1(tx_crc_fwd_1),              //INPUT  : Forward Current Frame with CRC from Application
1468
        .xoff_gen_1(xoff_gen_1),                  //INPUT  : XOFF PAUSE FRAME GENERATE
1469
        .xon_gen_1(xon_gen_1),                    //INPUT  : XON PAUSE FRAME GENERATE
1470
        .magic_sleep_n_1(magic_sleep_n_1),        //INPUT  : MAC SLEEP MODE CONTROL
1471
        .magic_wakeup_1(magic_wakeup_1),          //OUTPUT : MAC WAKE-UP INDICATION
1472
 
1473
         // Channel 2 
1474
 
1475
        .tbi_rx_clk_2(tbi_rx_clk_2),              //INPUT  : Receive TBI Clock
1476
        .tbi_tx_clk_2(tbi_tx_clk_2),              //INPUT  : Transmit TBI Clock
1477
        .tbi_rx_d_2(tbi_rx_d_2),                  //INPUT  : Receive TBI Interface
1478
        .tbi_tx_d_2(tbi_tx_d_2),                  //OUTPUT : Transmit TBI Interface
1479
        .sd_loopback_2(sd_loopback_2),            //OUTPUT : SERDES Loopback Enable
1480
        .powerdown_2(pcs_pwrdn_out_sig[2]),       //OUTPUT : Powerdown Enable
1481
        .led_col_2(led_col_2),                    //OUTPUT : Collision Indication
1482
        .led_an_2(led_an_2),                      //OUTPUT : Auto Negotiation Status
1483
        .led_char_err_2(led_char_err_2),          //OUTPUT : Character error
1484
        .led_disp_err_2(led_disp_err_2),          //OUTPUT : Disparity error
1485
        .led_crs_2(led_crs_2),                    //OUTPUT : Carrier sense
1486
        .led_link_2(led_link_2),                  //OUTPUT : Valid link    
1487
        .mac_rx_clk_2(mac_rx_clk_2),              //OUTPUT : Av-ST Rx Clock
1488
        .mac_tx_clk_2(mac_tx_clk_2),              //OUTPUT : Av-ST Tx Clock
1489
        .data_rx_sop_2(data_rx_sop_2),            //OUTPUT : Start of Packet
1490
        .data_rx_eop_2(data_rx_eop_2),            //OUTPUT : End of Packet
1491
        .data_rx_data_2(data_rx_data_2),          //OUTPUT : Data from FIFO
1492
        .data_rx_error_2(data_rx_error_2),        //OUTPUT : Receive packet error
1493
        .data_rx_valid_2(data_rx_valid_2),        //OUTPUT : Data Receive FIFO Valid
1494
        .data_rx_ready_2(data_rx_ready_2),        //OUTPUT : Data Receive Ready
1495
        .pkt_class_data_2(pkt_class_data_2),      //OUTPUT : Frame Type Indication
1496
        .pkt_class_valid_2(pkt_class_valid_2),    //OUTPUT : Frame Type Indication Valid
1497
        .data_tx_error_2(data_tx_error_2),        //INPUT  : Status
1498
        .data_tx_data_2(data_tx_data_2),          //INPUT  : Data from FIFO transmit
1499
        .data_tx_valid_2(data_tx_valid_2),        //INPUT  : Data FIFO transmit Empty
1500
        .data_tx_sop_2(data_tx_sop_2),            //INPUT  : Start of Packet
1501
        .data_tx_eop_2(data_tx_eop_2),            //INPUT  : End of Packet
1502
        .data_tx_ready_2(data_tx_ready_2),        //OUTPUT : Data FIFO transmit Read Enable  
1503
        .tx_ff_uflow_2(tx_ff_uflow_2),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
1504
        .tx_crc_fwd_2(tx_crc_fwd_2),              //INPUT  : Forward Current Frame with CRC from Application
1505
        .xoff_gen_2(xoff_gen_2),                  //INPUT  : XOFF PAUSE FRAME GENERATE
1506
        .xon_gen_2(xon_gen_2),                    //INPUT  : XON PAUSE FRAME GENERATE
1507
        .magic_sleep_n_2(magic_sleep_n_2),        //INPUT  : MAC SLEEP MODE CONTROL
1508
        .magic_wakeup_2(magic_wakeup_2),          //OUTPUT : MAC WAKE-UP INDICATION
1509
 
1510
         // Channel 3 
1511
 
1512
        .tbi_rx_clk_3(tbi_rx_clk_3),              //INPUT  : Receive TBI Clock
1513
        .tbi_tx_clk_3(tbi_tx_clk_3),              //INPUT  : Transmit TBI Clock
1514
        .tbi_rx_d_3(tbi_rx_d_3),                  //INPUT  : Receive TBI Interface
1515
        .tbi_tx_d_3(tbi_tx_d_3),                  //OUTPUT : Transmit TBI Interface
1516
        .sd_loopback_3(sd_loopback_3),            //OUTPUT : SERDES Loopback Enable
1517
        .powerdown_3(pcs_pwrdn_out_sig[3]),       //OUTPUT : Powerdown Enable
1518
        .led_col_3(led_col_3),                    //OUTPUT : Collision Indication
1519
        .led_an_3(led_an_3),                      //OUTPUT : Auto Negotiation Status
1520
        .led_char_err_3(led_char_err_3),          //OUTPUT : Character error
1521
        .led_disp_err_3(led_disp_err_3),          //OUTPUT : Disparity error
1522
        .led_crs_3(led_crs_3),                    //OUTPUT : Carrier sense
1523
        .led_link_3(led_link_3),                  //OUTPUT : Valid link    
1524
        .mac_rx_clk_3(mac_rx_clk_3),              //OUTPUT : Av-ST Rx Clock
1525
        .mac_tx_clk_3(mac_tx_clk_3),              //OUTPUT : Av-ST Tx Clock
1526
        .data_rx_sop_3(data_rx_sop_3),            //OUTPUT : Start of Packet
1527
        .data_rx_eop_3(data_rx_eop_3),            //OUTPUT : End of Packet
1528
        .data_rx_data_3(data_rx_data_3),          //OUTPUT : Data from FIFO
1529
        .data_rx_error_3(data_rx_error_3),        //OUTPUT : Receive packet error
1530
        .data_rx_valid_3(data_rx_valid_3),        //OUTPUT : Data Receive FIFO Valid
1531
        .data_rx_ready_3(data_rx_ready_3),        //OUTPUT : Data Receive Ready
1532
        .pkt_class_data_3(pkt_class_data_3),      //OUTPUT : Frame Type Indication
1533
        .pkt_class_valid_3(pkt_class_valid_3),    //OUTPUT : Frame Type Indication Valid
1534
        .data_tx_error_3(data_tx_error_3),        //INPUT  : Status
1535
        .data_tx_data_3(data_tx_data_3),          //INPUT  : Data from FIFO transmit
1536
        .data_tx_valid_3(data_tx_valid_3),        //INPUT  : Data FIFO transmit Empty
1537
        .data_tx_sop_3(data_tx_sop_3),            //INPUT  : Start of Packet
1538
        .data_tx_eop_3(data_tx_eop_3),            //INPUT  : End of Packet
1539
        .data_tx_ready_3(data_tx_ready_3),        //OUTPUT : Data FIFO transmit Read Enable  
1540
        .tx_ff_uflow_3(tx_ff_uflow_3),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
1541
        .tx_crc_fwd_3(tx_crc_fwd_3),              //INPUT  : Forward Current Frame with CRC from Application
1542
        .xoff_gen_3(xoff_gen_3),                  //INPUT  : XOFF PAUSE FRAME GENERATE
1543
        .xon_gen_3(xon_gen_3),                    //INPUT  : XON PAUSE FRAME GENERATE
1544
        .magic_sleep_n_3(magic_sleep_n_3),        //INPUT  : MAC SLEEP MODE CONTROL
1545
        .magic_wakeup_3(magic_wakeup_3),          //OUTPUT : MAC WAKE-UP INDICATION
1546
 
1547
         // Channel 4 
1548
 
1549
        .tbi_rx_clk_4(tbi_rx_clk_4),              //INPUT  : Receive TBI Clock
1550
        .tbi_tx_clk_4(tbi_tx_clk_4),              //INPUT  : Transmit TBI Clock
1551
        .tbi_rx_d_4(tbi_rx_d_4),                  //INPUT  : Receive TBI Interface
1552
        .tbi_tx_d_4(tbi_tx_d_4),                  //OUTPUT : Transmit TBI Interface
1553
        .sd_loopback_4(sd_loopback_4),            //OUTPUT : SERDES Loopback Enable
1554
        .powerdown_4(pcs_pwrdn_out_sig[4]),       //OUTPUT : Powerdown Enable
1555
        .led_col_4(led_col_4),                    //OUTPUT : Collision Indication
1556
        .led_an_4(led_an_4),                      //OUTPUT : Auto Negotiation Status
1557
        .led_char_err_4(led_char_err_4),          //OUTPUT : Character error
1558
        .led_disp_err_4(led_disp_err_4),          //OUTPUT : Disparity error
1559
        .led_crs_4(led_crs_4),                    //OUTPUT : Carrier sense
1560
        .led_link_4(led_link_4),                  //OUTPUT : Valid link    
1561
        .mac_rx_clk_4(mac_rx_clk_4),              //OUTPUT : Av-ST Rx Clock
1562
        .mac_tx_clk_4(mac_tx_clk_4),              //OUTPUT : Av-ST Tx Clock
1563
        .data_rx_sop_4(data_rx_sop_4),            //OUTPUT : Start of Packet
1564
        .data_rx_eop_4(data_rx_eop_4),            //OUTPUT : End of Packet
1565
        .data_rx_data_4(data_rx_data_4),          //OUTPUT : Data from FIFO
1566
        .data_rx_error_4(data_rx_error_4),        //OUTPUT : Receive packet error
1567
        .data_rx_valid_4(data_rx_valid_4),        //OUTPUT : Data Receive FIFO Valid
1568
        .data_rx_ready_4(data_rx_ready_4),        //OUTPUT : Data Receive Ready
1569
        .pkt_class_data_4(pkt_class_data_4),      //OUTPUT : Frame Type Indication
1570
        .pkt_class_valid_4(pkt_class_valid_4),    //OUTPUT : Frame Type Indication Valid
1571
        .data_tx_error_4(data_tx_error_4),        //INPUT  : Status
1572
        .data_tx_data_4(data_tx_data_4),          //INPUT  : Data from FIFO transmit
1573
        .data_tx_valid_4(data_tx_valid_4),        //INPUT  : Data FIFO transmit Empty
1574
        .data_tx_sop_4(data_tx_sop_4),            //INPUT  : Start of Packet
1575
        .data_tx_eop_4(data_tx_eop_4),            //INPUT  : End of Packet
1576
        .data_tx_ready_4(data_tx_ready_4),        //OUTPUT : Data FIFO transmit Read Enable  
1577
        .tx_ff_uflow_4(tx_ff_uflow_4),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
1578
        .tx_crc_fwd_4(tx_crc_fwd_4),              //INPUT  : Forward Current Frame with CRC from Application
1579
        .xoff_gen_4(xoff_gen_4),                  //INPUT  : XOFF PAUSE FRAME GENERATE
1580
        .xon_gen_4(xon_gen_4),                    //INPUT  : XON PAUSE FRAME GENERATE
1581
        .magic_sleep_n_4(magic_sleep_n_4),        //INPUT  : MAC SLEEP MODE CONTROL
1582
        .magic_wakeup_4(magic_wakeup_4),          //OUTPUT : MAC WAKE-UP INDICATION
1583
 
1584
         // Channel 5 
1585
 
1586
        .tbi_rx_clk_5(tbi_rx_clk_5),              //INPUT  : Receive TBI Clock
1587
        .tbi_tx_clk_5(tbi_tx_clk_5),              //INPUT  : Transmit TBI Clock
1588
        .tbi_rx_d_5(tbi_rx_d_5),                  //INPUT  : Receive TBI Interface
1589
        .tbi_tx_d_5(tbi_tx_d_5),                  //OUTPUT : Transmit TBI Interface
1590
        .sd_loopback_5(sd_loopback_5),            //OUTPUT : SERDES Loopback Enable
1591
        .powerdown_5(pcs_pwrdn_out_sig[5]),       //OUTPUT : Powerdown Enable
1592
        .led_col_5(led_col_5),                    //OUTPUT : Collision Indication
1593
        .led_an_5(led_an_5),                      //OUTPUT : Auto Negotiation Status
1594
        .led_char_err_5(led_char_err_5),          //OUTPUT : Character error
1595
        .led_disp_err_5(led_disp_err_5),          //OUTPUT : Disparity error
1596
        .led_crs_5(led_crs_5),                    //OUTPUT : Carrier sense
1597
        .led_link_5(led_link_5),                  //OUTPUT : Valid link    
1598
        .mac_rx_clk_5(mac_rx_clk_5),              //OUTPUT : Av-ST Rx Clock
1599
        .mac_tx_clk_5(mac_tx_clk_5),              //OUTPUT : Av-ST Tx Clock
1600
        .data_rx_sop_5(data_rx_sop_5),            //OUTPUT : Start of Packet
1601
        .data_rx_eop_5(data_rx_eop_5),            //OUTPUT : End of Packet
1602
        .data_rx_data_5(data_rx_data_5),          //OUTPUT : Data from FIFO
1603
        .data_rx_error_5(data_rx_error_5),        //OUTPUT : Receive packet error
1604
        .data_rx_valid_5(data_rx_valid_5),        //OUTPUT : Data Receive FIFO Valid
1605
        .data_rx_ready_5(data_rx_ready_5),        //OUTPUT : Data Receive Ready
1606
        .pkt_class_data_5(pkt_class_data_5),      //OUTPUT : Frame Type Indication
1607
        .pkt_class_valid_5(pkt_class_valid_5),    //OUTPUT : Frame Type Indication Valid
1608
        .data_tx_error_5(data_tx_error_5),        //INPUT  : Status
1609
        .data_tx_data_5(data_tx_data_5),          //INPUT  : Data from FIFO transmit
1610
        .data_tx_valid_5(data_tx_valid_5),        //INPUT  : Data FIFO transmit Empty
1611
        .data_tx_sop_5(data_tx_sop_5),            //INPUT  : Start of Packet
1612
        .data_tx_eop_5(data_tx_eop_5),            //INPUT  : End of Packet
1613
        .data_tx_ready_5(data_tx_ready_5),        //OUTPUT : Data FIFO transmit Read Enable  
1614
        .tx_ff_uflow_5(tx_ff_uflow_5),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
1615
        .tx_crc_fwd_5(tx_crc_fwd_5),              //INPUT  : Forward Current Frame with CRC from Application
1616
        .xoff_gen_5(xoff_gen_5),                  //INPUT  : XOFF PAUSE FRAME GENERATE
1617
        .xon_gen_5(xon_gen_5),                    //INPUT  : XON PAUSE FRAME GENERATE
1618
        .magic_sleep_n_5(magic_sleep_n_5),        //INPUT  : MAC SLEEP MODE CONTROL
1619
        .magic_wakeup_5(magic_wakeup_5),          //OUTPUT : MAC WAKE-UP INDICATION
1620
 
1621
         // Channel 6 
1622
 
1623
        .tbi_rx_clk_6(tbi_rx_clk_6),              //INPUT  : Receive TBI Clock
1624
        .tbi_tx_clk_6(tbi_tx_clk_6),              //INPUT  : Transmit TBI Clock
1625
        .tbi_rx_d_6(tbi_rx_d_6),                  //INPUT  : Receive TBI Interface
1626
        .tbi_tx_d_6(tbi_tx_d_6),                  //OUTPUT : Transmit TBI Interface
1627
        .sd_loopback_6(sd_loopback_6),            //OUTPUT : SERDES Loopback Enable
1628
        .powerdown_6(pcs_pwrdn_out_sig[6]),       //OUTPUT : Powerdown Enable
1629
        .led_col_6(led_col_6),                    //OUTPUT : Collision Indication
1630
        .led_an_6(led_an_6),                      //OUTPUT : Auto Negotiation Status
1631
        .led_char_err_6(led_char_err_6),          //OUTPUT : Character error
1632
        .led_disp_err_6(led_disp_err_6),          //OUTPUT : Disparity error
1633
        .led_crs_6(led_crs_6),                    //OUTPUT : Carrier sense
1634
        .led_link_6(led_link_6),                  //OUTPUT : Valid link    
1635
        .mac_rx_clk_6(mac_rx_clk_6),              //OUTPUT : Av-ST Rx Clock
1636
        .mac_tx_clk_6(mac_tx_clk_6),              //OUTPUT : Av-ST Tx Clock
1637
        .data_rx_sop_6(data_rx_sop_6),            //OUTPUT : Start of Packet
1638
        .data_rx_eop_6(data_rx_eop_6),            //OUTPUT : End of Packet
1639
        .data_rx_data_6(data_rx_data_6),          //OUTPUT : Data from FIFO
1640
        .data_rx_error_6(data_rx_error_6),        //OUTPUT : Receive packet error
1641
        .data_rx_valid_6(data_rx_valid_6),        //OUTPUT : Data Receive FIFO Valid
1642
        .data_rx_ready_6(data_rx_ready_6),        //OUTPUT : Data Receive Ready
1643
        .pkt_class_data_6(pkt_class_data_6),      //OUTPUT : Frame Type Indication
1644
        .pkt_class_valid_6(pkt_class_valid_6),    //OUTPUT : Frame Type Indication Valid
1645
        .data_tx_error_6(data_tx_error_6),        //INPUT  : Status
1646
        .data_tx_data_6(data_tx_data_6),          //INPUT  : Data from FIFO transmit
1647
        .data_tx_valid_6(data_tx_valid_6),        //INPUT  : Data FIFO transmit Empty
1648
        .data_tx_sop_6(data_tx_sop_6),            //INPUT  : Start of Packet
1649
        .data_tx_eop_6(data_tx_eop_6),            //INPUT  : End of Packet
1650
        .data_tx_ready_6(data_tx_ready_6),        //OUTPUT : Data FIFO transmit Read Enable  
1651
        .tx_ff_uflow_6(tx_ff_uflow_6),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
1652
        .tx_crc_fwd_6(tx_crc_fwd_6),              //INPUT  : Forward Current Frame with CRC from Application
1653
        .xoff_gen_6(xoff_gen_6),                  //INPUT  : XOFF PAUSE FRAME GENERATE
1654
        .xon_gen_6(xon_gen_6),                    //INPUT  : XON PAUSE FRAME GENERATE
1655
        .magic_sleep_n_6(magic_sleep_n_6),        //INPUT  : MAC SLEEP MODE CONTROL
1656
        .magic_wakeup_6(magic_wakeup_6),          //OUTPUT : MAC WAKE-UP INDICATION
1657
 
1658
         // Channel 7 
1659
 
1660
        .tbi_rx_clk_7(tbi_rx_clk_7),              //INPUT  : Receive TBI Clock
1661
        .tbi_tx_clk_7(tbi_tx_clk_7),              //INPUT  : Transmit TBI Clock
1662
        .tbi_rx_d_7(tbi_rx_d_7),                  //INPUT  : Receive TBI Interface
1663
        .tbi_tx_d_7(tbi_tx_d_7),                  //OUTPUT : Transmit TBI Interface
1664
        .sd_loopback_7(sd_loopback_7),            //OUTPUT : SERDES Loopback Enable
1665
        .powerdown_7(pcs_pwrdn_out_sig[7]),       //OUTPUT : Powerdown Enable
1666
        .led_col_7(led_col_7),                    //OUTPUT : Collision Indication
1667
        .led_an_7(led_an_7),                      //OUTPUT : Auto Negotiation Status
1668
        .led_char_err_7(led_char_err_7),          //OUTPUT : Character error
1669
        .led_disp_err_7(led_disp_err_7),          //OUTPUT : Disparity error
1670
        .led_crs_7(led_crs_7),                    //OUTPUT : Carrier sense
1671
        .led_link_7(led_link_7),                  //OUTPUT : Valid link    
1672
        .mac_rx_clk_7(mac_rx_clk_7),              //OUTPUT : Av-ST Rx Clock
1673
        .mac_tx_clk_7(mac_tx_clk_7),              //OUTPUT : Av-ST Tx Clock
1674
        .data_rx_sop_7(data_rx_sop_7),            //OUTPUT : Start of Packet
1675
        .data_rx_eop_7(data_rx_eop_7),            //OUTPUT : End of Packet
1676
        .data_rx_data_7(data_rx_data_7),          //OUTPUT : Data from FIFO
1677
        .data_rx_error_7(data_rx_error_7),        //OUTPUT : Receive packet error
1678
        .data_rx_valid_7(data_rx_valid_7),        //OUTPUT : Data Receive FIFO Valid
1679
        .data_rx_ready_7(data_rx_ready_7),        //OUTPUT : Data Receive Ready
1680
        .pkt_class_data_7(pkt_class_data_7),      //OUTPUT : Frame Type Indication
1681
        .pkt_class_valid_7(pkt_class_valid_7),    //OUTPUT : Frame Type Indication Valid
1682
        .data_tx_error_7(data_tx_error_7),        //INPUT  : Status
1683
        .data_tx_data_7(data_tx_data_7),          //INPUT  : Data from FIFO transmit
1684
        .data_tx_valid_7(data_tx_valid_7),        //INPUT  : Data FIFO transmit Empty
1685
        .data_tx_sop_7(data_tx_sop_7),            //INPUT  : Start of Packet
1686
        .data_tx_eop_7(data_tx_eop_7),            //INPUT  : End of Packet
1687
        .data_tx_ready_7(data_tx_ready_7),        //OUTPUT : Data FIFO transmit Read Enable  
1688
        .tx_ff_uflow_7(tx_ff_uflow_7),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
1689
        .tx_crc_fwd_7(tx_crc_fwd_7),              //INPUT  : Forward Current Frame with CRC from Application
1690
        .xoff_gen_7(xoff_gen_7),                  //INPUT  : XOFF PAUSE FRAME GENERATE
1691
        .xon_gen_7(xon_gen_7),                    //INPUT  : XON PAUSE FRAME GENERATE
1692
        .magic_sleep_n_7(magic_sleep_n_7),        //INPUT  : MAC SLEEP MODE CONTROL
1693
        .magic_wakeup_7(magic_wakeup_7),          //OUTPUT : MAC WAKE-UP INDICATION
1694
 
1695
         // Channel 8 
1696
 
1697
        .tbi_rx_clk_8(tbi_rx_clk_8),              //INPUT  : Receive TBI Clock
1698
        .tbi_tx_clk_8(tbi_tx_clk_8),              //INPUT  : Transmit TBI Clock
1699
        .tbi_rx_d_8(tbi_rx_d_8),                  //INPUT  : Receive TBI Interface
1700
        .tbi_tx_d_8(tbi_tx_d_8),                  //OUTPUT : Transmit TBI Interface
1701
        .sd_loopback_8(sd_loopback_8),            //OUTPUT : SERDES Loopback Enable
1702
        .powerdown_8(pcs_pwrdn_out_sig[8]),       //OUTPUT : Powerdown Enable
1703
        .led_col_8(led_col_8),                    //OUTPUT : Collision Indication
1704
        .led_an_8(led_an_8),                      //OUTPUT : Auto Negotiation Status
1705
        .led_char_err_8(led_char_err_8),          //OUTPUT : Character error
1706
        .led_disp_err_8(led_disp_err_8),          //OUTPUT : Disparity error
1707
        .led_crs_8(led_crs_8),                    //OUTPUT : Carrier sense
1708
        .led_link_8(led_link_8),                  //OUTPUT : Valid link    
1709
        .mac_rx_clk_8(mac_rx_clk_8),              //OUTPUT : Av-ST Rx Clock
1710
        .mac_tx_clk_8(mac_tx_clk_8),              //OUTPUT : Av-ST Tx Clock
1711
        .data_rx_sop_8(data_rx_sop_8),            //OUTPUT : Start of Packet
1712
        .data_rx_eop_8(data_rx_eop_8),            //OUTPUT : End of Packet
1713
        .data_rx_data_8(data_rx_data_8),          //OUTPUT : Data from FIFO
1714
        .data_rx_error_8(data_rx_error_8),        //OUTPUT : Receive packet error
1715
        .data_rx_valid_8(data_rx_valid_8),        //OUTPUT : Data Receive FIFO Valid
1716
        .data_rx_ready_8(data_rx_ready_8),        //OUTPUT : Data Receive Ready
1717
        .pkt_class_data_8(pkt_class_data_8),      //OUTPUT : Frame Type Indication
1718
        .pkt_class_valid_8(pkt_class_valid_8),    //OUTPUT : Frame Type Indication Valid
1719
        .data_tx_error_8(data_tx_error_8),        //INPUT  : Status
1720
        .data_tx_data_8(data_tx_data_8),          //INPUT  : Data from FIFO transmit
1721
        .data_tx_valid_8(data_tx_valid_8),        //INPUT  : Data FIFO transmit Empty
1722
        .data_tx_sop_8(data_tx_sop_8),            //INPUT  : Start of Packet
1723
        .data_tx_eop_8(data_tx_eop_8),            //INPUT  : End of Packet
1724
        .data_tx_ready_8(data_tx_ready_8),        //OUTPUT : Data FIFO transmit Read Enable  
1725
        .tx_ff_uflow_8(tx_ff_uflow_8),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
1726
        .tx_crc_fwd_8(tx_crc_fwd_8),              //INPUT  : Forward Current Frame with CRC from Application
1727
        .xoff_gen_8(xoff_gen_8),                  //INPUT  : XOFF PAUSE FRAME GENERATE
1728
        .xon_gen_8(xon_gen_8),                    //INPUT  : XON PAUSE FRAME GENERATE
1729
        .magic_sleep_n_8(magic_sleep_n_8),        //INPUT  : MAC SLEEP MODE CONTROL
1730
        .magic_wakeup_8(magic_wakeup_8),          //OUTPUT : MAC WAKE-UP INDICATION
1731
 
1732
         // Channel 9 
1733
 
1734
        .tbi_rx_clk_9(tbi_rx_clk_9),              //INPUT  : Receive TBI Clock
1735
        .tbi_tx_clk_9(tbi_tx_clk_9),              //INPUT  : Transmit TBI Clock
1736
        .tbi_rx_d_9(tbi_rx_d_9),                  //INPUT  : Receive TBI Interface
1737
        .tbi_tx_d_9(tbi_tx_d_9),                  //OUTPUT : Transmit TBI Interface
1738
        .sd_loopback_9(sd_loopback_9),            //OUTPUT : SERDES Loopback Enable
1739
        .powerdown_9(pcs_pwrdn_out_sig[9]),       //OUTPUT : Powerdown Enable
1740
        .led_col_9(led_col_9),                    //OUTPUT : Collision Indication
1741
        .led_an_9(led_an_9),                      //OUTPUT : Auto Negotiation Status
1742
        .led_char_err_9(led_char_err_9),          //OUTPUT : Character error
1743
        .led_disp_err_9(led_disp_err_9),          //OUTPUT : Disparity error
1744
        .led_crs_9(led_crs_9),                    //OUTPUT : Carrier sense
1745
        .led_link_9(led_link_9),                  //OUTPUT : Valid link    
1746
        .mac_rx_clk_9(mac_rx_clk_9),              //OUTPUT : Av-ST Rx Clock
1747
        .mac_tx_clk_9(mac_tx_clk_9),              //OUTPUT : Av-ST Tx Clock
1748
        .data_rx_sop_9(data_rx_sop_9),            //OUTPUT : Start of Packet
1749
        .data_rx_eop_9(data_rx_eop_9),            //OUTPUT : End of Packet
1750
        .data_rx_data_9(data_rx_data_9),          //OUTPUT : Data from FIFO
1751
        .data_rx_error_9(data_rx_error_9),        //OUTPUT : Receive packet error
1752
        .data_rx_valid_9(data_rx_valid_9),        //OUTPUT : Data Receive FIFO Valid
1753
        .data_rx_ready_9(data_rx_ready_9),        //OUTPUT : Data Receive Ready
1754
        .pkt_class_data_9(pkt_class_data_9),      //OUTPUT : Frame Type Indication
1755
        .pkt_class_valid_9(pkt_class_valid_9),    //OUTPUT : Frame Type Indication Valid
1756
        .data_tx_error_9(data_tx_error_9),        //INPUT  : Status
1757
        .data_tx_data_9(data_tx_data_9),          //INPUT  : Data from FIFO transmit
1758
        .data_tx_valid_9(data_tx_valid_9),        //INPUT  : Data FIFO transmit Empty
1759
        .data_tx_sop_9(data_tx_sop_9),            //INPUT  : Start of Packet
1760
        .data_tx_eop_9(data_tx_eop_9),            //INPUT  : End of Packet
1761
        .data_tx_ready_9(data_tx_ready_9),        //OUTPUT : Data FIFO transmit Read Enable  
1762
        .tx_ff_uflow_9(tx_ff_uflow_9),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
1763
        .tx_crc_fwd_9(tx_crc_fwd_9),              //INPUT  : Forward Current Frame with CRC from Application
1764
        .xoff_gen_9(xoff_gen_9),                  //INPUT  : XOFF PAUSE FRAME GENERATE
1765
        .xon_gen_9(xon_gen_9),                    //INPUT  : XON PAUSE FRAME GENERATE
1766
        .magic_sleep_n_9(magic_sleep_n_9),        //INPUT  : MAC SLEEP MODE CONTROL
1767
        .magic_wakeup_9(magic_wakeup_9),          //OUTPUT : MAC WAKE-UP INDICATION
1768
 
1769
         // Channel 10 
1770
 
1771
        .tbi_rx_clk_10(tbi_rx_clk_10),              //INPUT  : Receive TBI Clock
1772
        .tbi_tx_clk_10(tbi_tx_clk_10),              //INPUT  : Transmit TBI Clock
1773
        .tbi_rx_d_10(tbi_rx_d_10),                  //INPUT  : Receive TBI Interface
1774
        .tbi_tx_d_10(tbi_tx_d_10),                  //OUTPUT : Transmit TBI Interface
1775
        .sd_loopback_10(sd_loopback_10),            //OUTPUT : SERDES Loopback Enable
1776
        .powerdown_10(pcs_pwrdn_out_sig[10]),       //OUTPUT : Powerdown Enable
1777
        .led_col_10(led_col_10),                    //OUTPUT : Collision Indication
1778
        .led_an_10(led_an_10),                      //OUTPUT : Auto Negotiation Status
1779
        .led_char_err_10(led_char_err_10),          //OUTPUT : Character error
1780
        .led_disp_err_10(led_disp_err_10),          //OUTPUT : Disparity error
1781
        .led_crs_10(led_crs_10),                    //OUTPUT : Carrier sense
1782
        .led_link_10(led_link_10),                  //OUTPUT : Valid link    
1783
        .mac_rx_clk_10(mac_rx_clk_10),              //OUTPUT : Av-ST Rx Clock
1784
        .mac_tx_clk_10(mac_tx_clk_10),              //OUTPUT : Av-ST Tx Clock
1785
        .data_rx_sop_10(data_rx_sop_10),            //OUTPUT : Start of Packet
1786
        .data_rx_eop_10(data_rx_eop_10),            //OUTPUT : End of Packet
1787
        .data_rx_data_10(data_rx_data_10),          //OUTPUT : Data from FIFO
1788
        .data_rx_error_10(data_rx_error_10),        //OUTPUT : Receive packet error
1789
        .data_rx_valid_10(data_rx_valid_10),        //OUTPUT : Data Receive FIFO Valid
1790
        .data_rx_ready_10(data_rx_ready_10),        //OUTPUT : Data Receive Ready
1791
        .pkt_class_data_10(pkt_class_data_10),      //OUTPUT : Frame Type Indication
1792
        .pkt_class_valid_10(pkt_class_valid_10),    //OUTPUT : Frame Type Indication Valid
1793
        .data_tx_error_10(data_tx_error_10),        //INPUT  : Status
1794
        .data_tx_data_10(data_tx_data_10),          //INPUT  : Data from FIFO transmit
1795
        .data_tx_valid_10(data_tx_valid_10),        //INPUT  : Data FIFO transmit Empty
1796
        .data_tx_sop_10(data_tx_sop_10),            //INPUT  : Start of Packet
1797
        .data_tx_eop_10(data_tx_eop_10),            //INPUT  : End of Packet
1798
        .data_tx_ready_10(data_tx_ready_10),        //OUTPUT : Data FIFO transmit Read Enable  
1799
        .tx_ff_uflow_10(tx_ff_uflow_10),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
1800
        .tx_crc_fwd_10(tx_crc_fwd_10),              //INPUT  : Forward Current Frame with CRC from Application
1801
        .xoff_gen_10(xoff_gen_10),                  //INPUT  : XOFF PAUSE FRAME GENERATE
1802
        .xon_gen_10(xon_gen_10),                    //INPUT  : XON PAUSE FRAME GENERATE
1803
        .magic_sleep_n_10(magic_sleep_n_10),        //INPUT  : MAC SLEEP MODE CONTROL
1804
        .magic_wakeup_10(magic_wakeup_10),          //OUTPUT : MAC WAKE-UP INDICATION
1805
 
1806
         // Channel 11 
1807
 
1808
        .tbi_rx_clk_11(tbi_rx_clk_11),              //INPUT  : Receive TBI Clock
1809
        .tbi_tx_clk_11(tbi_tx_clk_11),              //INPUT  : Transmit TBI Clock
1810
        .tbi_rx_d_11(tbi_rx_d_11),                  //INPUT  : Receive TBI Interface
1811
        .tbi_tx_d_11(tbi_tx_d_11),                  //OUTPUT : Transmit TBI Interface
1812
        .sd_loopback_11(sd_loopback_11),            //OUTPUT : SERDES Loopback Enable
1813
        .powerdown_11(pcs_pwrdn_out_sig[11]),       //OUTPUT : Powerdown Enable
1814
        .led_col_11(led_col_11),                    //OUTPUT : Collision Indication
1815
        .led_an_11(led_an_11),                      //OUTPUT : Auto Negotiation Status
1816
        .led_char_err_11(led_char_err_11),          //OUTPUT : Character error
1817
        .led_disp_err_11(led_disp_err_11),          //OUTPUT : Disparity error
1818
        .led_crs_11(led_crs_11),                    //OUTPUT : Carrier sense
1819
        .led_link_11(led_link_11),                  //OUTPUT : Valid link    
1820
        .mac_rx_clk_11(mac_rx_clk_11),              //OUTPUT : Av-ST Rx Clock
1821
        .mac_tx_clk_11(mac_tx_clk_11),              //OUTPUT : Av-ST Tx Clock
1822
        .data_rx_sop_11(data_rx_sop_11),            //OUTPUT : Start of Packet
1823
        .data_rx_eop_11(data_rx_eop_11),            //OUTPUT : End of Packet
1824
        .data_rx_data_11(data_rx_data_11),          //OUTPUT : Data from FIFO
1825
        .data_rx_error_11(data_rx_error_11),        //OUTPUT : Receive packet error
1826
        .data_rx_valid_11(data_rx_valid_11),        //OUTPUT : Data Receive FIFO Valid
1827
        .data_rx_ready_11(data_rx_ready_11),        //OUTPUT : Data Receive Ready
1828
        .pkt_class_data_11(pkt_class_data_11),      //OUTPUT : Frame Type Indication
1829
        .pkt_class_valid_11(pkt_class_valid_11),    //OUTPUT : Frame Type Indication Valid
1830
        .data_tx_error_11(data_tx_error_11),        //INPUT  : Status
1831
        .data_tx_data_11(data_tx_data_11),          //INPUT  : Data from FIFO transmit
1832
        .data_tx_valid_11(data_tx_valid_11),        //INPUT  : Data FIFO transmit Empty
1833
        .data_tx_sop_11(data_tx_sop_11),            //INPUT  : Start of Packet
1834
        .data_tx_eop_11(data_tx_eop_11),            //INPUT  : End of Packet
1835
        .data_tx_ready_11(data_tx_ready_11),        //OUTPUT : Data FIFO transmit Read Enable  
1836
        .tx_ff_uflow_11(tx_ff_uflow_11),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
1837
        .tx_crc_fwd_11(tx_crc_fwd_11),              //INPUT  : Forward Current Frame with CRC from Application
1838
        .xoff_gen_11(xoff_gen_11),                  //INPUT  : XOFF PAUSE FRAME GENERATE
1839
        .xon_gen_11(xon_gen_11),                    //INPUT  : XON PAUSE FRAME GENERATE
1840
        .magic_sleep_n_11(magic_sleep_n_11),        //INPUT  : MAC SLEEP MODE CONTROL
1841
        .magic_wakeup_11(magic_wakeup_11),          //OUTPUT : MAC WAKE-UP INDICATION
1842
 
1843
         // Channel 12 
1844
 
1845
        .tbi_rx_clk_12(tbi_rx_clk_12),              //INPUT  : Receive TBI Clock
1846
        .tbi_tx_clk_12(tbi_tx_clk_12),              //INPUT  : Transmit TBI Clock
1847
        .tbi_rx_d_12(tbi_rx_d_12),                  //INPUT  : Receive TBI Interface
1848
        .tbi_tx_d_12(tbi_tx_d_12),                  //OUTPUT : Transmit TBI Interface
1849
        .sd_loopback_12(sd_loopback_12),            //OUTPUT : SERDES Loopback Enable
1850
        .powerdown_12(pcs_pwrdn_out_sig[12]),       //OUTPUT : Powerdown Enable
1851
        .led_col_12(led_col_12),                    //OUTPUT : Collision Indication
1852
        .led_an_12(led_an_12),                      //OUTPUT : Auto Negotiation Status
1853
        .led_char_err_12(led_char_err_12),          //OUTPUT : Character error
1854
        .led_disp_err_12(led_disp_err_12),          //OUTPUT : Disparity error
1855
        .led_crs_12(led_crs_12),                    //OUTPUT : Carrier sense
1856
        .led_link_12(led_link_12),                  //OUTPUT : Valid link    
1857
        .mac_rx_clk_12(mac_rx_clk_12),              //OUTPUT : Av-ST Rx Clock
1858
        .mac_tx_clk_12(mac_tx_clk_12),              //OUTPUT : Av-ST Tx Clock
1859
        .data_rx_sop_12(data_rx_sop_12),            //OUTPUT : Start of Packet
1860
        .data_rx_eop_12(data_rx_eop_12),            //OUTPUT : End of Packet
1861
        .data_rx_data_12(data_rx_data_12),          //OUTPUT : Data from FIFO
1862
        .data_rx_error_12(data_rx_error_12),        //OUTPUT : Receive packet error
1863
        .data_rx_valid_12(data_rx_valid_12),        //OUTPUT : Data Receive FIFO Valid
1864
        .data_rx_ready_12(data_rx_ready_12),        //OUTPUT : Data Receive Ready
1865
        .pkt_class_data_12(pkt_class_data_12),      //OUTPUT : Frame Type Indication
1866
        .pkt_class_valid_12(pkt_class_valid_12),    //OUTPUT : Frame Type Indication Valid
1867
        .data_tx_error_12(data_tx_error_12),        //INPUT  : Status
1868
        .data_tx_data_12(data_tx_data_12),          //INPUT  : Data from FIFO transmit
1869
        .data_tx_valid_12(data_tx_valid_12),        //INPUT  : Data FIFO transmit Empty
1870
        .data_tx_sop_12(data_tx_sop_12),            //INPUT  : Start of Packet
1871
        .data_tx_eop_12(data_tx_eop_12),            //INPUT  : End of Packet
1872
        .data_tx_ready_12(data_tx_ready_12),        //OUTPUT : Data FIFO transmit Read Enable  
1873
        .tx_ff_uflow_12(tx_ff_uflow_12),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
1874
        .tx_crc_fwd_12(tx_crc_fwd_12),              //INPUT  : Forward Current Frame with CRC from Application
1875
        .xoff_gen_12(xoff_gen_12),                  //INPUT  : XOFF PAUSE FRAME GENERATE
1876
        .xon_gen_12(xon_gen_12),                    //INPUT  : XON PAUSE FRAME GENERATE
1877
        .magic_sleep_n_12(magic_sleep_n_12),        //INPUT  : MAC SLEEP MODE CONTROL
1878
        .magic_wakeup_12(magic_wakeup_12),          //OUTPUT : MAC WAKE-UP INDICATION
1879
 
1880
         // Channel 13 
1881
 
1882
        .tbi_rx_clk_13(tbi_rx_clk_13),              //INPUT  : Receive TBI Clock
1883
        .tbi_tx_clk_13(tbi_tx_clk_13),              //INPUT  : Transmit TBI Clock
1884
        .tbi_rx_d_13(tbi_rx_d_13),                  //INPUT  : Receive TBI Interface
1885
        .tbi_tx_d_13(tbi_tx_d_13),                  //OUTPUT : Transmit TBI Interface
1886
        .sd_loopback_13(sd_loopback_13),            //OUTPUT : SERDES Loopback Enable
1887
        .powerdown_13(pcs_pwrdn_out_sig[13]),       //OUTPUT : Powerdown Enable
1888
        .led_col_13(led_col_13),                    //OUTPUT : Collision Indication
1889
        .led_an_13(led_an_13),                      //OUTPUT : Auto Negotiation Status
1890
        .led_char_err_13(led_char_err_13),          //OUTPUT : Character error
1891
        .led_disp_err_13(led_disp_err_13),          //OUTPUT : Disparity error
1892
        .led_crs_13(led_crs_13),                    //OUTPUT : Carrier sense
1893
        .led_link_13(led_link_13),                  //OUTPUT : Valid link    
1894
        .mac_rx_clk_13(mac_rx_clk_13),              //OUTPUT : Av-ST Rx Clock
1895
        .mac_tx_clk_13(mac_tx_clk_13),              //OUTPUT : Av-ST Tx Clock
1896
        .data_rx_sop_13(data_rx_sop_13),            //OUTPUT : Start of Packet
1897
        .data_rx_eop_13(data_rx_eop_13),            //OUTPUT : End of Packet
1898
        .data_rx_data_13(data_rx_data_13),          //OUTPUT : Data from FIFO
1899
        .data_rx_error_13(data_rx_error_13),        //OUTPUT : Receive packet error
1900
        .data_rx_valid_13(data_rx_valid_13),        //OUTPUT : Data Receive FIFO Valid
1901
        .data_rx_ready_13(data_rx_ready_13),        //OUTPUT : Data Receive Ready
1902
        .pkt_class_data_13(pkt_class_data_13),      //OUTPUT : Frame Type Indication
1903
        .pkt_class_valid_13(pkt_class_valid_13),    //OUTPUT : Frame Type Indication Valid
1904
        .data_tx_error_13(data_tx_error_13),        //INPUT  : Status
1905
        .data_tx_data_13(data_tx_data_13),          //INPUT  : Data from FIFO transmit
1906
        .data_tx_valid_13(data_tx_valid_13),        //INPUT  : Data FIFO transmit Empty
1907
        .data_tx_sop_13(data_tx_sop_13),            //INPUT  : Start of Packet
1908
        .data_tx_eop_13(data_tx_eop_13),            //INPUT  : End of Packet
1909
        .data_tx_ready_13(data_tx_ready_13),        //OUTPUT : Data FIFO transmit Read Enable  
1910
        .tx_ff_uflow_13(tx_ff_uflow_13),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
1911
        .tx_crc_fwd_13(tx_crc_fwd_13),              //INPUT  : Forward Current Frame with CRC from Application
1912
        .xoff_gen_13(xoff_gen_13),                  //INPUT  : XOFF PAUSE FRAME GENERATE
1913
        .xon_gen_13(xon_gen_13),                    //INPUT  : XON PAUSE FRAME GENERATE
1914
        .magic_sleep_n_13(magic_sleep_n_13),        //INPUT  : MAC SLEEP MODE CONTROL
1915
        .magic_wakeup_13(magic_wakeup_13),          //OUTPUT : MAC WAKE-UP INDICATION
1916
 
1917
         // Channel 14 
1918
 
1919
        .tbi_rx_clk_14(tbi_rx_clk_14),              //INPUT  : Receive TBI Clock
1920
        .tbi_tx_clk_14(tbi_tx_clk_14),              //INPUT  : Transmit TBI Clock
1921
        .tbi_rx_d_14(tbi_rx_d_14),                  //INPUT  : Receive TBI Interface
1922
        .tbi_tx_d_14(tbi_tx_d_14),                  //OUTPUT : Transmit TBI Interface
1923
        .sd_loopback_14(sd_loopback_14),            //OUTPUT : SERDES Loopback Enable
1924
        .powerdown_14(pcs_pwrdn_out_sig[14]),       //OUTPUT : Powerdown Enable
1925
        .led_col_14(led_col_14),                    //OUTPUT : Collision Indication
1926
        .led_an_14(led_an_14),                      //OUTPUT : Auto Negotiation Status
1927
        .led_char_err_14(led_char_err_14),          //OUTPUT : Character error
1928
        .led_disp_err_14(led_disp_err_14),          //OUTPUT : Disparity error
1929
        .led_crs_14(led_crs_14),                    //OUTPUT : Carrier sense
1930
        .led_link_14(led_link_14),                  //OUTPUT : Valid link    
1931
        .mac_rx_clk_14(mac_rx_clk_14),              //OUTPUT : Av-ST Rx Clock
1932
        .mac_tx_clk_14(mac_tx_clk_14),              //OUTPUT : Av-ST Tx Clock
1933
        .data_rx_sop_14(data_rx_sop_14),            //OUTPUT : Start of Packet
1934
        .data_rx_eop_14(data_rx_eop_14),            //OUTPUT : End of Packet
1935
        .data_rx_data_14(data_rx_data_14),          //OUTPUT : Data from FIFO
1936
        .data_rx_error_14(data_rx_error_14),        //OUTPUT : Receive packet error
1937
        .data_rx_valid_14(data_rx_valid_14),        //OUTPUT : Data Receive FIFO Valid
1938
        .data_rx_ready_14(data_rx_ready_14),        //OUTPUT : Data Receive Ready
1939
        .pkt_class_data_14(pkt_class_data_14),      //OUTPUT : Frame Type Indication
1940
        .pkt_class_valid_14(pkt_class_valid_14),    //OUTPUT : Frame Type Indication Valid
1941
        .data_tx_error_14(data_tx_error_14),        //INPUT  : Status
1942
        .data_tx_data_14(data_tx_data_14),          //INPUT  : Data from FIFO transmit
1943
        .data_tx_valid_14(data_tx_valid_14),        //INPUT  : Data FIFO transmit Empty
1944
        .data_tx_sop_14(data_tx_sop_14),            //INPUT  : Start of Packet
1945
        .data_tx_eop_14(data_tx_eop_14),            //INPUT  : End of Packet
1946
        .data_tx_ready_14(data_tx_ready_14),        //OUTPUT : Data FIFO transmit Read Enable  
1947
        .tx_ff_uflow_14(tx_ff_uflow_14),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
1948
        .tx_crc_fwd_14(tx_crc_fwd_14),              //INPUT  : Forward Current Frame with CRC from Application
1949
        .xoff_gen_14(xoff_gen_14),                  //INPUT  : XOFF PAUSE FRAME GENERATE
1950
        .xon_gen_14(xon_gen_14),                    //INPUT  : XON PAUSE FRAME GENERATE
1951
        .magic_sleep_n_14(magic_sleep_n_14),        //INPUT  : MAC SLEEP MODE CONTROL
1952
        .magic_wakeup_14(magic_wakeup_14),          //OUTPUT : MAC WAKE-UP INDICATION
1953
 
1954
         // Channel 15 
1955
 
1956
        .tbi_rx_clk_15(tbi_rx_clk_15),              //INPUT  : Receive TBI Clock
1957
        .tbi_tx_clk_15(tbi_tx_clk_15),              //INPUT  : Transmit TBI Clock
1958
        .tbi_rx_d_15(tbi_rx_d_15),                  //INPUT  : Receive TBI Interface
1959
        .tbi_tx_d_15(tbi_tx_d_15),                  //OUTPUT : Transmit TBI Interface
1960
        .sd_loopback_15(sd_loopback_15),            //OUTPUT : SERDES Loopback Enable
1961
        .powerdown_15(pcs_pwrdn_out_sig[15]),       //OUTPUT : Powerdown Enable
1962
        .led_col_15(led_col_15),                    //OUTPUT : Collision Indication
1963
        .led_an_15(led_an_15),                      //OUTPUT : Auto Negotiation Status
1964
        .led_char_err_15(led_char_err_15),          //OUTPUT : Character error
1965
        .led_disp_err_15(led_disp_err_15),          //OUTPUT : Disparity error
1966
        .led_crs_15(led_crs_15),                    //OUTPUT : Carrier sense
1967
        .led_link_15(led_link_15),                  //OUTPUT : Valid link    
1968
        .mac_rx_clk_15(mac_rx_clk_15),              //OUTPUT : Av-ST Rx Clock
1969
        .mac_tx_clk_15(mac_tx_clk_15),              //OUTPUT : Av-ST Tx Clock
1970
        .data_rx_sop_15(data_rx_sop_15),            //OUTPUT : Start of Packet
1971
        .data_rx_eop_15(data_rx_eop_15),            //OUTPUT : End of Packet
1972
        .data_rx_data_15(data_rx_data_15),          //OUTPUT : Data from FIFO
1973
        .data_rx_error_15(data_rx_error_15),        //OUTPUT : Receive packet error
1974
        .data_rx_valid_15(data_rx_valid_15),        //OUTPUT : Data Receive FIFO Valid
1975
        .data_rx_ready_15(data_rx_ready_15),        //OUTPUT : Data Receive Ready
1976
        .pkt_class_data_15(pkt_class_data_15),      //OUTPUT : Frame Type Indication
1977
        .pkt_class_valid_15(pkt_class_valid_15),    //OUTPUT : Frame Type Indication Valid
1978
        .data_tx_error_15(data_tx_error_15),        //INPUT  : Status
1979
        .data_tx_data_15(data_tx_data_15),          //INPUT  : Data from FIFO transmit
1980
        .data_tx_valid_15(data_tx_valid_15),        //INPUT  : Data FIFO transmit Empty
1981
        .data_tx_sop_15(data_tx_sop_15),            //INPUT  : Start of Packet
1982
        .data_tx_eop_15(data_tx_eop_15),            //INPUT  : End of Packet
1983
        .data_tx_ready_15(data_tx_ready_15),        //OUTPUT : Data FIFO transmit Read Enable  
1984
        .tx_ff_uflow_15(tx_ff_uflow_15),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
1985
        .tx_crc_fwd_15(tx_crc_fwd_15),              //INPUT  : Forward Current Frame with CRC from Application
1986
        .xoff_gen_15(xoff_gen_15),                  //INPUT  : XOFF PAUSE FRAME GENERATE
1987
        .xon_gen_15(xon_gen_15),                    //INPUT  : XON PAUSE FRAME GENERATE
1988
        .magic_sleep_n_15(magic_sleep_n_15),        //INPUT  : MAC SLEEP MODE CONTROL
1989
        .magic_wakeup_15(magic_wakeup_15),          //OUTPUT : MAC WAKE-UP INDICATION
1990
 
1991
         // Channel 16 
1992
 
1993
        .tbi_rx_clk_16(tbi_rx_clk_16),              //INPUT  : Receive TBI Clock
1994
        .tbi_tx_clk_16(tbi_tx_clk_16),              //INPUT  : Transmit TBI Clock
1995
        .tbi_rx_d_16(tbi_rx_d_16),                  //INPUT  : Receive TBI Interface
1996
        .tbi_tx_d_16(tbi_tx_d_16),                  //OUTPUT : Transmit TBI Interface
1997
        .sd_loopback_16(sd_loopback_16),            //OUTPUT : SERDES Loopback Enable
1998
        .powerdown_16(pcs_pwrdn_out_sig[16]),       //OUTPUT : Powerdown Enable
1999
        .led_col_16(led_col_16),                    //OUTPUT : Collision Indication
2000
        .led_an_16(led_an_16),                      //OUTPUT : Auto Negotiation Status
2001
        .led_char_err_16(led_char_err_16),          //OUTPUT : Character error
2002
        .led_disp_err_16(led_disp_err_16),          //OUTPUT : Disparity error
2003
        .led_crs_16(led_crs_16),                    //OUTPUT : Carrier sense
2004
        .led_link_16(led_link_16),                  //OUTPUT : Valid link    
2005
        .mac_rx_clk_16(mac_rx_clk_16),              //OUTPUT : Av-ST Rx Clock
2006
        .mac_tx_clk_16(mac_tx_clk_16),              //OUTPUT : Av-ST Tx Clock
2007
        .data_rx_sop_16(data_rx_sop_16),            //OUTPUT : Start of Packet
2008
        .data_rx_eop_16(data_rx_eop_16),            //OUTPUT : End of Packet
2009
        .data_rx_data_16(data_rx_data_16),          //OUTPUT : Data from FIFO
2010
        .data_rx_error_16(data_rx_error_16),        //OUTPUT : Receive packet error
2011
        .data_rx_valid_16(data_rx_valid_16),        //OUTPUT : Data Receive FIFO Valid
2012
        .data_rx_ready_16(data_rx_ready_16),        //OUTPUT : Data Receive Ready
2013
        .pkt_class_data_16(pkt_class_data_16),      //OUTPUT : Frame Type Indication
2014
        .pkt_class_valid_16(pkt_class_valid_16),    //OUTPUT : Frame Type Indication Valid
2015
        .data_tx_error_16(data_tx_error_16),        //INPUT  : Status
2016
        .data_tx_data_16(data_tx_data_16),          //INPUT  : Data from FIFO transmit
2017
        .data_tx_valid_16(data_tx_valid_16),        //INPUT  : Data FIFO transmit Empty
2018
        .data_tx_sop_16(data_tx_sop_16),            //INPUT  : Start of Packet
2019
        .data_tx_eop_16(data_tx_eop_16),            //INPUT  : End of Packet
2020
        .data_tx_ready_16(data_tx_ready_16),        //OUTPUT : Data FIFO transmit Read Enable  
2021
        .tx_ff_uflow_16(tx_ff_uflow_16),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
2022
        .tx_crc_fwd_16(tx_crc_fwd_16),              //INPUT  : Forward Current Frame with CRC from Application
2023
        .xoff_gen_16(xoff_gen_16),                  //INPUT  : XOFF PAUSE FRAME GENERATE
2024
        .xon_gen_16(xon_gen_16),                    //INPUT  : XON PAUSE FRAME GENERATE
2025
        .magic_sleep_n_16(magic_sleep_n_16),        //INPUT  : MAC SLEEP MODE CONTROL
2026
        .magic_wakeup_16(magic_wakeup_16),          //OUTPUT : MAC WAKE-UP INDICATION
2027
 
2028
         // Channel 17 
2029
 
2030
        .tbi_rx_clk_17(tbi_rx_clk_17),              //INPUT  : Receive TBI Clock
2031
        .tbi_tx_clk_17(tbi_tx_clk_17),              //INPUT  : Transmit TBI Clock
2032
        .tbi_rx_d_17(tbi_rx_d_17),                  //INPUT  : Receive TBI Interface
2033
        .tbi_tx_d_17(tbi_tx_d_17),                  //OUTPUT : Transmit TBI Interface
2034
        .sd_loopback_17(sd_loopback_17),            //OUTPUT : SERDES Loopback Enable
2035
        .powerdown_17(pcs_pwrdn_out_sig[17]),       //OUTPUT : Powerdown Enable
2036
        .led_col_17(led_col_17),                    //OUTPUT : Collision Indication
2037
        .led_an_17(led_an_17),                      //OUTPUT : Auto Negotiation Status
2038
        .led_char_err_17(led_char_err_17),          //OUTPUT : Character error
2039
        .led_disp_err_17(led_disp_err_17),          //OUTPUT : Disparity error
2040
        .led_crs_17(led_crs_17),                    //OUTPUT : Carrier sense
2041
        .led_link_17(led_link_17),                  //OUTPUT : Valid link    
2042
        .mac_rx_clk_17(mac_rx_clk_17),              //OUTPUT : Av-ST Rx Clock
2043
        .mac_tx_clk_17(mac_tx_clk_17),              //OUTPUT : Av-ST Tx Clock
2044
        .data_rx_sop_17(data_rx_sop_17),            //OUTPUT : Start of Packet
2045
        .data_rx_eop_17(data_rx_eop_17),            //OUTPUT : End of Packet
2046
        .data_rx_data_17(data_rx_data_17),          //OUTPUT : Data from FIFO
2047
        .data_rx_error_17(data_rx_error_17),        //OUTPUT : Receive packet error
2048
        .data_rx_valid_17(data_rx_valid_17),        //OUTPUT : Data Receive FIFO Valid
2049
        .data_rx_ready_17(data_rx_ready_17),        //OUTPUT : Data Receive Ready
2050
        .pkt_class_data_17(pkt_class_data_17),      //OUTPUT : Frame Type Indication
2051
        .pkt_class_valid_17(pkt_class_valid_17),    //OUTPUT : Frame Type Indication Valid
2052
        .data_tx_error_17(data_tx_error_17),        //INPUT  : Status
2053
        .data_tx_data_17(data_tx_data_17),          //INPUT  : Data from FIFO transmit
2054
        .data_tx_valid_17(data_tx_valid_17),        //INPUT  : Data FIFO transmit Empty
2055
        .data_tx_sop_17(data_tx_sop_17),            //INPUT  : Start of Packet
2056
        .data_tx_eop_17(data_tx_eop_17),            //INPUT  : End of Packet
2057
        .data_tx_ready_17(data_tx_ready_17),        //OUTPUT : Data FIFO transmit Read Enable  
2058
        .tx_ff_uflow_17(tx_ff_uflow_17),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
2059
        .tx_crc_fwd_17(tx_crc_fwd_17),              //INPUT  : Forward Current Frame with CRC from Application
2060
        .xoff_gen_17(xoff_gen_17),                  //INPUT  : XOFF PAUSE FRAME GENERATE
2061
        .xon_gen_17(xon_gen_17),                    //INPUT  : XON PAUSE FRAME GENERATE
2062
        .magic_sleep_n_17(magic_sleep_n_17),        //INPUT  : MAC SLEEP MODE CONTROL
2063
        .magic_wakeup_17(magic_wakeup_17),          //OUTPUT : MAC WAKE-UP INDICATION
2064
 
2065
         // Channel 18 
2066
 
2067
        .tbi_rx_clk_18(tbi_rx_clk_18),              //INPUT  : Receive TBI Clock
2068
        .tbi_tx_clk_18(tbi_tx_clk_18),              //INPUT  : Transmit TBI Clock
2069
        .tbi_rx_d_18(tbi_rx_d_18),                  //INPUT  : Receive TBI Interface
2070
        .tbi_tx_d_18(tbi_tx_d_18),                  //OUTPUT : Transmit TBI Interface
2071
        .sd_loopback_18(sd_loopback_18),            //OUTPUT : SERDES Loopback Enable
2072
        .powerdown_18(pcs_pwrdn_out_sig[18]),       //OUTPUT : Powerdown Enable
2073
        .led_col_18(led_col_18),                    //OUTPUT : Collision Indication
2074
        .led_an_18(led_an_18),                      //OUTPUT : Auto Negotiation Status
2075
        .led_char_err_18(led_char_err_18),          //OUTPUT : Character error
2076
        .led_disp_err_18(led_disp_err_18),          //OUTPUT : Disparity error
2077
        .led_crs_18(led_crs_18),                    //OUTPUT : Carrier sense
2078
        .led_link_18(led_link_18),                  //OUTPUT : Valid link    
2079
        .mac_rx_clk_18(mac_rx_clk_18),              //OUTPUT : Av-ST Rx Clock
2080
        .mac_tx_clk_18(mac_tx_clk_18),              //OUTPUT : Av-ST Tx Clock
2081
        .data_rx_sop_18(data_rx_sop_18),            //OUTPUT : Start of Packet
2082
        .data_rx_eop_18(data_rx_eop_18),            //OUTPUT : End of Packet
2083
        .data_rx_data_18(data_rx_data_18),          //OUTPUT : Data from FIFO
2084
        .data_rx_error_18(data_rx_error_18),        //OUTPUT : Receive packet error
2085
        .data_rx_valid_18(data_rx_valid_18),        //OUTPUT : Data Receive FIFO Valid
2086
        .data_rx_ready_18(data_rx_ready_18),        //OUTPUT : Data Receive Ready
2087
        .pkt_class_data_18(pkt_class_data_18),      //OUTPUT : Frame Type Indication
2088
        .pkt_class_valid_18(pkt_class_valid_18),    //OUTPUT : Frame Type Indication Valid
2089
        .data_tx_error_18(data_tx_error_18),        //INPUT  : Status
2090
        .data_tx_data_18(data_tx_data_18),          //INPUT  : Data from FIFO transmit
2091
        .data_tx_valid_18(data_tx_valid_18),        //INPUT  : Data FIFO transmit Empty
2092
        .data_tx_sop_18(data_tx_sop_18),            //INPUT  : Start of Packet
2093
        .data_tx_eop_18(data_tx_eop_18),            //INPUT  : End of Packet
2094
        .data_tx_ready_18(data_tx_ready_18),        //OUTPUT : Data FIFO transmit Read Enable  
2095
        .tx_ff_uflow_18(tx_ff_uflow_18),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
2096
        .tx_crc_fwd_18(tx_crc_fwd_18),              //INPUT  : Forward Current Frame with CRC from Application
2097
        .xoff_gen_18(xoff_gen_18),                  //INPUT  : XOFF PAUSE FRAME GENERATE
2098
        .xon_gen_18(xon_gen_18),                    //INPUT  : XON PAUSE FRAME GENERATE
2099
        .magic_sleep_n_18(magic_sleep_n_18),        //INPUT  : MAC SLEEP MODE CONTROL
2100
        .magic_wakeup_18(magic_wakeup_18),          //OUTPUT : MAC WAKE-UP INDICATION
2101
 
2102
         // Channel 19 
2103
 
2104
        .tbi_rx_clk_19(tbi_rx_clk_19),              //INPUT  : Receive TBI Clock
2105
        .tbi_tx_clk_19(tbi_tx_clk_19),              //INPUT  : Transmit TBI Clock
2106
        .tbi_rx_d_19(tbi_rx_d_19),                  //INPUT  : Receive TBI Interface
2107
        .tbi_tx_d_19(tbi_tx_d_19),                  //OUTPUT : Transmit TBI Interface
2108
        .sd_loopback_19(sd_loopback_19),            //OUTPUT : SERDES Loopback Enable
2109
        .powerdown_19(pcs_pwrdn_out_sig[19]),       //OUTPUT : Powerdown Enable
2110
        .led_col_19(led_col_19),                    //OUTPUT : Collision Indication
2111
        .led_an_19(led_an_19),                      //OUTPUT : Auto Negotiation Status
2112
        .led_char_err_19(led_char_err_19),          //OUTPUT : Character error
2113
        .led_disp_err_19(led_disp_err_19),          //OUTPUT : Disparity error
2114
        .led_crs_19(led_crs_19),                    //OUTPUT : Carrier sense
2115
        .led_link_19(led_link_19),                  //OUTPUT : Valid link    
2116
        .mac_rx_clk_19(mac_rx_clk_19),              //OUTPUT : Av-ST Rx Clock
2117
        .mac_tx_clk_19(mac_tx_clk_19),              //OUTPUT : Av-ST Tx Clock
2118
        .data_rx_sop_19(data_rx_sop_19),            //OUTPUT : Start of Packet
2119
        .data_rx_eop_19(data_rx_eop_19),            //OUTPUT : End of Packet
2120
        .data_rx_data_19(data_rx_data_19),          //OUTPUT : Data from FIFO
2121
        .data_rx_error_19(data_rx_error_19),        //OUTPUT : Receive packet error
2122
        .data_rx_valid_19(data_rx_valid_19),        //OUTPUT : Data Receive FIFO Valid
2123
        .data_rx_ready_19(data_rx_ready_19),        //OUTPUT : Data Receive Ready
2124
        .pkt_class_data_19(pkt_class_data_19),      //OUTPUT : Frame Type Indication
2125
        .pkt_class_valid_19(pkt_class_valid_19),    //OUTPUT : Frame Type Indication Valid
2126
        .data_tx_error_19(data_tx_error_19),        //INPUT  : Status
2127
        .data_tx_data_19(data_tx_data_19),          //INPUT  : Data from FIFO transmit
2128
        .data_tx_valid_19(data_tx_valid_19),        //INPUT  : Data FIFO transmit Empty
2129
        .data_tx_sop_19(data_tx_sop_19),            //INPUT  : Start of Packet
2130
        .data_tx_eop_19(data_tx_eop_19),            //INPUT  : End of Packet
2131
        .data_tx_ready_19(data_tx_ready_19),        //OUTPUT : Data FIFO transmit Read Enable  
2132
        .tx_ff_uflow_19(tx_ff_uflow_19),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
2133
        .tx_crc_fwd_19(tx_crc_fwd_19),              //INPUT  : Forward Current Frame with CRC from Application
2134
        .xoff_gen_19(xoff_gen_19),                  //INPUT  : XOFF PAUSE FRAME GENERATE
2135
        .xon_gen_19(xon_gen_19),                    //INPUT  : XON PAUSE FRAME GENERATE
2136
        .magic_sleep_n_19(magic_sleep_n_19),        //INPUT  : MAC SLEEP MODE CONTROL
2137
        .magic_wakeup_19(magic_wakeup_19),          //OUTPUT : MAC WAKE-UP INDICATION
2138
 
2139
         // Channel 20 
2140
 
2141
        .tbi_rx_clk_20(tbi_rx_clk_20),              //INPUT  : Receive TBI Clock
2142
        .tbi_tx_clk_20(tbi_tx_clk_20),              //INPUT  : Transmit TBI Clock
2143
        .tbi_rx_d_20(tbi_rx_d_20),                  //INPUT  : Receive TBI Interface
2144
        .tbi_tx_d_20(tbi_tx_d_20),                  //OUTPUT : Transmit TBI Interface
2145
        .sd_loopback_20(sd_loopback_20),            //OUTPUT : SERDES Loopback Enable
2146
        .powerdown_20(pcs_pwrdn_out_sig[20]),       //OUTPUT : Powerdown Enable
2147
        .led_col_20(led_col_20),                    //OUTPUT : Collision Indication
2148
        .led_an_20(led_an_20),                      //OUTPUT : Auto Negotiation Status
2149
        .led_char_err_20(led_char_err_20),          //OUTPUT : Character error
2150
        .led_disp_err_20(led_disp_err_20),          //OUTPUT : Disparity error
2151
        .led_crs_20(led_crs_20),                    //OUTPUT : Carrier sense
2152
        .led_link_20(led_link_20),                  //OUTPUT : Valid link    
2153
        .mac_rx_clk_20(mac_rx_clk_20),              //OUTPUT : Av-ST Rx Clock
2154
        .mac_tx_clk_20(mac_tx_clk_20),              //OUTPUT : Av-ST Tx Clock
2155
        .data_rx_sop_20(data_rx_sop_20),            //OUTPUT : Start of Packet
2156
        .data_rx_eop_20(data_rx_eop_20),            //OUTPUT : End of Packet
2157
        .data_rx_data_20(data_rx_data_20),          //OUTPUT : Data from FIFO
2158
        .data_rx_error_20(data_rx_error_20),        //OUTPUT : Receive packet error
2159
        .data_rx_valid_20(data_rx_valid_20),        //OUTPUT : Data Receive FIFO Valid
2160
        .data_rx_ready_20(data_rx_ready_20),        //OUTPUT : Data Receive Ready
2161
        .pkt_class_data_20(pkt_class_data_20),      //OUTPUT : Frame Type Indication
2162
        .pkt_class_valid_20(pkt_class_valid_20),    //OUTPUT : Frame Type Indication Valid
2163
        .data_tx_error_20(data_tx_error_20),        //INPUT  : Status
2164
        .data_tx_data_20(data_tx_data_20),          //INPUT  : Data from FIFO transmit
2165
        .data_tx_valid_20(data_tx_valid_20),        //INPUT  : Data FIFO transmit Empty
2166
        .data_tx_sop_20(data_tx_sop_20),            //INPUT  : Start of Packet
2167
        .data_tx_eop_20(data_tx_eop_20),            //INPUT  : End of Packet
2168
        .data_tx_ready_20(data_tx_ready_20),        //OUTPUT : Data FIFO transmit Read Enable  
2169
        .tx_ff_uflow_20(tx_ff_uflow_20),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
2170
        .tx_crc_fwd_20(tx_crc_fwd_20),              //INPUT  : Forward Current Frame with CRC from Application
2171
        .xoff_gen_20(xoff_gen_20),                  //INPUT  : XOFF PAUSE FRAME GENERATE
2172
        .xon_gen_20(xon_gen_20),                    //INPUT  : XON PAUSE FRAME GENERATE
2173
        .magic_sleep_n_20(magic_sleep_n_20),        //INPUT  : MAC SLEEP MODE CONTROL
2174
        .magic_wakeup_20(magic_wakeup_20),          //OUTPUT : MAC WAKE-UP INDICATION
2175
 
2176
         // Channel 21 
2177
 
2178
        .tbi_rx_clk_21(tbi_rx_clk_21),              //INPUT  : Receive TBI Clock
2179
        .tbi_tx_clk_21(tbi_tx_clk_21),              //INPUT  : Transmit TBI Clock
2180
        .tbi_rx_d_21(tbi_rx_d_21),                  //INPUT  : Receive TBI Interface
2181
        .tbi_tx_d_21(tbi_tx_d_21),                  //OUTPUT : Transmit TBI Interface
2182
        .sd_loopback_21(sd_loopback_21),            //OUTPUT : SERDES Loopback Enable
2183
        .powerdown_21(pcs_pwrdn_out_sig[21]),       //OUTPUT : Powerdown Enable
2184
        .led_col_21(led_col_21),                    //OUTPUT : Collision Indication
2185
        .led_an_21(led_an_21),                      //OUTPUT : Auto Negotiation Status
2186
        .led_char_err_21(led_char_err_21),          //OUTPUT : Character error
2187
        .led_disp_err_21(led_disp_err_21),          //OUTPUT : Disparity error
2188
        .led_crs_21(led_crs_21),                    //OUTPUT : Carrier sense
2189
        .led_link_21(led_link_21),                  //OUTPUT : Valid link    
2190
        .mac_rx_clk_21(mac_rx_clk_21),              //OUTPUT : Av-ST Rx Clock
2191
        .mac_tx_clk_21(mac_tx_clk_21),              //OUTPUT : Av-ST Tx Clock
2192
        .data_rx_sop_21(data_rx_sop_21),            //OUTPUT : Start of Packet
2193
        .data_rx_eop_21(data_rx_eop_21),            //OUTPUT : End of Packet
2194
        .data_rx_data_21(data_rx_data_21),          //OUTPUT : Data from FIFO
2195
        .data_rx_error_21(data_rx_error_21),        //OUTPUT : Receive packet error
2196
        .data_rx_valid_21(data_rx_valid_21),        //OUTPUT : Data Receive FIFO Valid
2197
        .data_rx_ready_21(data_rx_ready_21),        //OUTPUT : Data Receive Ready
2198
        .pkt_class_data_21(pkt_class_data_21),      //OUTPUT : Frame Type Indication
2199
        .pkt_class_valid_21(pkt_class_valid_21),    //OUTPUT : Frame Type Indication Valid
2200
        .data_tx_error_21(data_tx_error_21),        //INPUT  : Status
2201
        .data_tx_data_21(data_tx_data_21),          //INPUT  : Data from FIFO transmit
2202
        .data_tx_valid_21(data_tx_valid_21),        //INPUT  : Data FIFO transmit Empty
2203
        .data_tx_sop_21(data_tx_sop_21),            //INPUT  : Start of Packet
2204
        .data_tx_eop_21(data_tx_eop_21),            //INPUT  : End of Packet
2205
        .data_tx_ready_21(data_tx_ready_21),        //OUTPUT : Data FIFO transmit Read Enable  
2206
        .tx_ff_uflow_21(tx_ff_uflow_21),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
2207
        .tx_crc_fwd_21(tx_crc_fwd_21),              //INPUT  : Forward Current Frame with CRC from Application
2208
        .xoff_gen_21(xoff_gen_21),                  //INPUT  : XOFF PAUSE FRAME GENERATE
2209
        .xon_gen_21(xon_gen_21),                    //INPUT  : XON PAUSE FRAME GENERATE
2210
        .magic_sleep_n_21(magic_sleep_n_21),        //INPUT  : MAC SLEEP MODE CONTROL
2211
        .magic_wakeup_21(magic_wakeup_21),          //OUTPUT : MAC WAKE-UP INDICATION
2212
 
2213
         // Channel 22 
2214
 
2215
        .tbi_rx_clk_22(tbi_rx_clk_22),              //INPUT  : Receive TBI Clock
2216
        .tbi_tx_clk_22(tbi_tx_clk_22),              //INPUT  : Transmit TBI Clock
2217
        .tbi_rx_d_22(tbi_rx_d_22),                  //INPUT  : Receive TBI Interface
2218
        .tbi_tx_d_22(tbi_tx_d_22),                  //OUTPUT : Transmit TBI Interface
2219
        .sd_loopback_22(sd_loopback_22),            //OUTPUT : SERDES Loopback Enable
2220
        .powerdown_22(pcs_pwrdn_out_sig[22]),       //OUTPUT : Powerdown Enable
2221
        .led_col_22(led_col_22),                    //OUTPUT : Collision Indication
2222
        .led_an_22(led_an_22),                      //OUTPUT : Auto Negotiation Status
2223
        .led_char_err_22(led_char_err_22),          //OUTPUT : Character error
2224
        .led_disp_err_22(led_disp_err_22),          //OUTPUT : Disparity error
2225
        .led_crs_22(led_crs_22),                    //OUTPUT : Carrier sense
2226
        .led_link_22(led_link_22),                  //OUTPUT : Valid link    
2227
        .mac_rx_clk_22(mac_rx_clk_22),              //OUTPUT : Av-ST Rx Clock
2228
        .mac_tx_clk_22(mac_tx_clk_22),              //OUTPUT : Av-ST Tx Clock
2229
        .data_rx_sop_22(data_rx_sop_22),            //OUTPUT : Start of Packet
2230
        .data_rx_eop_22(data_rx_eop_22),            //OUTPUT : End of Packet
2231
        .data_rx_data_22(data_rx_data_22),          //OUTPUT : Data from FIFO
2232
        .data_rx_error_22(data_rx_error_22),        //OUTPUT : Receive packet error
2233
        .data_rx_valid_22(data_rx_valid_22),        //OUTPUT : Data Receive FIFO Valid
2234
        .data_rx_ready_22(data_rx_ready_22),        //OUTPUT : Data Receive Ready
2235
        .pkt_class_data_22(pkt_class_data_22),      //OUTPUT : Frame Type Indication
2236
        .pkt_class_valid_22(pkt_class_valid_22),    //OUTPUT : Frame Type Indication Valid
2237
        .data_tx_error_22(data_tx_error_22),        //INPUT  : Status
2238
        .data_tx_data_22(data_tx_data_22),          //INPUT  : Data from FIFO transmit
2239
        .data_tx_valid_22(data_tx_valid_22),        //INPUT  : Data FIFO transmit Empty
2240
        .data_tx_sop_22(data_tx_sop_22),            //INPUT  : Start of Packet
2241
        .data_tx_eop_22(data_tx_eop_22),            //INPUT  : End of Packet
2242
        .data_tx_ready_22(data_tx_ready_22),        //OUTPUT : Data FIFO transmit Read Enable  
2243
        .tx_ff_uflow_22(tx_ff_uflow_22),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
2244
        .tx_crc_fwd_22(tx_crc_fwd_22),              //INPUT  : Forward Current Frame with CRC from Application
2245
        .xoff_gen_22(xoff_gen_22),                  //INPUT  : XOFF PAUSE FRAME GENERATE
2246
        .xon_gen_22(xon_gen_22),                    //INPUT  : XON PAUSE FRAME GENERATE
2247
        .magic_sleep_n_22(magic_sleep_n_22),        //INPUT  : MAC SLEEP MODE CONTROL
2248
        .magic_wakeup_22(magic_wakeup_22),          //OUTPUT : MAC WAKE-UP INDICATION
2249
 
2250
         // Channel 23 
2251
 
2252
        .tbi_rx_clk_23(tbi_rx_clk_23),              //INPUT  : Receive TBI Clock
2253
        .tbi_tx_clk_23(tbi_tx_clk_23),              //INPUT  : Transmit TBI Clock
2254
        .tbi_rx_d_23(tbi_rx_d_23),                  //INPUT  : Receive TBI Interface
2255
        .tbi_tx_d_23(tbi_tx_d_23),                  //OUTPUT : Transmit TBI Interface
2256
        .sd_loopback_23(sd_loopback_23),            //OUTPUT : SERDES Loopback Enable
2257
        .powerdown_23(pcs_pwrdn_out_sig[23]),       //OUTPUT : Powerdown Enable
2258
        .led_col_23(led_col_23),                    //OUTPUT : Collision Indication
2259
        .led_an_23(led_an_23),                      //OUTPUT : Auto Negotiation Status
2260
        .led_char_err_23(led_char_err_23),          //OUTPUT : Character error
2261
        .led_disp_err_23(led_disp_err_23),          //OUTPUT : Disparity error
2262
        .led_crs_23(led_crs_23),                    //OUTPUT : Carrier sense
2263
        .led_link_23(led_link_23),                  //OUTPUT : Valid link    
2264
        .mac_rx_clk_23(mac_rx_clk_23),              //OUTPUT : Av-ST Rx Clock
2265
        .mac_tx_clk_23(mac_tx_clk_23),              //OUTPUT : Av-ST Tx Clock
2266
        .data_rx_sop_23(data_rx_sop_23),            //OUTPUT : Start of Packet
2267
        .data_rx_eop_23(data_rx_eop_23),            //OUTPUT : End of Packet
2268
        .data_rx_data_23(data_rx_data_23),          //OUTPUT : Data from FIFO
2269
        .data_rx_error_23(data_rx_error_23),        //OUTPUT : Receive packet error
2270
        .data_rx_valid_23(data_rx_valid_23),        //OUTPUT : Data Receive FIFO Valid
2271
        .data_rx_ready_23(data_rx_ready_23),        //OUTPUT : Data Receive Ready
2272
        .pkt_class_data_23(pkt_class_data_23),      //OUTPUT : Frame Type Indication
2273
        .pkt_class_valid_23(pkt_class_valid_23),    //OUTPUT : Frame Type Indication Valid
2274
        .data_tx_error_23(data_tx_error_23),        //INPUT  : Status
2275
        .data_tx_data_23(data_tx_data_23),          //INPUT  : Data from FIFO transmit
2276
        .data_tx_valid_23(data_tx_valid_23),        //INPUT  : Data FIFO transmit Empty
2277
        .data_tx_sop_23(data_tx_sop_23),            //INPUT  : Start of Packet
2278
        .data_tx_eop_23(data_tx_eop_23),            //INPUT  : End of Packet
2279
        .data_tx_ready_23(data_tx_ready_23),        //OUTPUT : Data FIFO transmit Read Enable  
2280
        .tx_ff_uflow_23(tx_ff_uflow_23),            //OUTPUT : TX FIFO underflow occured (Synchronous with tx_clk)
2281
        .tx_crc_fwd_23(tx_crc_fwd_23),              //INPUT  : Forward Current Frame with CRC from Application
2282
        .xoff_gen_23(xoff_gen_23),                  //INPUT  : XOFF PAUSE FRAME GENERATE
2283
        .xon_gen_23(xon_gen_23),                    //INPUT  : XON PAUSE FRAME GENERATE
2284
        .magic_sleep_n_23(magic_sleep_n_23),        //INPUT  : MAC SLEEP MODE CONTROL
2285
        .magic_wakeup_23(magic_wakeup_23));         //OUTPUT : MAC WAKE-UP INDICATION
2286
 
2287
    defparam
2288
        U_MULTI_MAC_PCS.USE_SYNC_RESET = USE_SYNC_RESET,
2289
        U_MULTI_MAC_PCS.RESET_LEVEL = RESET_LEVEL,
2290
        U_MULTI_MAC_PCS.ENABLE_GMII_LOOPBACK = ENABLE_GMII_LOOPBACK,
2291
        U_MULTI_MAC_PCS.ENABLE_HD_LOGIC = ENABLE_HD_LOGIC,
2292
        U_MULTI_MAC_PCS.ENABLE_SUP_ADDR = ENABLE_SUP_ADDR,
2293
        U_MULTI_MAC_PCS.ENA_HASH = ENA_HASH,
2294
        U_MULTI_MAC_PCS.STAT_CNT_ENA = STAT_CNT_ENA,
2295
        U_MULTI_MAC_PCS.CORE_VERSION = CORE_VERSION,
2296
        U_MULTI_MAC_PCS.CUST_VERSION = CUST_VERSION,
2297
        U_MULTI_MAC_PCS.REDUCED_INTERFACE_ENA = REDUCED_INTERFACE_ENA,
2298
        U_MULTI_MAC_PCS.ENABLE_MDIO = ENABLE_MDIO,
2299
        U_MULTI_MAC_PCS.MDIO_CLK_DIV = MDIO_CLK_DIV,
2300
        U_MULTI_MAC_PCS.ENABLE_MAGIC_DETECT = ENABLE_MAGIC_DETECT,
2301
        U_MULTI_MAC_PCS.ENABLE_PADDING = ENABLE_PADDING,
2302
        U_MULTI_MAC_PCS.ENABLE_LGTH_CHECK = ENABLE_LGTH_CHECK,
2303
        U_MULTI_MAC_PCS.GBIT_ONLY = GBIT_ONLY,
2304
        U_MULTI_MAC_PCS.MBIT_ONLY = MBIT_ONLY,
2305
        U_MULTI_MAC_PCS.REDUCED_CONTROL = REDUCED_CONTROL,
2306
        U_MULTI_MAC_PCS.CRC32DWIDTH = CRC32DWIDTH,
2307
        U_MULTI_MAC_PCS.CRC32GENDELAY = CRC32GENDELAY,
2308
        U_MULTI_MAC_PCS.CRC32CHECK16BIT = CRC32CHECK16BIT,
2309
        U_MULTI_MAC_PCS.CRC32S1L2_EXTERN = CRC32S1L2_EXTERN,
2310
        U_MULTI_MAC_PCS.ENABLE_SHIFT16 = ENABLE_SHIFT16,
2311
        U_MULTI_MAC_PCS.ENABLE_MAC_FLOW_CTRL = ENABLE_MAC_FLOW_CTRL,
2312
        U_MULTI_MAC_PCS.ENABLE_MAC_TXADDR_SET = ENABLE_MAC_TXADDR_SET,
2313
        U_MULTI_MAC_PCS.ENABLE_MAC_RX_VLAN = ENABLE_MAC_RX_VLAN,
2314
        U_MULTI_MAC_PCS.ENABLE_MAC_TX_VLAN = ENABLE_MAC_TX_VLAN,
2315
        U_MULTI_MAC_PCS.PHY_IDENTIFIER = PHY_IDENTIFIER,
2316
        U_MULTI_MAC_PCS.DEV_VERSION = DEV_VERSION,
2317
        U_MULTI_MAC_PCS.ENABLE_SGMII = ENABLE_SGMII,
2318
        U_MULTI_MAC_PCS.MAX_CHANNELS = MAX_CHANNELS,
2319
        U_MULTI_MAC_PCS.CHANNEL_WIDTH = CHANNEL_WIDTH,
2320
            U_MULTI_MAC_PCS.ENABLE_RX_FIFO_STATUS = ENABLE_RX_FIFO_STATUS,
2321
            U_MULTI_MAC_PCS.ENABLE_EXTENDED_STAT_REG = ENABLE_EXTENDED_STAT_REG,
2322
        U_MULTI_MAC_PCS.ENABLE_CLK_SHARING = ENABLE_CLK_SHARING,
2323
        U_MULTI_MAC_PCS.ENABLE_REG_SHARING = ENABLE_REG_SHARING;
2324
 
2325
 
2326
 
2327
// #######################################################################
2328
// ###############       CHANNEL 0 LOGIC/COMPONENTS       ###############
2329
// #######################################################################
2330
 
2331
// Export powerdown signal or wire it internally
2332
// ---------------------------------------------
2333
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 0)
2334
    begin
2335
        assign gxb_pwrdn_in_sig[0] = gxb_pwrdn_in_0;
2336
        assign pcs_pwrdn_out_0 = pcs_pwrdn_out_sig[0];
2337
    end
2338
else
2339
    begin
2340
        assign gxb_pwrdn_in_sig[0] = pcs_pwrdn_out_sig[0];
2341
                assign pcs_pwrdn_out_0 = 1'b0;
2342
    end
2343
endgenerate
2344
 
2345
 
2346
// Either one of these blocks below will be instantiated depending on the parameterization 
2347
// that is chosen.
2348
// ---------------------------------------------------------------------------------------
2349
 
2350
// Instantiation of the Alt2gxb block as the PMA for Stratix_II_GX devices
2351
// ---------------------------------------------------------------------------- 
2352
// Instantiation of the Alt2gxb block as the PMA for ArriaGX device
2353
// ---------------------------------------------------------------- 
2354
 
2355
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
2356
//
2357
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
2358
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
2359
// reversal algorithm.  
2360
// -------------------------------------------------------------------------
2361
 
2362
altera_tse_reset_synchronizer reset_sync_0 (
2363
        .clk(ref_clk),
2364
        .reset_in(reset),
2365
        .reset_out(reset_ref_clk_int)
2366
        );
2367
 
2368
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 0)
2369
    begin
2370
 
2371
    assign tbi_tx_clk_0 = ref_clk;
2372
    assign tbi_rx_d_0 = tbi_rx_d_flip_0;
2373
 
2374
    altera_tse_reset_synchronizer ch_0_reset_sync_0 (
2375
        .clk(tbi_rx_clk_0),
2376
        .reset_in(reset),
2377
        .reset_out(reset_tbi_rx_clk_0_int)
2378
        );
2379
 
2380
    always @(posedge tbi_rx_clk_0 or posedge reset_tbi_rx_clk_0_int)
2381
        begin
2382
        if (reset_tbi_rx_clk_0_int == 1)
2383
            tbi_rx_d_flip_0 <= 0;
2384
        else
2385
            begin
2386
            tbi_rx_d_flip_0[0] <= tbi_rx_d_lvds_0[9];
2387
            tbi_rx_d_flip_0[1] <= tbi_rx_d_lvds_0[8];
2388
            tbi_rx_d_flip_0[2] <= tbi_rx_d_lvds_0[7];
2389
            tbi_rx_d_flip_0[3] <= tbi_rx_d_lvds_0[6];
2390
            tbi_rx_d_flip_0[4] <= tbi_rx_d_lvds_0[5];
2391
            tbi_rx_d_flip_0[5] <= tbi_rx_d_lvds_0[4];
2392
            tbi_rx_d_flip_0[6] <= tbi_rx_d_lvds_0[3];
2393
            tbi_rx_d_flip_0[7] <= tbi_rx_d_lvds_0[2];
2394
            tbi_rx_d_flip_0[8] <= tbi_rx_d_lvds_0[1];
2395
            tbi_rx_d_flip_0[9] <= tbi_rx_d_lvds_0[0];
2396
            end
2397
        end
2398
 
2399
    always @(posedge ref_clk or posedge reset_ref_clk_int)
2400
        begin
2401
        if (reset_ref_clk_int == 1)
2402
            tbi_tx_d_flip_0 <= 0;
2403
        else
2404
            begin
2405
            tbi_tx_d_flip_0[0] <= tbi_tx_d_0[9];
2406
            tbi_tx_d_flip_0[1] <= tbi_tx_d_0[8];
2407
            tbi_tx_d_flip_0[2] <= tbi_tx_d_0[7];
2408
            tbi_tx_d_flip_0[3] <= tbi_tx_d_0[6];
2409
            tbi_tx_d_flip_0[4] <= tbi_tx_d_0[5];
2410
            tbi_tx_d_flip_0[5] <= tbi_tx_d_0[4];
2411
            tbi_tx_d_flip_0[6] <= tbi_tx_d_0[3];
2412
            tbi_tx_d_flip_0[7] <= tbi_tx_d_0[2];
2413
            tbi_tx_d_flip_0[8] <= tbi_tx_d_0[1];
2414
            tbi_tx_d_flip_0[9] <= tbi_tx_d_0[0];
2415
            end
2416
        end
2417
 
2418
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_0
2419
     (
2420
         .pll_areset ( reset ),
2421
         .rx_cda_reset ( rx_cda_reset_0 ),
2422
         .rx_channel_data_align ( rx_channel_data_align_0 ),
2423
         .rx_locked ( rx_locked_0 ),
2424
         .rx_divfwdclk (tbi_rx_clk_0),
2425
         .rx_in (rxp_0),
2426
         .rx_inclock (ref_clk),
2427
         .rx_out (tbi_rx_d_lvds_0),
2428
         .rx_outclock (),
2429
         .rx_reset (rx_reset_0)
2430
     );
2431
 
2432
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_0 (
2433
                .clk ( ref_clk ),
2434
                .reset ( reset_ref_clk_int ),
2435
                .rx_locked ( rx_locked_0 ),
2436
                .rx_channel_data_align ( rx_channel_data_align_0 ),
2437
                .pll_areset ( pll_areset_0 ),
2438
                .rx_reset ( rx_reset_0 ),
2439
                .rx_cda_reset ( rx_cda_reset_0 )
2440
        );
2441
 
2442
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_0
2443
    (
2444
        .tx_in (tbi_tx_d_flip_0),
2445
        .tx_inclock (ref_clk),
2446
                .pll_areset ( reset ),
2447
        .tx_out (txp_0)
2448
    );
2449
 
2450
    end
2451
else
2452
    begin
2453
    assign txp_0 = 1'b0;
2454
    assign tbi_rx_clk_0 = 1'b0;
2455
    end
2456
endgenerate
2457
 
2458
 
2459
 
2460
// #######################################################################
2461
// ###############       CHANNEL 1 LOGIC/COMPONENTS       ###############
2462
// #######################################################################
2463
 
2464
// Export powerdown signal or wire it internally
2465
// ---------------------------------------------
2466
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 1)
2467
    begin
2468
        assign gxb_pwrdn_in_sig[1] = gxb_pwrdn_in_1;
2469
        assign pcs_pwrdn_out_1 = pcs_pwrdn_out_sig[1];
2470
    end
2471
else
2472
    begin
2473
        assign gxb_pwrdn_in_sig[1] = pcs_pwrdn_out_sig[1];
2474
                assign pcs_pwrdn_out_1 = 1'b0;
2475
    end
2476
endgenerate
2477
 
2478
 
2479
// Either one of these blocks below will be instantiated depending on the parameterization 
2480
// that is chosen.
2481
// ---------------------------------------------------------------------------------------
2482
 
2483
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
2484
//
2485
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
2486
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
2487
// reversal algorithm.  
2488
// -------------------------------------------------------------------------
2489
 
2490
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 1)
2491
    begin
2492
 
2493
    assign tbi_tx_clk_1 = ref_clk;
2494
    assign tbi_rx_d_1 = tbi_rx_d_flip_1;
2495
 
2496
    altera_tse_reset_synchronizer ch_1_reset_sync_0 (
2497
        .clk(tbi_rx_clk_1),
2498
        .reset_in(reset),
2499
        .reset_out(reset_tbi_rx_clk_1_int)
2500
        );
2501
 
2502
    always @(posedge tbi_rx_clk_1 or posedge reset_tbi_rx_clk_1_int)
2503
        begin
2504
        if (reset_tbi_rx_clk_1_int == 1)
2505
            tbi_rx_d_flip_1 <= 0;
2506
        else
2507
            begin
2508
            tbi_rx_d_flip_1[0] <= tbi_rx_d_lvds_1[9];
2509
            tbi_rx_d_flip_1[1] <= tbi_rx_d_lvds_1[8];
2510
            tbi_rx_d_flip_1[2] <= tbi_rx_d_lvds_1[7];
2511
            tbi_rx_d_flip_1[3] <= tbi_rx_d_lvds_1[6];
2512
            tbi_rx_d_flip_1[4] <= tbi_rx_d_lvds_1[5];
2513
            tbi_rx_d_flip_1[5] <= tbi_rx_d_lvds_1[4];
2514
            tbi_rx_d_flip_1[6] <= tbi_rx_d_lvds_1[3];
2515
            tbi_rx_d_flip_1[7] <= tbi_rx_d_lvds_1[2];
2516
            tbi_rx_d_flip_1[8] <= tbi_rx_d_lvds_1[1];
2517
            tbi_rx_d_flip_1[9] <= tbi_rx_d_lvds_1[0];
2518
            end
2519
        end
2520
 
2521
    always @(posedge ref_clk or posedge reset_ref_clk_int)
2522
        begin
2523
        if (reset_ref_clk_int == 1)
2524
            tbi_tx_d_flip_1 <= 0;
2525
        else
2526
            begin
2527
            tbi_tx_d_flip_1[0] <= tbi_tx_d_1[9];
2528
            tbi_tx_d_flip_1[1] <= tbi_tx_d_1[8];
2529
            tbi_tx_d_flip_1[2] <= tbi_tx_d_1[7];
2530
            tbi_tx_d_flip_1[3] <= tbi_tx_d_1[6];
2531
            tbi_tx_d_flip_1[4] <= tbi_tx_d_1[5];
2532
            tbi_tx_d_flip_1[5] <= tbi_tx_d_1[4];
2533
            tbi_tx_d_flip_1[6] <= tbi_tx_d_1[3];
2534
            tbi_tx_d_flip_1[7] <= tbi_tx_d_1[2];
2535
            tbi_tx_d_flip_1[8] <= tbi_tx_d_1[1];
2536
            tbi_tx_d_flip_1[9] <= tbi_tx_d_1[0];
2537
            end
2538
        end
2539
 
2540
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_1
2541
     (
2542
         .pll_areset ( reset ),
2543
         .rx_cda_reset ( rx_cda_reset_1 ),
2544
         .rx_channel_data_align ( rx_channel_data_align_1 ),
2545
         .rx_locked ( rx_locked_1 ),
2546
         .rx_divfwdclk (tbi_rx_clk_1),
2547
         .rx_in (rxp_1),
2548
         .rx_inclock (ref_clk),
2549
         .rx_out (tbi_rx_d_lvds_1),
2550
         .rx_outclock (),
2551
         .rx_reset (rx_reset_1)
2552
     );
2553
 
2554
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_1 (
2555
                .clk ( ref_clk ),
2556
                .reset ( reset_ref_clk_int ),
2557
                .rx_locked ( rx_locked_1 ),
2558
                .rx_channel_data_align ( rx_channel_data_align_1 ),
2559
                .pll_areset ( pll_areset_1 ),
2560
                .rx_reset ( rx_reset_1 ),
2561
                .rx_cda_reset ( rx_cda_reset_1 )
2562
        );
2563
 
2564
 
2565
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_1
2566
    (
2567
        .tx_in (tbi_tx_d_flip_1),
2568
        .tx_inclock (ref_clk),
2569
                .pll_areset ( reset ),
2570
        .tx_out (txp_1)
2571
    );
2572
 
2573
    end
2574
else
2575
    begin
2576
    assign txp_1 = 1'b0;
2577
    assign tbi_rx_clk_1 = 1'b0;
2578
    end
2579
endgenerate
2580
 
2581
 
2582
 
2583
// #######################################################################
2584
// ###############       CHANNEL 2 LOGIC/COMPONENTS       ###############
2585
// #######################################################################
2586
 
2587
// Export powerdown signal or wire it internally
2588
// ---------------------------------------------
2589
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 2)
2590
    begin
2591
        assign gxb_pwrdn_in_sig[2] = gxb_pwrdn_in_2;
2592
        assign pcs_pwrdn_out_2 = pcs_pwrdn_out_sig[2];
2593
    end
2594
else
2595
    begin
2596
        assign gxb_pwrdn_in_sig[2] = pcs_pwrdn_out_sig[2];
2597
                assign pcs_pwrdn_out_2 = 1'b0;
2598
    end
2599
endgenerate
2600
 
2601
 
2602
// Either one of these blocks below will be instantiated depending on the parameterization 
2603
// that is chosen.
2604
// ---------------------------------------------------------------------------------------
2605
 
2606
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
2607
//
2608
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
2609
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
2610
// reversal algorithm.  
2611
// -------------------------------------------------------------------------
2612
 
2613
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 2)
2614
    begin
2615
 
2616
    assign tbi_tx_clk_2 = ref_clk;
2617
    assign tbi_rx_d_2 = tbi_rx_d_flip_2;
2618
 
2619
    altera_tse_reset_synchronizer ch_2_reset_sync_0 (
2620
        .clk(tbi_rx_clk_2),
2621
        .reset_in(reset),
2622
        .reset_out(reset_tbi_rx_clk_2_int)
2623
        );
2624
 
2625
    always @(posedge tbi_rx_clk_2 or posedge reset_tbi_rx_clk_2_int)
2626
        begin
2627
        if (reset_tbi_rx_clk_2_int == 1)
2628
            tbi_rx_d_flip_2 <= 0;
2629
        else
2630
            begin
2631
            tbi_rx_d_flip_2[0] <= tbi_rx_d_lvds_2[9];
2632
            tbi_rx_d_flip_2[1] <= tbi_rx_d_lvds_2[8];
2633
            tbi_rx_d_flip_2[2] <= tbi_rx_d_lvds_2[7];
2634
            tbi_rx_d_flip_2[3] <= tbi_rx_d_lvds_2[6];
2635
            tbi_rx_d_flip_2[4] <= tbi_rx_d_lvds_2[5];
2636
            tbi_rx_d_flip_2[5] <= tbi_rx_d_lvds_2[4];
2637
            tbi_rx_d_flip_2[6] <= tbi_rx_d_lvds_2[3];
2638
            tbi_rx_d_flip_2[7] <= tbi_rx_d_lvds_2[2];
2639
            tbi_rx_d_flip_2[8] <= tbi_rx_d_lvds_2[1];
2640
            tbi_rx_d_flip_2[9] <= tbi_rx_d_lvds_2[0];
2641
            end
2642
        end
2643
 
2644
    always @(posedge ref_clk or posedge reset_ref_clk_int)
2645
        begin
2646
        if (reset_ref_clk_int == 1)
2647
            tbi_tx_d_flip_2 <= 0;
2648
        else
2649
            begin
2650
            tbi_tx_d_flip_2[0] <= tbi_tx_d_2[9];
2651
            tbi_tx_d_flip_2[1] <= tbi_tx_d_2[8];
2652
            tbi_tx_d_flip_2[2] <= tbi_tx_d_2[7];
2653
            tbi_tx_d_flip_2[3] <= tbi_tx_d_2[6];
2654
            tbi_tx_d_flip_2[4] <= tbi_tx_d_2[5];
2655
            tbi_tx_d_flip_2[5] <= tbi_tx_d_2[4];
2656
            tbi_tx_d_flip_2[6] <= tbi_tx_d_2[3];
2657
            tbi_tx_d_flip_2[7] <= tbi_tx_d_2[2];
2658
            tbi_tx_d_flip_2[8] <= tbi_tx_d_2[1];
2659
            tbi_tx_d_flip_2[9] <= tbi_tx_d_2[0];
2660
            end
2661
        end
2662
 
2663
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_2
2664
     (
2665
         .pll_areset ( reset ),
2666
         .rx_cda_reset ( rx_cda_reset_2 ),
2667
         .rx_channel_data_align ( rx_channel_data_align_2 ),
2668
         .rx_locked ( rx_locked_2 ),
2669
         .rx_divfwdclk (tbi_rx_clk_2),
2670
         .rx_in (rxp_2),
2671
         .rx_inclock (ref_clk),
2672
         .rx_out (tbi_rx_d_lvds_2),
2673
         .rx_outclock (),
2674
         .rx_reset (rx_reset_2)
2675
     );
2676
 
2677
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_2 (
2678
                .clk ( ref_clk ),
2679
                .reset ( reset_ref_clk_int ),
2680
                .rx_locked ( rx_locked_2 ),
2681
                .rx_channel_data_align ( rx_channel_data_align_2 ),
2682
                .pll_areset ( pll_areset_2 ),
2683
                .rx_reset ( rx_reset_2 ),
2684
                .rx_cda_reset ( rx_cda_reset_2 )
2685
        );
2686
 
2687
 
2688
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_2
2689
    (
2690
        .tx_in (tbi_tx_d_flip_2),
2691
        .tx_inclock (ref_clk),
2692
                .pll_areset ( reset ),
2693
        .tx_out (txp_2)
2694
    );
2695
 
2696
    end
2697
else
2698
    begin
2699
    assign txp_2 = 1'b0;
2700
    assign tbi_rx_clk_2 = 1'b0;
2701
    end
2702
endgenerate
2703
 
2704
 
2705
 
2706
// #######################################################################
2707
// ###############       CHANNEL 3 LOGIC/COMPONENTS       ###############
2708
// #######################################################################
2709
 
2710
// Export powerdown signal or wire it internally
2711
// ---------------------------------------------
2712
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 3)
2713
    begin
2714
        assign gxb_pwrdn_in_sig[3] = gxb_pwrdn_in_3;
2715
        assign pcs_pwrdn_out_3 = pcs_pwrdn_out_sig[3];
2716
    end
2717
else
2718
    begin
2719
        assign gxb_pwrdn_in_sig[3] = pcs_pwrdn_out_sig[3];
2720
                assign pcs_pwrdn_out_3 = 1'b0;
2721
    end
2722
endgenerate
2723
 
2724
 
2725
// Either one of these blocks below will be instantiated depending on the parameterization 
2726
// that is chosen.
2727
// ---------------------------------------------------------------------------------------
2728
 
2729
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
2730
//
2731
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
2732
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
2733
// reversal algorithm.  
2734
// -------------------------------------------------------------------------
2735
 
2736
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 3)
2737
    begin
2738
 
2739
    assign tbi_tx_clk_3 = ref_clk;
2740
    assign tbi_rx_d_3 = tbi_rx_d_flip_3;
2741
 
2742
    altera_tse_reset_synchronizer ch_3_reset_sync_0 (
2743
        .clk(tbi_rx_clk_3),
2744
        .reset_in(reset),
2745
        .reset_out(reset_tbi_rx_clk_3_int)
2746
        );
2747
 
2748
    always @(posedge tbi_rx_clk_3 or posedge reset_tbi_rx_clk_3_int)
2749
        begin
2750
        if (reset_tbi_rx_clk_3_int == 1)
2751
            tbi_rx_d_flip_3 <= 0;
2752
        else
2753
            begin
2754
            tbi_rx_d_flip_3[0] <= tbi_rx_d_lvds_3[9];
2755
            tbi_rx_d_flip_3[1] <= tbi_rx_d_lvds_3[8];
2756
            tbi_rx_d_flip_3[2] <= tbi_rx_d_lvds_3[7];
2757
            tbi_rx_d_flip_3[3] <= tbi_rx_d_lvds_3[6];
2758
            tbi_rx_d_flip_3[4] <= tbi_rx_d_lvds_3[5];
2759
            tbi_rx_d_flip_3[5] <= tbi_rx_d_lvds_3[4];
2760
            tbi_rx_d_flip_3[6] <= tbi_rx_d_lvds_3[3];
2761
            tbi_rx_d_flip_3[7] <= tbi_rx_d_lvds_3[2];
2762
            tbi_rx_d_flip_3[8] <= tbi_rx_d_lvds_3[1];
2763
            tbi_rx_d_flip_3[9] <= tbi_rx_d_lvds_3[0];
2764
            end
2765
        end
2766
 
2767
    always @(posedge ref_clk or posedge reset_ref_clk_int)
2768
        begin
2769
        if (reset_ref_clk_int == 1)
2770
            tbi_tx_d_flip_3 <= 0;
2771
        else
2772
            begin
2773
            tbi_tx_d_flip_3[0] <= tbi_tx_d_3[9];
2774
            tbi_tx_d_flip_3[1] <= tbi_tx_d_3[8];
2775
            tbi_tx_d_flip_3[2] <= tbi_tx_d_3[7];
2776
            tbi_tx_d_flip_3[3] <= tbi_tx_d_3[6];
2777
            tbi_tx_d_flip_3[4] <= tbi_tx_d_3[5];
2778
            tbi_tx_d_flip_3[5] <= tbi_tx_d_3[4];
2779
            tbi_tx_d_flip_3[6] <= tbi_tx_d_3[3];
2780
            tbi_tx_d_flip_3[7] <= tbi_tx_d_3[2];
2781
            tbi_tx_d_flip_3[8] <= tbi_tx_d_3[1];
2782
            tbi_tx_d_flip_3[9] <= tbi_tx_d_3[0];
2783
            end
2784
        end
2785
 
2786
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_3
2787
     (
2788
         .pll_areset ( reset ),
2789
         .rx_cda_reset ( rx_cda_reset_3 ),
2790
         .rx_channel_data_align ( rx_channel_data_align_3 ),
2791
         .rx_locked ( rx_locked_3 ),
2792
         .rx_divfwdclk (tbi_rx_clk_3),
2793
         .rx_in (rxp_3),
2794
         .rx_inclock (ref_clk),
2795
         .rx_out (tbi_rx_d_lvds_3),
2796
         .rx_outclock (),
2797
         .rx_reset (rx_reset_3)
2798
     );
2799
 
2800
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_3 (
2801
                .clk ( ref_clk ),
2802
                .reset ( reset_ref_clk_int ),
2803
                .rx_locked ( rx_locked_3 ),
2804
                .rx_channel_data_align ( rx_channel_data_align_3 ),
2805
                .pll_areset ( pll_areset_3 ),
2806
                .rx_reset ( rx_reset_3 ),
2807
                .rx_cda_reset ( rx_cda_reset_3 )
2808
        );
2809
 
2810
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_3
2811
    (
2812
        .tx_in (tbi_tx_d_flip_3),
2813
        .tx_inclock (ref_clk),
2814
                .pll_areset ( reset ),
2815
        .tx_out (txp_3)
2816
    );
2817
 
2818
    end
2819
else
2820
    begin
2821
    assign txp_3 = 1'b0;
2822
    assign tbi_rx_clk_3 = 1'b0;
2823
    end
2824
endgenerate
2825
 
2826
 
2827
 
2828
// #######################################################################
2829
// ###############       CHANNEL 4 LOGIC/COMPONENTS       ###############
2830
// #######################################################################
2831
 
2832
// Export powerdown signal or wire it internally
2833
// ---------------------------------------------
2834
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 4)
2835
    begin
2836
        assign gxb_pwrdn_in_sig[4] = gxb_pwrdn_in_4;
2837
        assign pcs_pwrdn_out_4 = pcs_pwrdn_out_sig[4];
2838
    end
2839
else
2840
    begin
2841
        assign gxb_pwrdn_in_sig[4] = pcs_pwrdn_out_sig[4];
2842
                assign pcs_pwrdn_out_4 = 1'b0;
2843
    end
2844
endgenerate
2845
 
2846
 
2847
// Either one of these blocks below will be instantiated depending on the parameterization 
2848
// that is chosen.
2849
// ---------------------------------------------------------------------------------------
2850
 
2851
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
2852
//
2853
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
2854
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
2855
// reversal algorithm.  
2856
// -------------------------------------------------------------------------
2857
 
2858
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 4)
2859
    begin
2860
 
2861
    assign tbi_tx_clk_4 = ref_clk;
2862
    assign tbi_rx_d_4 = tbi_rx_d_flip_4;
2863
 
2864
    altera_tse_reset_synchronizer ch_4_reset_sync_0 (
2865
        .clk(tbi_rx_clk_4),
2866
        .reset_in(reset),
2867
        .reset_out(reset_tbi_rx_clk_4_int)
2868
        );
2869
 
2870
    always @(posedge tbi_rx_clk_4 or posedge reset_tbi_rx_clk_4_int)
2871
        begin
2872
        if (reset_tbi_rx_clk_4_int == 1)
2873
            tbi_rx_d_flip_4 <= 0;
2874
        else
2875
            begin
2876
            tbi_rx_d_flip_4[0] <= tbi_rx_d_lvds_4[9];
2877
            tbi_rx_d_flip_4[1] <= tbi_rx_d_lvds_4[8];
2878
            tbi_rx_d_flip_4[2] <= tbi_rx_d_lvds_4[7];
2879
            tbi_rx_d_flip_4[3] <= tbi_rx_d_lvds_4[6];
2880
            tbi_rx_d_flip_4[4] <= tbi_rx_d_lvds_4[5];
2881
            tbi_rx_d_flip_4[5] <= tbi_rx_d_lvds_4[4];
2882
            tbi_rx_d_flip_4[6] <= tbi_rx_d_lvds_4[3];
2883
            tbi_rx_d_flip_4[7] <= tbi_rx_d_lvds_4[2];
2884
            tbi_rx_d_flip_4[8] <= tbi_rx_d_lvds_4[1];
2885
            tbi_rx_d_flip_4[9] <= tbi_rx_d_lvds_4[0];
2886
            end
2887
        end
2888
 
2889
    always @(posedge ref_clk or posedge reset_ref_clk_int)
2890
        begin
2891
        if (reset_ref_clk_int == 1)
2892
            tbi_tx_d_flip_4 <= 0;
2893
        else
2894
            begin
2895
            tbi_tx_d_flip_4[0] <= tbi_tx_d_4[9];
2896
            tbi_tx_d_flip_4[1] <= tbi_tx_d_4[8];
2897
            tbi_tx_d_flip_4[2] <= tbi_tx_d_4[7];
2898
            tbi_tx_d_flip_4[3] <= tbi_tx_d_4[6];
2899
            tbi_tx_d_flip_4[4] <= tbi_tx_d_4[5];
2900
            tbi_tx_d_flip_4[5] <= tbi_tx_d_4[4];
2901
            tbi_tx_d_flip_4[6] <= tbi_tx_d_4[3];
2902
            tbi_tx_d_flip_4[7] <= tbi_tx_d_4[2];
2903
            tbi_tx_d_flip_4[8] <= tbi_tx_d_4[1];
2904
            tbi_tx_d_flip_4[9] <= tbi_tx_d_4[0];
2905
            end
2906
        end
2907
 
2908
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_4
2909
     (
2910
         .pll_areset ( reset ),
2911
         .rx_cda_reset ( rx_cda_reset_4 ),
2912
         .rx_channel_data_align ( rx_channel_data_align_4 ),
2913
         .rx_locked ( rx_locked_4 ),
2914
         .rx_divfwdclk (tbi_rx_clk_4),
2915
         .rx_in (rxp_4),
2916
         .rx_inclock (ref_clk),
2917
         .rx_out (tbi_rx_d_lvds_4),
2918
         .rx_outclock (),
2919
         .rx_reset (rx_reset_4)
2920
     );
2921
 
2922
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_4 (
2923
                .clk ( ref_clk ),
2924
                .reset ( reset_ref_clk_int ),
2925
                .rx_locked ( rx_locked_4 ),
2926
                .rx_channel_data_align ( rx_channel_data_align_4 ),
2927
                .pll_areset ( pll_areset_4 ),
2928
                .rx_reset ( rx_reset_4 ),
2929
                .rx_cda_reset ( rx_cda_reset_4 )
2930
        );
2931
 
2932
 
2933
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_4
2934
    (
2935
        .tx_in (tbi_tx_d_flip_4),
2936
        .tx_inclock (ref_clk),
2937
                .pll_areset ( reset ),
2938
        .tx_out (txp_4)
2939
    );
2940
 
2941
    end
2942
else
2943
    begin
2944
    assign txp_4 = 1'b0;
2945
    assign tbi_rx_clk_4 = 1'b0;
2946
    end
2947
endgenerate
2948
 
2949
 
2950
 
2951
// #######################################################################
2952
// ###############       CHANNEL 5 LOGIC/COMPONENTS       ###############
2953
// #######################################################################
2954
 
2955
// Export powerdown signal or wire it internally
2956
// ---------------------------------------------
2957
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 5)
2958
    begin
2959
        assign gxb_pwrdn_in_sig[5] = gxb_pwrdn_in_5;
2960
        assign pcs_pwrdn_out_5 = pcs_pwrdn_out_sig[5];
2961
    end
2962
else
2963
    begin
2964
        assign gxb_pwrdn_in_sig[5] = pcs_pwrdn_out_sig[5];
2965
                assign pcs_pwrdn_out_5 = 1'b0;
2966
    end
2967
endgenerate
2968
 
2969
 
2970
// Either one of these blocks below will be instantiated depending on the parameterization 
2971
// that is chosen.
2972
// ---------------------------------------------------------------------------------------
2973
 
2974
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
2975
//
2976
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
2977
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
2978
// reversal algorithm.  
2979
// -------------------------------------------------------------------------
2980
 
2981
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 5)
2982
    begin
2983
 
2984
    assign tbi_tx_clk_5 = ref_clk;
2985
    assign tbi_rx_d_5 = tbi_rx_d_flip_5;
2986
 
2987
    altera_tse_reset_synchronizer ch_5_reset_sync_0 (
2988
        .clk(tbi_rx_clk_5),
2989
        .reset_in(reset),
2990
        .reset_out(reset_tbi_rx_clk_5_int)
2991
        );
2992
 
2993
    always @(posedge tbi_rx_clk_5 or posedge reset_tbi_rx_clk_5_int)
2994
        begin
2995
        if (reset_tbi_rx_clk_5_int == 1)
2996
            tbi_rx_d_flip_5 <= 0;
2997
        else
2998
            begin
2999
            tbi_rx_d_flip_5[0] <= tbi_rx_d_lvds_5[9];
3000
            tbi_rx_d_flip_5[1] <= tbi_rx_d_lvds_5[8];
3001
            tbi_rx_d_flip_5[2] <= tbi_rx_d_lvds_5[7];
3002
            tbi_rx_d_flip_5[3] <= tbi_rx_d_lvds_5[6];
3003
            tbi_rx_d_flip_5[4] <= tbi_rx_d_lvds_5[5];
3004
            tbi_rx_d_flip_5[5] <= tbi_rx_d_lvds_5[4];
3005
            tbi_rx_d_flip_5[6] <= tbi_rx_d_lvds_5[3];
3006
            tbi_rx_d_flip_5[7] <= tbi_rx_d_lvds_5[2];
3007
            tbi_rx_d_flip_5[8] <= tbi_rx_d_lvds_5[1];
3008
            tbi_rx_d_flip_5[9] <= tbi_rx_d_lvds_5[0];
3009
            end
3010
        end
3011
 
3012
    always @(posedge ref_clk or posedge reset_ref_clk_int)
3013
        begin
3014
        if (reset_ref_clk_int == 1)
3015
            tbi_tx_d_flip_5 <= 0;
3016
        else
3017
            begin
3018
            tbi_tx_d_flip_5[0] <= tbi_tx_d_5[9];
3019
            tbi_tx_d_flip_5[1] <= tbi_tx_d_5[8];
3020
            tbi_tx_d_flip_5[2] <= tbi_tx_d_5[7];
3021
            tbi_tx_d_flip_5[3] <= tbi_tx_d_5[6];
3022
            tbi_tx_d_flip_5[4] <= tbi_tx_d_5[5];
3023
            tbi_tx_d_flip_5[5] <= tbi_tx_d_5[4];
3024
            tbi_tx_d_flip_5[6] <= tbi_tx_d_5[3];
3025
            tbi_tx_d_flip_5[7] <= tbi_tx_d_5[2];
3026
            tbi_tx_d_flip_5[8] <= tbi_tx_d_5[1];
3027
            tbi_tx_d_flip_5[9] <= tbi_tx_d_5[0];
3028
            end
3029
        end
3030
 
3031
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_5
3032
     (
3033
         .pll_areset ( reset ),
3034
         .rx_cda_reset ( rx_cda_reset_5 ),
3035
         .rx_channel_data_align ( rx_channel_data_align_5 ),
3036
         .rx_locked ( rx_locked_5 ),
3037
         .rx_divfwdclk (tbi_rx_clk_5),
3038
         .rx_in (rxp_5),
3039
         .rx_inclock (ref_clk),
3040
         .rx_out (tbi_rx_d_lvds_5),
3041
         .rx_outclock (),
3042
         .rx_reset (rx_reset_5)
3043
     );
3044
 
3045
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_5 (
3046
                .clk ( ref_clk ),
3047
                .reset ( reset_ref_clk_int ),
3048
                .rx_locked ( rx_locked_5 ),
3049
                .rx_channel_data_align ( rx_channel_data_align_5 ),
3050
                .pll_areset ( pll_areset_5 ),
3051
                .rx_reset ( rx_reset_5 ),
3052
        .rx_cda_reset ( rx_cda_reset_5 )
3053
        );
3054
 
3055
 
3056
 
3057
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_5
3058
    (
3059
        .tx_in (tbi_tx_d_flip_5),
3060
        .tx_inclock (ref_clk),
3061
                .pll_areset ( reset ),
3062
        .tx_out (txp_5)
3063
    );
3064
 
3065
    end
3066
else
3067
    begin
3068
    assign txp_5 = 1'b0;
3069
    assign tbi_rx_clk_5 = 1'b0;
3070
    end
3071
endgenerate
3072
 
3073
 
3074
 
3075
// #######################################################################
3076
// ###############       CHANNEL 6 LOGIC/COMPONENTS       ###############
3077
// #######################################################################
3078
 
3079
// Export powerdown signal or wire it internally
3080
// ---------------------------------------------
3081
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 6)
3082
    begin
3083
        assign gxb_pwrdn_in_sig[6] = gxb_pwrdn_in_6;
3084
        assign pcs_pwrdn_out_6 = pcs_pwrdn_out_sig[6];
3085
    end
3086
else
3087
    begin
3088
        assign gxb_pwrdn_in_sig[6] = pcs_pwrdn_out_sig[6];
3089
                assign pcs_pwrdn_out_6 = 1'b0;
3090
    end
3091
endgenerate
3092
 
3093
 
3094
// Either one of these blocks below will be instantiated depending on the parameterization 
3095
// that is chosen.
3096
// ---------------------------------------------------------------------------------------
3097
 
3098
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
3099
//
3100
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
3101
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
3102
// reversal algorithm.  
3103
// -------------------------------------------------------------------------
3104
 
3105
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 6)
3106
    begin
3107
 
3108
    assign tbi_tx_clk_6 = ref_clk;
3109
    assign tbi_rx_d_6 = tbi_rx_d_flip_6;
3110
 
3111
    altera_tse_reset_synchronizer ch_6_reset_sync_0 (
3112
        .clk(tbi_rx_clk_6),
3113
        .reset_in(reset),
3114
        .reset_out(reset_tbi_rx_clk_6_int)
3115
        );
3116
 
3117
    always @(posedge tbi_rx_clk_6 or posedge reset_tbi_rx_clk_6_int)
3118
        begin
3119
        if (reset_tbi_rx_clk_6_int == 1)
3120
            tbi_rx_d_flip_6 <= 0;
3121
        else
3122
            begin
3123
            tbi_rx_d_flip_6[0] <= tbi_rx_d_lvds_6[9];
3124
            tbi_rx_d_flip_6[1] <= tbi_rx_d_lvds_6[8];
3125
            tbi_rx_d_flip_6[2] <= tbi_rx_d_lvds_6[7];
3126
            tbi_rx_d_flip_6[3] <= tbi_rx_d_lvds_6[6];
3127
            tbi_rx_d_flip_6[4] <= tbi_rx_d_lvds_6[5];
3128
            tbi_rx_d_flip_6[5] <= tbi_rx_d_lvds_6[4];
3129
            tbi_rx_d_flip_6[6] <= tbi_rx_d_lvds_6[3];
3130
            tbi_rx_d_flip_6[7] <= tbi_rx_d_lvds_6[2];
3131
            tbi_rx_d_flip_6[8] <= tbi_rx_d_lvds_6[1];
3132
            tbi_rx_d_flip_6[9] <= tbi_rx_d_lvds_6[0];
3133
            end
3134
        end
3135
 
3136
    always @(posedge ref_clk or posedge reset_ref_clk_int)
3137
        begin
3138
        if (reset_ref_clk_int == 1)
3139
            tbi_tx_d_flip_6 <= 0;
3140
        else
3141
            begin
3142
            tbi_tx_d_flip_6[0] <= tbi_tx_d_6[9];
3143
            tbi_tx_d_flip_6[1] <= tbi_tx_d_6[8];
3144
            tbi_tx_d_flip_6[2] <= tbi_tx_d_6[7];
3145
            tbi_tx_d_flip_6[3] <= tbi_tx_d_6[6];
3146
            tbi_tx_d_flip_6[4] <= tbi_tx_d_6[5];
3147
            tbi_tx_d_flip_6[5] <= tbi_tx_d_6[4];
3148
            tbi_tx_d_flip_6[6] <= tbi_tx_d_6[3];
3149
            tbi_tx_d_flip_6[7] <= tbi_tx_d_6[2];
3150
            tbi_tx_d_flip_6[8] <= tbi_tx_d_6[1];
3151
            tbi_tx_d_flip_6[9] <= tbi_tx_d_6[0];
3152
            end
3153
        end
3154
 
3155
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_6
3156
     (
3157
         .pll_areset ( reset ),
3158
         .rx_cda_reset ( rx_cda_reset_6 ),
3159
         .rx_channel_data_align ( rx_channel_data_align_6 ),
3160
         .rx_locked ( rx_locked_6 ),
3161
         .rx_divfwdclk (tbi_rx_clk_6),
3162
         .rx_in (rxp_6),
3163
         .rx_inclock (ref_clk),
3164
         .rx_out (tbi_rx_d_lvds_6),
3165
         .rx_outclock (),
3166
         .rx_reset (rx_reset_6)
3167
     );
3168
 
3169
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_6 (
3170
                .clk ( ref_clk ),
3171
                .reset ( reset_ref_clk_int ),
3172
                .rx_locked ( rx_locked_6 ),
3173
                .rx_channel_data_align ( rx_channel_data_align_6 ),
3174
                .pll_areset ( pll_areset_6 ),
3175
                .rx_reset ( rx_reset_6 ),
3176
        .rx_cda_reset ( rx_cda_reset_6 )
3177
        );
3178
 
3179
 
3180
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_6
3181
    (
3182
        .tx_in (tbi_tx_d_flip_6),
3183
        .tx_inclock (ref_clk),
3184
                .pll_areset ( reset ),
3185
        .tx_out (txp_6)
3186
    );
3187
 
3188
    end
3189
else
3190
    begin
3191
    assign txp_6 = 1'b0;
3192
    assign tbi_rx_clk_6 = 1'b0;
3193
    end
3194
endgenerate
3195
 
3196
 
3197
 
3198
// #######################################################################
3199
// ###############       CHANNEL 7 LOGIC/COMPONENTS       ###############
3200
// #######################################################################
3201
 
3202
// Export powerdown signal or wire it internally
3203
// ---------------------------------------------
3204
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 7)
3205
    begin
3206
        assign gxb_pwrdn_in_sig[7] = gxb_pwrdn_in_7;
3207
        assign pcs_pwrdn_out_7 = pcs_pwrdn_out_sig[7];
3208
    end
3209
else
3210
    begin
3211
        assign gxb_pwrdn_in_sig[7] = pcs_pwrdn_out_sig[7];
3212
                assign pcs_pwrdn_out_7 = 1'b0;
3213
    end
3214
endgenerate
3215
 
3216
 
3217
// Either one of these blocks below will be instantiated depending on the parameterization 
3218
// that is chosen.
3219
// ---------------------------------------------------------------------------------------
3220
 
3221
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
3222
//
3223
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
3224
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
3225
// reversal algorithm.  
3226
// -------------------------------------------------------------------------
3227
 
3228
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 7)
3229
    begin
3230
 
3231
    assign tbi_tx_clk_7 = ref_clk;
3232
    assign tbi_rx_d_7 = tbi_rx_d_flip_7;
3233
 
3234
    altera_tse_reset_synchronizer ch_7_reset_sync_0 (
3235
        .clk(tbi_rx_clk_7),
3236
        .reset_in(reset),
3237
        .reset_out(reset_tbi_rx_clk_7_int)
3238
        );
3239
 
3240
    always @(posedge tbi_rx_clk_7 or posedge reset_tbi_rx_clk_7_int)
3241
        begin
3242
        if (reset_tbi_rx_clk_7_int == 1)
3243
            tbi_rx_d_flip_7 <= 0;
3244
        else
3245
            begin
3246
            tbi_rx_d_flip_7[0] <= tbi_rx_d_lvds_7[9];
3247
            tbi_rx_d_flip_7[1] <= tbi_rx_d_lvds_7[8];
3248
            tbi_rx_d_flip_7[2] <= tbi_rx_d_lvds_7[7];
3249
            tbi_rx_d_flip_7[3] <= tbi_rx_d_lvds_7[6];
3250
            tbi_rx_d_flip_7[4] <= tbi_rx_d_lvds_7[5];
3251
            tbi_rx_d_flip_7[5] <= tbi_rx_d_lvds_7[4];
3252
            tbi_rx_d_flip_7[6] <= tbi_rx_d_lvds_7[3];
3253
            tbi_rx_d_flip_7[7] <= tbi_rx_d_lvds_7[2];
3254
            tbi_rx_d_flip_7[8] <= tbi_rx_d_lvds_7[1];
3255
            tbi_rx_d_flip_7[9] <= tbi_rx_d_lvds_7[0];
3256
            end
3257
        end
3258
 
3259
    always @(posedge ref_clk or posedge reset_ref_clk_int)
3260
        begin
3261
        if (reset_ref_clk_int == 1)
3262
            tbi_tx_d_flip_7 <= 0;
3263
        else
3264
            begin
3265
            tbi_tx_d_flip_7[0] <= tbi_tx_d_7[9];
3266
            tbi_tx_d_flip_7[1] <= tbi_tx_d_7[8];
3267
            tbi_tx_d_flip_7[2] <= tbi_tx_d_7[7];
3268
            tbi_tx_d_flip_7[3] <= tbi_tx_d_7[6];
3269
            tbi_tx_d_flip_7[4] <= tbi_tx_d_7[5];
3270
            tbi_tx_d_flip_7[5] <= tbi_tx_d_7[4];
3271
            tbi_tx_d_flip_7[6] <= tbi_tx_d_7[3];
3272
            tbi_tx_d_flip_7[7] <= tbi_tx_d_7[2];
3273
            tbi_tx_d_flip_7[8] <= tbi_tx_d_7[1];
3274
            tbi_tx_d_flip_7[9] <= tbi_tx_d_7[0];
3275
            end
3276
        end
3277
 
3278
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_7
3279
     (
3280
         .pll_areset ( reset ),
3281
         .rx_cda_reset ( rx_cda_reset_7 ),
3282
         .rx_channel_data_align ( rx_channel_data_align_7 ),
3283
         .rx_locked ( rx_locked_7 ),
3284
         .rx_divfwdclk (tbi_rx_clk_7),
3285
         .rx_in (rxp_7),
3286
         .rx_inclock (ref_clk),
3287
         .rx_out (tbi_rx_d_lvds_7),
3288
         .rx_outclock (),
3289
         .rx_reset (rx_reset_7)
3290
     );
3291
 
3292
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_7 (
3293
                .clk ( ref_clk ),
3294
                .reset ( reset_ref_clk_int ),
3295
                .rx_locked ( rx_locked_7 ),
3296
                .rx_channel_data_align ( rx_channel_data_align_7 ),
3297
                .pll_areset ( pll_areset_7 ),
3298
                .rx_reset ( rx_reset_7 ),
3299
        .rx_cda_reset ( rx_cda_reset_7 )
3300
        );
3301
 
3302
 
3303
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_7
3304
    (
3305
        .tx_in (tbi_tx_d_flip_7),
3306
        .tx_inclock (ref_clk),
3307
                .pll_areset ( reset ),
3308
        .tx_out (txp_7)
3309
    );
3310
 
3311
    end
3312
else
3313
    begin
3314
    assign txp_7 = 1'b0;
3315
    assign tbi_rx_clk_7 = 1'b0;
3316
    end
3317
endgenerate
3318
 
3319
 
3320
 
3321
// #######################################################################
3322
// ###############       CHANNEL 8 LOGIC/COMPONENTS       ###############
3323
// #######################################################################
3324
 
3325
// Export powerdown signal or wire it internally
3326
// ---------------------------------------------
3327
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 8)
3328
    begin
3329
        assign gxb_pwrdn_in_sig[8] = gxb_pwrdn_in_8;
3330
        assign pcs_pwrdn_out_8 = pcs_pwrdn_out_sig[8];
3331
    end
3332
else
3333
    begin
3334
        assign gxb_pwrdn_in_sig[8] = pcs_pwrdn_out_sig[8];
3335
                assign pcs_pwrdn_out_8 = 1'b0;
3336
    end
3337
endgenerate
3338
 
3339
 
3340
// Either one of these blocks below will be instantiated depending on the parameterization 
3341
// that is chosen.
3342
// ---------------------------------------------------------------------------------------
3343
 
3344
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
3345
//
3346
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
3347
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
3348
// reversal algorithm.  
3349
// -------------------------------------------------------------------------
3350
 
3351
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 8)
3352
    begin
3353
 
3354
    assign tbi_tx_clk_8 = ref_clk;
3355
    assign tbi_rx_d_8 = tbi_rx_d_flip_8;
3356
 
3357
    altera_tse_reset_synchronizer ch_8_reset_sync_0 (
3358
        .clk(tbi_rx_clk_8),
3359
        .reset_in(reset),
3360
        .reset_out(reset_tbi_rx_clk_8_int)
3361
        );
3362
 
3363
    always @(posedge tbi_rx_clk_8 or posedge reset_tbi_rx_clk_8_int)
3364
        begin
3365
        if (reset_tbi_rx_clk_8_int == 1)
3366
            tbi_rx_d_flip_8 <= 0;
3367
        else
3368
            begin
3369
            tbi_rx_d_flip_8[0] <= tbi_rx_d_lvds_8[9];
3370
            tbi_rx_d_flip_8[1] <= tbi_rx_d_lvds_8[8];
3371
            tbi_rx_d_flip_8[2] <= tbi_rx_d_lvds_8[7];
3372
            tbi_rx_d_flip_8[3] <= tbi_rx_d_lvds_8[6];
3373
            tbi_rx_d_flip_8[4] <= tbi_rx_d_lvds_8[5];
3374
            tbi_rx_d_flip_8[5] <= tbi_rx_d_lvds_8[4];
3375
            tbi_rx_d_flip_8[6] <= tbi_rx_d_lvds_8[3];
3376
            tbi_rx_d_flip_8[7] <= tbi_rx_d_lvds_8[2];
3377
            tbi_rx_d_flip_8[8] <= tbi_rx_d_lvds_8[1];
3378
            tbi_rx_d_flip_8[9] <= tbi_rx_d_lvds_8[0];
3379
            end
3380
        end
3381
 
3382
    always @(posedge ref_clk or posedge reset_ref_clk_int)
3383
        begin
3384
        if (reset_ref_clk_int == 1)
3385
            tbi_tx_d_flip_8 <= 0;
3386
        else
3387
            begin
3388
            tbi_tx_d_flip_8[0] <= tbi_tx_d_8[9];
3389
            tbi_tx_d_flip_8[1] <= tbi_tx_d_8[8];
3390
            tbi_tx_d_flip_8[2] <= tbi_tx_d_8[7];
3391
            tbi_tx_d_flip_8[3] <= tbi_tx_d_8[6];
3392
            tbi_tx_d_flip_8[4] <= tbi_tx_d_8[5];
3393
            tbi_tx_d_flip_8[5] <= tbi_tx_d_8[4];
3394
            tbi_tx_d_flip_8[6] <= tbi_tx_d_8[3];
3395
            tbi_tx_d_flip_8[7] <= tbi_tx_d_8[2];
3396
            tbi_tx_d_flip_8[8] <= tbi_tx_d_8[1];
3397
            tbi_tx_d_flip_8[9] <= tbi_tx_d_8[0];
3398
            end
3399
        end
3400
 
3401
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_8
3402
     (
3403
         .pll_areset ( reset ),
3404
         .rx_cda_reset ( rx_cda_reset_8 ),
3405
         .rx_channel_data_align ( rx_channel_data_align_8 ),
3406
         .rx_locked ( rx_locked_8 ),
3407
         .rx_divfwdclk (tbi_rx_clk_8),
3408
         .rx_in (rxp_8),
3409
         .rx_inclock (ref_clk),
3410
         .rx_out (tbi_rx_d_lvds_8),
3411
         .rx_outclock (),
3412
         .rx_reset (rx_reset_8)
3413
     );
3414
 
3415
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_8 (
3416
                .clk ( ref_clk ),
3417
                .reset ( reset_ref_clk_int ),
3418
                .rx_locked ( rx_locked_8 ),
3419
                .rx_channel_data_align ( rx_channel_data_align_8 ),
3420
                .pll_areset ( pll_areset_8 ),
3421
                .rx_reset ( rx_reset_8 ),
3422
        .rx_cda_reset ( rx_cda_reset_8 )
3423
        );
3424
 
3425
 
3426
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_8
3427
    (
3428
        .tx_in (tbi_tx_d_flip_8),
3429
        .tx_inclock (ref_clk),
3430
                .pll_areset ( reset ),
3431
        .tx_out (txp_8)
3432
    );
3433
 
3434
    end
3435
else
3436
    begin
3437
    assign txp_8 = 1'b0;
3438
    assign tbi_rx_clk_8 = 1'b0;
3439
    end
3440
endgenerate
3441
 
3442
 
3443
 
3444
// #######################################################################
3445
// ###############       CHANNEL 9 LOGIC/COMPONENTS       ###############
3446
// #######################################################################
3447
 
3448
// Export powerdown signal or wire it internally
3449
// ---------------------------------------------
3450
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 9)
3451
    begin
3452
        assign gxb_pwrdn_in_sig[9] = gxb_pwrdn_in_9;
3453
        assign pcs_pwrdn_out_9 = pcs_pwrdn_out_sig[9];
3454
    end
3455
else
3456
    begin
3457
        assign gxb_pwrdn_in_sig[9] = pcs_pwrdn_out_sig[9];
3458
                assign pcs_pwrdn_out_9 = 1'b0;
3459
    end
3460
endgenerate
3461
 
3462
 
3463
// Either one of these blocks below will be instantiated depending on the parameterization 
3464
// that is chosen.
3465
// ---------------------------------------------------------------------------------------
3466
 
3467
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
3468
//
3469
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
3470
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
3471
// reversal algorithm.  
3472
// -------------------------------------------------------------------------
3473
 
3474
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 9)
3475
    begin
3476
 
3477
    assign tbi_tx_clk_9 = ref_clk;
3478
    assign tbi_rx_d_9 = tbi_rx_d_flip_9;
3479
 
3480
    altera_tse_reset_synchronizer ch_9_reset_sync_0 (
3481
        .clk(tbi_rx_clk_9),
3482
        .reset_in(reset),
3483
        .reset_out(reset_tbi_rx_clk_9_int)
3484
        );
3485
 
3486
    always @(posedge tbi_rx_clk_9 or posedge reset_tbi_rx_clk_9_int)
3487
        begin
3488
        if (reset_tbi_rx_clk_9_int == 1)
3489
            tbi_rx_d_flip_9 <= 0;
3490
        else
3491
            begin
3492
            tbi_rx_d_flip_9[0] <= tbi_rx_d_lvds_9[9];
3493
            tbi_rx_d_flip_9[1] <= tbi_rx_d_lvds_9[8];
3494
            tbi_rx_d_flip_9[2] <= tbi_rx_d_lvds_9[7];
3495
            tbi_rx_d_flip_9[3] <= tbi_rx_d_lvds_9[6];
3496
            tbi_rx_d_flip_9[4] <= tbi_rx_d_lvds_9[5];
3497
            tbi_rx_d_flip_9[5] <= tbi_rx_d_lvds_9[4];
3498
            tbi_rx_d_flip_9[6] <= tbi_rx_d_lvds_9[3];
3499
            tbi_rx_d_flip_9[7] <= tbi_rx_d_lvds_9[2];
3500
            tbi_rx_d_flip_9[8] <= tbi_rx_d_lvds_9[1];
3501
            tbi_rx_d_flip_9[9] <= tbi_rx_d_lvds_9[0];
3502
            end
3503
        end
3504
 
3505
    always @(posedge ref_clk or posedge reset_ref_clk_int)
3506
        begin
3507
        if (reset_ref_clk_int == 1)
3508
            tbi_tx_d_flip_9 <= 0;
3509
        else
3510
            begin
3511
            tbi_tx_d_flip_9[0] <= tbi_tx_d_9[9];
3512
            tbi_tx_d_flip_9[1] <= tbi_tx_d_9[8];
3513
            tbi_tx_d_flip_9[2] <= tbi_tx_d_9[7];
3514
            tbi_tx_d_flip_9[3] <= tbi_tx_d_9[6];
3515
            tbi_tx_d_flip_9[4] <= tbi_tx_d_9[5];
3516
            tbi_tx_d_flip_9[5] <= tbi_tx_d_9[4];
3517
            tbi_tx_d_flip_9[6] <= tbi_tx_d_9[3];
3518
            tbi_tx_d_flip_9[7] <= tbi_tx_d_9[2];
3519
            tbi_tx_d_flip_9[8] <= tbi_tx_d_9[1];
3520
            tbi_tx_d_flip_9[9] <= tbi_tx_d_9[0];
3521
            end
3522
        end
3523
 
3524
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_9
3525
     (
3526
         .pll_areset ( reset ),
3527
         .rx_cda_reset ( rx_cda_reset_9 ),
3528
         .rx_channel_data_align ( rx_channel_data_align_9 ),
3529
         .rx_locked ( rx_locked_9 ),
3530
         .rx_divfwdclk (tbi_rx_clk_9),
3531
         .rx_in (rxp_9),
3532
         .rx_inclock (ref_clk),
3533
         .rx_out (tbi_rx_d_lvds_9),
3534
         .rx_outclock (),
3535
         .rx_reset (rx_reset_9)
3536
     );
3537
 
3538
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_9 (
3539
                .clk ( ref_clk ),
3540
                .reset ( reset_ref_clk_int ),
3541
                .rx_locked ( rx_locked_9 ),
3542
                .rx_channel_data_align ( rx_channel_data_align_9 ),
3543
                .pll_areset ( pll_areset_9 ),
3544
                .rx_reset ( rx_reset_9 ),
3545
        .rx_cda_reset ( rx_cda_reset_9 )
3546
        );
3547
 
3548
 
3549
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_9
3550
    (
3551
        .tx_in (tbi_tx_d_flip_9),
3552
        .tx_inclock (ref_clk),
3553
                .pll_areset ( reset ),
3554
        .tx_out (txp_9)
3555
    );
3556
 
3557
    end
3558
else
3559
    begin
3560
    assign txp_9 = 1'b0;
3561
    assign tbi_rx_clk_9 = 1'b0;
3562
    end
3563
endgenerate
3564
 
3565
 
3566
 
3567
// #######################################################################
3568
// ###############       CHANNEL 10 LOGIC/COMPONENTS       ###############
3569
// #######################################################################
3570
 
3571
// Export powerdown signal or wire it internally
3572
// ---------------------------------------------
3573
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 10)
3574
    begin
3575
        assign gxb_pwrdn_in_sig[10] = gxb_pwrdn_in_10;
3576
        assign pcs_pwrdn_out_10 = pcs_pwrdn_out_sig[10];
3577
    end
3578
else
3579
    begin
3580
        assign gxb_pwrdn_in_sig[10] = pcs_pwrdn_out_sig[10];
3581
                assign pcs_pwrdn_out_10 = 1'b0;
3582
    end
3583
endgenerate
3584
 
3585
 
3586
// Either one of these blocks below will be instantiated depending on the parameterization 
3587
// that is chosen.
3588
// ---------------------------------------------------------------------------------------
3589
 
3590
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
3591
//
3592
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
3593
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
3594
// reversal algorithm.  
3595
// -------------------------------------------------------------------------
3596
 
3597
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 10)
3598
    begin
3599
 
3600
    assign tbi_tx_clk_10 = ref_clk;
3601
    assign tbi_rx_d_10 = tbi_rx_d_flip_10;
3602
 
3603
    altera_tse_reset_synchronizer ch_10_reset_sync_0 (
3604
        .clk(tbi_rx_clk_10),
3605
        .reset_in(reset),
3606
        .reset_out(reset_tbi_rx_clk_10_int)
3607
        );
3608
 
3609
    always @(posedge tbi_rx_clk_10 or posedge reset_tbi_rx_clk_10_int)
3610
        begin
3611
        if (reset_tbi_rx_clk_10_int == 1)
3612
            tbi_rx_d_flip_10 <= 0;
3613
        else
3614
            begin
3615
            tbi_rx_d_flip_10[0] <= tbi_rx_d_lvds_10[9];
3616
            tbi_rx_d_flip_10[1] <= tbi_rx_d_lvds_10[8];
3617
            tbi_rx_d_flip_10[2] <= tbi_rx_d_lvds_10[7];
3618
            tbi_rx_d_flip_10[3] <= tbi_rx_d_lvds_10[6];
3619
            tbi_rx_d_flip_10[4] <= tbi_rx_d_lvds_10[5];
3620
            tbi_rx_d_flip_10[5] <= tbi_rx_d_lvds_10[4];
3621
            tbi_rx_d_flip_10[6] <= tbi_rx_d_lvds_10[3];
3622
            tbi_rx_d_flip_10[7] <= tbi_rx_d_lvds_10[2];
3623
            tbi_rx_d_flip_10[8] <= tbi_rx_d_lvds_10[1];
3624
            tbi_rx_d_flip_10[9] <= tbi_rx_d_lvds_10[0];
3625
            end
3626
        end
3627
 
3628
    always @(posedge ref_clk or posedge reset_ref_clk_int)
3629
        begin
3630
        if (reset_ref_clk_int == 1)
3631
            tbi_tx_d_flip_10 <= 0;
3632
        else
3633
            begin
3634
            tbi_tx_d_flip_10[0] <= tbi_tx_d_10[9];
3635
            tbi_tx_d_flip_10[1] <= tbi_tx_d_10[8];
3636
            tbi_tx_d_flip_10[2] <= tbi_tx_d_10[7];
3637
            tbi_tx_d_flip_10[3] <= tbi_tx_d_10[6];
3638
            tbi_tx_d_flip_10[4] <= tbi_tx_d_10[5];
3639
            tbi_tx_d_flip_10[5] <= tbi_tx_d_10[4];
3640
            tbi_tx_d_flip_10[6] <= tbi_tx_d_10[3];
3641
            tbi_tx_d_flip_10[7] <= tbi_tx_d_10[2];
3642
            tbi_tx_d_flip_10[8] <= tbi_tx_d_10[1];
3643
            tbi_tx_d_flip_10[9] <= tbi_tx_d_10[0];
3644
            end
3645
        end
3646
 
3647
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_10
3648
     (
3649
         .pll_areset ( reset ),
3650
         .rx_cda_reset ( rx_cda_reset_10 ),
3651
         .rx_channel_data_align ( rx_channel_data_align_10 ),
3652
         .rx_locked ( rx_locked_10 ),
3653
         .rx_divfwdclk (tbi_rx_clk_10),
3654
         .rx_in (rxp_10),
3655
         .rx_inclock (ref_clk),
3656
         .rx_out (tbi_rx_d_lvds_10),
3657
         .rx_outclock (),
3658
         .rx_reset (rx_reset_10)
3659
     );
3660
 
3661
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_10 (
3662
                .clk ( ref_clk ),
3663
                .reset ( reset_ref_clk_int ),
3664
                .rx_locked ( rx_locked_10 ),
3665
                .rx_channel_data_align ( rx_channel_data_align_10 ),
3666
                .pll_areset ( pll_areset_10 ),
3667
                .rx_reset ( rx_reset_10 ),
3668
        .rx_cda_reset ( rx_cda_reset_10 )
3669
        );
3670
 
3671
 
3672
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_10
3673
    (
3674
        .tx_in (tbi_tx_d_flip_10),
3675
        .tx_inclock (ref_clk),
3676
                .pll_areset ( reset ),
3677
        .tx_out (txp_10)
3678
    );
3679
 
3680
    end
3681
else
3682
    begin
3683
    assign txp_10 = 1'b0;
3684
    assign tbi_rx_clk_10 = 1'b0;
3685
    end
3686
endgenerate
3687
 
3688
 
3689
 
3690
// #######################################################################
3691
// ###############       CHANNEL 11 LOGIC/COMPONENTS       ###############
3692
// #######################################################################
3693
 
3694
// Export powerdown signal or wire it internally
3695
// ---------------------------------------------
3696
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 11)
3697
    begin
3698
        assign gxb_pwrdn_in_sig[11] = gxb_pwrdn_in_11;
3699
        assign pcs_pwrdn_out_11 = pcs_pwrdn_out_sig[11];
3700
    end
3701
else
3702
    begin
3703
        assign gxb_pwrdn_in_sig[11] = pcs_pwrdn_out_sig[11];
3704
                assign pcs_pwrdn_out_11 = 1'b0;
3705
    end
3706
endgenerate
3707
 
3708
 
3709
// Either one of these blocks below will be instantiated depending on the parameterization 
3710
// that is chosen.
3711
// ---------------------------------------------------------------------------------------
3712
 
3713
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
3714
//
3715
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
3716
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
3717
// reversal algorithm.  
3718
// -------------------------------------------------------------------------
3719
 
3720
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 11)
3721
    begin
3722
 
3723
    assign tbi_tx_clk_11 = ref_clk;
3724
    assign tbi_rx_d_11 = tbi_rx_d_flip_11;
3725
 
3726
    altera_tse_reset_synchronizer ch_11_reset_sync_0 (
3727
        .clk(tbi_rx_clk_11),
3728
        .reset_in(reset),
3729
        .reset_out(reset_tbi_rx_clk_11_int)
3730
        );
3731
 
3732
    always @(posedge tbi_rx_clk_11 or posedge reset_tbi_rx_clk_11_int)
3733
        begin
3734
        if (reset_tbi_rx_clk_11_int == 1)
3735
            tbi_rx_d_flip_11 <= 0;
3736
        else
3737
            begin
3738
            tbi_rx_d_flip_11[0] <= tbi_rx_d_lvds_11[9];
3739
            tbi_rx_d_flip_11[1] <= tbi_rx_d_lvds_11[8];
3740
            tbi_rx_d_flip_11[2] <= tbi_rx_d_lvds_11[7];
3741
            tbi_rx_d_flip_11[3] <= tbi_rx_d_lvds_11[6];
3742
            tbi_rx_d_flip_11[4] <= tbi_rx_d_lvds_11[5];
3743
            tbi_rx_d_flip_11[5] <= tbi_rx_d_lvds_11[4];
3744
            tbi_rx_d_flip_11[6] <= tbi_rx_d_lvds_11[3];
3745
            tbi_rx_d_flip_11[7] <= tbi_rx_d_lvds_11[2];
3746
            tbi_rx_d_flip_11[8] <= tbi_rx_d_lvds_11[1];
3747
            tbi_rx_d_flip_11[9] <= tbi_rx_d_lvds_11[0];
3748
            end
3749
        end
3750
 
3751
    always @(posedge ref_clk or posedge reset_ref_clk_int)
3752
        begin
3753
        if (reset_ref_clk_int == 1)
3754
            tbi_tx_d_flip_11 <= 0;
3755
        else
3756
            begin
3757
            tbi_tx_d_flip_11[0] <= tbi_tx_d_11[9];
3758
            tbi_tx_d_flip_11[1] <= tbi_tx_d_11[8];
3759
            tbi_tx_d_flip_11[2] <= tbi_tx_d_11[7];
3760
            tbi_tx_d_flip_11[3] <= tbi_tx_d_11[6];
3761
            tbi_tx_d_flip_11[4] <= tbi_tx_d_11[5];
3762
            tbi_tx_d_flip_11[5] <= tbi_tx_d_11[4];
3763
            tbi_tx_d_flip_11[6] <= tbi_tx_d_11[3];
3764
            tbi_tx_d_flip_11[7] <= tbi_tx_d_11[2];
3765
            tbi_tx_d_flip_11[8] <= tbi_tx_d_11[1];
3766
            tbi_tx_d_flip_11[9] <= tbi_tx_d_11[0];
3767
            end
3768
        end
3769
 
3770
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_11
3771
     (
3772
         .pll_areset ( reset ),
3773
         .rx_cda_reset ( rx_cda_reset_11 ),
3774
         .rx_channel_data_align ( rx_channel_data_align_11 ),
3775
         .rx_locked ( rx_locked_11 ),
3776
         .rx_divfwdclk (tbi_rx_clk_11),
3777
         .rx_in (rxp_11),
3778
         .rx_inclock (ref_clk),
3779
         .rx_out (tbi_rx_d_lvds_11),
3780
         .rx_outclock (),
3781
         .rx_reset (rx_reset_11)
3782
     );
3783
 
3784
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_11 (
3785
                .clk ( ref_clk ),
3786
                .reset ( reset_ref_clk_int ),
3787
                .rx_locked ( rx_locked_11 ),
3788
                .rx_channel_data_align ( rx_channel_data_align_11 ),
3789
                .pll_areset ( pll_areset_11 ),
3790
                .rx_reset ( rx_reset_11 ),
3791
        .rx_cda_reset ( rx_cda_reset_11 )
3792
        );
3793
 
3794
 
3795
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_11
3796
    (
3797
        .tx_in (tbi_tx_d_flip_11),
3798
        .tx_inclock (ref_clk),
3799
                .pll_areset ( reset ),
3800
        .tx_out (txp_11)
3801
    );
3802
 
3803
    end
3804
else
3805
    begin
3806
    assign txp_11 = 1'b0;
3807
    assign tbi_rx_clk_11 = 1'b0;
3808
    end
3809
endgenerate
3810
 
3811
 
3812
 
3813
// #######################################################################
3814
// ###############       CHANNEL 12 LOGIC/COMPONENTS       ###############
3815
// #######################################################################
3816
 
3817
// Export powerdown signal or wire it internally
3818
// ---------------------------------------------
3819
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 12)
3820
    begin
3821
        assign gxb_pwrdn_in_sig[12] = gxb_pwrdn_in_12;
3822
        assign pcs_pwrdn_out_12 = pcs_pwrdn_out_sig[12];
3823
    end
3824
else
3825
    begin
3826
        assign gxb_pwrdn_in_sig[12] = pcs_pwrdn_out_sig[12];
3827
                assign pcs_pwrdn_out_12 = 1'b0;
3828
    end
3829
endgenerate
3830
 
3831
 
3832
// Either one of these blocks below will be instantiated depending on the parameterization 
3833
// that is chosen.
3834
// ---------------------------------------------------------------------------------------
3835
 
3836
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
3837
//
3838
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
3839
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
3840
// reversal algorithm.  
3841
// -------------------------------------------------------------------------
3842
 
3843
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 12)
3844
    begin
3845
 
3846
    assign tbi_tx_clk_12 = ref_clk;
3847
    assign tbi_rx_d_12 = tbi_rx_d_flip_12;
3848
 
3849
    altera_tse_reset_synchronizer ch_12_reset_sync_0 (
3850
        .clk(tbi_rx_clk_12),
3851
        .reset_in(reset),
3852
        .reset_out(reset_tbi_rx_clk_12_int)
3853
        );
3854
 
3855
    always @(posedge tbi_rx_clk_12 or posedge reset_tbi_rx_clk_12_int)
3856
        begin
3857
        if (reset_tbi_rx_clk_12_int == 1)
3858
            tbi_rx_d_flip_12 <= 0;
3859
        else
3860
            begin
3861
            tbi_rx_d_flip_12[0] <= tbi_rx_d_lvds_12[9];
3862
            tbi_rx_d_flip_12[1] <= tbi_rx_d_lvds_12[8];
3863
            tbi_rx_d_flip_12[2] <= tbi_rx_d_lvds_12[7];
3864
            tbi_rx_d_flip_12[3] <= tbi_rx_d_lvds_12[6];
3865
            tbi_rx_d_flip_12[4] <= tbi_rx_d_lvds_12[5];
3866
            tbi_rx_d_flip_12[5] <= tbi_rx_d_lvds_12[4];
3867
            tbi_rx_d_flip_12[6] <= tbi_rx_d_lvds_12[3];
3868
            tbi_rx_d_flip_12[7] <= tbi_rx_d_lvds_12[2];
3869
            tbi_rx_d_flip_12[8] <= tbi_rx_d_lvds_12[1];
3870
            tbi_rx_d_flip_12[9] <= tbi_rx_d_lvds_12[0];
3871
            end
3872
        end
3873
 
3874
    always @(posedge ref_clk or posedge reset_ref_clk_int)
3875
        begin
3876
        if (reset_ref_clk_int == 1)
3877
            tbi_tx_d_flip_12 <= 0;
3878
        else
3879
            begin
3880
            tbi_tx_d_flip_12[0] <= tbi_tx_d_12[9];
3881
            tbi_tx_d_flip_12[1] <= tbi_tx_d_12[8];
3882
            tbi_tx_d_flip_12[2] <= tbi_tx_d_12[7];
3883
            tbi_tx_d_flip_12[3] <= tbi_tx_d_12[6];
3884
            tbi_tx_d_flip_12[4] <= tbi_tx_d_12[5];
3885
            tbi_tx_d_flip_12[5] <= tbi_tx_d_12[4];
3886
            tbi_tx_d_flip_12[6] <= tbi_tx_d_12[3];
3887
            tbi_tx_d_flip_12[7] <= tbi_tx_d_12[2];
3888
            tbi_tx_d_flip_12[8] <= tbi_tx_d_12[1];
3889
            tbi_tx_d_flip_12[9] <= tbi_tx_d_12[0];
3890
            end
3891
        end
3892
 
3893
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_12
3894
     (
3895
         .pll_areset ( reset ),
3896
         .rx_cda_reset ( rx_cda_reset_12 ),
3897
         .rx_channel_data_align ( rx_channel_data_align_12 ),
3898
         .rx_locked ( rx_locked_12 ),
3899
         .rx_divfwdclk (tbi_rx_clk_12),
3900
         .rx_in (rxp_12),
3901
         .rx_inclock (ref_clk),
3902
         .rx_out (tbi_rx_d_lvds_12),
3903
         .rx_outclock (),
3904
         .rx_reset (rx_reset_12)
3905
     );
3906
 
3907
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_12 (
3908
                .clk ( ref_clk ),
3909
                .reset ( reset_ref_clk_int ),
3910
                .rx_locked ( rx_locked_12 ),
3911
                .rx_channel_data_align ( rx_channel_data_align_12 ),
3912
                .pll_areset ( pll_areset_12 ),
3913
                .rx_reset ( rx_reset_12 ),
3914
        .rx_cda_reset ( rx_cda_reset_12 )
3915
        );
3916
 
3917
 
3918
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_12
3919
    (
3920
        .tx_in (tbi_tx_d_flip_12),
3921
        .tx_inclock (ref_clk),
3922
                .pll_areset ( reset ),
3923
        .tx_out (txp_12)
3924
    );
3925
 
3926
    end
3927
else
3928
    begin
3929
    assign txp_12 = 1'b0;
3930
    assign tbi_rx_clk_12 = 1'b0;
3931
    end
3932
endgenerate
3933
 
3934
 
3935
 
3936
// #######################################################################
3937
// ###############       CHANNEL 13 LOGIC/COMPONENTS       ###############
3938
// #######################################################################
3939
 
3940
// Export powerdown signal or wire it internally
3941
// ---------------------------------------------
3942
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 13)
3943
    begin
3944
        assign gxb_pwrdn_in_sig[13] = gxb_pwrdn_in_13;
3945
        assign pcs_pwrdn_out_13 = pcs_pwrdn_out_sig[13];
3946
    end
3947
else
3948
    begin
3949
        assign gxb_pwrdn_in_sig[13] = pcs_pwrdn_out_sig[13];
3950
                assign pcs_pwrdn_out_13 = 1'b0;
3951
    end
3952
endgenerate
3953
 
3954
 
3955
// Either one of these blocks below will be instantiated depending on the parameterization 
3956
// that is chosen.
3957
// ---------------------------------------------------------------------------------------
3958
 
3959
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
3960
//
3961
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
3962
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
3963
// reversal algorithm.  
3964
// -------------------------------------------------------------------------
3965
 
3966
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 13)
3967
    begin
3968
 
3969
    assign tbi_tx_clk_13 = ref_clk;
3970
    assign tbi_rx_d_13 = tbi_rx_d_flip_13;
3971
 
3972
    altera_tse_reset_synchronizer ch_13_reset_sync_0 (
3973
        .clk(tbi_rx_clk_13),
3974
        .reset_in(reset),
3975
        .reset_out(reset_tbi_rx_clk_13_int)
3976
        );
3977
 
3978
    always @(posedge tbi_rx_clk_13 or posedge reset_tbi_rx_clk_13_int)
3979
        begin
3980
        if (reset_tbi_rx_clk_13_int == 1)
3981
            tbi_rx_d_flip_13 <= 0;
3982
        else
3983
            begin
3984
            tbi_rx_d_flip_13[0] <= tbi_rx_d_lvds_13[9];
3985
            tbi_rx_d_flip_13[1] <= tbi_rx_d_lvds_13[8];
3986
            tbi_rx_d_flip_13[2] <= tbi_rx_d_lvds_13[7];
3987
            tbi_rx_d_flip_13[3] <= tbi_rx_d_lvds_13[6];
3988
            tbi_rx_d_flip_13[4] <= tbi_rx_d_lvds_13[5];
3989
            tbi_rx_d_flip_13[5] <= tbi_rx_d_lvds_13[4];
3990
            tbi_rx_d_flip_13[6] <= tbi_rx_d_lvds_13[3];
3991
            tbi_rx_d_flip_13[7] <= tbi_rx_d_lvds_13[2];
3992
            tbi_rx_d_flip_13[8] <= tbi_rx_d_lvds_13[1];
3993
            tbi_rx_d_flip_13[9] <= tbi_rx_d_lvds_13[0];
3994
            end
3995
        end
3996
 
3997
    always @(posedge ref_clk or posedge reset_ref_clk_int)
3998
        begin
3999
        if (reset_ref_clk_int == 1)
4000
            tbi_tx_d_flip_13 <= 0;
4001
        else
4002
            begin
4003
            tbi_tx_d_flip_13[0] <= tbi_tx_d_13[9];
4004
            tbi_tx_d_flip_13[1] <= tbi_tx_d_13[8];
4005
            tbi_tx_d_flip_13[2] <= tbi_tx_d_13[7];
4006
            tbi_tx_d_flip_13[3] <= tbi_tx_d_13[6];
4007
            tbi_tx_d_flip_13[4] <= tbi_tx_d_13[5];
4008
            tbi_tx_d_flip_13[5] <= tbi_tx_d_13[4];
4009
            tbi_tx_d_flip_13[6] <= tbi_tx_d_13[3];
4010
            tbi_tx_d_flip_13[7] <= tbi_tx_d_13[2];
4011
            tbi_tx_d_flip_13[8] <= tbi_tx_d_13[1];
4012
            tbi_tx_d_flip_13[9] <= tbi_tx_d_13[0];
4013
            end
4014
        end
4015
 
4016
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_13
4017
     (
4018
         .pll_areset ( reset ),
4019
         .rx_cda_reset ( rx_cda_reset_13 ),
4020
         .rx_channel_data_align ( rx_channel_data_align_13 ),
4021
         .rx_locked ( rx_locked_13 ),
4022
         .rx_divfwdclk (tbi_rx_clk_13),
4023
         .rx_in (rxp_13),
4024
         .rx_inclock (ref_clk),
4025
         .rx_out (tbi_rx_d_lvds_13),
4026
         .rx_outclock (),
4027
         .rx_reset (rx_reset_13)
4028
     );
4029
 
4030
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_13 (
4031
                .clk ( ref_clk ),
4032
                .reset ( reset_ref_clk_int ),
4033
                .rx_locked ( rx_locked_13 ),
4034
                .rx_channel_data_align ( rx_channel_data_align_13 ),
4035
                .pll_areset ( pll_areset_13 ),
4036
                .rx_reset ( rx_reset_13 ),
4037
        .rx_cda_reset ( rx_cda_reset_13 )
4038
        );
4039
 
4040
 
4041
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_13
4042
    (
4043
        .tx_in (tbi_tx_d_flip_13),
4044
        .tx_inclock (ref_clk),
4045
                .pll_areset ( reset ),
4046
        .tx_out (txp_13)
4047
    );
4048
 
4049
    end
4050
else
4051
    begin
4052
    assign txp_13 = 1'b0;
4053
    assign tbi_rx_clk_13 = 1'b0;
4054
    end
4055
endgenerate
4056
 
4057
 
4058
 
4059
// #######################################################################
4060
// ###############       CHANNEL 14 LOGIC/COMPONENTS       ###############
4061
// #######################################################################
4062
 
4063
// Export powerdown signal or wire it internally
4064
// ---------------------------------------------
4065
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 14)
4066
    begin
4067
        assign gxb_pwrdn_in_sig[14] = gxb_pwrdn_in_14;
4068
        assign pcs_pwrdn_out_14 = pcs_pwrdn_out_sig[14];
4069
    end
4070
else
4071
    begin
4072
        assign gxb_pwrdn_in_sig[14] = pcs_pwrdn_out_sig[14];
4073
                assign pcs_pwrdn_out_14 = 1'b0;
4074
    end
4075
endgenerate
4076
 
4077
 
4078
// Either one of these blocks below will be instantiated depending on the parameterization 
4079
// that is chosen.
4080
// ---------------------------------------------------------------------------------------
4081
 
4082
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
4083
//
4084
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
4085
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
4086
// reversal algorithm.  
4087
// -------------------------------------------------------------------------
4088
 
4089
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 14)
4090
    begin
4091
 
4092
    assign tbi_tx_clk_14 = ref_clk;
4093
    assign tbi_rx_d_14 = tbi_rx_d_flip_14;
4094
 
4095
    altera_tse_reset_synchronizer ch_14_reset_sync_0 (
4096
        .clk(tbi_rx_clk_14),
4097
        .reset_in(reset),
4098
        .reset_out(reset_tbi_rx_clk_14_int)
4099
        );
4100
 
4101
    always @(posedge tbi_rx_clk_14 or posedge reset_tbi_rx_clk_14_int)
4102
        begin
4103
        if (reset_tbi_rx_clk_14_int == 1)
4104
            tbi_rx_d_flip_14 <= 0;
4105
        else
4106
            begin
4107
            tbi_rx_d_flip_14[0] <= tbi_rx_d_lvds_14[9];
4108
            tbi_rx_d_flip_14[1] <= tbi_rx_d_lvds_14[8];
4109
            tbi_rx_d_flip_14[2] <= tbi_rx_d_lvds_14[7];
4110
            tbi_rx_d_flip_14[3] <= tbi_rx_d_lvds_14[6];
4111
            tbi_rx_d_flip_14[4] <= tbi_rx_d_lvds_14[5];
4112
            tbi_rx_d_flip_14[5] <= tbi_rx_d_lvds_14[4];
4113
            tbi_rx_d_flip_14[6] <= tbi_rx_d_lvds_14[3];
4114
            tbi_rx_d_flip_14[7] <= tbi_rx_d_lvds_14[2];
4115
            tbi_rx_d_flip_14[8] <= tbi_rx_d_lvds_14[1];
4116
            tbi_rx_d_flip_14[9] <= tbi_rx_d_lvds_14[0];
4117
            end
4118
        end
4119
 
4120
    always @(posedge ref_clk or posedge reset_ref_clk_int)
4121
        begin
4122
        if (reset_ref_clk_int == 1)
4123
            tbi_tx_d_flip_14 <= 0;
4124
        else
4125
            begin
4126
            tbi_tx_d_flip_14[0] <= tbi_tx_d_14[9];
4127
            tbi_tx_d_flip_14[1] <= tbi_tx_d_14[8];
4128
            tbi_tx_d_flip_14[2] <= tbi_tx_d_14[7];
4129
            tbi_tx_d_flip_14[3] <= tbi_tx_d_14[6];
4130
            tbi_tx_d_flip_14[4] <= tbi_tx_d_14[5];
4131
            tbi_tx_d_flip_14[5] <= tbi_tx_d_14[4];
4132
            tbi_tx_d_flip_14[6] <= tbi_tx_d_14[3];
4133
            tbi_tx_d_flip_14[7] <= tbi_tx_d_14[2];
4134
            tbi_tx_d_flip_14[8] <= tbi_tx_d_14[1];
4135
            tbi_tx_d_flip_14[9] <= tbi_tx_d_14[0];
4136
            end
4137
        end
4138
 
4139
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_14
4140
     (
4141
         .pll_areset ( reset ),
4142
         .rx_cda_reset ( rx_cda_reset_14 ),
4143
         .rx_channel_data_align ( rx_channel_data_align_14 ),
4144
         .rx_locked ( rx_locked_14 ),
4145
         .rx_divfwdclk (tbi_rx_clk_14),
4146
         .rx_in (rxp_14),
4147
         .rx_inclock (ref_clk),
4148
         .rx_out (tbi_rx_d_lvds_14),
4149
         .rx_outclock (),
4150
         .rx_reset (rx_reset_14)
4151
     );
4152
 
4153
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_14 (
4154
                .clk ( ref_clk ),
4155
                .reset ( reset_ref_clk_int ),
4156
                .rx_locked ( rx_locked_14 ),
4157
                .rx_channel_data_align ( rx_channel_data_align_14 ),
4158
                .pll_areset ( pll_areset_14 ),
4159
                .rx_reset ( rx_reset_14 ),
4160
        .rx_cda_reset ( rx_cda_reset_14 )
4161
        );
4162
 
4163
 
4164
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_14
4165
    (
4166
        .tx_in (tbi_tx_d_flip_14),
4167
        .tx_inclock (ref_clk),
4168
                .pll_areset ( reset ),
4169
        .tx_out (txp_14)
4170
    );
4171
 
4172
    end
4173
else
4174
    begin
4175
    assign txp_14 = 1'b0;
4176
    assign tbi_rx_clk_14 = 1'b0;
4177
    end
4178
endgenerate
4179
 
4180
 
4181
 
4182
// #######################################################################
4183
// ###############       CHANNEL 15 LOGIC/COMPONENTS       ###############
4184
// #######################################################################
4185
 
4186
// Export powerdown signal or wire it internally
4187
// ---------------------------------------------
4188
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 15)
4189
    begin
4190
        assign gxb_pwrdn_in_sig[15] = gxb_pwrdn_in_15;
4191
        assign pcs_pwrdn_out_15 = pcs_pwrdn_out_sig[15];
4192
    end
4193
else
4194
    begin
4195
        assign gxb_pwrdn_in_sig[15] = pcs_pwrdn_out_sig[15];
4196
                assign pcs_pwrdn_out_15 = 1'b0;
4197
    end
4198
endgenerate
4199
 
4200
 
4201
// Either one of these blocks below will be instantiated depending on the parameterization 
4202
// that is chosen.
4203
// ---------------------------------------------------------------------------------------
4204
 
4205
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
4206
//
4207
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
4208
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
4209
// reversal algorithm.  
4210
// -------------------------------------------------------------------------
4211
 
4212
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 15)
4213
    begin
4214
 
4215
    assign tbi_tx_clk_15 = ref_clk;
4216
    assign tbi_rx_d_15 = tbi_rx_d_flip_15;
4217
 
4218
    altera_tse_reset_synchronizer ch_15_reset_sync_0 (
4219
        .clk(tbi_rx_clk_15),
4220
        .reset_in(reset),
4221
        .reset_out(reset_tbi_rx_clk_15_int)
4222
        );
4223
 
4224
    always @(posedge tbi_rx_clk_15 or posedge reset_tbi_rx_clk_15_int)
4225
        begin
4226
        if (reset_tbi_rx_clk_15_int == 1)
4227
            tbi_rx_d_flip_15 <= 0;
4228
        else
4229
            begin
4230
            tbi_rx_d_flip_15[0] <= tbi_rx_d_lvds_15[9];
4231
            tbi_rx_d_flip_15[1] <= tbi_rx_d_lvds_15[8];
4232
            tbi_rx_d_flip_15[2] <= tbi_rx_d_lvds_15[7];
4233
            tbi_rx_d_flip_15[3] <= tbi_rx_d_lvds_15[6];
4234
            tbi_rx_d_flip_15[4] <= tbi_rx_d_lvds_15[5];
4235
            tbi_rx_d_flip_15[5] <= tbi_rx_d_lvds_15[4];
4236
            tbi_rx_d_flip_15[6] <= tbi_rx_d_lvds_15[3];
4237
            tbi_rx_d_flip_15[7] <= tbi_rx_d_lvds_15[2];
4238
            tbi_rx_d_flip_15[8] <= tbi_rx_d_lvds_15[1];
4239
            tbi_rx_d_flip_15[9] <= tbi_rx_d_lvds_15[0];
4240
            end
4241
        end
4242
 
4243
    always @(posedge ref_clk or posedge reset_ref_clk_int)
4244
        begin
4245
        if (reset_ref_clk_int == 1)
4246
            tbi_tx_d_flip_15 <= 0;
4247
        else
4248
            begin
4249
            tbi_tx_d_flip_15[0] <= tbi_tx_d_15[9];
4250
            tbi_tx_d_flip_15[1] <= tbi_tx_d_15[8];
4251
            tbi_tx_d_flip_15[2] <= tbi_tx_d_15[7];
4252
            tbi_tx_d_flip_15[3] <= tbi_tx_d_15[6];
4253
            tbi_tx_d_flip_15[4] <= tbi_tx_d_15[5];
4254
            tbi_tx_d_flip_15[5] <= tbi_tx_d_15[4];
4255
            tbi_tx_d_flip_15[6] <= tbi_tx_d_15[3];
4256
            tbi_tx_d_flip_15[7] <= tbi_tx_d_15[2];
4257
            tbi_tx_d_flip_15[8] <= tbi_tx_d_15[1];
4258
            tbi_tx_d_flip_15[9] <= tbi_tx_d_15[0];
4259
            end
4260
        end
4261
 
4262
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_15
4263
     (
4264
         .pll_areset ( reset ),
4265
         .rx_cda_reset ( rx_cda_reset_15 ),
4266
         .rx_channel_data_align ( rx_channel_data_align_15 ),
4267
         .rx_locked ( rx_locked_15 ),
4268
         .rx_divfwdclk (tbi_rx_clk_15),
4269
         .rx_in (rxp_15),
4270
         .rx_inclock (ref_clk),
4271
         .rx_out (tbi_rx_d_lvds_15),
4272
         .rx_outclock (),
4273
         .rx_reset (rx_reset_15)
4274
     );
4275
 
4276
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_15 (
4277
                .clk ( ref_clk ),
4278
                .reset ( reset_ref_clk_int ),
4279
                .rx_locked ( rx_locked_15 ),
4280
                .rx_channel_data_align ( rx_channel_data_align_15 ),
4281
                .pll_areset ( pll_areset_15 ),
4282
                .rx_reset ( rx_reset_15 ),
4283
        .rx_cda_reset ( rx_cda_reset_15 )
4284
        );
4285
 
4286
 
4287
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_15
4288
    (
4289
        .tx_in (tbi_tx_d_flip_15),
4290
        .tx_inclock (ref_clk),
4291
                .pll_areset ( reset ),
4292
        .tx_out (txp_15)
4293
    );
4294
 
4295
    end
4296
else
4297
    begin
4298
    assign txp_15 = 1'b0;
4299
    assign tbi_rx_clk_15 = 1'b0;
4300
    end
4301
endgenerate
4302
 
4303
 
4304
 
4305
// #######################################################################
4306
// ###############       CHANNEL 16 LOGIC/COMPONENTS       ###############
4307
// #######################################################################
4308
 
4309
// Export powerdown signal or wire it internally
4310
// ---------------------------------------------
4311
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 16)
4312
    begin
4313
        assign gxb_pwrdn_in_sig[16] = gxb_pwrdn_in_16;
4314
        assign pcs_pwrdn_out_16 = pcs_pwrdn_out_sig[16];
4315
    end
4316
else
4317
    begin
4318
        assign gxb_pwrdn_in_sig[16] = pcs_pwrdn_out_sig[16];
4319
                assign pcs_pwrdn_out_16 = 1'b0;
4320
    end
4321
endgenerate
4322
 
4323
 
4324
// Either one of these blocks below will be instantiated depending on the parameterization 
4325
// that is chosen.
4326
// ---------------------------------------------------------------------------------------
4327
 
4328
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
4329
//
4330
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
4331
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
4332
// reversal algorithm.  
4333
// -------------------------------------------------------------------------
4334
 
4335
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 16)
4336
    begin
4337
 
4338
    assign tbi_tx_clk_16 = ref_clk;
4339
    assign tbi_rx_d_16 = tbi_rx_d_flip_16;
4340
 
4341
    altera_tse_reset_synchronizer ch_16_reset_sync_0 (
4342
        .clk(tbi_rx_clk_16),
4343
        .reset_in(reset),
4344
        .reset_out(reset_tbi_rx_clk_16_int)
4345
        );
4346
 
4347
    always @(posedge tbi_rx_clk_16 or posedge reset_tbi_rx_clk_16_int)
4348
        begin
4349
        if (reset_tbi_rx_clk_16_int == 1)
4350
            tbi_rx_d_flip_16 <= 0;
4351
        else
4352
            begin
4353
            tbi_rx_d_flip_16[0] <= tbi_rx_d_lvds_16[9];
4354
            tbi_rx_d_flip_16[1] <= tbi_rx_d_lvds_16[8];
4355
            tbi_rx_d_flip_16[2] <= tbi_rx_d_lvds_16[7];
4356
            tbi_rx_d_flip_16[3] <= tbi_rx_d_lvds_16[6];
4357
            tbi_rx_d_flip_16[4] <= tbi_rx_d_lvds_16[5];
4358
            tbi_rx_d_flip_16[5] <= tbi_rx_d_lvds_16[4];
4359
            tbi_rx_d_flip_16[6] <= tbi_rx_d_lvds_16[3];
4360
            tbi_rx_d_flip_16[7] <= tbi_rx_d_lvds_16[2];
4361
            tbi_rx_d_flip_16[8] <= tbi_rx_d_lvds_16[1];
4362
            tbi_rx_d_flip_16[9] <= tbi_rx_d_lvds_16[0];
4363
            end
4364
        end
4365
 
4366
    always @(posedge ref_clk or posedge reset_ref_clk_int)
4367
        begin
4368
        if (reset_ref_clk_int == 1)
4369
            tbi_tx_d_flip_16 <= 0;
4370
        else
4371
            begin
4372
            tbi_tx_d_flip_16[0] <= tbi_tx_d_16[9];
4373
            tbi_tx_d_flip_16[1] <= tbi_tx_d_16[8];
4374
            tbi_tx_d_flip_16[2] <= tbi_tx_d_16[7];
4375
            tbi_tx_d_flip_16[3] <= tbi_tx_d_16[6];
4376
            tbi_tx_d_flip_16[4] <= tbi_tx_d_16[5];
4377
            tbi_tx_d_flip_16[5] <= tbi_tx_d_16[4];
4378
            tbi_tx_d_flip_16[6] <= tbi_tx_d_16[3];
4379
            tbi_tx_d_flip_16[7] <= tbi_tx_d_16[2];
4380
            tbi_tx_d_flip_16[8] <= tbi_tx_d_16[1];
4381
            tbi_tx_d_flip_16[9] <= tbi_tx_d_16[0];
4382
            end
4383
        end
4384
 
4385
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_16
4386
     (
4387
         .pll_areset ( reset ),
4388
         .rx_cda_reset ( rx_cda_reset_16 ),
4389
         .rx_channel_data_align ( rx_channel_data_align_16 ),
4390
         .rx_locked ( rx_locked_16 ),
4391
         .rx_divfwdclk (tbi_rx_clk_16),
4392
         .rx_in (rxp_16),
4393
         .rx_inclock (ref_clk),
4394
         .rx_out (tbi_rx_d_lvds_16),
4395
         .rx_outclock (),
4396
         .rx_reset (rx_reset_16)
4397
     );
4398
 
4399
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_16 (
4400
                .clk ( ref_clk ),
4401
                .reset ( reset_ref_clk_int ),
4402
                .rx_locked ( rx_locked_16 ),
4403
                .rx_channel_data_align ( rx_channel_data_align_16 ),
4404
                .pll_areset ( pll_areset_16 ),
4405
                .rx_reset ( rx_reset_16 ),
4406
        .rx_cda_reset ( rx_cda_reset_16 )
4407
        );
4408
 
4409
 
4410
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_16
4411
    (
4412
        .tx_in (tbi_tx_d_flip_16),
4413
        .tx_inclock (ref_clk),
4414
                .pll_areset ( reset ),
4415
        .tx_out (txp_16)
4416
    );
4417
 
4418
    end
4419
else
4420
    begin
4421
    assign txp_16 = 1'b0;
4422
    assign tbi_rx_clk_16 = 1'b0;
4423
    end
4424
endgenerate
4425
 
4426
 
4427
 
4428
// #######################################################################
4429
// ###############       CHANNEL 17 LOGIC/COMPONENTS       ###############
4430
// #######################################################################
4431
 
4432
// Export powerdown signal or wire it internally
4433
// ---------------------------------------------
4434
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 17)
4435
    begin
4436
        assign gxb_pwrdn_in_sig[17] = gxb_pwrdn_in_17;
4437
        assign pcs_pwrdn_out_17 = pcs_pwrdn_out_sig[17];
4438
    end
4439
else
4440
    begin
4441
        assign gxb_pwrdn_in_sig[17] = pcs_pwrdn_out_sig[17];
4442
                assign pcs_pwrdn_out_17 = 1'b0;
4443
    end
4444
endgenerate
4445
 
4446
 
4447
// Either one of these blocks below will be instantiated depending on the parameterization 
4448
// that is chosen.
4449
// ---------------------------------------------------------------------------------------
4450
 
4451
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
4452
//
4453
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
4454
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
4455
// reversal algorithm.  
4456
// -------------------------------------------------------------------------
4457
 
4458
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 17)
4459
    begin
4460
 
4461
    assign tbi_tx_clk_17 = ref_clk;
4462
    assign tbi_rx_d_17 = tbi_rx_d_flip_17;
4463
 
4464
    altera_tse_reset_synchronizer ch_17_reset_sync_0 (
4465
        .clk(tbi_rx_clk_17),
4466
        .reset_in(reset),
4467
        .reset_out(reset_tbi_rx_clk_17_int)
4468
        );
4469
 
4470
    always @(posedge tbi_rx_clk_17 or posedge reset_tbi_rx_clk_17_int)
4471
        begin
4472
        if (reset_tbi_rx_clk_17_int == 1)
4473
            tbi_rx_d_flip_17 <= 0;
4474
        else
4475
            begin
4476
            tbi_rx_d_flip_17[0] <= tbi_rx_d_lvds_17[9];
4477
            tbi_rx_d_flip_17[1] <= tbi_rx_d_lvds_17[8];
4478
            tbi_rx_d_flip_17[2] <= tbi_rx_d_lvds_17[7];
4479
            tbi_rx_d_flip_17[3] <= tbi_rx_d_lvds_17[6];
4480
            tbi_rx_d_flip_17[4] <= tbi_rx_d_lvds_17[5];
4481
            tbi_rx_d_flip_17[5] <= tbi_rx_d_lvds_17[4];
4482
            tbi_rx_d_flip_17[6] <= tbi_rx_d_lvds_17[3];
4483
            tbi_rx_d_flip_17[7] <= tbi_rx_d_lvds_17[2];
4484
            tbi_rx_d_flip_17[8] <= tbi_rx_d_lvds_17[1];
4485
            tbi_rx_d_flip_17[9] <= tbi_rx_d_lvds_17[0];
4486
            end
4487
        end
4488
 
4489
    always @(posedge ref_clk or posedge reset_ref_clk_int)
4490
        begin
4491
        if (reset_ref_clk_int == 1)
4492
            tbi_tx_d_flip_17 <= 0;
4493
        else
4494
            begin
4495
            tbi_tx_d_flip_17[0] <= tbi_tx_d_17[9];
4496
            tbi_tx_d_flip_17[1] <= tbi_tx_d_17[8];
4497
            tbi_tx_d_flip_17[2] <= tbi_tx_d_17[7];
4498
            tbi_tx_d_flip_17[3] <= tbi_tx_d_17[6];
4499
            tbi_tx_d_flip_17[4] <= tbi_tx_d_17[5];
4500
            tbi_tx_d_flip_17[5] <= tbi_tx_d_17[4];
4501
            tbi_tx_d_flip_17[6] <= tbi_tx_d_17[3];
4502
            tbi_tx_d_flip_17[7] <= tbi_tx_d_17[2];
4503
            tbi_tx_d_flip_17[8] <= tbi_tx_d_17[1];
4504
            tbi_tx_d_flip_17[9] <= tbi_tx_d_17[0];
4505
            end
4506
        end
4507
 
4508
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_17
4509
     (
4510
         .pll_areset ( reset ),
4511
         .rx_cda_reset ( rx_cda_reset_17 ),
4512
         .rx_channel_data_align ( rx_channel_data_align_17 ),
4513
         .rx_locked ( rx_locked_17 ),
4514
         .rx_divfwdclk (tbi_rx_clk_17),
4515
         .rx_in (rxp_17),
4516
         .rx_inclock (ref_clk),
4517
         .rx_out (tbi_rx_d_lvds_17),
4518
         .rx_outclock (),
4519
         .rx_reset (rx_reset_17)
4520
     );
4521
 
4522
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_17 (
4523
                .clk ( ref_clk ),
4524
                .reset ( reset_ref_clk_int ),
4525
                .rx_locked ( rx_locked_17 ),
4526
                .rx_channel_data_align ( rx_channel_data_align_17 ),
4527
                .pll_areset ( pll_areset_17 ),
4528
                .rx_reset ( rx_reset_17 ),
4529
        .rx_cda_reset ( rx_cda_reset_17 )
4530
        );
4531
 
4532
 
4533
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_17
4534
    (
4535
        .tx_in (tbi_tx_d_flip_17),
4536
        .tx_inclock (ref_clk),
4537
                .pll_areset ( reset ),
4538
        .tx_out (txp_17)
4539
    );
4540
 
4541
    end
4542
else
4543
    begin
4544
    assign txp_17 = 1'b0;
4545
    assign tbi_rx_clk_17 = 1'b0;
4546
    end
4547
endgenerate
4548
 
4549
 
4550
 
4551
// #######################################################################
4552
// ###############       CHANNEL 18 LOGIC/COMPONENTS       ###############
4553
// #######################################################################
4554
 
4555
// Export powerdown signal or wire it internally
4556
// ---------------------------------------------
4557
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 18)
4558
    begin
4559
        assign gxb_pwrdn_in_sig[18] = gxb_pwrdn_in_18;
4560
        assign pcs_pwrdn_out_18 = pcs_pwrdn_out_sig[18];
4561
    end
4562
else
4563
    begin
4564
        assign gxb_pwrdn_in_sig[18] = pcs_pwrdn_out_sig[18];
4565
                assign pcs_pwrdn_out_18 = 1'b0;
4566
    end
4567
endgenerate
4568
 
4569
 
4570
// Either one of these blocks below will be instantiated depending on the parameterization 
4571
// that is chosen.
4572
// ---------------------------------------------------------------------------------------
4573
 
4574
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
4575
//
4576
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
4577
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
4578
// reversal algorithm.  
4579
// -------------------------------------------------------------------------
4580
 
4581
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 18)
4582
    begin
4583
 
4584
    assign tbi_tx_clk_18 = ref_clk;
4585
    assign tbi_rx_d_18 = tbi_rx_d_flip_18;
4586
 
4587
    altera_tse_reset_synchronizer ch_18_reset_sync_0 (
4588
        .clk(tbi_rx_clk_18),
4589
        .reset_in(reset),
4590
        .reset_out(reset_tbi_rx_clk_18_int)
4591
        );
4592
 
4593
    always @(posedge tbi_rx_clk_18 or posedge reset_tbi_rx_clk_18_int)
4594
        begin
4595
        if (reset_tbi_rx_clk_18_int == 1)
4596
            tbi_rx_d_flip_18 <= 0;
4597
        else
4598
            begin
4599
            tbi_rx_d_flip_18[0] <= tbi_rx_d_lvds_18[9];
4600
            tbi_rx_d_flip_18[1] <= tbi_rx_d_lvds_18[8];
4601
            tbi_rx_d_flip_18[2] <= tbi_rx_d_lvds_18[7];
4602
            tbi_rx_d_flip_18[3] <= tbi_rx_d_lvds_18[6];
4603
            tbi_rx_d_flip_18[4] <= tbi_rx_d_lvds_18[5];
4604
            tbi_rx_d_flip_18[5] <= tbi_rx_d_lvds_18[4];
4605
            tbi_rx_d_flip_18[6] <= tbi_rx_d_lvds_18[3];
4606
            tbi_rx_d_flip_18[7] <= tbi_rx_d_lvds_18[2];
4607
            tbi_rx_d_flip_18[8] <= tbi_rx_d_lvds_18[1];
4608
            tbi_rx_d_flip_18[9] <= tbi_rx_d_lvds_18[0];
4609
            end
4610
        end
4611
 
4612
    always @(posedge ref_clk or posedge reset_ref_clk_int)
4613
        begin
4614
        if (reset_ref_clk_int == 1)
4615
            tbi_tx_d_flip_18 <= 0;
4616
        else
4617
            begin
4618
            tbi_tx_d_flip_18[0] <= tbi_tx_d_18[9];
4619
            tbi_tx_d_flip_18[1] <= tbi_tx_d_18[8];
4620
            tbi_tx_d_flip_18[2] <= tbi_tx_d_18[7];
4621
            tbi_tx_d_flip_18[3] <= tbi_tx_d_18[6];
4622
            tbi_tx_d_flip_18[4] <= tbi_tx_d_18[5];
4623
            tbi_tx_d_flip_18[5] <= tbi_tx_d_18[4];
4624
            tbi_tx_d_flip_18[6] <= tbi_tx_d_18[3];
4625
            tbi_tx_d_flip_18[7] <= tbi_tx_d_18[2];
4626
            tbi_tx_d_flip_18[8] <= tbi_tx_d_18[1];
4627
            tbi_tx_d_flip_18[9] <= tbi_tx_d_18[0];
4628
            end
4629
        end
4630
 
4631
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_18
4632
     (
4633
         .pll_areset ( reset ),
4634
         .rx_cda_reset ( rx_cda_reset_18 ),
4635
         .rx_channel_data_align ( rx_channel_data_align_18 ),
4636
         .rx_locked ( rx_locked_18 ),
4637
         .rx_divfwdclk (tbi_rx_clk_18),
4638
         .rx_in (rxp_18),
4639
         .rx_inclock (ref_clk),
4640
         .rx_out (tbi_rx_d_lvds_18),
4641
         .rx_outclock (),
4642
         .rx_reset (rx_reset_18)
4643
     );
4644
 
4645
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_18 (
4646
                .clk ( ref_clk ),
4647
                .reset ( reset_ref_clk_int ),
4648
                .rx_locked ( rx_locked_18 ),
4649
                .rx_channel_data_align ( rx_channel_data_align_18 ),
4650
                .pll_areset ( pll_areset_18 ),
4651
                .rx_reset ( rx_reset_18 ),
4652
        .rx_cda_reset ( rx_cda_reset_18 )
4653
        );
4654
 
4655
 
4656
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_18
4657
    (
4658
        .tx_in (tbi_tx_d_flip_18),
4659
        .tx_inclock (ref_clk),
4660
                .pll_areset ( reset ),
4661
        .tx_out (txp_18)
4662
    );
4663
 
4664
    end
4665
else
4666
    begin
4667
    assign txp_18 = 1'b0;
4668
    assign tbi_rx_clk_18 = 1'b0;
4669
    end
4670
endgenerate
4671
 
4672
 
4673
 
4674
// #######################################################################
4675
// ###############       CHANNEL 19 LOGIC/COMPONENTS       ###############
4676
// #######################################################################
4677
 
4678
// Export powerdown signal or wire it internally
4679
// ---------------------------------------------
4680
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 19)
4681
    begin
4682
        assign gxb_pwrdn_in_sig[19] = gxb_pwrdn_in_19;
4683
        assign pcs_pwrdn_out_19 = pcs_pwrdn_out_sig[19];
4684
    end
4685
else
4686
    begin
4687
        assign gxb_pwrdn_in_sig[19] = pcs_pwrdn_out_sig[19];
4688
                assign pcs_pwrdn_out_19 = 1'b0;
4689
    end
4690
endgenerate
4691
 
4692
 
4693
// Either one of these blocks below will be instantiated depending on the parameterization 
4694
// that is chosen.
4695
// ---------------------------------------------------------------------------------------
4696
 
4697
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
4698
//
4699
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
4700
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
4701
// reversal algorithm.  
4702
// -------------------------------------------------------------------------
4703
 
4704
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 19)
4705
    begin
4706
 
4707
    assign tbi_tx_clk_19 = ref_clk;
4708
    assign tbi_rx_d_19 = tbi_rx_d_flip_19;
4709
 
4710
    altera_tse_reset_synchronizer ch_19_reset_sync_0 (
4711
        .clk(tbi_rx_clk_19),
4712
        .reset_in(reset),
4713
        .reset_out(reset_tbi_rx_clk_19_int)
4714
        );
4715
 
4716
    always @(posedge tbi_rx_clk_19 or posedge reset_tbi_rx_clk_19_int)
4717
        begin
4718
        if (reset_tbi_rx_clk_19_int == 1)
4719
            tbi_rx_d_flip_19 <= 0;
4720
        else
4721
            begin
4722
            tbi_rx_d_flip_19[0] <= tbi_rx_d_lvds_19[9];
4723
            tbi_rx_d_flip_19[1] <= tbi_rx_d_lvds_19[8];
4724
            tbi_rx_d_flip_19[2] <= tbi_rx_d_lvds_19[7];
4725
            tbi_rx_d_flip_19[3] <= tbi_rx_d_lvds_19[6];
4726
            tbi_rx_d_flip_19[4] <= tbi_rx_d_lvds_19[5];
4727
            tbi_rx_d_flip_19[5] <= tbi_rx_d_lvds_19[4];
4728
            tbi_rx_d_flip_19[6] <= tbi_rx_d_lvds_19[3];
4729
            tbi_rx_d_flip_19[7] <= tbi_rx_d_lvds_19[2];
4730
            tbi_rx_d_flip_19[8] <= tbi_rx_d_lvds_19[1];
4731
            tbi_rx_d_flip_19[9] <= tbi_rx_d_lvds_19[0];
4732
            end
4733
        end
4734
 
4735
    always @(posedge ref_clk or posedge reset_ref_clk_int)
4736
        begin
4737
        if (reset_ref_clk_int == 1)
4738
            tbi_tx_d_flip_19 <= 0;
4739
        else
4740
            begin
4741
            tbi_tx_d_flip_19[0] <= tbi_tx_d_19[9];
4742
            tbi_tx_d_flip_19[1] <= tbi_tx_d_19[8];
4743
            tbi_tx_d_flip_19[2] <= tbi_tx_d_19[7];
4744
            tbi_tx_d_flip_19[3] <= tbi_tx_d_19[6];
4745
            tbi_tx_d_flip_19[4] <= tbi_tx_d_19[5];
4746
            tbi_tx_d_flip_19[5] <= tbi_tx_d_19[4];
4747
            tbi_tx_d_flip_19[6] <= tbi_tx_d_19[3];
4748
            tbi_tx_d_flip_19[7] <= tbi_tx_d_19[2];
4749
            tbi_tx_d_flip_19[8] <= tbi_tx_d_19[1];
4750
            tbi_tx_d_flip_19[9] <= tbi_tx_d_19[0];
4751
            end
4752
        end
4753
 
4754
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_19
4755
     (
4756
         .pll_areset ( reset ),
4757
         .rx_cda_reset ( rx_cda_reset_19 ),
4758
         .rx_channel_data_align ( rx_channel_data_align_19 ),
4759
         .rx_locked ( rx_locked_19 ),
4760
         .rx_divfwdclk (tbi_rx_clk_19),
4761
         .rx_in (rxp_19),
4762
         .rx_inclock (ref_clk),
4763
         .rx_out (tbi_rx_d_lvds_19),
4764
         .rx_outclock (),
4765
         .rx_reset (rx_reset_19)
4766
     );
4767
 
4768
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_19 (
4769
                .clk ( ref_clk ),
4770
                .reset ( reset_ref_clk_int ),
4771
                .rx_locked ( rx_locked_19 ),
4772
                .rx_channel_data_align ( rx_channel_data_align_19 ),
4773
                .pll_areset ( pll_areset_19 ),
4774
                .rx_reset ( rx_reset_19 ),
4775
        .rx_cda_reset ( rx_cda_reset_19 )
4776
        );
4777
 
4778
 
4779
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_19
4780
    (
4781
        .tx_in (tbi_tx_d_flip_19),
4782
        .tx_inclock (ref_clk),
4783
                .pll_areset ( reset ),
4784
        .tx_out (txp_19)
4785
    );
4786
 
4787
    end
4788
else
4789
    begin
4790
    assign txp_19 = 1'b0;
4791
    assign tbi_rx_clk_19 = 1'b0;
4792
    end
4793
endgenerate
4794
 
4795
 
4796
 
4797
// #######################################################################
4798
// ###############       CHANNEL 20 LOGIC/COMPONENTS       ###############
4799
// #######################################################################
4800
 
4801
// Export powerdown signal or wire it internally
4802
// ---------------------------------------------
4803
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 20)
4804
    begin
4805
        assign gxb_pwrdn_in_sig[20] = gxb_pwrdn_in_20;
4806
        assign pcs_pwrdn_out_20 = pcs_pwrdn_out_sig[20];
4807
    end
4808
else
4809
    begin
4810
        assign gxb_pwrdn_in_sig[20] = pcs_pwrdn_out_sig[20];
4811
                assign pcs_pwrdn_out_20 = 1'b0;
4812
    end
4813
endgenerate
4814
 
4815
 
4816
// Either one of these blocks below will be instantiated depending on the parameterization 
4817
// that is chosen.
4818
// ---------------------------------------------------------------------------------------
4819
 
4820
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
4821
//
4822
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
4823
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
4824
// reversal algorithm.  
4825
// -------------------------------------------------------------------------
4826
 
4827
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 20)
4828
    begin
4829
 
4830
    assign tbi_tx_clk_20 = ref_clk;
4831
    assign tbi_rx_d_20 = tbi_rx_d_flip_20;
4832
 
4833
    altera_tse_reset_synchronizer ch_20_reset_sync_0 (
4834
        .clk(tbi_rx_clk_20),
4835
        .reset_in(reset),
4836
        .reset_out(reset_tbi_rx_clk_20_int)
4837
        );
4838
 
4839
    always @(posedge tbi_rx_clk_20 or posedge reset_tbi_rx_clk_20_int)
4840
        begin
4841
        if (reset_tbi_rx_clk_20_int == 1)
4842
            tbi_rx_d_flip_20 <= 0;
4843
        else
4844
            begin
4845
            tbi_rx_d_flip_20[0] <= tbi_rx_d_lvds_20[9];
4846
            tbi_rx_d_flip_20[1] <= tbi_rx_d_lvds_20[8];
4847
            tbi_rx_d_flip_20[2] <= tbi_rx_d_lvds_20[7];
4848
            tbi_rx_d_flip_20[3] <= tbi_rx_d_lvds_20[6];
4849
            tbi_rx_d_flip_20[4] <= tbi_rx_d_lvds_20[5];
4850
            tbi_rx_d_flip_20[5] <= tbi_rx_d_lvds_20[4];
4851
            tbi_rx_d_flip_20[6] <= tbi_rx_d_lvds_20[3];
4852
            tbi_rx_d_flip_20[7] <= tbi_rx_d_lvds_20[2];
4853
            tbi_rx_d_flip_20[8] <= tbi_rx_d_lvds_20[1];
4854
            tbi_rx_d_flip_20[9] <= tbi_rx_d_lvds_20[0];
4855
            end
4856
        end
4857
 
4858
    always @(posedge ref_clk or posedge reset_ref_clk_int)
4859
        begin
4860
        if (reset_ref_clk_int == 1)
4861
            tbi_tx_d_flip_20 <= 0;
4862
        else
4863
            begin
4864
            tbi_tx_d_flip_20[0] <= tbi_tx_d_20[9];
4865
            tbi_tx_d_flip_20[1] <= tbi_tx_d_20[8];
4866
            tbi_tx_d_flip_20[2] <= tbi_tx_d_20[7];
4867
            tbi_tx_d_flip_20[3] <= tbi_tx_d_20[6];
4868
            tbi_tx_d_flip_20[4] <= tbi_tx_d_20[5];
4869
            tbi_tx_d_flip_20[5] <= tbi_tx_d_20[4];
4870
            tbi_tx_d_flip_20[6] <= tbi_tx_d_20[3];
4871
            tbi_tx_d_flip_20[7] <= tbi_tx_d_20[2];
4872
            tbi_tx_d_flip_20[8] <= tbi_tx_d_20[1];
4873
            tbi_tx_d_flip_20[9] <= tbi_tx_d_20[0];
4874
            end
4875
        end
4876
 
4877
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_20
4878
     (
4879
         .pll_areset ( reset ),
4880
         .rx_cda_reset ( rx_cda_reset_20 ),
4881
         .rx_channel_data_align ( rx_channel_data_align_20 ),
4882
         .rx_locked ( rx_locked_20 ),
4883
         .rx_divfwdclk (tbi_rx_clk_20),
4884
         .rx_in (rxp_20),
4885
         .rx_inclock (ref_clk),
4886
         .rx_out (tbi_rx_d_lvds_20),
4887
         .rx_outclock (),
4888
         .rx_reset (rx_reset_20)
4889
     );
4890
 
4891
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_20 (
4892
                .clk ( ref_clk ),
4893
                .reset ( reset_ref_clk_int ),
4894
                .rx_locked ( rx_locked_20 ),
4895
                .rx_channel_data_align ( rx_channel_data_align_20 ),
4896
                .pll_areset ( pll_areset_20 ),
4897
                .rx_reset ( rx_reset_20 ),
4898
        .rx_cda_reset ( rx_cda_reset_20 )
4899
        );
4900
 
4901
 
4902
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_20
4903
    (
4904
        .tx_in (tbi_tx_d_flip_20),
4905
        .tx_inclock (ref_clk),
4906
                .pll_areset ( reset ),
4907
        .tx_out (txp_20)
4908
    );
4909
 
4910
    end
4911
else
4912
    begin
4913
    assign txp_20 = 1'b0;
4914
    assign tbi_rx_clk_20 = 1'b0;
4915
    end
4916
endgenerate
4917
 
4918
 
4919
 
4920
// #######################################################################
4921
// ###############       CHANNEL 21 LOGIC/COMPONENTS       ###############
4922
// #######################################################################
4923
 
4924
// Export powerdown signal or wire it internally
4925
// ---------------------------------------------
4926
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 21)
4927
    begin
4928
        assign gxb_pwrdn_in_sig[21] = gxb_pwrdn_in_21;
4929
        assign pcs_pwrdn_out_21 = pcs_pwrdn_out_sig[21];
4930
    end
4931
else
4932
    begin
4933
        assign gxb_pwrdn_in_sig[21] = pcs_pwrdn_out_sig[21];
4934
                assign pcs_pwrdn_out_21 = 1'b0;
4935
    end
4936
endgenerate
4937
 
4938
 
4939
// Either one of these blocks below will be instantiated depending on the parameterization 
4940
// that is chosen.
4941
// ---------------------------------------------------------------------------------------
4942
 
4943
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
4944
//
4945
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
4946
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
4947
// reversal algorithm.  
4948
// -------------------------------------------------------------------------
4949
 
4950
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 21)
4951
    begin
4952
 
4953
    assign tbi_tx_clk_21 = ref_clk;
4954
    assign tbi_rx_d_21 = tbi_rx_d_flip_21;
4955
 
4956
    altera_tse_reset_synchronizer ch_21_reset_sync_0 (
4957
        .clk(tbi_rx_clk_21),
4958
        .reset_in(reset),
4959
        .reset_out(reset_tbi_rx_clk_21_int)
4960
        );
4961
 
4962
    always @(posedge tbi_rx_clk_21 or posedge reset_tbi_rx_clk_21_int)
4963
        begin
4964
        if (reset_tbi_rx_clk_21_int == 1)
4965
            tbi_rx_d_flip_21 <= 0;
4966
        else
4967
            begin
4968
            tbi_rx_d_flip_21[0] <= tbi_rx_d_lvds_21[9];
4969
            tbi_rx_d_flip_21[1] <= tbi_rx_d_lvds_21[8];
4970
            tbi_rx_d_flip_21[2] <= tbi_rx_d_lvds_21[7];
4971
            tbi_rx_d_flip_21[3] <= tbi_rx_d_lvds_21[6];
4972
            tbi_rx_d_flip_21[4] <= tbi_rx_d_lvds_21[5];
4973
            tbi_rx_d_flip_21[5] <= tbi_rx_d_lvds_21[4];
4974
            tbi_rx_d_flip_21[6] <= tbi_rx_d_lvds_21[3];
4975
            tbi_rx_d_flip_21[7] <= tbi_rx_d_lvds_21[2];
4976
            tbi_rx_d_flip_21[8] <= tbi_rx_d_lvds_21[1];
4977
            tbi_rx_d_flip_21[9] <= tbi_rx_d_lvds_21[0];
4978
            end
4979
        end
4980
 
4981
    always @(posedge ref_clk or posedge reset_ref_clk_int)
4982
        begin
4983
        if (reset_ref_clk_int == 1)
4984
            tbi_tx_d_flip_21 <= 0;
4985
        else
4986
            begin
4987
            tbi_tx_d_flip_21[0] <= tbi_tx_d_21[9];
4988
            tbi_tx_d_flip_21[1] <= tbi_tx_d_21[8];
4989
            tbi_tx_d_flip_21[2] <= tbi_tx_d_21[7];
4990
            tbi_tx_d_flip_21[3] <= tbi_tx_d_21[6];
4991
            tbi_tx_d_flip_21[4] <= tbi_tx_d_21[5];
4992
            tbi_tx_d_flip_21[5] <= tbi_tx_d_21[4];
4993
            tbi_tx_d_flip_21[6] <= tbi_tx_d_21[3];
4994
            tbi_tx_d_flip_21[7] <= tbi_tx_d_21[2];
4995
            tbi_tx_d_flip_21[8] <= tbi_tx_d_21[1];
4996
            tbi_tx_d_flip_21[9] <= tbi_tx_d_21[0];
4997
            end
4998
        end
4999
 
5000
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_21
5001
     (
5002
         .pll_areset ( reset ),
5003
         .rx_cda_reset ( rx_cda_reset_21 ),
5004
         .rx_channel_data_align ( rx_channel_data_align_21 ),
5005
         .rx_locked ( rx_locked_21 ),
5006
         .rx_divfwdclk (tbi_rx_clk_21),
5007
         .rx_in (rxp_21),
5008
         .rx_inclock (ref_clk),
5009
         .rx_out (tbi_rx_d_lvds_21),
5010
         .rx_outclock (),
5011
         .rx_reset (rx_reset_21)
5012
     );
5013
 
5014
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_21 (
5015
                .clk ( ref_clk ),
5016
                .reset ( reset_ref_clk_int ),
5017
                .rx_locked ( rx_locked_21 ),
5018
                .rx_channel_data_align ( rx_channel_data_align_21 ),
5019
                .pll_areset ( pll_areset_21 ),
5020
                .rx_reset ( rx_reset_21 ),
5021
        .rx_cda_reset ( rx_cda_reset_21 )
5022
        );
5023
 
5024
 
5025
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_21
5026
    (
5027
        .tx_in (tbi_tx_d_flip_21),
5028
        .tx_inclock (ref_clk),
5029
                .pll_areset ( reset ),
5030
        .tx_out (txp_21)
5031
    );
5032
 
5033
    end
5034
else
5035
    begin
5036
    assign txp_21 = 1'b0;
5037
    assign tbi_rx_clk_21 = 1'b0;
5038
    end
5039
endgenerate
5040
 
5041
 
5042
 
5043
// #######################################################################
5044
// ###############       CHANNEL 22 LOGIC/COMPONENTS       ###############
5045
// #######################################################################
5046
 
5047
// Export powerdown signal or wire it internally
5048
// ---------------------------------------------
5049
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 22)
5050
    begin
5051
        assign gxb_pwrdn_in_sig[22] = gxb_pwrdn_in_22;
5052
        assign pcs_pwrdn_out_22 = pcs_pwrdn_out_sig[22];
5053
    end
5054
else
5055
    begin
5056
        assign gxb_pwrdn_in_sig[22] = pcs_pwrdn_out_sig[22];
5057
                assign pcs_pwrdn_out_22 = 1'b0;
5058
    end
5059
endgenerate
5060
 
5061
 
5062
// Either one of these blocks below will be instantiated depending on the parameterization 
5063
// that is chosen.
5064
// ---------------------------------------------------------------------------------------
5065
 
5066
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
5067
//
5068
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
5069
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
5070
// reversal algorithm.  
5071
// -------------------------------------------------------------------------
5072
 
5073
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 22)
5074
    begin
5075
 
5076
    assign tbi_tx_clk_22 = ref_clk;
5077
    assign tbi_rx_d_22 = tbi_rx_d_flip_22;
5078
 
5079
    altera_tse_reset_synchronizer ch_22_reset_sync_0 (
5080
        .clk(tbi_rx_clk_22),
5081
        .reset_in(reset),
5082
        .reset_out(reset_tbi_rx_clk_22_int)
5083
        );
5084
 
5085
    always @(posedge tbi_rx_clk_22 or posedge reset_tbi_rx_clk_22_int)
5086
        begin
5087
        if (reset_tbi_rx_clk_22_int == 1)
5088
            tbi_rx_d_flip_22 <= 0;
5089
        else
5090
            begin
5091
            tbi_rx_d_flip_22[0] <= tbi_rx_d_lvds_22[9];
5092
            tbi_rx_d_flip_22[1] <= tbi_rx_d_lvds_22[8];
5093
            tbi_rx_d_flip_22[2] <= tbi_rx_d_lvds_22[7];
5094
            tbi_rx_d_flip_22[3] <= tbi_rx_d_lvds_22[6];
5095
            tbi_rx_d_flip_22[4] <= tbi_rx_d_lvds_22[5];
5096
            tbi_rx_d_flip_22[5] <= tbi_rx_d_lvds_22[4];
5097
            tbi_rx_d_flip_22[6] <= tbi_rx_d_lvds_22[3];
5098
            tbi_rx_d_flip_22[7] <= tbi_rx_d_lvds_22[2];
5099
            tbi_rx_d_flip_22[8] <= tbi_rx_d_lvds_22[1];
5100
            tbi_rx_d_flip_22[9] <= tbi_rx_d_lvds_22[0];
5101
            end
5102
        end
5103
 
5104
    always @(posedge ref_clk or posedge reset_ref_clk_int)
5105
        begin
5106
        if (reset_ref_clk_int == 1)
5107
            tbi_tx_d_flip_22 <= 0;
5108
        else
5109
            begin
5110
            tbi_tx_d_flip_22[0] <= tbi_tx_d_22[9];
5111
            tbi_tx_d_flip_22[1] <= tbi_tx_d_22[8];
5112
            tbi_tx_d_flip_22[2] <= tbi_tx_d_22[7];
5113
            tbi_tx_d_flip_22[3] <= tbi_tx_d_22[6];
5114
            tbi_tx_d_flip_22[4] <= tbi_tx_d_22[5];
5115
            tbi_tx_d_flip_22[5] <= tbi_tx_d_22[4];
5116
            tbi_tx_d_flip_22[6] <= tbi_tx_d_22[3];
5117
            tbi_tx_d_flip_22[7] <= tbi_tx_d_22[2];
5118
            tbi_tx_d_flip_22[8] <= tbi_tx_d_22[1];
5119
            tbi_tx_d_flip_22[9] <= tbi_tx_d_22[0];
5120
            end
5121
        end
5122
 
5123
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_22
5124
     (
5125
         .pll_areset ( reset ),
5126
         .rx_cda_reset ( rx_cda_reset_22 ),
5127
         .rx_channel_data_align ( rx_channel_data_align_22 ),
5128
         .rx_locked ( rx_locked_22 ),
5129
         .rx_divfwdclk (tbi_rx_clk_22),
5130
         .rx_in (rxp_22),
5131
         .rx_inclock (ref_clk),
5132
         .rx_out (tbi_rx_d_lvds_22),
5133
         .rx_outclock (),
5134
         .rx_reset (rx_reset_22)
5135
     );
5136
 
5137
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_22 (
5138
                .clk ( ref_clk ),
5139
                .reset ( reset_ref_clk_int ),
5140
                .rx_locked ( rx_locked_22 ),
5141
                .rx_channel_data_align ( rx_channel_data_align_22 ),
5142
                .pll_areset ( pll_areset_22 ),
5143
                .rx_reset ( rx_reset_22 ),
5144
        .rx_cda_reset ( rx_cda_reset_22 )
5145
        );
5146
 
5147
 
5148
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_22
5149
    (
5150
        .tx_in (tbi_tx_d_flip_22),
5151
        .tx_inclock (ref_clk),
5152
                .pll_areset ( reset ),
5153
        .tx_out (txp_22)
5154
    );
5155
 
5156
    end
5157
else
5158
    begin
5159
    assign txp_22 = 1'b0;
5160
    assign tbi_rx_clk_22 = 1'b0;
5161
    end
5162
endgenerate
5163
 
5164
 
5165
 
5166
// #######################################################################
5167
// ###############       CHANNEL 23 LOGIC/COMPONENTS       ###############
5168
// #######################################################################
5169
 
5170
// Export powerdown signal or wire it internally
5171
// ---------------------------------------------
5172
generate if (EXPORT_PWRDN == 1 && MAX_CHANNELS > 23)
5173
    begin
5174
        assign gxb_pwrdn_in_sig[23] = gxb_pwrdn_in_23;
5175
        assign pcs_pwrdn_out_23 = pcs_pwrdn_out_sig[23];
5176
    end
5177
else
5178
    begin
5179
        assign gxb_pwrdn_in_sig[23] = pcs_pwrdn_out_sig[23];
5180
                assign pcs_pwrdn_out_23 = 1'b0;
5181
    end
5182
endgenerate
5183
 
5184
 
5185
// Either one of these blocks below will be instantiated depending on the parameterization 
5186
// that is chosen.
5187
// ---------------------------------------------------------------------------------------
5188
 
5189
// Instantiation of the LVDS SERDES block as the PMA for Stratix III devices
5190
//
5191
// IEEE 802.3 Clause 36 PCS requires that bit 0 of TBI_DATA to be transmitted 
5192
// first.  However, ALTLVDS had bit 9 transmit first.  hence, we need a bit
5193
// reversal algorithm.  
5194
// -------------------------------------------------------------------------
5195
 
5196
generate if (DEVICE_FAMILY != "ARRIAGX" && TRANSCEIVER_OPTION == 1 && MAX_CHANNELS > 23)
5197
    begin
5198
 
5199
    assign tbi_tx_clk_23 = ref_clk;
5200
    assign tbi_rx_d_23 = tbi_rx_d_flip_23;
5201
 
5202
    altera_tse_reset_synchronizer ch_23_reset_sync_0 (
5203
        .clk(tbi_rx_clk_23),
5204
        .reset_in(reset),
5205
        .reset_out(reset_tbi_rx_clk_23_int)
5206
        );
5207
 
5208
    always @(posedge tbi_rx_clk_23 or posedge reset_tbi_rx_clk_23_int)
5209
        begin
5210
        if (reset_tbi_rx_clk_23_int == 1)
5211
            tbi_rx_d_flip_23 <= 0;
5212
        else
5213
            begin
5214
            tbi_rx_d_flip_23[0] <= tbi_rx_d_lvds_23[9];
5215
            tbi_rx_d_flip_23[1] <= tbi_rx_d_lvds_23[8];
5216
            tbi_rx_d_flip_23[2] <= tbi_rx_d_lvds_23[7];
5217
            tbi_rx_d_flip_23[3] <= tbi_rx_d_lvds_23[6];
5218
            tbi_rx_d_flip_23[4] <= tbi_rx_d_lvds_23[5];
5219
            tbi_rx_d_flip_23[5] <= tbi_rx_d_lvds_23[4];
5220
            tbi_rx_d_flip_23[6] <= tbi_rx_d_lvds_23[3];
5221
            tbi_rx_d_flip_23[7] <= tbi_rx_d_lvds_23[2];
5222
            tbi_rx_d_flip_23[8] <= tbi_rx_d_lvds_23[1];
5223
            tbi_rx_d_flip_23[9] <= tbi_rx_d_lvds_23[0];
5224
            end
5225
        end
5226
 
5227
    always @(posedge ref_clk or posedge reset_ref_clk_int)
5228
        begin
5229
        if (reset_ref_clk_int == 1)
5230
            tbi_tx_d_flip_23 <= 0;
5231
        else
5232
            begin
5233
            tbi_tx_d_flip_23[0] <= tbi_tx_d_23[9];
5234
            tbi_tx_d_flip_23[1] <= tbi_tx_d_23[8];
5235
            tbi_tx_d_flip_23[2] <= tbi_tx_d_23[7];
5236
            tbi_tx_d_flip_23[3] <= tbi_tx_d_23[6];
5237
            tbi_tx_d_flip_23[4] <= tbi_tx_d_23[5];
5238
            tbi_tx_d_flip_23[5] <= tbi_tx_d_23[4];
5239
            tbi_tx_d_flip_23[6] <= tbi_tx_d_23[3];
5240
            tbi_tx_d_flip_23[7] <= tbi_tx_d_23[2];
5241
            tbi_tx_d_flip_23[8] <= tbi_tx_d_23[1];
5242
            tbi_tx_d_flip_23[9] <= tbi_tx_d_23[0];
5243
            end
5244
        end
5245
 
5246
    altera_tse_pma_lvds_rx the_altera_tse_pma_lvds_rx_23
5247
     (
5248
         .pll_areset ( reset ),
5249
         .rx_cda_reset ( rx_cda_reset_23 ),
5250
         .rx_channel_data_align ( rx_channel_data_align_23 ),
5251
         .rx_locked ( rx_locked_23 ),
5252
         .rx_divfwdclk (tbi_rx_clk_23),
5253
         .rx_in (rxp_23),
5254
         .rx_inclock (ref_clk),
5255
         .rx_out (tbi_rx_d_lvds_23),
5256
         .rx_outclock (),
5257
         .rx_reset (rx_reset_23)
5258
     );
5259
 
5260
    altera_tse_lvds_reset_sequencer the_altera_tse_lvds_reset_sequencer_23 (
5261
                .clk ( ref_clk ),
5262
                .reset ( reset_ref_clk_int ),
5263
                .rx_locked ( rx_locked_23 ),
5264
                .rx_channel_data_align ( rx_channel_data_align_23 ),
5265
                .pll_areset ( pll_areset_23 ),
5266
                .rx_reset ( rx_reset_23 ),
5267
        .rx_cda_reset ( rx_cda_reset_23 )
5268
        );
5269
 
5270
 
5271
    altera_tse_pma_lvds_tx the_altera_tse_pma_lvds_tx_23
5272
    (
5273
        .tx_in (tbi_tx_d_flip_23),
5274
        .tx_inclock (ref_clk),
5275
                .pll_areset ( reset ),
5276
        .tx_out (txp_23)
5277
    );
5278
 
5279
    end
5280
else
5281
    begin
5282
    assign txp_23 = 1'b0;
5283
    assign tbi_rx_clk_23 = 1'b0;
5284
    end
5285
endgenerate
5286
 
5287
 
5288
 
5289
endmodule // module altera_tse_multi_mac_pcs_pma

powered by: WebSVN 2.1.0

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