@@ -48,10 +48,8 @@ module eth_mac_1g #
4848 parameter PAUSE_ENABLE = PFC_ENABLE
4949)
5050(
51- input wire rx_clk,
52- input wire rx_rst,
5351 input wire tx_clk,
54- input wire tx_rst,
52+
5553
5654 /*
5755 * AXI input
@@ -73,14 +71,21 @@ module eth_mac_1g #
7371 /*
7472 * GMII interface
7573 */
76- input wire [DATA_WIDTH- 1 :0 ] gmii_rxd,
77- input wire gmii_rx_dv,
78- input wire gmii_rx_er,
79- output wire [DATA_WIDTH- 1 :0 ] gmii_txd,
80- output wire gmii_tx_en,
81- output wire gmii_tx_er,
74+ (* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME mac_gmii, CAN_DEBUG false" * )
75+ (* X_INTERFACE_INFO = "xilinx.com:interface:gmii_rtl:1.0 gmii RX_CLK" * ) input wire gmii_rx_clk,
76+ (* X_INTERFACE_INFO = "xilinx.com:interface:gmii_rtl:1.0 gmii RXD" * ) input wire [DATA_WIDTH- 1 :0 ] gmii_rxd,
77+ (* X_INTERFACE_INFO = "xilinx.com:interface:gmii_rtl:1.0 gmii RX_DV" * ) input wire gmii_rx_dv,
78+ (* X_INTERFACE_INFO = "xilinx.com:interface:gmii_rtl:1.0 gmii RX_ER" * ) input wire gmii_rx_er,
79+ (* X_INTERFACE_INFO = "xilinx.com:interface:gmii_rtl:1.0 gmii GTX_CLK" * ) output wire gmii_gtx_clk,
80+ (* X_INTERFACE_INFO = "xilinx.com:interface:gmii_rtl:1.0 gmii TXD" * ) output wire [DATA_WIDTH- 1 :0 ] gmii_txd,
81+ (* X_INTERFACE_INFO = "xilinx.com:interface:gmii_rtl:1.0 gmii TX_EN" * ) output wire gmii_tx_en,
82+ (* X_INTERFACE_INFO = "xilinx.com:interface:gmii_rtl:1.0 gmii TX_ER" * ) output wire gmii_tx_er,
83+ // Non standard gmii
84+ input wire gmii_rx_rst,
85+ input wire gmii_tx_rst,
8286
8387 /*
88+
8489 * PTP
8590 */
8691 input wire [PTP_TS_WIDTH- 1 :0 ] tx_ptp_ts,
@@ -202,15 +207,16 @@ wire rx_axis_tvalid_int;
202207wire rx_axis_tlast_int;
203208wire [RX_USER_WIDTH- 1 :0 ] rx_axis_tuser_int;
204209
210+ assign gmii_gtx_clk = tx_clk;
205211axis_gmii_rx #(
206212 .DATA_WIDTH(DATA_WIDTH),
207213 .PTP_TS_ENABLE(PTP_TS_ENABLE),
208214 .PTP_TS_WIDTH(PTP_TS_WIDTH),
209215 .USER_WIDTH(RX_USER_WIDTH)
210216)
211217axis_gmii_rx_inst (
212- .clk(rx_clk ),
213- .rst(rx_rst ),
218+ .clk(gmii_rx_clk ),
219+ .rst(gmii_rx_rst ),
214220 .gmii_rxd(gmii_rxd),
215221 .gmii_rx_dv(gmii_rx_dv),
216222 .gmii_rx_er(gmii_rx_er),
@@ -239,8 +245,8 @@ axis_gmii_tx #(
239245 .USER_WIDTH(TX_USER_WIDTH_INT)
240246)
241247axis_gmii_tx_inst (
242- .clk(tx_clk ),
243- .rst(tx_rst ),
248+ .clk(gmii_gtx_clk ),
249+ .rst(gmii_tx_rst ),
244250 .s_axis_tdata(tx_axis_tdata_int),
245251 .s_axis_tvalid(tx_axis_tvalid_int),
246252 .s_axis_tready(tx_axis_tready_int),
@@ -290,16 +296,16 @@ if (MAC_CTRL_ENABLE) begin : mac_ctrl
290296 reg tx_lfc_req_sync_reg_2 = 1'b0 ;
291297 reg tx_lfc_req_sync_reg_3 = 1'b0 ;
292298
293- always @(posedge rx_clk or posedge rx_rst ) begin
294- if (rx_rst ) begin
299+ always @(posedge gmii_rx_clk or posedge gmii_rx_rst ) begin
300+ if (gmii_rx_rst ) begin
295301 tx_lfc_req_sync_reg_1 <= 1'b0 ;
296302 end else begin
297303 tx_lfc_req_sync_reg_1 <= rx_lfc_req;
298304 end
299305 end
300306
301- always @(posedge tx_clk or posedge tx_rst ) begin
302- if (tx_rst ) begin
307+ always @(posedge gmii_gtx_clk or posedge gmii_tx_rst ) begin
308+ if (gmii_tx_rst ) begin
303309 tx_lfc_req_sync_reg_2 <= 1'b0 ;
304310 tx_lfc_req_sync_reg_3 <= 1'b0 ;
305311 end else begin
@@ -312,16 +318,16 @@ if (MAC_CTRL_ENABLE) begin : mac_ctrl
312318 reg rx_lfc_ack_sync_reg_2 = 1'b0 ;
313319 reg rx_lfc_ack_sync_reg_3 = 1'b0 ;
314320
315- always @(posedge tx_clk or posedge tx_rst ) begin
316- if (tx_rst ) begin
321+ always @(posedge gmii_gtx_clk or posedge gmii_tx_rst ) begin
322+ if (gmii_tx_rst ) begin
317323 rx_lfc_ack_sync_reg_1 <= 1'b0 ;
318324 end else begin
319325 rx_lfc_ack_sync_reg_1 <= tx_lfc_pause_en ? tx_pause_ack : 0 ;
320326 end
321327 end
322328
323- always @(posedge rx_clk or posedge rx_rst ) begin
324- if (rx_rst ) begin
329+ always @(posedge gmii_rx_clk or posedge gmii_rx_rst ) begin
330+ if (gmii_rx_rst ) begin
325331 rx_lfc_ack_sync_reg_2 <= 1'b0 ;
326332 rx_lfc_ack_sync_reg_3 <= 1'b0 ;
327333 end else begin
@@ -353,8 +359,8 @@ if (MAC_CTRL_ENABLE) begin : mac_ctrl
353359 .MCF_PARAMS_SIZE(MCF_PARAMS_SIZE)
354360 )
355361 mac_ctrl_tx_inst (
356- .clk(tx_clk ),
357- .rst(tx_rst ),
362+ .clk(gmii_gtx_clk ),
363+ .rst(gmii_tx_rst ),
358364
359365 /*
360366 * AXI stream input
@@ -417,8 +423,8 @@ if (MAC_CTRL_ENABLE) begin : mac_ctrl
417423 .MCF_PARAMS_SIZE(MCF_PARAMS_SIZE)
418424 )
419425 mac_ctrl_rx_inst (
420- .clk(rx_clk ),
421- .rst(rx_rst ),
426+ .clk(gmii_rx_clk ),
427+ .rst(gmii_rx_rst ),
422428
423429 /*
424430 * AXI stream input
@@ -485,8 +491,8 @@ if (MAC_CTRL_ENABLE) begin : mac_ctrl
485491 .PFC_ENABLE(PFC_ENABLE)
486492 )
487493 mac_pause_ctrl_tx_inst (
488- .clk(tx_clk ),
489- .rst(tx_rst ),
494+ .clk(gmii_gtx_clk ),
495+ .rst(gmii_tx_rst ),
490496
491497 /*
492498 * MAC control frame interface
@@ -549,8 +555,8 @@ if (MAC_CTRL_ENABLE) begin : mac_ctrl
549555 .PFC_ENABLE(PFC_ENABLE)
550556 )
551557 mac_pause_ctrl_rx_inst (
552- .clk(rx_clk ),
553- .rst(rx_rst ),
558+ .clk(gmii_rx_clk ),
559+ .rst(gmii_rx_rst ),
554560
555561 /*
556562 * MAC control frame interface
0 commit comments