软件描述符上下文结构(0x0 C2H 和 0x1 H2C) - 5.0 简体中文

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

Document ID
PG302
Release Date
2023-05-16
Version
5.0 简体中文

描述符上下文供描述符引擎适用。

表 1. 软件描述符上下文结构定义
位宽 字段名称 描述
[255:140] 116 reserved 保留。设为 0。
[139] 1 int_aggr 如果该位完成置位,则将在中断环中聚合中断。
[138:128] [10:0] vec 此 MSI-X 矢量用于对应直接中断的中断或者对应聚合中断的中断聚合条目。
[127:64] 64 dsc_base 描述符环的 4K 对齐基址。
[63] 1 is_mm

该字段可判定队列是否是存储器映射队列。如果该字段置位,描述符将交付至关联的 H2C 或 C2H MM 引擎。

1:存储器映射

0:串流

[62] 1 mrkr_dis

如果该字段置位,则在内部模式中禁用标记响应。

不适用于 C2H ST。

[61] 1 irq_req

由于等待发送时出错(等待 irq_arm)而中断。初始化队列上下文时,该位应清零。

不适用于 C2H ST。

[60] 1 err_wb_sent

针对错误已发送写回/中断。该位完成置位后,则针对此队列将不再发送写回或中断。初始化队列上下文时,该位应清零。

不适用于 C2H ST。

[59:58] 2 err

错误状态。

Bit[1] dma – DMA 操作期间发生错误。检查引擎状态寄存器。

Bit[0] dsc – 描述符提取或更新期间发生错误。检查描述符引擎状态寄存器。初始化队列上下文时,该字段应设为 0。

[57] 1 irq_no_last

未发送中断,并且在内部模式下,生产者索引 (PIDX) 或使用者索引 (CIDX) 已处于空闲状态。当 irq_arm 位进行置位时,将发送中断。发送中断时或者队列的 PIDX 更新后,该位应自动清零。

初始化队列上下文时,该位应初始化为 0。

不适用于 C2H ST。

[56:54] 3 port_id

Port_id

在用户接口上将针对与此队列关联的事件发送此端口 ID。

[53] 1 irq_en

中断使能。

在主机状态更新时,将向主机发送中断。

针对 C2H ST 设为 0。

[52] 1 wbk_en

写回使能。

在主机状态更新时,将发送针对状态描述符的存储器写入。

[51] 1 mm_chn 设为 0 且不可修改。
[50] 1 bypass

如果该位完成置位,则队列将在旁路模式下运行,否则将在内部模式下运行。

[49:48] 2 dsc_sz

描述符提取大小。0:8B,1:16B;2:32B;3:64B。

如果不启用旁路模式,则存储器映射 DMA 需 32B,H2C 串流 DMA 需 16B,C2H 串流 DMA 需 8B。

如果针对旁路模式配置队列,则可选择任意描述符大小。描述符将在旁路输出接口上交付。由用户逻辑负责处理描述符,然后将其回馈给描述符旁路输入。

[47:44] 4 rng_sz 描述符环大小索引。该索引会从 16 个寄存器(偏移 0x204:0x240)中选出大小与其他环不同的那一个环。
[43:41] 3 reserved 保留
[40:37] 4 fetch_max 针对此队列未完成的描述符提取的最大数量。最大未完成为 fetch_max + 1。更高的值可提升单一队列性能。
[36] 1 at 基址的地址类型。

0:未转换

1:已转换

此类型将作为地址类型 (AT) 在 PCIe 上用于描述符提取和状态描述符写回。

[35] 1 wbi_intvl_en

写回/中断时间间隔。

基于处理的描述符数量启用定期状态更新。

适用于内部模式。

不适用于 C2H ST。写回时间间隔由寄存器 QDMA_GLBL_DSC_CFG (0x250) bits[2:0] 来判定。

[34] 1 wbi_chk

暂挂检查后的写回/中断。

当队列已完成所有可用描述符时启用状态更新。

适用于内部模式。

[33] 1 fcrd_en

启用提取信用值。

提供给该队列的信用值数量将用于限定提取的描述符数量。

针对 C2H ST 设为 1。

[32] 1 qen

表示队列已启用。

[31:25] 7 reserved 保留
[24:17] 8 fnc_id 功能 ID
[16] 1 irq_arm 中断装备。当该位进行置位时,允许队列生成中断。
[15:0] 16 pidx 生产者索引。