一、相关知识
- 当数据从上位机通过PCIe接口发送到端点设备,XDMA内部自行解包对将数据与指令进行分析,得到读写操作的指令地址,并对DDR进行读写操作。操作的结果通过AXI接口返回XDMA,XDMA对数据进行组包,之后通过物理层发出,实现数据的DMA控制。
- 绝对地址就是物理地址=段地址*16+偏移地址,也就是段地址
读写部分分为两种,一种是数据的读写,另一种数配置数据的读写,在数据读写部分,DMA通过MIG控制DDR完成数据读写。配置数据读写通过与BRAM通过AXI-lite总线连接完成,XDMA将PCIe配置信息存在BRAM,在进行配置信息读写时,将传入主机映射到用户逻辑的地址,然后与偏移地址处理(物理地址=段地址
对于DDR则不必,设置的话还减少了可使用的内存空间,只是一个袋子,写在哪里就从哪里读取即可,必须设置为0。
IP中涉及的接口:
- AXI-MM接口,用于高性能、大带宽的数据传输
- AXI4-Stream 接口适用于低延迟数据流传输
- AXI Lite Master 接口,是简化版的 AXI 接口,用于较少数据量的通信,一般多用于配置外设寄存器等轻量级的数据传输场景。
- DMA bypass就是普通的PCIE传输。一般会高于pcie to axi lite如果在DMA的长度比较小的情况下和DMA差不多效率但是如果是长度较大一般是DMA性能更好一点。PCIe DMA bypass占用的是另外一个BAR,一般是host直接发起操作,和DMA比比较消耗host资源,如果这个不是问题就可以用。
主机能够通过下面两个接口直接访问用户逻辑:
1)AXI4-Lite Master 配置接口:此端口是固定的 32 位端口,用于对用户配置和状态寄存器进行非性能关键的访问。
2)AXI Memory Mapped Master CQ 旁路( Bypass) 端口:此端口的宽度与 DMA 通道数据路径相同,旨在用于点对点传输等应用程序中可能需要的对用户内存的高带宽访问。
用户逻辑能够通过 AXI4-Lite Slave 配置接口访问 XDMA 内部配置和状态寄存器。在此接口上掌握的请求不会转发到 PCI Express。
二、XDMA接口说明
DMA/Bridge Subsystem for PCI Express (PCIe)(XDMA)
端口名称 | 类型 | 说明 |
sys_clk | 输入 | 来自Bank上的差分时钟,转成单端之后,经过BUFG传入IP核内 |
sys_rst_n | 输入 | 主机提供的冷复位,通过原理图查看(冷复位、温复位、热复位) |
pcie_cfg_mgmt | 输入 | PCIe配置管理接口,如访问配置空间地址、写入读取指定地址数据和其他操作(GT收发器通道?) |
usr_irq_req | 输入 | 用户定义的中断请求信号(给PC机发送一些中断标志信号,这个不会中断CPU)生成中断 |
M_AXI | 输出 | AXI总线的主机信号(AXI访问内存接口高速) |
M_AXI_ILTE | 输出 | |
pcie_mgt | 输出 | 指的是与PCIe的物理层管理相关的组件和功能,如MDIO接口或与时钟和数据恢复等物理层功能相关的管理任务 |
usr_lnk_up | 输出 | 表示PCIe链路的连接状态,为高PCIe设备的物理连接已就绪并能够传输数据 |
axi_aclk | 输出 | 共同的时钟源,用于同步所有AXI通道(读、写和控制通道)上的数据传输和信号处理。应驱动所有对应的 AXI Interconnect aclk 信号。衍生时钟。 |
axi_aresetn | 输出 | |
usr_irq_ack | 输出 | 用户中断应答。表示PCIe上已发送中断 |
msi_enable | 输出 | 是否启用MSI |
msi_vector_width | 输出 | 表示MSI字段的大小 |
评论记录:
回复评论: