Introdction

Xilinx® DMA/Bridge Subsystem for PCI Express® (PCIe®) 实现了一个高性能、可配置的 Scatter Gather DMA,用于与 PCI Express® 2.1 和 3.x 集成块一起使用。 IP 提供了 AXI4 Memory Mapped 或 AXI4-Stream 用户接口之间的选择。

该 IP 还可选地支持仅对 UltraScale+ 设备启用的 PCIe AXI 桥接模式。 有关 PCIe AXI Bridge 模式操作的详细信息,请参阅 AXI Bridge for PCI Express Gen3 Subsystem Product Guide (PG194)。

本文档仅涵盖 DMA 模式操作。

注意:有关 Versal ACAP 子系统的详细信息,请参阅 Versal ACAP DMA 和桥接子系统 PCI Express 产品指南 (PG344)。

Features

  • Supports UltraScale+、UltraScale、Virtex®-7 XT Gen3(端点,EP)和 7 系列 2.1(端点)Integrated Block for PCIe 。不支持 7A15T 和 7A25T
  • 支持 64、128、256、512 bit的数据通路(64 和 128 位数据通路仅适用于 7 系列 Gen2 IP)
  • 64 位源、目标和描述符地址
  • 最多四个主机到卡(H2C/读取)数据通道(7 系列 Gen2 IP 最多两个)
  • 最多四个卡到主机(C2H/Write)数据通道(7 系列 Gen2 IP 最多两个)
  • 可选择的用户接口
    • 单个 AXI4 内存映射 (MM) 用户界面
    • AXI4-Stream 用户界面(每个通道都有自己的 AXI4-Stream 界面)
  • AXI4 Master 和 AXI4-Lite Master 可选接口允许 PCIe 流量绕过 DMA 引擎
  • AXI4-Lite Slave 访问 DMA 状态寄存器
  • Scatter Gather 描述符列表支持无限列表大小
  • 每个描述符的最大传输大小为 256 MB
  • Legacy、MSI 和 MSI-X 中断
  • 连续描述符的块提取
  • 轮询模式
  • 描述符旁路接口
  • 任意源和目标地址
  • AXI 总线上的奇偶校验或传播奇偶校验(不适用于 7 系列 Gen2 IP)

Overview

DMA/Bridge Subsystem for PCI Express® (PCIe®) 可以配置为高性能直接内存访问 (DMA) 数据移动器,或者 PCI Express 和 AXI 内存空间之间的桥接器。

  • DMA 数据移动器:作为 DMA,内核可以配置 AXI(Memory Mapped)接口或 AXI-Stream 接口,以允许直接连接到 RTL 逻辑。使用提供的字符驱动程序,任一接口均可被用于 PCIe 地址空间和 AXI 地址空间之间的高性能块数据移动。除了基本的 DMA 功能外,DMA 还支持多达四个上行和下行通道、支持 PCIe traffic 绕过 DMA Engine(Host DMA Bypass)的能力,还支持通过可选描述符旁路来管理来自 FPGA 互连结构的描述符,以满足需要最高性能和最低时延的应用的需求。
  • PCIe 和 AXI 内存之间的桥接器:配置为 PCIe 桥接器时,接收到的 PCIe packets 被转换为 AXI traffic,接收到的 AXI traffic 被转换为 PCIe traffic 。桥接功能非常适合需要快速轻松地访问 PCI Express 子系统的 AXI 外设。桥接功能可以用作端点 (EP) 或根端口 (RC) 。 PCIe 桥接功能仅支持 UltraScale+ 设备。非 UltraScale+ 器件在 Vivado® IP 目录中具有特定的 PCIe 桥 IP。有关 PCIe 桥模式操作的详细信息,请参阅 AXI Bridge for PCI Express Gen3 子系统产品指南 (PG194)。

本文档仅涵盖 DMA 模式操作。

该图指的是 Requester Request (RQ)/Requester Completion (RC) 接口,和 Completer Request (CQ)/Completer Completion (CC) 接口。 有关这些的更多信息,请参阅 UltraScale+ Devices Integrated Block for PCI Express LogiCORE IP 产品指南 (PG213)。

Feature Summary

