ipbus / ipbus-firmware

Firmware that implements a reliable high-performance control link for particle physics electronics, based on the IPbus protocol
https://ipbus.web.cern.ch
Other
41 stars 32 forks source link

PCIe-based interface for IPbus transactor #95

Closed tswilliams closed 5 years ago

tswilliams commented 5 years ago

Over the past couple of years, we've developed firmware entities that allow one to read & write lists of IPbus transactions over PCIe - i.e. a PCIe transport layer interface for the IPbus transactor. These have been working reliably for a long time, and from my perspective are ready for inclusion in a release.

The current solution makes use of the Xilinx PCIe DMA (aka XDMA) IP core - and associated Linux driver - to convey the lists of transactions over the the PCIe link. This IP core presents an AXI4 bus, which is then connected to an AXI4 BRAM controller IP core. A newly-written VHDL entity - ipbus_transport_ram_if - is connected to the corresponding BRAM interface; this entity accumulates lists of transaction requests in BRAMs as they are written, presents them to the IPbus transactor when they are ready, and stores the resulting replies in BRAMs that can be read later over the PCIe link through the top-level ports of ipbus_transport_ram_if.

The detailed CPU-FPGA interface is as follows:

tswilliams commented 5 years ago

All done in pull request #96. Closing now.