This project demonstrates the use of the Opsero Quad SFP28 FMC (OP081) with 10G/25G Ethernet SFP+/SFP28 modules and it supports several FPGA/MPSoC development boards.
Important links:
- The user guide for these reference designs is hosted here: 10G/25G Ethernet for Quad SFP28 FMC docs
- To report a bug: Report an issue.
- For technical support: Contact Opsero.
- To purchase the mezzanine card: Quad SFP28 FMC order page.
This project is designed for version 2025.2 of the Xilinx tools (Vivado/Vitis/PetaLinux/Yocto EDF). If you are using an older version of the Xilinx tools, then refer to the release tags to find the version of this repository that matches your version of the tools.
In order to test this design on hardware, you will need the following:
- Vivado 2025.2
- PetaLinux Tools 2025.2, or Vitis 2025.2 for the Yocto (AMD EDF) flow
- Quad SFP28 FMC
- One of the target platforms listed below
- Xilinx 10G/25G Ethernet MAC/PCS (25GEMAC) License (all target designs use the 10G/25G Ethernet Subsystem IP; bitstream generation fails without it)
- SFP+/SFP28 modules or cables matching the line rate of the target (10G, or 25G for
_25g) and a 10G/25G link partner (NIC or switch) with FEC and auto-negotiation turned off
This repo contains several designs that target various supported development boards and their FMC connectors. The table below lists the target design name, the SFP28 ports supported by the design and the FMC connector on which to connect the Quad SFP28 FMC. Some of the target designs require a license to generate a bitstream with the AMD Xilinx tools.
| Target board | Target design | Link speeds supported |
SFP28 ports | FMC Slot | Yocto | Vivado Edition |
IP License |
|---|---|---|---|---|---|---|---|
| UltraZed-EV Carrier | uzev |
10G | 4x | HPC | ✅ | Standard 🆓 | Required |
| VCK190 | vck190_fmcp1 |
10G | 4x | FMCP1 | ✅ | Enterprise | Required |
| VCK190 | vck190_fmcp2 |
10G | 4x | FMCP2 | ✅ | Enterprise | Required |
| VEK280 | vek280 |
10G | 4x | FMCP | ✅ | Enterprise | Required |
| VHK158 | vhk158 |
10G | 4x | FMCP | ✅ | Enterprise | Required |
| VMK180 | vmk180_fmcp1 |
10G | 4x | FMCP1 | ✅ | Enterprise | Required |
| VMK180 | vmk180_fmcp2 |
10G | 4x | FMCP2 | ✅ | Enterprise | Required |
| VPK120 | vpk120 |
10G | 4x | FMCP | ✅ | Enterprise | Required |
| VPK180 | vpk180 |
10G | 4x | FMCP | ✅ | Enterprise | Required |
| ZCU102 | zcu102_hpc0 |
10G | 4x | HPC0 | ✅ | Enterprise | Required |
| ZCU102 | zcu102_hpc1 |
10G | 4x | HPC1 | ✅ | Enterprise | Required |
| ZCU104 | zcu104 |
10G | 1x | LPC | ✅ | Standard 🆓 | Required |
| ZCU106 | zcu106_hpc0 |
10G | 4x | HPC0 | ✅ | Standard 🆓 | Required |
| ZCU106 | zcu106_hpc1 |
10G | 1x | HPC1 | ✅ | Standard 🆓 | Required |
| ZCU111 | zcu111 |
10G | 4x | FMCP | ✅ | Enterprise | Required |
| ZCU208 | zcu208 |
10G | 4x | FMCP | ✅ | Enterprise | Required |
| ZCU216 | zcu216 |
10G | 4x | FMCP | ✅ | Enterprise | Required |
| Target board | Target design | Link speeds supported |
SFP28 ports | FMC Slot | Yocto | Vivado Edition |
IP License |
|---|---|---|---|---|---|---|---|
| VCK190 | vck190_fmcp1_25g |
25G | 4x | FMCP1 | ✅ | Enterprise | Required |
| VCK190 | vck190_fmcp2_25g |
25G | 4x | FMCP2 | ✅ | Enterprise | Required |
| VEK280 | vek280_25g |
25G | 4x | FMCP | ✅ | Enterprise | Required |
| VHK158 | vhk158_25g |
25G | 4x | FMCP | ✅ | Enterprise | Required |
| VMK180 | vmk180_fmcp1_25g |
25G | 4x | FMCP1 | ✅ | Enterprise | Required |
| VMK180 | vmk180_fmcp2_25g |
25G | 4x | FMCP2 | ✅ | Enterprise | Required |
| VPK120 | vpk120_25g |
25G | 4x | FMCP | ✅ | Enterprise | Required |
| VPK180 | vpk180_25g |
25G | 4x | FMCP | ✅ | Enterprise | Required |
| ZCU111 | zcu111_25g |
25G | 4x | FMCP | ✅ | Enterprise | Required |
| ZCU208 | zcu208_25g |
25G | 4x | FMCP | ✅ | Enterprise | Required |
| ZCU216 | zcu216_25g |
25G | 4x | FMCP | ✅ | Enterprise | Required |
Notes:
- The Vivado Edition column indicates which designs are supported by the Vivado Standard Edition, the FREE edition which can be used without a license. Vivado Enterprise Edition requires a license however a 30-day evaluation license is available from the AMD Xilinx Licensing site.
- All of the 25G designs have the
_25gpostfix in the target label.
These reference designs are driven from embedded Linux, built with either PetaLinux or Yocto (AMD EDF). The repository includes all necessary scripts and code to build both. There is no standalone (baremetal) application. The table below outlines the applications available in each environment:
| Environment | Available Applications |
|---|---|
| PetaLinux | Built-in Linux commands Additional tools: ethtool, phytool, iperf3 |
| Yocto (AMD EDF) | Built-in Linux commands Additional tools: ethtool, phytool, iperf3, pciutils, mtd-utils, can-utils, nfs-utils |
Clone the repo and change into its directory:
git clone https://github.com/fpgadeveloper/sfp28-fmc-xxv.git
cd sfp28-fmc-xxv
All builds are driven by build.py at the repo root, on both Windows
(git bash) and Linux. The build.sh / build.bat shim finds a suitable
Python 3 automatically (including the one bundled with the AMD tools).
Pick a target design label from the tables above (or run ./build.sh list), then run the build command for the stage(s) you want — each
command builds whatever it depends on automatically and skips anything
already built. On Windows without git bash, run the same commands from
Command Prompt or PowerShell using build.bat (e.g. build.bat xsa --target <target>).
You don't need to source the AMD tools first — the build runner finds Vivado, Vitis and PetaLinux automatically in their standard install locations and sets up the environment each stage needs. If your tools are installed somewhere non-standard and the runner can't find them, source the tool settings yourself before running the build.
./build.sh xsa --target <target>
./build.sh petalinux --target <target>
./build.sh yocto --target <target>
The Yocto flow needs Vitis 2025.2 and Google's repo tool. It produces a
complete SD-card image (rootfs.wic.xz); see the Yocto section of the user
guide for how to write it to the SD card.
Builds all of the above that the target supports, then gathers the boot
images into bootimages/*.zip:
./build.sh all --target <target>
./build.sh all --target all # every target in the repo
Also available: status, clean, project — see
./build.sh --help. On Windows, the PetaLinux and Yocto stages require a
Linux machine; the runner says so and prints the hand-off command. The
legacy make interface still works on Linux (each Makefile now wraps
build.sh) but is deprecated and will be removed at the next version
update.
We strongly encourage community contribution to these projects. Please make a pull request if you would like to share your work:
- if you've spotted and fixed any issues
- if you've added designs for other target platforms
Thank you to everyone who supports us!
This project was developed by Opsero Inc., a tight-knit team of FPGA experts delivering FPGA products and design services to start-ups and tech companies. Follow our blog, FPGA Developer, for news, tutorials and updates on the awesome projects we work on.
