首先,测试案例启动 H2C 引擎。H2C 引擎会从主机存储器读取数据,并将其写入用户侧的块 RAM。随后,测试案例会启动 C2H 引擎。C2H 引擎会从块 RAM 读取数据,并将其写入主机存储器。仿真步骤如下所示:
- 测试案例为 H2C 引擎设置 1 个描述符。
- 在主机存储器中创建 H2C 描述符。H2C 描述符提供数据长度(128 字节)、源地址(主机)和目标地址(卡)。
- 测试案例在源地址空间内写入数据(128 字节的增量数据)。
- 测试案例还会为 C2H 引擎设置 1 个描述符。
- C2H 描述符提供数据长度(128 字节)、源地址(卡)和目标地址(主机)。
- 将 H2C 描述符起始地址写入寄存器(
0x4080
和0x4084
)。 - 写入 H2C 控制寄存器,这样即可启动 H2C 传输地址 (
0x0004
)。位 0 设为 1 即可启动传输。如需了解有关控制寄存器的详细信息,请参阅 H2C Channel Control (0x04)。 - DMA 传输会从主机源地址提取数据,并将其发送至块 RAM 目标地址。
- 随后,测试案例会启动 C2H 传输。
- 将 C2H 描述符起始地址写入寄存器(
0x5080
和0x5084
)。 - 写入 C2H 控制寄存器,这样即可启动 C2H 传输 (
0x1004
)。位 0 设为 1 即可启动传输。如需了解有关控制寄存器的详细信息,请参阅 C2H Channel Control (0x04)。 - DMA 传输会从块 RAM 源地址提取数据,并将此数据发送至主机目标地址。
- 随后,测试案例会比较数据,确认是否正确。
- 测试案例会检查 H2C 和 C2H 描述符的完成计数(值为 1)。
- 随后,测试案例会停用 H2C 和 C2H 引擎的控制寄存器
0x0004
和0x1004
中的 Run 位(位 0),以禁用传输。