操作 - 4.0 简体中文

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

Document ID
PG302
Release Date
2022-05-20
Version
4.0 简体中文

存储器映射 DMA 引擎(H2C 和 C2H)的启用方式是在存储器映射引擎控制寄存器中对 run 位进行置位。当 run 断言无效时,描述符可被丢弃。在源缓冲器提取时已启动的任何描述符都将继续处理。run 位重新断言有效将导致对内部引擎状态进行复位,仅当引擎静止时才能执行此操作。描述符是从描述符引擎直接接收到的,或者是从描述符旁路输入接口接收到的。对于内部模式下的任何队列,都不应通过描述符旁路输入接口为其提供描述符。发送到未运行的 MM 引擎的所有描述符都将被丢弃。对于启用混用内部模式队列和旁路模式队列的配置,将执行循环仲裁以确立顺序。

DMA 存储器映射引擎首先向源接口生成读取请求,并在特定于接口的对齐边界处拆分描述符。PCIe 和 AXI 读取接口均可配置为按不同对齐进行拆分。读取数据的完成空间是在发出读取时预先分配的。同样,对于写入请求,DMA 引擎将按适当对齐方式进行拆分。在 AXI 接口上,每个引擎都将使用单一 AXI ID。DMA 引擎会按发出读取的顺序,对读取完成/写入数据进行重新排序。收到足够的读取完成数据后,就会向目标接口发出写入请求,其顺序与请求读取数据的顺序相同。在停用该请求前,目标接口必须接受所有写入数据并提供完成响应。对于 PCIe,当传输事务层接受写入请求时,将在下一个链路上发出写入完成。对于 AXI 存储器映射接口,则 bresp 是完成标准。一旦满足完成标准,就会为描述符生成相应的主机写回、中断和/或标记响应。

DMA 存储器映射引擎还支持描述符旁路输入的 no_dma 字段以及零长度 DMA。在该引擎中,这两种情况的处理方式相同。此处描述符与所有其它描述符一样通过 DMA 引擎进行传输,因此仍可在队列中观测到描述符排序。但不会生成 DMA 读取或写入请求。当所有先前的描述符都已完成其状态更新检查后,就会处理零长度描述符/no_dma描述符的状态更新(写回、中断和/或标记响应)。