IPbus firmware¶
The IPbus firmware repository provides a reference system-on-chip implementation of modules that interpret the IPbus protocol within FPGAs, including:
Interfaces for receiving and transmitting IPbus transaction lists over Gigabit Ethernet and PCIe
The transactor - a transport-medium-agnostic component that decodes the transactions, and is the master of the on-chip bus
A bus fabric allowing for the attachment of multiple slaves to the bus with address decoding
A large library of slaves
Example designs for commercially-available development boards, covering a range of FPGA generations
It has been developed within the CMS level-1 trigger project and CMS phase-2 upgrades, has been extensively tested on several different boards and in a wide range of particle physics experiments, and is supported on a best-effort basis.
The sections within this user guide (listed in the left-hand menu) provide detailed information about various aspects of the firmware, notably:
The Source code page describes how to download the firmware repository.
The Example designs page describes the high-level structure of the example designs, and how to build them.
The Slaves page lists the bus slaves that are provided in the repository - for connecting RAMs, registers and other resources to the bus.
The On-chip bus page describes the signalling protocol for the on-chip bus.
Supported devices and toolsets¶
At the moment, the IPbus firmware is principally used in Xilinx 7-series, Ultrascale and Ultrascale+ FPGAs. However, in the past it has also been extensively tested in 5- and 6-series Xilinx FPGAs.
The synthesisable firmware is currently being developed and tested with Vivado 2018.3 and 2019.2, and the simulations are tested with Modelsim 10.6c.
What should I do if I have further questions, or want to report a problem or suggest a change?
Please open a ticket at https://github.com/ipbus/ipbus-firmware/issues/new