The DMA/Bridge Subsystem for PCI Express® 允许在主机内存和 DMA 子系统之间移动数据。它通过对包含有关要传输的数据源、目标和数量信息的“描述符”进行操作来实现这一点。这些直接内存传输可以是主机到卡 (H2C) 和卡到主机 (C2H) 的传输。 DMA 可以配置为具有一个由所有通道共享的 AXI4 Master 接口,或者为每个启用的通道配置一个 AXI4-Stream 接口。内存传输是在描述符链表中按通道指定的,DMA 从主机内存中获取并处理这些链表。(Memory transfers are specified on a per-channel basis in descriptor linked lists, which the DMA fetches from host memory and processes) 描述符完成和错误等事件使用中断发出信号。该内核还提供多达 16 条用户中断线,用于向主机生成中断。

主机可以通过两种接口直接访问用户逻辑:

  • AXI4-Lite Master 配置端口:该端口是一个固定的 32 位端口,用于对用户配置和状态寄存器进行非性能关键型访问。
  • AXI Memory Mapped Master CQ Bypass 端口:该端口的位宽与 DMA 通道数据路径相同,用于对用户存储器进行高带宽访问,这可能在对等传输等应用中需要。

用户逻辑能够通过 AXI4-Lite Slave 配置接口访问 DMA/Bridge Subsystem for PCIe 内部配置和状态寄存器。在此接口上主控的请求不会被转发到 PCI Express。

Limitations

PCIe Transaction Type

可以生成的 PCIe® 事务是那些与 AXI4 规范兼容的事务。 下表列出了支持的 PCIe 事务类型。

PCIe Capability

对于 DMA Subsystem for PCIe®,由于 AXI4 规范,仅支持以下 PCIe 功能:

  • 1 PF
  • MSI
  • MSI-X
  • PM
  • AER (only PCIe 3.x core)

Others

• 仅支持INCR 突发类型。其他类型会导致 Slave Illegal Burst (SIB) 中断。
• 不支持内存类型 (AxCACHE)
• 不支持保护类型 (AxPROT)
• 不支持锁类型 (AxLOCK)
• 不支持非连续字节启用 (WSTRB)
• 对于 7 系列 Gen2 IP,来自主机系统的 PCIe 访问必须仅限于 1DW(4 字节)事务。

注意:AXI 旁路和寄存器访问均受此限制。

PCIe to DMA Bypass Master

• 仅发出INCR 突发类型
• 仅发布数据、非安全和非特权保护类型
• 对于 7 系列 Gen2 IP,仅限于 1DW(4 字节)事务

User Interrupt in MSI-X Mode

用户需要在 IRQ Block User Vector Number 寄存器中为每个用户中断编程一个不同的矢量编号,以便为所有用户中断生成 acks 。这样即可当同时存在中断时,为所有用户中断生成 acks。当所有向量号都指向同一个 MSI-X 条目时,只有一个 ack。

Product Specification

The DMA/Bridge Subsystem for PCI Express® (PCIe®) 与 PCI Express IP 的集成块相结合,为 PCIe 提供高度可配置的 DMA 子系统和高性能 DMA 解决方案。

Standards

The DMA/Bridge Subsystem for PCIe is compliant with the following specifications:
• AMBA AXI4-Stream Protocol Specification (ARM IHI 0051A)
• PCI Express Base Specification v2.1 and v3.0

Performance and Resource Utilization

For DMA Perfomance data, see AR 68049.
For DMA Resource Utilization, see Resource Utilization web page.

Minimum Device Requirements

Configurable Components of the Subsystem

在内部,该子系统可配置为实现多达 8 个独立的物理 DMA 引擎(多达 4 个 H2C 和 4 个 C2H)。 这些 DMA 引擎可以被映射到多个独立的 AXI4-Stream 接口或一个共享 AXI4 Memory Mapped (MM) 接口到用户应用。 在 AXI4 MM 接口上,The DMA/Bridge Subsystem for PCI Express® (PCIe®) 可生成请求和预期的完成包。 AXI4-Stream 接口为仅含数据的接口。

配置的通道类型可用于判定发生传输事务的总线。

  • 一个主机到卡 (H2C) 通道向 PCIe 生成读取请求,并向用户应用提供数据或生成写入请求。
  • 类似地,一个卡到主机(C2H)通道会等待用户侧的数据,或者在用户侧生成读取请求,然后向 PCIe 生成包含接收到的数据的写入请求。

DMA/Bridge Subsystem for PCIe 还支持主机访问用户逻辑。到达‘PCIe to DMA bypass Base Address Register (BAR)’的写请求由 DMA 处理。来自该写请求的数据通过 M_AXI_BYPASS 接口转发到用户应用。

