@@ -48,11 +48,11 @@ 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,
5552
53+ // Copy of rx clock to appease xilinx interfaces
54+ output wire rx_axis_clk,
55+
5656 /*
5757 * AXI input
5858 */
@@ -73,14 +73,21 @@ module eth_mac_1g #
7373 /*
7474 * GMII interface
7575 */
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,
76+ (* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME mac_gmii, CAN_DEBUG false" * )
77+ (* X_INTERFACE_INFO = "xilinx.com:interface:gmii_rtl:1.0 gmii RX_CLK" * ) input wire gmii_rx_clk,
78+ (* X_INTERFACE_INFO = "xilinx.com:interface:gmii_rtl:1.0 gmii RXD" * ) input wire [DATA_WIDTH- 1 :0 ] gmii_rxd,
79+ (* X_INTERFACE_INFO = "xilinx.com:interface:gmii_rtl:1.0 gmii RX_DV" * ) input wire gmii_rx_dv,
80+ (* X_INTERFACE_INFO = "xilinx.com:interface:gmii_rtl:1.0 gmii RX_ER" * ) input wire gmii_rx_er,
81+ (* X_INTERFACE_INFO = "xilinx.com:interface:gmii_rtl:1.0 gmii GTX_CLK" * ) output wire gmii_gtx_clk,
82+ (* X_INTERFACE_INFO = "xilinx.com:interface:gmii_rtl:1.0 gmii TXD" * ) output wire [DATA_WIDTH- 1 :0 ] gmii_txd,
83+ (* X_INTERFACE_INFO = "xilinx.com:interface:gmii_rtl:1.0 gmii TX_EN" * ) output wire gmii_tx_en,
84+ (* X_INTERFACE_INFO = "xilinx.com:interface:gmii_rtl:1.0 gmii TX_ER" * ) output wire gmii_tx_er,
85+ // Non standard gmii
86+ input wire gmii_rx_rst,
87+ input wire gmii_tx_rst,
8288
8389 /*
90+
8491 * PTP
8592 */
8693 input wire [PTP_TS_WIDTH- 1 :0 ] tx_ptp_ts,
@@ -202,15 +209,18 @@ wire rx_axis_tvalid_int;
202209wire rx_axis_tlast_int;
203210wire [RX_USER_WIDTH- 1 :0 ] rx_axis_tuser_int;
204211
212+ assign gmii_gtx_clk = tx_clk;
213+ assign rx_axis_clk = gmii_rx_clk;
214+
205215axis_gmii_rx #(
206216 .DATA_WIDTH(DATA_WIDTH),
207217 .PTP_TS_ENABLE(PTP_TS_ENABLE),
208218 .PTP_TS_WIDTH(PTP_TS_WIDTH),
209219 .USER_WIDTH(RX_USER_WIDTH)
210220)
211221axis_gmii_rx_inst (
212- .clk(rx_clk ),
213- .rst(rx_rst ),
222+ .clk(gmii_rx_clk ),
223+ .rst(gmii_rx_rst ),
214224 .gmii_rxd(gmii_rxd),
215225 .gmii_rx_dv(gmii_rx_dv),
216226 .gmii_rx_er(gmii_rx_er),
@@ -239,8 +249,8 @@ axis_gmii_tx #(
239249 .USER_WIDTH(TX_USER_WIDTH_INT)
240250)
241251axis_gmii_tx_inst (
242- .clk(tx_clk ),
243- .rst(tx_rst ),
252+ .clk(gmii_gtx_clk ),
253+ .rst(gmii_tx_rst ),
244254 .s_axis_tdata(tx_axis_tdata_int),
245255 .s_axis_tvalid(tx_axis_tvalid_int),
246256 .s_axis_tready(tx_axis_tready_int),
@@ -290,16 +300,16 @@ if (MAC_CTRL_ENABLE) begin : mac_ctrl
290300 reg tx_lfc_req_sync_reg_2 = 1'b0 ;
291301 reg tx_lfc_req_sync_reg_3 = 1'b0 ;
292302
293- always @(posedge rx_clk or posedge rx_rst ) begin
294- if (rx_rst ) begin
303+ always @(posedge gmii_rx_clk or posedge gmii_rx_rst ) begin
304+ if (gmii_rx_rst ) begin
295305 tx_lfc_req_sync_reg_1 <= 1'b0 ;
296306 end else begin
297307 tx_lfc_req_sync_reg_1 <= rx_lfc_req;
298308 end
299309 end
300310
301- always @(posedge tx_clk or posedge tx_rst ) begin
302- if (tx_rst ) begin
311+ always @(posedge gmii_gtx_clk or posedge gmii_tx_rst ) begin
312+ if (gmii_tx_rst ) begin
303313 tx_lfc_req_sync_reg_2 <= 1'b0 ;
304314 tx_lfc_req_sync_reg_3 <= 1'b0 ;
305315 end else begin
@@ -312,16 +322,16 @@ if (MAC_CTRL_ENABLE) begin : mac_ctrl
312322 reg rx_lfc_ack_sync_reg_2 = 1'b0 ;
313323 reg rx_lfc_ack_sync_reg_3 = 1'b0 ;
314324
315- always @(posedge tx_clk or posedge tx_rst ) begin
316- if (tx_rst ) begin
325+ always @(posedge gmii_gtx_clk or posedge gmii_tx_rst ) begin
326+ if (gmii_tx_rst ) begin
317327 rx_lfc_ack_sync_reg_1 <= 1'b0 ;
318328 end else begin
319329 rx_lfc_ack_sync_reg_1 <= tx_lfc_pause_en ? tx_pause_ack : 0 ;
320330 end
321331 end
322332
323- always @(posedge rx_clk or posedge rx_rst ) begin
324- if (rx_rst ) begin
333+ always @(posedge gmii_rx_clk or posedge gmii_rx_rst ) begin
334+ if (gmii_rx_rst ) begin
325335 rx_lfc_ack_sync_reg_2 <= 1'b0 ;
326336 rx_lfc_ack_sync_reg_3 <= 1'b0 ;
327337 end else begin
@@ -353,8 +363,8 @@ if (MAC_CTRL_ENABLE) begin : mac_ctrl
353363 .MCF_PARAMS_SIZE(MCF_PARAMS_SIZE)
354364 )
355365 mac_ctrl_tx_inst (
356- .clk(tx_clk ),
357- .rst(tx_rst ),
366+ .clk(gmii_gtx_clk ),
367+ .rst(gmii_tx_rst ),
358368
359369 /*
360370 * AXI stream input
@@ -417,8 +427,8 @@ if (MAC_CTRL_ENABLE) begin : mac_ctrl
417427 .MCF_PARAMS_SIZE(MCF_PARAMS_SIZE)
418428 )
419429 mac_ctrl_rx_inst (
420- .clk(rx_clk ),
421- .rst(rx_rst ),
430+ .clk(gmii_rx_clk ),
431+ .rst(gmii_rx_rst ),
422432
423433 /*
424434 * AXI stream input
@@ -485,8 +495,8 @@ if (MAC_CTRL_ENABLE) begin : mac_ctrl
485495 .PFC_ENABLE(PFC_ENABLE)
486496 )
487497 mac_pause_ctrl_tx_inst (
488- .clk(tx_clk ),
489- .rst(tx_rst ),
498+ .clk(gmii_gtx_clk ),
499+ .rst(gmii_tx_rst ),
490500
491501 /*
492502 * MAC control frame interface
@@ -549,8 +559,8 @@ if (MAC_CTRL_ENABLE) begin : mac_ctrl
549559 .PFC_ENABLE(PFC_ENABLE)
550560 )
551561 mac_pause_ctrl_rx_inst (
552- .clk(rx_clk ),
553- .rst(rx_rst ),
562+ .clk(gmii_rx_clk ),
563+ .rst(gmii_rx_rst ),
554564
555565 /*
556566 * MAC control frame interface
0 commit comments