@@ -129,6 +129,7 @@ module fpga #
129
129
parameter AXIS_ETH_TX_TS_PIPELINE = 4 ,
130
130
parameter AXIS_ETH_RX_PIPELINE = 4 ,
131
131
parameter AXIS_ETH_RX_FIFO_PIPELINE = 4 ,
132
+ parameter ETH_RX_CLK_FROM_TX = 0 ,
132
133
133
134
// Statistics counter subsystem
134
135
parameter STAT_ENABLE = 1 ,
@@ -1034,6 +1035,8 @@ wire qsfp0_rx_axis_tvalid_int;
1034
1035
wire qsfp0_rx_axis_tlast_int;
1035
1036
wire [80 + 1 - 1 :0 ] qsfp0_rx_axis_tuser_int;
1036
1037
1038
+ wire qsfp0_rx_ptp_clk_int;
1039
+ wire qsfp0_rx_ptp_rst_int;
1037
1040
wire [79 :0 ] qsfp0_rx_ptp_time_int;
1038
1041
1039
1042
wire qsfp0_drp_clk = clk_125mhz_int;
@@ -1101,6 +1104,7 @@ cmac_gty_wrapper #(
1101
1104
.AXIS_KEEP_WIDTH(AXIS_ETH_KEEP_WIDTH),
1102
1105
.TX_SERDES_PIPELINE(0 ),
1103
1106
.RX_SERDES_PIPELINE(0 ),
1107
+ .RX_CLK_FROM_TX(ETH_RX_CLK_FROM_TX),
1104
1108
.RS_FEC_ENABLE(1 )
1105
1109
)
1106
1110
qsfp0_cmac_inst (
@@ -1166,6 +1170,8 @@ qsfp0_cmac_inst (
1166
1170
.rx_axis_tlast(qsfp0_rx_axis_tlast_int),
1167
1171
.rx_axis_tuser(qsfp0_rx_axis_tuser_int),
1168
1172
1173
+ .rx_ptp_clk(qsfp0_rx_ptp_clk_int),
1174
+ .rx_ptp_rst(qsfp0_rx_ptp_rst_int),
1169
1175
.rx_ptp_time(qsfp0_rx_ptp_time_int),
1170
1176
1171
1177
.rx_enable(qsfp0_rx_enable),
@@ -1203,6 +1209,8 @@ wire qsfp1_rx_axis_tvalid_int;
1203
1209
wire qsfp1_rx_axis_tlast_int;
1204
1210
wire [80 + 1 - 1 :0 ] qsfp1_rx_axis_tuser_int;
1205
1211
1212
+ wire qsfp1_rx_ptp_clk_int;
1213
+ wire qsfp1_rx_ptp_rst_int;
1206
1214
wire [79 :0 ] qsfp1_rx_ptp_time_int;
1207
1215
1208
1216
wire qsfp1_drp_clk = clk_125mhz_int;
@@ -1270,6 +1278,7 @@ cmac_gty_wrapper #(
1270
1278
.AXIS_KEEP_WIDTH(AXIS_ETH_KEEP_WIDTH),
1271
1279
.TX_SERDES_PIPELINE(0 ),
1272
1280
.RX_SERDES_PIPELINE(0 ),
1281
+ .RX_CLK_FROM_TX(ETH_RX_CLK_FROM_TX),
1273
1282
.RS_FEC_ENABLE(1 )
1274
1283
)
1275
1284
qsfp1_cmac_inst (
@@ -1335,6 +1344,8 @@ qsfp1_cmac_inst (
1335
1344
.rx_axis_tlast(qsfp1_rx_axis_tlast_int),
1336
1345
.rx_axis_tuser(qsfp1_rx_axis_tuser_int),
1337
1346
1347
+ .rx_ptp_clk(qsfp1_rx_ptp_clk_int),
1348
+ .rx_ptp_rst(qsfp1_rx_ptp_rst_int),
1338
1349
.rx_ptp_time(qsfp1_rx_ptp_time_int),
1339
1350
1340
1351
.rx_enable(qsfp1_rx_enable),
@@ -1372,6 +1383,8 @@ wire qsfp2_rx_axis_tvalid_int;
1372
1383
wire qsfp2_rx_axis_tlast_int;
1373
1384
wire [80 + 1 - 1 :0 ] qsfp2_rx_axis_tuser_int;
1374
1385
1386
+ wire qsfp2_rx_ptp_clk_int;
1387
+ wire qsfp2_rx_ptp_rst_int;
1375
1388
wire [79 :0 ] qsfp2_rx_ptp_time_int;
1376
1389
1377
1390
wire qsfp2_drp_clk = clk_125mhz_int;
@@ -1439,6 +1452,7 @@ cmac_gty_wrapper #(
1439
1452
.AXIS_KEEP_WIDTH(AXIS_ETH_KEEP_WIDTH),
1440
1453
.TX_SERDES_PIPELINE(0 ),
1441
1454
.RX_SERDES_PIPELINE(0 ),
1455
+ .RX_CLK_FROM_TX(ETH_RX_CLK_FROM_TX),
1442
1456
.RS_FEC_ENABLE(1 )
1443
1457
)
1444
1458
qsfp2_cmac_inst (
@@ -1504,6 +1518,8 @@ qsfp2_cmac_inst (
1504
1518
.rx_axis_tlast(qsfp2_rx_axis_tlast_int),
1505
1519
.rx_axis_tuser(qsfp2_rx_axis_tuser_int),
1506
1520
1521
+ .rx_ptp_clk(qsfp2_rx_ptp_clk_int),
1522
+ .rx_ptp_rst(qsfp2_rx_ptp_rst_int),
1507
1523
.rx_ptp_time(qsfp2_rx_ptp_time_int),
1508
1524
1509
1525
.rx_enable(qsfp2_rx_enable),
@@ -1541,6 +1557,8 @@ wire qsfp3_rx_axis_tvalid_int;
1541
1557
wire qsfp3_rx_axis_tlast_int;
1542
1558
wire [80 + 1 - 1 :0 ] qsfp3_rx_axis_tuser_int;
1543
1559
1560
+ wire qsfp3_rx_ptp_clk_int;
1561
+ wire qsfp3_rx_ptp_rst_int;
1544
1562
wire [79 :0 ] qsfp3_rx_ptp_time_int;
1545
1563
1546
1564
wire qsfp3_drp_clk = clk_125mhz_int;
@@ -1608,6 +1626,7 @@ cmac_gty_wrapper #(
1608
1626
.AXIS_KEEP_WIDTH(AXIS_ETH_KEEP_WIDTH),
1609
1627
.TX_SERDES_PIPELINE(0 ),
1610
1628
.RX_SERDES_PIPELINE(0 ),
1629
+ .RX_CLK_FROM_TX(ETH_RX_CLK_FROM_TX),
1611
1630
.RS_FEC_ENABLE(1 )
1612
1631
)
1613
1632
qsfp3_cmac_inst (
@@ -1673,6 +1692,8 @@ qsfp3_cmac_inst (
1673
1692
.rx_axis_tlast(qsfp3_rx_axis_tlast_int),
1674
1693
.rx_axis_tuser(qsfp3_rx_axis_tuser_int),
1675
1694
1695
+ .rx_ptp_clk(qsfp3_rx_ptp_clk_int),
1696
+ .rx_ptp_rst(qsfp3_rx_ptp_rst_int),
1676
1697
.rx_ptp_time(qsfp3_rx_ptp_time_int),
1677
1698
1678
1699
.rx_enable(qsfp3_rx_enable),
@@ -2391,6 +2412,7 @@ fpga_core #(
2391
2412
.AXIS_ETH_TX_TS_PIPELINE(AXIS_ETH_TX_TS_PIPELINE),
2392
2413
.AXIS_ETH_RX_PIPELINE(AXIS_ETH_RX_PIPELINE),
2393
2414
.AXIS_ETH_RX_FIFO_PIPELINE(AXIS_ETH_RX_FIFO_PIPELINE),
2415
+ .ETH_RX_CLK_FROM_TX(ETH_RX_CLK_FROM_TX),
2394
2416
2395
2417
// Statistics counter subsystem
2396
2418
.STAT_ENABLE(STAT_ENABLE),
@@ -2536,6 +2558,8 @@ core_inst (
2536
2558
.qsfp0_rx_axis_tvalid(qsfp0_rx_axis_tvalid_int),
2537
2559
.qsfp0_rx_axis_tlast(qsfp0_rx_axis_tlast_int),
2538
2560
.qsfp0_rx_axis_tuser(qsfp0_rx_axis_tuser_int),
2561
+ .qsfp0_rx_ptp_clk(qsfp0_rx_ptp_clk_int),
2562
+ .qsfp0_rx_ptp_rst(qsfp0_rx_ptp_rst_int),
2539
2563
.qsfp0_rx_ptp_time(qsfp0_rx_ptp_time_int),
2540
2564
2541
2565
.qsfp0_rx_enable(qsfp0_rx_enable),
@@ -2594,6 +2618,8 @@ core_inst (
2594
2618
.qsfp1_rx_axis_tvalid(qsfp1_rx_axis_tvalid_int),
2595
2619
.qsfp1_rx_axis_tlast(qsfp1_rx_axis_tlast_int),
2596
2620
.qsfp1_rx_axis_tuser(qsfp1_rx_axis_tuser_int),
2621
+ .qsfp1_rx_ptp_clk(qsfp1_rx_ptp_clk_int),
2622
+ .qsfp1_rx_ptp_rst(qsfp1_rx_ptp_rst_int),
2597
2623
.qsfp1_rx_ptp_time(qsfp1_rx_ptp_time_int),
2598
2624
2599
2625
.qsfp1_rx_enable(qsfp1_rx_enable),
@@ -2652,6 +2678,8 @@ core_inst (
2652
2678
.qsfp2_rx_axis_tvalid(qsfp2_rx_axis_tvalid_int),
2653
2679
.qsfp2_rx_axis_tlast(qsfp2_rx_axis_tlast_int),
2654
2680
.qsfp2_rx_axis_tuser(qsfp2_rx_axis_tuser_int),
2681
+ .qsfp2_rx_ptp_clk(qsfp2_rx_ptp_clk_int),
2682
+ .qsfp2_rx_ptp_rst(qsfp2_rx_ptp_rst_int),
2655
2683
.qsfp2_rx_ptp_time(qsfp2_rx_ptp_time_int),
2656
2684
2657
2685
.qsfp2_rx_enable(qsfp2_rx_enable),
@@ -2710,6 +2738,8 @@ core_inst (
2710
2738
.qsfp3_rx_axis_tvalid(qsfp3_rx_axis_tvalid_int),
2711
2739
.qsfp3_rx_axis_tlast(qsfp3_rx_axis_tlast_int),
2712
2740
.qsfp3_rx_axis_tuser(qsfp3_rx_axis_tuser_int),
2741
+ .qsfp3_rx_ptp_clk(qsfp3_rx_ptp_clk_int),
2742
+ .qsfp3_rx_ptp_rst(qsfp3_rx_ptp_rst_int),
2713
2743
.qsfp3_rx_ptp_time(qsfp3_rx_ptp_time_int),
2714
2744
2715
2745
.qsfp3_rx_enable(qsfp3_rx_enable),
0 commit comments