主机可通过 AXI4-Lite Master 端口访问用户逻辑中的配置和状态寄存器。这些请求是 32 位读取或写入。用户应用还可以通过 AXI4-Lite slave 端口访问内部 DMA 的配置和状态寄存器。

当启用 H2C 和 C2H 的多个通道时,AXI4 Master 接口上的传输事务将在所有选定的通道之间进行交织。在此情况下会使用简单的循环协议来维护所有通道。事务粒度取决于主机最大有效负载大小 (MPS)、页面大小和其他主机设置。

Target Bridge

目标网桥接收来自主机的请求。 基于 BAR,请求将通过 AXI4-Lite master 或 CQ 旁路端口 (bypass port)直连到内部目标用户。 在下游用户逻辑为 non-posted 请求返回数据后,目标网桥(target bridge)会生成一个读取完成 TLP 并通过 CC 总线将其发送到 PCIe IP。

在下表中,PCIe BAR 选择对应于 Vivado® Integrated Design Environment (IDE) 中 PCIe BAR Tap 中设置的选项。

可以选择不同的 BAR 组合。 上表仅列出了所有 BAR 的 32 位选择和 64 位选择作为示例。 您可以根据自己的要求选择不同的 BAR 组合。

相关信息 (Chapter 5 Design Flow Step-> Customizing and Generating the Subsystem -> PCIe BARs Tab)

H2C Channel

前述表格演示了 PCIe 到 AXI4-Lite 主接口、PCIe 到 DMA 接口和 PCIe 到 DMA 旁路接口的对应 32 位和 64 位 BAR 选项。针对 32 位和 64 位 BAR 可单独选中每个空间。

H2C 通道的数量在 Vivado® Integrated Design Environment (IDE) 中配置。 H2C 通道处理从主机到卡的 DMA 传输。它负责根据最大读取请求大小和可用的内部资源拆分读取请求。DMA 通道可保留未完成的请求,其最大数量取决于 RNUM_RIDS(即未完成的 H2C 通道请求 ID 参数)。读取请求的每个拆分(如果有)都会消耗一个额外的读取请求条目。从 DMA 通道向 PCIe RQ 块发出读取后开始,请求即处于未完成状态,直至该通道接收到在用户接口上已按顺序完成写入的确认为止。 完成传输后,DMA 通道会发出写回或中断以告知主机传输完成。

H2C 通道还会在其读取接口和写入接口上拆分传输事务。在连接到主机的读取接口上,将根据可用数据 FIFO 空间拆分传输事务以满足配置的最大读取请求大小要求。数据 FIFO 空间在读取请求时进行分配,以确保有足够空间可供完成读取。 PCIe RC 块会将完成数据返回到已分配的数据缓冲器位置。为最大程度减小时延,接收到任何完成数据时,H2C 通道都会开始向用户接口发出写入请求。它还会按最大有效载荷大小对写入请求进行分割。在 AXI4-Stream 用户接口上,这种拆分是透明的。

当启用多个通道时,AXI4 Master 接口上的传输事务将在所有选定的通道之间进行交织。在此情况下会使用简单的循环协议来维护所有通道。事务粒度取决于主机最大有效负载大小 (MPS)、页面大小和其他主机设置。

C2H Channel

C2H 通道处理从卡到主机的 DMA 传输。 C2H 通道的实例化数量在 Vivado® IDE 中进行控制。同样,未完成传输的数量是通WNUM_RIDS 配置的,它是 C2H 通道请求 ID 的数量。在 AXI4-Stream 配置中,DMA 传输的详细信息是在 AXI4-Stream 接口上接收数据之前设置的。这通常通过接收 DMA 描述符来完成。在准备好请求 ID 并启用通道后,该通道的 AXI4-Stream 接口即可接收数据并向主机执行 DMA。在 AXI4 MM 接口配置中,向 AXI4 MM 接口发出读取请求时会分配请求 ID。与 H2C 通道类似,给定请求 ID 保持处于未完成状态,直至完成写入请求为止。对于C2H 通道,当按 PCIe IP 指示发出写入请求后,写入请求即告完成。

当启用多个通道时,AXI4 Master 接口上的传输事务将在所有选定的通道之间进行交织。在此情况下会使用简单的循环协议来维护所有通道。事务粒度取决于主机最大有效负载大小 (MPS)、页面大小和其他主机设置。

AXI4-Lite Master

