VDM - 5.0 简体中文

QDMA Subsystem for PCI Express 产品指南 (PG302)

Document ID
PG302
Release Date
2023-10-18
Version
5.0 简体中文

供应商定义报文 (VDM) 是对 PCI Express 现有报文传递功能的扩展。PCI Express 规范定义了针对供应商定义报文、报头格式和路由信息的附加要求。欲知详情,请参阅 PCI-SIG 规范(https://www.pcisig.com/specifications)

QDMA 允许传输和接收 VDM。要启用该功能,请选中 Vivado 的“Customize IP”(自定义 IP)对话框中的Enable Bridge Slave Mode(启用 Bridge 从模式)。这将启用 st_rx_msg 接口。

RX 供应商定义报文先存储在浅 FIFO 中,然后再发射到输出端口。如有大量连续 VDM 报文,FIFO 将发生上溢,这些报文将被丢弃。因此,最好定期重复 VDM 报文。

VDM 的吞吐量取决于几个因素:PCIe 速度、数据宽度、报文长度和内部 VDM 流水线。

内部 VDM 流水线必须替换为内部 RX VDM FIFO 接口,以便进行片上网络 (NoC) 访问,NoC 有 64B 的浅缓冲器。

注释: 如果在通过 NoC 维护 FIFO 之前收到的 VDM 超过 64B,那么新 VDM 报文将被丢弃。

内部 RX VDM FIFO 接口不能处理连续报文。流水线吞吐量只能处理每四次访问中的一次访问,即约为主机访问效率的 25%。

重要: 请勿使用连续 VDM 访问。

RX 供应商定义报文:

  1. 当 QDMA 收到 VDM 时,将在 st_rx_msg 端口接收传入的报文。
  2. 将在 st_rx_msg_data 端口捕获(按 DW)传入的数据串流。
  3. 用户应用需驱动 st_rx_msg_rdy 以发出信号,指明它是否能接受传入 VDM。
  4. st_rx_msg_rdy 为高位时,传入 VDM 将被转发至用户应用。
  5. 用户应用需存储此传入 VDM,并跟踪接收到的包数量。

TX 供应商定义报文:

  1. 要启用从 QDMA 发射到 VDM 的操作,请在 Bridge 中通过 从接口对 TX Message 寄存器进行编程。
  2. Bridge 具有 TX Message Control、Header L(字节 8-11)、Header H(字节 12-15)和 TX Message Data 寄存器,如 PCIe TX Message Data FIFO Register (TX_MSG_DFIFO) 中所示。
  3. 通过 从接口对偏移 0xE64 发出 Write(写入),供 TX Message Header L 寄存器使用。
  4. 对偏移 0xE68 进行编程,以供所需 VDM TX Header H 寄存器使用。
  5. 向偏移 0xE6C 逐一发送 Write,对最多 16 个 DW 有效载荷进行编程,以供从 DW0 开始到 DW15 为止的 VDM 报文使用。
  6. 对 TX_MSG_CTRL 寄存器中的偏移 0xE60 的 msg_routingmsg_code、数据长度、请求器功能字段和 msg_execute 字段进行编程以发送 VDM TX 包。
  7. TX Message Control 寄存器还会在位 23 处指明报文的完成状态。用户需读取该位,以确认是否成功发射 VDM 包。
  8. 这些寄存器中的所有字段均为 RW,TX Control 中的位 23 (msg_fail) 除外,写入 1 即可将该位清零。
  9. VDM TX 包将在 AXI-ST RQ 发射接口上发送。