# Description
In this reference design, each port of the [Ethernet FMC Max] is driven by one of the hard
gigabit Ethernet MAC controllers (GEMs) of the processing system (PS) — the same MAC
controllers that normally drive the development board's onboard Ethernet ports. The GEMs
are routed into the programmable logic over EMIO GMII, where one Ethernet PCS/PMA or SGMII
core ([PG047]) per port converts the GMII to SGMII over a gigabit transceiver lane. The
SGMII lanes connect to the TI DP83867 PHYs on the Ethernet FMC Max.
The data path for each port is:
```
PS GEM <--EMIO GMII--> PCS/PMA core (PG047, SGMII) <--GT lane--> DP83867 PHY <--> RJ45
```
Key points of the architecture:
* **PS GEMs as the MACs:** No soft MAC or DMA IP is used in the programmable logic; the
Ethernet traffic is handled by the hard GEM controllers of the PS, so the standard
GEM software drivers (baremetal `emacps`, Linux `macb`) drive the ports.
* **PCS/PMA in "Ethernet MAC: GEM" mode:** Each PCS/PMA core is configured for the GEM
and generates the GMII TX/RX clocks for it, adapting the data rate to the speed
resolved by SGMII auto-negotiation with the PHY. The cores power up with the IEEE
ISOLATE bit set, so software clears it over MDIO before traffic flows (baremetal and
U-Boot do this during bring-up; Linux uses the `pcs-unisolate` boot service).
* **Shared MDIO bus:** The Ethernet FMC Max has a single MDIO bus for its four PHYs
(addresses 1, 3, 12 and 15 for ports 0-3). GEM0 masters that bus and manages all four
PHYs, and also reaches every PL PCS/PMA core's management interface at address 8+port
(8-11) to clear its ISOLATE bit. The MDIO masters of the other GEMs are unused.
* **Port mapping:** GEM*n* drives port *n* of the Ethernet FMC Max. The Zynq UltraScale+
targets use all four GEMs (4 ports); the Versal PS has only two GEMs, so the Versal
target (VCK190) drives ports 0 and 1, and the PHYs of ports 2 and 3 are held in reset.
* **Maximum link speed is 1 Gbps:** The PS GEM EMIO GMII path supports 10M/100M/1G
operation.
```{note} Because the GEMs are routed to the FMC through EMIO in these designs, the
development board's onboard Ethernet ports (normally wired to the GEMs through MIO)
are not available.
```
## Hardware Platforms
The hardware designs provided in this reference are based on Vivado and support a range of MPSoC and ACAP evaluation
boards. The repository contains all necessary scripts and code to build these designs for the supported platforms listed below:
{% for group in data.groups %}
{% set designs_in_group = [] %}
{% for design in data.designs %}
{% if design.group == group.label and design.publish %}
{% set _ = designs_in_group.append(design.label) %}
{% endif %}
{% endfor %}
{% if designs_in_group | length > 0 %}
### {{ group.name }} platforms
| Target board | FMC Slot Used | Supported
Num. Ports | Standalone
Echo Server | PetaLinux |
|---------------------|---------------|---------|-----|-----|
{% for design in data.designs %}{% if design.group == group.label and design.publish %}| [{{ design.board }}]({{ design.link }}) | {{ design.connector }} | {{ design.lanes | length }}x | {% if design.baremetal %} ✅ {% else %} ❌ {% endif %} | {% if design.petalinux %} ✅ {% else %} ❌ {% endif %} |
{% endif %}{% endfor %}
{% endif %}
{% endfor %}
## Software
These reference designs can be driven by either a standalone application or within a PetaLinux environment.
The repository includes all necessary scripts and code to build both environments. The table
below outlines the corresponding applications available in each environment:
| Environment | Available Applications |
|------------------|-------------------------|
| Standalone | lwIP Echo Server |
| PetaLinux | Built-in Linux commands
Additional tools: ethtool, phytool, iperf3 |
[Ethernet FMC Max]: https://docs.opsero.com/op080/datasheet/overview/
[PG047]: https://docs.amd.com/r/en-US/pg047-gig-eth-pcs-pma