该模块实现 AXI4-Lite Master 总线协议。主机可通过该接口向用户逻辑生成 32 位读取和 32 位写入请求。这些读取或写入请求是通过 PCIe to AXI4-Lite Master BAR 来接收的。读取完成数据将通过 PCIe IP CC 总线上的目标网桥返回给主机。

AXI4-Lite Slave

该模块实现了 AXI4-Lite Slave 总线协议。用户逻辑只能负责主控该接口上针对 DMA 内部寄存器的 32 位读取或写入操作。您无法通过此接口访问 PCIe 集成块寄存器。此接口不会生成发射到主机的请求。

Host-to-Card Bypass Master

到达 PCIe to DMA bypass BAR 的主机请求被发送到该模块。旁路主端口是一个 AXI4 MM 接口,支持读写访问。

IRQ Module

IRQ 模块会接收到来自用户逻辑的中断连线,其数量可配置,每个 DMA 通道 1 条中断连线。此模块负责基于 PCIe 生成中断。可以在 IP 配置期间指定对 MSI-X、MSI 和 Legacy中断的支持。

注意:主机可以在 IP 配置期间启用指定的受支持中断列表中的一种或多种中断类型。即使启用了多个中断类型,IP 在给定时间也仅生成一种中断类型。 MSI-X 中断优先于 MSI 中断,MSI 中断优先于 Legacy 中断。当有一个中断被断言或挂起时,主机软件不得切换(启用或禁用)中断类型。

Legacy Interrupts

启用传统中断时,usr_irq_req 的一个或多个位断言有效会导致 DMA 通过 PCIe 发出传统中断。多个位可同时断言有效,但每个位都必须保持断言有效直至对应的 usr_irq_ack 位已断言有效为止。当 usr_irq_req 位断言有效后,它必须保持断言有效,直至对应 usr_irq_ack 位断言有效,并且主机已处理并清除中断为止。usr_irq_ack断言有效表示请求的中断已发送到 PCIe 块。这将确保主机中断服务例程 (ISR) 在查询 IP 内的中断暂挂寄存器以判定中断源时,此寄存器能保持处于断言有效状态。您必须在用户应用中实现相应的机制才能知晓何时中断例程已处理完成。根据您的应用以及您使用此中断管脚的方式,可通过多种不同方式来执行此检测。在处理中断时,通常涉及可由主机软件清除、读取或修改的用户应用内实现的寄存器(或寄存器阵列)。

当 usr_irq_req 位断言无效后,仅当对应 usr_irq_ack 位再次断言有效后,它才能重新断言有效。这表示已通过PCIe 发送对应传统中断的断言无效消息。第二次发生 usr_irq_ack 后,xdma0_usr_irq_req 连线可重新断言有效以生成另一次传统中断。

可通过配置寄存器将 xdma0_usr_irq_req 位和 DMA 中断映射到传统中断 INTA、INTB、INTC 和 INTD。下图显示了此传统中断。

注释:此图仅显示 xdma0_usr_irq_req 与 usr_irq_ack 之间的握手。您的应用可能不会立即清除或处理此中断,在此情况下,您必须使 usr_irq_req 保持断言有效直至完成 usr_irq_ack 为止。

MSI and MSI-X Interrupts

如果启用 MSI 或 MSI-X,那么 usr_irq_req 的一个或多个位断言有效会导致生成 MSI 或 MSI-X 中断。如果同时启用MSI 和 MSI-X 功能,则会生成 MSI-X 中断。

当 usr_irq_req 位断言有效后,它必须保持断言有效,直至对应 usr_irq_ack 位断言有效,并且主机已处理并清除中断为止。usr_irq_ack断言有效表示请求的中断已发送到 PCIe 块。这将确保主机中断服务例程 (ISR) 在查询 IP 内的中断暂挂寄存器以判定中断源时,此寄存器能保持处于断言有效状态。您必须在用户应用中实现相应的机制才能知晓何时中断例程已处理完成。根据您的应用以及您使用此中断管脚的方式,可通过多种不同方式来执行此检测。在处理中断时,通常涉及可由主机软件清除、读取或修改的用户应用内实现的寄存器(或寄存器阵列)。

配置寄存器可用于将 usr_irq_req 和 DMA 中断映射到 MSI 矢量或 MSI-X 矢量。对于 MSI-X 支持,同样有一个矢量表和 PBA 表。下图显示了此 MSI 中断。

