赞
踩
读写部分分为两种,一种是数据的读写,另一种数配置数据的读写,在数据读写部分,DMA通过MIG控制DDR完成数据读写。配置数据读写通过与BRAM通过AXI-lite总线连接完成,XDMA将PCIe配置信息存在BRAM,在进行配置信息读写时,将传入主机映射到用户逻辑的地址,然后与偏移地址处理(物理地址=段地址
对于DDR则不必,设置的话还减少了可使用的内存空间,只是一个袋子,写在哪里就从哪里读取即可,必须设置为0。
IP中涉及的接口:
主机能够通过下面两个接口直接访问用户逻辑:
1)AXI4-Lite Master 配置接口:此端口是固定的 32 位端口,用于对用户配置和状态寄存器进行非性能关键的访问。
2)AXI Memory Mapped Master CQ 旁路( Bypass) 端口:此端口的宽度与 DMA 通道数据路径相同,旨在用于点对点传输等应用程序中可能需要的对用户内存的高带宽访问。
用户逻辑能够通过 AXI4-Lite Slave 配置接口访问 XDMA 内部配置和状态寄存器。在此接口上掌握的请求不会转发到 PCI Express。
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字段的大小 |
第一页速率与接口选择配置
PCIe的设置速率与用户逻辑侧的AXI速率是一致的!
PCIe侧的速率:8lane*5GT/s=40GTbit/s
逻辑侧的AXI速率:128bit*250M=3200Mbit/s*(10B/8B)=40GTbit/s
Interface width 是指AXI的接口位宽,Recommended Frequency 和 Optional Frequency 可能是指最大的频率,在实际配置中我遇到一些没有按照下面的表格配置。
第二页 PCIE ID配置
芯片 ID 参数取决于:
- 器件系列: 9 表示 UltraScale+, 8 表示 UltraScale, 7 表示 7 系列器件
- EP 或 RP 模式
- 链路宽度: 1 表示 x1, 2 表示 x2, 4 表示 x4, 8 表示 x8, F 表示 x16
- 链路速度: 1 表示 Gen1, 2 表示 Gen2, 3 表示 Gen3, 4 表示 Gen4
第三页 基地址寄存器配置
- PC的内存域地址与PCIe域地址的映射关系:PCIe to AXI Translation这个地址要与Address Editor中AXI_Lite设置的地址大小一致。
PCIe to AXI Translation:PCIe 到 AXI 的转换。主机一侧 BAR 地址为 0, 用户逻辑侧 AXI LIte的地址为 0x40000000,则主机访问AXI LIte用户逻辑时, XDMA 将根据该 设置将主机侧 BAR地址0转换到AXI LIte总线地址 0x40000000。对与该值的设置有两种方式,一种是手动指定,然后修改后面 AXI LIte总线的偏移地址,另一种是先确定 AXI LIte总线的偏移地址,然后根据偏移地址设置该值。例如修改地址映射AXI LIte总线的偏移地址为 0x40000000,所以设置此值为 0x40000000。
- 旁路DMA,慎用。即可以用来访问用户逻辑,比如配置寄存器的值;也可以用来访问FPGA内存(即连接Xilinx MIG IP读写DDR),但是是非DMA方式访问; 用来实现PCIE 直通用户逻辑访问,可用于低延迟数据传输。
- 关于 Prefetchable: 传统上,可预取性意味着预先将内存取出到一个小缓冲区中,以便读取操作变得更快。例如,如果你有两个 PCIe 总线通过网桥连接,如果主总线中的主机必须访问次要总线中的内存,那么网桥将从内存中获取数据并将其存储在网桥缓冲区中。然后主机可以定期访问它,它也会快得多。然而,内存必须是可预取的。如果内存是不可预取的,一旦数据被加载到桥接器的缓冲区,数据将从内存中丢失。如果主机不能从网桥收集数据,那么数据就永远丢失了。如果内存是可预取的,就没有数据丢失的风险。
第四页 中断配置
- 中断向量:
- MSI 中断和 MSI-X中断只能选择一个,否则会报错,如果选择了 MSI 中断,则可以选择 Legacy中断,如果选择了MSI-X中断,那么MSI必须取消选择,同时Legacy也必须选择None。此 IP 对于7系列设置有这么个问题,如果使用Ultrascale 系列,则可以全部选择。
- 对PCIE来说只有三种中断:MSI-X、MSI、Legacy。而user interruput是逻辑侧的控制中断口。
- 中断优先级为:MSI-X>MSI>Legacy
- 在申请中断时req需要一直保持为高,直到响应ack来了后,才能拉低,然后进行下一次申请;
- 由于逻辑侧的中断与主机侧的中断是通过优先级来对应的,因此同一时刻只有一种中断。
第五页 DMA选项卡配置
DMA通道数用来区别不同的数据来源和类型,比如光纤数据,ADC数据等;
多通道时在AXIStream模式下影响很明显,在AXI Stream模式下选择多通道,可以连接不同的数据源。在AXI Memory Mapped模式下影响不大。
第六页 共享时钟配置
一个MGT-BANK的参加时钟可以用于相邻的3个MGT-BANK上。那么我们PCIe的输入参考时钟也可以共享,但我们此处没有共享的需求,因此在最后一页中我们没有设置共享时钟。
其他
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。