Skip to content

VHDL library for 10 GbE supporting UDP/IP, ARP, ICMP and DHCP

License

Notifications You must be signed in to change notification settings

staerz/XGbE_lib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

XGbE_lib

This repository provides XGbE_lib, a VHDL library for 10 GbE supporting UDP/IP and embedded support for ARP, ICMP and DHCP.

Contact

This repository is maintained by Steffen Stärz (steffen.staerz@cern.ch).

Use the GitLab issue tracker for reporting any bug or other issue.

Description

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.

Dependencies and prerequisites

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:

  • doxygen 1.8.18 (or higher) for generating the documentation
  • UVVM for test benches

Repository structure

Documentation

All source code is documented using Doxygen.

To generate the documentation locally as pdf (using $\LaTeX$) or as HTML, see the Doxygen directory.

It uses wavedrom to generate timing diagrams.

Code style

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.

About

VHDL library for 10 GbE supporting UDP/IP, ARP, ICMP and DHCP

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published