注释:此图仅显示 usr_irq_req 与 usr_irq_ack 之间的握手。您的应用可能不会立即清除或处理此中断,在此情况下,您必须使 usr_irq_req 保持断言有效直至完成 usr_irq_ack 为止。

下图显示了 MSI-X 中断。

注意:此图仅显示 usr_irq_req 和 usr_irq_ack 之间的握手。 您的应用程序可能不会立即清除或服务中断,在这种情况下,您必须保持 usr_irq_req 声明超过 usr_irq_ack。

For more details, see Interrupt Processing.

Config Block

配置模块,即包含 PCIe® 解决方案 IP 配置信息和 DMA 控制寄存器的 DMA 寄存器空间,存储与 DMA/Bridge Subsystem for PCIe相关的 PCIe IP 配置信息。 可通过寄存器读取配置模块内的相应寄存器偏移来读取此配置信息。

DMA Operations

Quick Start

PCIe® DMA 引擎最根本的作用是在主机存储器与驻留在 FPGA 中的存储器之间移动数据,FPGA 通常(但不总是)位于插卡上。将数据从主机存储器移动到 FPGA 存储器上的过程称为主机到卡 (Host to Card, H2C) 传输或系统到卡 (System to Card, S2C)传输。相反,将数据从 FPGA 存储器移动到主机存储器的过程则被称为卡到主机 (Card to Host, C2H) 传输或卡到系统(Card to System, C2S) 传输。

这些术语有助于澄清数据流动的方式,相反,若使用读取和写入这两个术语则很容易引发混淆。PCIe DMA 引擎只是将数据移入或移出 PCIe 地址位置。

在典型操作中,当主机中的应用必须在 FPGA 与主机存储器之间移动数据时。为了完成此传输,主机会在系统存储器中设置缓冲空间,并创建描述符以供 DMA 引擎用于移动数据。

描述符的内容将取决于多种因素,包括针对 DMA 引擎所选的用户接口等。如果选择 AXI4-Stream 接口,那么 C2H 传输不使用源地址字段,H2C 字段则不使用目标地址。这是因为 AXI4-Stream 接口为 FIFO 型接口,不使用地址。

如果选择 AXI Memory Mapped 接口,那么 C2H 传输将使用源地址作为 AXI 地址,目标地址即为 PCIe 地址。对于 H2C传输,源地址为 PCIe 地址,目标地址则是 AXI 地址。

以下流程图演示了在IP 配置期间,数据接口被选择为 AXI Memory Mapped 接口时,H2C 和 C2H 传输的典型流程。

Initial Setup For H2C and C2H Transfers

The following figure shows the initial setup for both H2C and C2H transfers.

AXI-MM Transfer For H2C

下图解释了 H2C 数据传输的基本流程图。流程图颜色编码如下:绿色表示应用程序,橙色表示驱动程序,蓝色表示硬件。

Figure 6: DMA H2C Transfer Summary

AXI-MM Transfer For C2H

下图解释了 C2H 数据传输的基本流程图。流程图颜色编码如下:绿色表示应用程序,橙色表示驱动程序,蓝色表示硬件。

Figure 7: DMA C2H Transfer Summary

Descriptors

The DMA/Bridge Subsystem for PCI Express® 使用描述符的链接列表来指定 DMA 传输的源、目标和长度。描述符列表由驱动程序创建并存储在主机内存中。 DMA 通道由含数个控制寄存器的驱动程序进行初始化,以开始提取描述符列表并执行 DMA 操作。

描述符用于描述 DMA/Bridge Subsystem for PCIe 应执行的存储器传输。每个通道都有其自己的描述符列表。每个通道的描述符列表的起始地址均在硬件寄存器中由驱动程序进行初始化。启用通道后,描述符通道就会开始从初始地址提取描述符。随后,它会从已提取的最后一个描述符的 Nxt_adr[63:0] 字段中执行提取。描述符必须与32 个字节的边界处对齐。

相邻描述符的初始块的大小由 Dsc_Adj 寄存器指定。初始提取后,描述符通道使用最后一个提取的描述符的 Nxt_adj 字段来判定下一个描述符地址的描述符数量。相邻描述符块不得跨越 4K 地址边界。描述符通道会在单一请求内提取尽可能多的描述符,可提取的数量受 MRRS、相邻描述符数量以及通道的描述符缓冲器内的可用空间所限。

注释:由于 MRRS 在大部分主机系统中为 512 个字节或 1024 个字节,因此在单一请求中不允许相邻描述符数量超过32 个。但如果需要,设计在相邻描述符构成的单一块内允许的描述符最大数量为 64 个。

