完成 (CMPT) 环条目的大小为 512 位。这包括用户定义的数据、可选错误位和可选颜色位。用户定义的数据有 4 种大小选择:8B、16B、32B 和 64B。CMPT 条目中可选错误位和颜色位的位置均可单独配置。这是通过在编译 QDMA Subsystem for PCIe 时,使用 Vivado® IDE IP 自定义选项指定这些字段的位置来完成的。有七个颜色位位置选项和八个错误位位置选项可选。位置是按距离完成条目的 LSB 位的偏移量的形式来指定的。
用户应用将完成包驱动到 QDMA Subsystem for PCIe 中时,它会在接口处提供一个 s_axis_cmpt_ctrl_col_idx[2:0]
值和一个 s_axis_cmpt_ctrl_err_idx[2:0]
值。这些索引供 QDMA Subsystem for PCIe 用于使用颜色位和错误位的正确位置。例如,如果 s_axis_cmpt_ctrl_col_idx[2:0] = 0
且 s_axis_cmpt_ctrl_err_idx[2:0] = 1
,那么 QDMA Subsystem for PCIe 使用C2H Stream Completion Color bits(C2H 串流完成颜色位)位置选项 0 表示颜色位置,并使用C2H Stream Completion Error bits(C2H 串流完成错误位)位置选项 1 表示错误位置。颜色或错误信号的索引为 7 表示更新完成条目时,DMA 不会更新对应的颜色位或错误位(忽略这些字段)。在
Vivado®
IDE 的“PCIe DMA”选项卡中设置 C2H 串流完成位选项。
在编译时使用的错误位和颜色位的位置值可供软件用于读取 MMIO 寄存器。有 7 个寄存器可供读取:QDMA_C2H_CMPT_FORMAT (0xBC4) 到 QDMA_GLBL_ERR_MASK (0x24C)。其中每个寄存器中都各有一个颜色位位置和一个错误位位置。
- C2H 串流完成位的对应颜色位位置的选项 0 和对应错误位位置的选项 0 均可通过 QDMA_C2H_CMPT_FORMAT_0 寄存器来使用。
- C2H 串流完成位的对应颜色位位置的选项 1 和对应错误位位置的选项 1 均可通过 QDMA_C2H_CMPT_FORMAT_1 寄存器来使用。
- 以此类推。
名称 | 大小(位) | 索引 |
---|---|---|
针对 64 字节的用户定义的位设置 |
510-512 | 取决于是否存在颜色位和错误位。 |
针对 32 字节的用户定义的位设置 |
254-256 | 取决于是否存在颜色位和错误位。 |
针对 16 字节的用户定义的位设置 |
126-128 | 取决于是否存在颜色位和错误位。 |
针对 8 字节的用户定义的位设置 |
62-64 | 取决于是否存在颜色位和错误位。 |
错误 | 错误位的位置由寄存器 QDMA_C2H_CMPT_FORMAT_0 (0xBC4) 到 QDMA_C2H_CMPT_FORMAT_6 (0xBDC) 定义。这些寄存器可显示在 IP 生成期间用户定义的颜色位的位置。您可根据输入 CMPT 端口 s_axis_c2h_cmpt_ctrl_err_idx[2:0] 索引到该寄存器内。您可选择不包含错误位(索引值 7)。在此情况下,用户定义的数据会占用该空间 |
|
颜色 | 颜色位的位置由寄存器 QDMA_C2H_CMPT_FORMAT_0 (0xBC4) 到 QDMA_C2H_CMPT_FORMAT_6 (0xBDC) 来定义。这些寄存器可显示在 IP 生成期间用户定义的颜色位的位置。您可根据输入 CMPT 端口 s_axis_c2h_cmpt_ctrl_col_idx[2:0] 索引到该寄存器内。如果不包含颜色位(索引值 7),则用户定义的数据会占用该空间。 |