1 //////////////////////////////////////////////////////////////////////
5 //// This file is part of the Ethernet IP core project ////
6 //// http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////
9 //// - Jon Gao (gaojon@yahoo.com) ////
12 //////////////////////////////////////////////////////////////////////
14 //// Copyright (C) 2001 Authors ////
16 //// This source file may be used and distributed without ////
17 //// restriction provided that this copyright statement is not ////
18 //// removed from the file and that any derivative work contains ////
19 //// the original copyright notice and the associated disclaimer. ////
21 //// This source file is free software; you can redistribute it ////
22 //// and/or modify it under the terms of the GNU Lesser General ////
23 //// Public License as published by the Free Software Foundation; ////
24 //// either version 2.1 of the License, or (at your option) any ////
25 //// later version. ////
27 //// This source is distributed in the hope that it will be ////
28 //// useful, but WITHOUT ANY WARRANTY; without even the implied ////
29 //// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ////
30 //// PURPOSE. See the GNU Lesser General Public License for more ////
33 //// You should have received a copy of the GNU Lesser General ////
34 //// Public License along with this source; if not, download it ////
35 //// from http://www.opencores.org/lgpl.shtml ////
37 //////////////////////////////////////////////////////////////////////
39 // CVS Revision History
41 // $Log: MAC_top.v,v $
42 // Revision 1.3 2006/01/19 14:07:52 maverickist
43 // verification is complete.
45 // Revision 1.2 2005/12/16 06:44:13 Administrator
46 // replaced tab with space.
47 // passed 9.6k length frame test.
49 // Revision 1.1.1.1 2005/12/13 01:51:44 Administrator
63 output [31:0] Rx_mac_data ,
64 output [1:0] Rx_mac_BE ,
71 input [31:0] Tx_mac_data ,
72 input [1:0] Tx_mac_BE ,//big endian
77 output Gtx_clk ,//used only in GMII mode
79 input Tx_clk ,//used only in MII mode
92 output [15:0] CD_out ,
95 inout Mdio ,// MII Management Data In
96 output Mdc // MII Management Data Clock
99 //******************************************************************************
101 //******************************************************************************
103 wire [15:0] Rx_pkt_length_rmon ;
105 wire [2:0] Rx_pkt_err_type_rmon ;
106 wire [2:0] Rx_pkt_type_rmon ;
107 wire [2:0] Tx_pkt_type_rmon ;
108 wire [15:0] Tx_pkt_length_rmon ;
110 wire [2:0] Tx_pkt_err_type_rmon ;
115 //flow_control signals
116 wire [15:0] pause_quanta ;
117 wire pause_quanta_val ;
122 //interface clk signals
125 wire MAC_tx_clk_div ;
126 wire MAC_rx_clk_div ;
128 wire [4:0] Tx_Hwmark ;
129 wire [4:0] Tx_Lwmark ;
130 wire pause_frame_send_en ;
131 wire [15:0] pause_quanta_set ;
134 wire [3:0] MaxRetry ;
136 wire [7:0] MAC_tx_add_prom_data ;
137 wire [2:0] MAC_tx_add_prom_add ;
138 wire MAC_tx_add_prom_wr ;
143 wire MAC_rx_add_chk_en ;
144 wire [7:0] MAC_rx_add_prom_data ;
145 wire [2:0] MAC_rx_add_prom_add ;
146 wire MAC_rx_add_prom_wr ;
147 wire broadcast_filter_en ;
148 wire [15:0] broadcast_MAX ;
150 wire [4:0] Rx_Hwmark ;
151 wire [4:0] Rx_Lwmark ;
153 wire [5:0] RX_IFG_SET ;
154 wire [15:0] RX_MAX_LENGTH ;
155 wire [6:0] RX_MIN_LENGTH ;
156 //RMON host interface
157 wire [5:0] CPU_rd_addr ;
160 wire [31:0] CPU_rd_dout ;
161 //Phy int host interface
165 wire [15:0] CtrlData ;
176 wire WCtrlDataStart ;
178 wire UpdateMIIRX_DATAReg ;
179 wire [15:0] broadcast_bucket_depth ;
180 wire [15:0] broadcast_bucket_interval ;
182 //******************************************************************************
184 //******************************************************************************
187 .Clk_user (Clk_user ),
188 .Clk (MAC_rx_clk_div ),
189 //RMII interface (//PHY interface ),
193 //flow_control signals (//flow_control signals ),
194 .pause_quanta (pause_quanta ),
195 .pause_quanta_val (pause_quanta_val ),
196 //user interface (//user interface ),
197 .Rx_mac_ra (Rx_mac_ra ),
198 .Rx_mac_rd (Rx_mac_rd ),
199 .Rx_mac_data (Rx_mac_data ),
200 .Rx_mac_BE (Rx_mac_BE ),
201 .Rx_mac_pa (Rx_mac_pa ),
202 .Rx_mac_sop (Rx_mac_sop ),
203 .Rx_mac_eop (Rx_mac_eop ),
205 .MAC_rx_add_chk_en (MAC_rx_add_chk_en ),
206 .MAC_add_prom_data (MAC_rx_add_prom_data ),
207 .MAC_add_prom_add (MAC_rx_add_prom_add ),
208 .MAC_add_prom_wr (MAC_rx_add_prom_wr ),
209 .broadcast_filter_en (broadcast_filter_en ),
210 .broadcast_bucket_depth (broadcast_bucket_depth ),
211 .broadcast_bucket_interval (broadcast_bucket_interval ),
212 .RX_APPEND_CRC (RX_APPEND_CRC ),
213 .Rx_Hwmark (Rx_Hwmark ),
214 .Rx_Lwmark (Rx_Lwmark ),
215 .CRC_chk_en (CRC_chk_en ),
216 .RX_IFG_SET (RX_IFG_SET ),
217 .RX_MAX_LENGTH (RX_MAX_LENGTH ),
218 .RX_MIN_LENGTH (RX_MIN_LENGTH ),
219 //RMON interface (//RMON interface ),
220 .Rx_pkt_length_rmon (Rx_pkt_length_rmon ),
221 .Rx_apply_rmon (Rx_apply_rmon ),
222 .Rx_pkt_err_type_rmon (Rx_pkt_err_type_rmon ),
223 .Rx_pkt_type_rmon (Rx_pkt_type_rmon )
228 .Clk (MAC_tx_clk_div ),
229 .Clk_user (Clk_user ),
230 //PHY interface (//PHY interface ),
235 .Tx_pkt_type_rmon (Tx_pkt_type_rmon ),
236 .Tx_pkt_length_rmon (Tx_pkt_length_rmon ),
237 .Tx_apply_rmon (Tx_apply_rmon ),
238 .Tx_pkt_err_type_rmon (Tx_pkt_err_type_rmon ),
239 //user interface (//user interface ),
240 .Tx_mac_wa (Tx_mac_wa ),
241 .Tx_mac_wr (Tx_mac_wr ),
242 .Tx_mac_data (Tx_mac_data ),
243 .Tx_mac_BE (Tx_mac_BE ),
244 .Tx_mac_sop (Tx_mac_sop ),
245 .Tx_mac_eop (Tx_mac_eop ),
246 //host interface (//host interface ),
247 .Tx_Hwmark (Tx_Hwmark ),
248 .Tx_Lwmark (Tx_Lwmark ),
249 .pause_frame_send_en (pause_frame_send_en ),
250 .pause_quanta_set (pause_quanta_set ),
251 .MAC_tx_add_en (MAC_tx_add_en ),
252 .FullDuplex (FullDuplex ),
253 .MaxRetry (MaxRetry ),
255 .MAC_add_prom_data (MAC_tx_add_prom_data ),
256 .MAC_add_prom_add (MAC_tx_add_prom_add ),
257 .MAC_add_prom_wr (MAC_tx_add_prom_wr ),
258 .tx_pause_en (tx_pause_en ),
259 .xoff_cpu (xoff_cpu ),
261 //MAC_rx_flow (//MAC_rx_flow ),
262 .pause_quanta (pause_quanta ),
263 .pause_quanta_val (pause_quanta_val )
269 //Tx_RMON (//Tx_RMON ),
270 .Tx_pkt_type_rmon (Tx_pkt_type_rmon ),
271 .Tx_pkt_length_rmon (Tx_pkt_length_rmon ),
272 .Tx_apply_rmon (Tx_apply_rmon ),
273 .Tx_pkt_err_type_rmon (Tx_pkt_err_type_rmon ),
274 //Tx_RMON (//Tx_RMON ),
275 .Rx_pkt_type_rmon (Rx_pkt_type_rmon ),
276 .Rx_pkt_length_rmon (Rx_pkt_length_rmon ),
277 .Rx_apply_rmon (Rx_apply_rmon ),
278 .Rx_pkt_err_type_rmon (Rx_pkt_err_type_rmon ),
280 .CPU_rd_addr (CPU_rd_addr ),
281 .CPU_rd_apply (CPU_rd_apply ),
282 .CPU_rd_grant (CPU_rd_grant ),
283 .CPU_rd_dout (CPU_rd_dout )
288 .MAC_rx_clk (MAC_rx_clk ),
289 .MAC_tx_clk (MAC_tx_clk ),
290 //Rx interface (//Rx interface ),
294 //Tx interface (//Tx interface ),
298 //Phy interface (//Phy interface ),
307 //host interface (//host interface ),
308 .Line_loop_en (Line_loop_en ),
314 .Clk_125M (Clk_125M ),
315 //host interface (//host interface ),
317 //Phy interface (//Phy interface ),
321 //interface clk (//interface clk ),
322 .MAC_tx_clk (MAC_tx_clk ),
323 .MAC_rx_clk (MAC_rx_clk ),
324 .MAC_tx_clk_div (MAC_tx_clk_div ),
325 .MAC_rx_clk_div (MAC_rx_clk_div )
333 .CtrlData (CtrlData ),
336 .WCtrlData (WCtrlData ),
338 .ScanStat (ScanStat ),
343 .LinkFail (LinkFail ),
345 .WCtrlDataStart (WCtrlDataStart ),
346 .RStatStart (RStatStart ),
347 .UpdateMIIRX_DATAReg (UpdateMIIRX_DATAReg ));
357 //Tx host interface (//Tx host interface ),
358 .Tx_Hwmark (Tx_Hwmark ),
359 .Tx_Lwmark (Tx_Lwmark ),
360 .pause_frame_send_en (pause_frame_send_en ),
361 .pause_quanta_set (pause_quanta_set ),
362 .MAC_tx_add_en (MAC_tx_add_en ),
363 .FullDuplex (FullDuplex ),
364 .MaxRetry (MaxRetry ),
366 .MAC_tx_add_prom_data (MAC_tx_add_prom_data ),
367 .MAC_tx_add_prom_add (MAC_tx_add_prom_add ),
368 .MAC_tx_add_prom_wr (MAC_tx_add_prom_wr ),
369 .tx_pause_en (tx_pause_en ),
370 .xoff_cpu (xoff_cpu ),
372 //Rx host interface (//Rx host interface ),
373 .MAC_rx_add_chk_en (MAC_rx_add_chk_en ),
374 .MAC_rx_add_prom_data (MAC_rx_add_prom_data ),
375 .MAC_rx_add_prom_add (MAC_rx_add_prom_add ),
376 .MAC_rx_add_prom_wr (MAC_rx_add_prom_wr ),
377 .broadcast_filter_en (broadcast_filter_en ),
378 .broadcast_bucket_depth (broadcast_bucket_depth ),
379 .broadcast_bucket_interval (broadcast_bucket_interval ),
380 .RX_APPEND_CRC (RX_APPEND_CRC ),
381 .Rx_Hwmark (Rx_Hwmark ),
382 .Rx_Lwmark (Rx_Lwmark ),
383 .CRC_chk_en (CRC_chk_en ),
384 .RX_IFG_SET (RX_IFG_SET ),
385 .RX_MAX_LENGTH (RX_MAX_LENGTH ),
386 .RX_MIN_LENGTH (RX_MIN_LENGTH ),
387 //RMON host interface (//RMON host interface ),
388 .CPU_rd_addr (CPU_rd_addr ),
389 .CPU_rd_apply (CPU_rd_apply ),
390 .CPU_rd_grant (CPU_rd_grant ),
391 .CPU_rd_dout (CPU_rd_dout ),
392 //Phy int host interface (//Phy int host interface ),
393 .Line_loop_en (Line_loop_en ),
395 //MII to CPU (//MII to CPU ),
397 .CtrlData (CtrlData ),
401 .WCtrlData (WCtrlData ),
403 .ScanStat (ScanStat ),
405 .LinkFail (LinkFail ),
408 .WCtrlDataStart (WCtrlDataStart ),
409 .RStatStart (RStatStart ),
410 .UpdateMIIRX_DATAReg (UpdateMIIRX_DATAReg )