描述符列表中的每个描述符都必须准确描述紧随其后的描述符或描述符块。在相邻描述符构成的块中,Nxt_adj 值从在相邻描述符块中,Nxt_adj 值从第一个描述符递减到第二个描述符到最后一个描述符(值为 0)。同样,块中的每个描述符指向块中的下一个描述符,最后一个描述符除外,它可能指向新的块或者可能使列表终止。

描述符列表以停止 (Stop) 控制位来表示终止。观测到含 Stop 控制位的描述符后,针对该列表将不再发出描述符提取请求。Stop 控制位只能在块的最后一个描述符上置位。

使用 AXI4 Memory Mapped 接口时,不会对卡的 DMA 地址执行转换。如果主机不知道卡的地址映射,则必须在用户逻辑中汇编描述符,并使用 descriptor bypass interface 将其提交至 DMA。

Table 5: Descriptor Format
Table 6: Descriptor Fields

DMA 具有 Bit_width * 512 深的 FIFO,用于保存描述符引擎中的所有描述符。 此描述符 FIFO 与所有选定通道共享。

  • 对于采用 2H2C 和 2C2H 设计的 Gen3x8,AXI 位宽为 256 位。 FIFO深度为 256 位 * 512 = 32 B * 512 = 16 KB(512 个描述符)。 该 FIFO 由 4 个 DMA 引擎共享。

Descriptor Bypass

可以通过 Vivado® IDE 参数在每个通道的基础上绕过描述符获取引擎。启用描述符旁路的通道可从其相应的 c2h_dsc_byp 或h2c_dsc_byp 总线接受描述符。在通道接受描述符前,控制寄存器的“运行 (Run)”位必须置位。绕过描述符时,不使用 NextDescriptorAddress、NextAdjacentCount 和 Magic 描述符字段。控制寄存器位中的 ie_descriptor_stopped 位不会阻止用户逻辑写入其它描述符。写入通道的所有描述符都会接受处理,当通道缓冲器已满时,将禁止写入新描述符。

Poll Mode

每个引擎都能将已完成的描述符计数写回主机存储器。这样驱动程序即可轮询主机存储器以判定何时 DMA 完成,而无需等待中断。

对于给定 DMA 引擎,当 DMA 完成描述符传输并且 ie_descriptor_completed 和 Pollmode_wb_enable 均已置位后,就会发生已完成的描述符计数写回操作。报告的已完成描述符计数是自 DMA 启动以来已完成描述符的总数(不仅仅是那些设置了 Completed 标志的描述符)。写回地址由 Pollmode_hi_wb_addr 和Pollmode_lo_wb_addr 寄存器来定义。

DMA H2C Stream

对于主机到卡传输,将从位于源地址的主机读取数据,但不使用描述符中的目标地址。数据包可跨多个描述符。包终止以 EOP 控制位来表示。具有 EOP 位的描述符会在数据最后一拍的 AXI4-Stream 用户接口上断言 tlast 有效。

交付至 AXI4-Stream 接口的数据将按描述符逐个进行打包,tkeep 全部为 1,但如果描述符长度并非数据路径宽度的整数倍,则其数据传输的最后一个周期内,tkeep 并非全部为 1。DMA 不会跨多个描述符进行数据打包。

DMA C2H Stream

对于卡到主机传输,数据接收自 AXI4-Stream 接口并写入目标地址。数据包可跨多个描述符。C2H 通道启用并具有有效的描述符时即可接受数据。接收到数据后,就会按顺序填充描述符。当一个描述符被完全填充或者由于接口上出现包结束而导致描述符关闭后,C2H 通道会将信息写回含预定义的 WB Magic 值 16’h52b4 (表 10:C2H 数据流传输写回字段)的主机上的写回地址,并对 EOP 和长度 (Length) 进行相应的更新。对于 C2H AXI4-Stream 接口上的有效数据周期,与给定数据包关联的所有数据都必须连续。

注释:C2H 通道写回信息不同于轮询模式更新。C2H 通道写回信息可提供特定描述符的驱动程序当前长度状态。这不同于 Poll Mode 中所述的 Pollmode_。*

对于任一数据包的所有传输(最后一次数据传输除外)而言,tkeep 位必须全部为 1。在执行数据包的最后一次传输时,当 tlast 断言有效时,可指定 tkeep 不全为 1,以指定该数据周期并非完整的数据路径宽度。断言有效的tkeep 位需打包到 lsb 中以表示连续数据。

