存储器和 I/O 读取 TLP 处理 - 1.3 简体中文

UltraScale+ 器件 Integrated Block for PCI Express 产品指南 (PG213)

Document ID
PG213
Release Date
2022-11-16
Version
1.3 简体中文

PCIe® 的端点接收到存储器或 I/O 读取 TLP 时,TLP 目标地址和传输事务类型将与核 BAR 中编程的值进行比对。如果 TLP 通过此比对检查,那么核会将此 TLP 传递到 PIO 设计的 AXI4-Stream 接收接口。

AXI4-Stream 完成器请求接口会随包起始、包结束和就绪握手信号一起,断言相应的 BAR ID[2:0] 信号有效,以向 PIO 设计标示与传入 TLP 匹配的特定目标 BAR。在接收时,PIO 设计状态机会处理传入的读取 TLP,提取相关 TLP 信息并将其传递给 PIO 设计的内部块 RAM 读取请求控制器。

在地址对齐模式下,根据断言有效的特定 BAR ID[2:0] 信号,RX 状态机会先向内部读取请求控制器标示要使用的相应 2 KB 块 RAM,然后再断言读取使能请求有效。而对于 Dword 对齐模式,RX 状态机会基于 BAR ID [2:0] 检查请求是否对应于存储器读取 32 TLP,以启用读取请求并丢弃所有其它请求。例如,如果以默认 Mem32 BAR2 为目标的核接收到存储器读取 32 请求 TLP,那么该核会将此 TLP 传递到 PIO 设计,并将 BAR ID[2:0] 设置为 010b。RX 状态机会从存储器 32 读取 TLP 提取下位地址位,并指令内部的存储器读取请求控制器开始读取操作。

在此示例中,将 BAR ID[2:0] 设置为 010b 会指令 PIO 存储器读取控制器访问 Mem32 空间,默认情况下,这表示 2 KB 的存储器空间。存储器写入和读取 TLP 的处理方法之间的显著差异在于,对于存储器或 I/O 读取请求,要求接收方器件返回含数据完成 TLP。

处理读取时,PIO 设计 RX 状态机会断言 m_axis_cq_tready 无效,这将导致 AXI4-Stream 接收接口暂停接收任何其它 TLP,直至内部的存储器读取控制器完成从块 RAM 进行的读取访问并生成完成包为止。对于使用该核的设计而言,并非所有设计都需要以此方式断言 m_axis_cq_tready 无效。PIO 设计使用此方法可简化 RX 状态机的控制逻辑。