更多信息
引言
Xillyp2p 是一款 IP 核,为两个 FPGA 之间的通信提供了简单直观的解决方案。
该 IP 核 提供的通信链路具有以下特点:
- 双向传输
- 无差错
- 支持多通道
FPGA 之间的物理连接可以是:
- 多千兆位收发器(MGT,如 GTX)
- 基于通用 FPGA 引脚 的 SERDES
- FPGA 之间的多线连接
数据速率 范围从几兆比特每秒到数十吉比特每秒。
与 Aurora、Interlaken、RapidIO 或以太网等常见的点对点协议不同,使用 Xillyp2p 无需任何与通信协议相关的设计工作:与 Xillybus 系列的其他 IP 核类似,该 IP 核与用户应用逻辑之间的接口基于 FIFO:一个 FPGA 上的应用逻辑向一个标准 FIFO 写入数据,另一个 FPGA 上的应用逻辑则从另一个标准 FIFO 读取数据。

上图展示了两个 FPGA 上的 IP 核如何利用底层物理连接,在两个方向上建立若干独立的数据通道。
注意:
- FPGA 之间的物理连接可以是短距离的,例如 PCB 上两个 FPGA 之间的连接。
- Xillyp2p 同样适用于 FPGA 之间距离较远的场景,例如光纤通信应用。
- Xillyp2p IP 核以公平的方式将物理链路的数据带宽分配给各个数据通道,从而高效利用带宽。
- 用户可用的应用数据带宽通常可达物理链路带宽的 97%。
Xillyp2p IP 核创建了一种跨越两个 FPGA 的 FIFO 抽象概念:
- 每个数据通道对应一个这样的虚拟 FIFO。
- 所有数据都无差错地送达对侧。
- 使用“满”和“空”信号对用户数据流进行流控。
应用逻辑无需感知底层存在数据链路通信:只要“满”端口为低电平,逻辑就可以向 FIFO 写入数据;只要“空”端口为低电平,就可以从 FIFO 读出数据。
下图展示了这些虚拟 FIFO 的概念:

上面两图展示了一个具体配置:每个方向上有两个数据通道。但用户可以通过 IP Core Factory 生成自定义的 Xillyp2p IP 核。与通过 IP Core Factory 创建的其他 Xillybus IP 核一样,定制化的 Xillyp2p IP 核可根据用户需求进行裁剪:
- 与物理连接的接口
- 通道数量
- 每个通道的方向
- 每个通道的数据位宽
- 若干与每个通道相关的其他参数
物理通信通道
用户需要自行搭建物理通信通道。如前所述,这通常是一个 MGT、一个 SERDES 或者简单的 FPGA 引脚。
在 FPGA 内部,Xillyp2p IP 核通过一组并行线向量与物理通信通道对接,该向量表示物理通道上解串后的数据。这是 FPGA 厂商提供的 MGT 及其他 SERDES 模块的常见接口。
该向量的位宽在 IP Core Factory 中配置 IP 核时设定,可以是 1 到 128(含)之间的任意整数。
对两个 FPGA 之间物理通道的要求相对宽松:任何能够以恒定速率在两个 FPGA 之间传输数据,且误码率合理(10-6 及以下)的介质均可使用。Xillyp2p IP 核向物理通道馈送的数据流是直流平衡且随机化的。
如果使用 MGT,请注意以下几点:
- MGT 常有其他称呼,例如 GTX、GTH、GTY、GTP 等。
- MGT 应配置为类似简单 SERDES 的工作模式。换句话说:
- 关闭 8b/10b 编码等类似功能
- 关闭字对齐功能
- 关闭所有其他高级功能
- 可以使用 MGT 的均衡器。均衡器要求数据流经过扰码器随机化,而 Xillyp2p 满足这一要求。
也可以直接使用 FPGA 的引脚,例如:
- 使用通用 FPGA 引脚连接两个 FPGA。每个方向上,该链路可以是两个 FPGA 之间的一条 PCB 走线或差分线对(如 LVDS)。可以配合 FPGA 内部的 SERDES 模块以获得更高的数据速率。
- 使用一组并行走线连接两个 FPGA。这允许利用多条单路速率不高的走线来提升总带宽。
Xillyp2p IP 核实现了若干功能以确保可靠的数据传输,包括:
- 扰码器,用于对物理通道上的数据进行随机化
- 比特对齐机制
- 支持错误检测与重传的数据包协议
- 多通道数据复用,以模拟出跨越两个 FPGA 的标准 FIFO 行为(如上文第二张图所示)。
Xillyp2p 还支持以下特性:
- 允许物理通道的热插拔。断开再重新连接线缆是可行的。
- 提供单向版本的 Xillyp2p。显然,该版本不支持重传,因为发送端无法获知数据是否已正确到达。不过,所有到达对侧的数据保证是正确的:链路上的错误会导致受影响的数据段之前的数据传输停止。恢复数据流需要应用逻辑介入处理。
应用场景
- 同一块板卡上多个 FPGA 之间的互连(尤其适用于 MGT)。
- 通过背板连接多个 FPGA。
- 数据采集,例如通过光纤电缆连接位于远端的 FPGA。远端可以是一个视频摄像头或射频(RF)信号接收器。
- 通过光纤电缆向远端设备输出数据。例如,向距离图像源很远的显示器输出视频,或向远端的无线发射天线输出数据等。
- 电气隔离(用于医疗设备的安全保障):通过光纤电缆与前端 FPGA 通信。
- 通过线缆与外围设备(摄像头、显示器、传感器、无线电收发器等)建立数据链路。
- 利用不同 FPGA 厂商板卡上都具备的 MGT 或其他物理连接,实现板卡间的互连。
- 降低 I/O 密集型应用的成本:使用多片引脚数适中的 FPGA,而不是一片高引脚数的 FPGA。
