背景
3月底接了个私活,开发一个基于XDMA的PCIE板卡驱动,要支持245.76M采样率、8天线、32bit采样精度的采集卡,PCIE插槽是gen 3.0 x16,主机是x86服务器(至强处理器,PCIE5.0,DDR5.0 性能杠杠的)。
经过近5个月的业余时间开发,总算在上周调通了接收,发送以后再说。
系统各节点带宽配置
采集数据的带宽要求是32bit x 8天线 x 245.76M / 8bit = 7864.32MB/s ≈ 8GB/s
PCIE3.0的理论速度是16GB/s,扣除编码开销也高达15.754GB/s,不是瓶颈。
PCIE转接板上的DDR4.0-2400M,理论带宽19.2GB/s,因为DDR IP未优化因此实际带宽13GB/s左右,曾经因参数问题时钟只有1600当过瓶颈。
x86的DDR5.0时钟4800M,位宽128bit,肯定不是瓶颈。
系统框架
接收框架如下图:
XDMA支持6个BAR空间,但参考驱动只定义了user、config、bypass这3个BAR,其中config BAR是给XDMA通道使用,bypass BAR用于将XDMA当作纯PCIE IP核使用,