C2H Stream 描述符的长度(目标缓冲器的大小)必须始终为 64 个字节的倍数。

Address Alignment

Length Granularity


Parity

奇偶校验发生在以下两种方法之一。在 IP 核自定义期间,在 Vivado® IDE 的“PCIe DMA”选项卡下设置“ParityChecking”选项:

启用“Check Parity”后,DMA/Bridge Subsystem for PCIe 会在读取来自 PCIe 的数据时执行奇偶校验检查,并在将数据写入 PCIe 时生成奇偶校验。

启用“Propagate Parity”时,DMA/Bridge Subsystem for PCIe 会将奇偶校验传输至用户 AXI 接口。您负责在 AXI 接口中检查和生成奇偶校验。在数据有效信号断言有效的每个时钟周期内,奇偶校验都有效,并且奇偶校验位仅对有效的数据字节有效。针对每个字节都会计算奇偶校验;奇偶校验总位数为 DATA_WIDTH/8。

  • 在 AXI4-Stream (AXI_ST) 模式下,在*_tuser 端口上发送和接收奇偶校验信息。
  • 在 AXI4 Memory Mapped (AXI-MM) 模式下,在 *_ruser 和 *_wuser 端口上发送和接收奇偶校验信息。

针对奇偶校验检查使用奇校验。默认情况下,不启用奇偶校验检查。

相关信息 (Chapter 5 Design Flow Step-> Customizing and Generating the Subsystem -> PCIe DMA Tap)

Port Descriptions

DMA/Bridge Subsystem for PCI Express® 直接连接至 Integrated Block for PCIe。根据 IP 配置,连接到 PCIe 集成块 IP的数据路径接口位宽为 64、128、256 或 512 位,且运行速率上限为 250 MHz。数据路径宽度适用于除 AXI4-Lite 接口外的所有数据接口。AXI4-Lite 接口位宽固定为 32 位。

XDMA Global Ports
PCIe Interface Signals
H2C Channel 0-3 AXI4-Stream Interface Signals
C2H Channel 0-3 AXI4-Stream Interface Signals
AXI4 Memory Mapped Read Address Interface Signals
AXI4 Memory Mapped Read Interface Signals
AXI4 Memory Mapped Write Address Interface Signals
AXI4 Memory Mapped Write Interface Signals
AXI4 Memory Mapped Write Response Interface Signals
AXI4 Memory Mapped Master Bypass Read Address Interface Signals
AXI4 Memory Mapped Master Bypass Read Interface Signals
AXI4 Memory Mapped Master Bypass Write Address Interface Signals
AXI4 Memory Mapped Master Bypass Write Interface Signals
AXI4 Memory Mapped Master Bypass Write Response Interface Signals
Config AXI4-Lite Memory Mapped Write Master Interface Signals
Config AXI4-Lite Memory Mapped Read Master Interface Signals
Config AXI4-Lite Memory Mapped Write Slave Interface Signals
Config AXI4-Lite Memory Mapped Read Slave Interface Signals
Channel 0-3 Status Ports
Configuration Extend Interface Port Descriptions
Configuration Management Interface Ports
Descriptor Bypass Mode

Register Space

通过将读取请求或写入请求映射到基址寄存器 (BAR) 即可从主机访问 DMA/Bridge Subsystem for PCI Express® 和用户内部的配置寄存器和状态寄存器。基于 BAR 命中结果,请求将被布线至相应位置。如需了解 PCIe BAR 分配,请参阅 Target Bridge 。

PCIe to AXI Bridge Master Address Map

到达 PCIe 到 AXI Bridge Master 接口的传输事务将被布线至 AXI4 Memory Mapped 用户接口。

PCIe to DMA Address Map

到达 PCIe to DMA 空间的传输事务被路由到用于 the PCIeDMA/Bridge Subsystem for PCI Express® 的 DMA 子系统,用于 PCI Express® 内部配置寄存器总线。 该总线支持 32 位地址空间和 32 位读写请求。

DMA/Bridge Subsystem for PCIe 寄存器可从主机或 AXI Slave 接口进行访问。这些寄存器应用于 DMA 编程和状态检查。

