This repository provides XGbE_lib
, a VHDL library for 10 GbE supporting UDP/IP and embedded support for ARP, ICMP and DHCP.
This repository is maintained by Steffen Stärz (steffen.staerz@cern.ch).
Use the GitLab issue tracker for reporting any bug or other issue.
XGbE_lib
is a low latency and high throughput implementation of UDP/IP in ten Gigabit Ethernet for FPGAs in VHDL.
The XGbE_lib
can also be embedded in 1 GbE applications when wrapping it accordingly in FIFO-based environment which respect the AVST interface.
XGbE_lib
also implements DHCP for automatic IP address configuration and the supporting protocols of ARP and ICMP.
To achieve low latency, not all optional features are implemented.
Examples of such omitted features are the calculation of optional checksum (CRC) fields in headers or the DHCP_INFORM
mechanism for static IP configuration of DHCP.
All required sources to build XGbE_lib
are provided.
These sources are generic and target device unspecific such that it can be used for any FPGA family from any vendor.
The entire design is based on the Avalon Streaming Interface (AVST) as it is fully defined in the Avalon Interface Specification.
For the purpose of 10 Gigabit Ethernet application, it's based on a clock of 156.25 MHz and a data bus width of 64 bit.
ethernet_to_udp_module
is the top level entity to provide the user interface.
XGbE_lib
is based on a variant of hdlmake
.
At least the following tools are requires:
- GNU Make 3.81
- Git 2.7.6
- Python 3.6
The project itself further uses the following tools:
src
: source files, organised by librarysimulation
: test benches for all sources ofXGbE_lib
doc
: setup and auxiliary files for the generation of the documenation via Doxygen
All source code is documented using Doxygen.
To generate the documentation locally as pdf
(using
It uses wavedrom to generate timing diagrams.
This repository uses VSG to check code style.
Currently the style check is limited to the source code of XGbE_lib
(and its test benches) as the auxiliary libraries don't comply with the configured rules.
To run VSG on this repository, simply vsg $(cat .vsg/params.txt)
.
Note that the configuration is compatible with VSG 3.13.1.