PG195 DMA/Bridge Subsystem for PCI Express相关推荐

  1. XILINX DMA/Bridge Subsystem for PCI Express (XDMA)笔记1(基于VU250 board)

    XILINX DMA/Bridge Subsystem for PCI Express (XDMA)笔记1(基于VU250 board)https://blog.csdn.net/linpeng_95 ...

  2. XILINX PCIE DMA/Bridge Subsystem for PCI Express (XDMA)笔记

    前段时间在公司项目中调试了PCIE,正好做一个总结,那些介绍XDMA.PCIE之类的多余的东西网上能搜到很多,我这里就不多说.我写的只是自己的一些想法,以及自己的设计思路. 同每一个刚开始调试PCIE ...

  3. 使用DMA/Bridge Subsystem for PCI Express相关

    通过对Xilinx Demo以及相关知识进行了解,得出部分个人总结,可能有错误的地方,请大家指正! 首先对PCIe接口做一简单介绍: 首先对整个IP core的内部结构做简单了解. 通过该IP cor ...

  4. Xilinx IP核AXI Memory Mapped to PCI Express使用

    作者 QQ群:852283276 微信:arm80x86 微信公众号:青儿创客基地 B站:主页 https://space.bilibili.com/208826118 性能 测试平台:长城的FT15 ...

  5. PCI Express学习篇---PCIe Ordering Rule

    声明:此文章为原创,转载请注明 转自https://mp.csdn.net/editor/html/115790068 针对同一TC,PCIe有一套Ordering rules. Ordering r ...

  6. PCI Express解析——系列文章【5】:PCIe原理分析之——PCI Express 配置解析(BDF、BAR)、 MEM Read举例

    PCI Express解析--系列文章[5]:PCIe原理分析之--PCI Express 配置解析BDF.BAR. MEM Read举例 2.5 Memory Read举例 (1)事务层TLP包准备 ...

  7. PCI Express相关经典书籍

    源出处: http://pdfcarebook.blogspot.com/2012/03/pci-system-architecture.html PDF FIle Download Ebook Ma ...

  8. PCIE学习笔记(四)Xilinx FPGA PCI Express 硬核配置

    目录 2.3.2 配置核IP生成 2.3.2.1 Base模式 2.3.2.2 Advanced模式 本文主要介绍Xilinx 7系列FPGA的 IP 核配置与应用,使用的工具版本为VIVADO 20 ...

  9. PCI Express架构概述

    目录 1. PCIe 总线概述 2. PCIe 拓扑结构 3. PCIe 分层结构 4. PCIe 事务层类型 5. PCIe 配置和地址空间 1. PCIe 总线概述 PCIe(Peripheral ...

最新文章

  1. BZOJ2331:[SCOI2011]地板——题解
  2. Debian读写ntfs分区格式!
  3. 取消Ajax请求 || Ajax重复请求问题
  4. c++计算机等级考试笔记(1)
  5. Paxos第三篇 - Paxos成员组变更
  6. [2021.1.17多校省选模拟4]T1(莫比乌斯反演/组合数学/枚举倍数)
  7. MongoClient类参考文档
  8. linux开源文档管理系统_Linux中的系统管理员问题 免费和开源软件
  9. ajax顺序请求你,ajax请求之返回数据的顺序问题分析
  10. iOS开发UI篇—Quartz2D简单使用(二)
  11. Android 8.0 学习(24)---Android8.0 WiFi热点适配
  12. JAVA继承重写的规则
  13. sql server 缓存_了解SQL Server查询计划缓存
  14. 青岛大学计算机科学技术学院几本,郝蓉-青岛大学计算机科学技术学院
  15. Django的了解及应用途径
  16. (CentOS7)IP地址的配置与主机名和hosts映射
  17. exchange服务器重装后,Exchange 服务器 2010 SP3 安装更新汇总 30补丁包后Exchange控制台初始化失败?...
  18. 日系IP的五大“坑”
  19. 淡水鱼生鱼片含有大量肝吸虫 可寄生于肝脏内30年
  20. 权值衰减和L2正则化傻傻分不清楚?

热门文章

  1. 保/防护器件系列之压敏电阻
  2. java水文模型,水文分析应用实例
  3. JavaScript实现下拉菜单
  4. JSP学习心得(一)
  5. erase怎么用c语言,C++ erase()函数使用时的注意点
  6. 整理c++ erase
  7. 函数插值法实验报告c语言,插值法实验报告.doc
  8. 1067:取石子游戏
  9. matlab函数grid,matlab中griddata函数怎么用
  10. pandas之滑动窗口学习笔记(shift, diff, pct_change)