基于xilinx vivado的XDMA IP的使用详解

XDMA ip使用目录

  • 1 概述
  • 2 参考文档
  • 3 XDMA简述
  • 4 XDMA的IP配置
    • 4.1 IP设置第1页速率与接口选择
    • 4.2 IP设置第2页PCIE ID
    • 4.3 IP设置第3页 PCIE BARS
    • 4.4 IP设置第4页中断设置
    • **4.5** **中断时序**
    • **4.6** **IP****设置第5页 PCIE DMA**
  • 5 主机中的BAR空间与XDMA的接口对应关系
  • 6 Example Design
  • 7 设计实例

1 概述

本文是关于XDMA ip的使用详解,主要从ip的设置与使用两方面介绍。

2 参考文档

《pg195-pcie-dma》

《04_Kintex FPGA 修炼秘籍PCIE高级篇XDMA WIN64 版本(B) MK7325FA》

3 XDMA简述

Xilinx 提供的DMA Subsystem for PCIExpress IP是一个高性能,可配置的适用于PCIE2.0, PCIE3.0 的SG 模式 DMA,提供用户可选择的 AXI4 接口或者 AXI4-Stream接口。一般情况下配置成 AXI4 接口可以加入到系统总线互联,适用于大数据量异步传输,通常情况都会使用到 DDR, AXI4-Stream 接口适用于低延迟数据流传输。

XDMA 是SGDMA,并非Block DMA, SG 模式下,主机会把要传输的数据组成链表的形式,然后将链表首地址通过BAR 传送给XDMA, XDMA 会根据链表结构首地址依次完成链表所指定的传输任务。

基于xilinx vivado的XDMA IP的使用详解_第1张图片

图 1 DMA/Bridge Subsystem for PCI Express Overview

4 XDMA的IP配置

4.1 IP设置第1页速率与接口选择

基于xilinx vivado的XDMA IP的使用详解_第2张图片

图 2 IP设置第1页

第1页主要设置以下选项:

  1. Mode:配置模式,选择 Advanced 高级配置;

  2.    Lane Width: MK7325FA支持X8;
    
  3.    Max Link Speed:选择5.0GT/s 即PCIE2.0;
    
  4.    Reference Clock : 100MHZ,参考时钟 100M;
    
  5. DMA Interface Option:接口选择 AXI4 接口;

  6.    AXI Data Width: 128bit,即 AXI4 数据总线宽度为128bit;
    
  7.    AXI Clock : 250M,即AXI4 接口时钟为250MHZ;
    

由上图可以看出,PCIE的设置速率与用户逻辑侧的AXI速率是一致的。PCIE侧的速率:8lane*5GT=40GTbit/s;

逻辑侧的AXI速率:128bit*250M=3200Mbit/s * (10B/8B) =40GTbit/s;

注意:

  1.    AXI Memory Mapped模式:主要是用于带存储的系统中,即有地址之分时;
    
  2.    AXI Stream模式:是用于没有地址的系统中,纯粹传输数据只用。
    

4.2 IP设置第2页PCIE ID

基于xilinx vivado的XDMA IP的使用详解_第3张图片

图 3 IP第2页设置

第2页设置是PCIE ID相关设置,若只使用一张PCIE,则本页可以默认,不做修改。

4.3 IP设置第3页 PCIE BARS

基于xilinx vivado的XDMA IP的使用详解_第4张图片

图 4 IP第3页设置

第3页是PCIE BAR设置,这里的设置比较重要。

首先使能 PCIE to AXI Lite Master Interface ,这样可以在主机一侧通过PCIE 来访问用户逻辑侧寄存器或者其他AXI4-Lite 总线设备映射空间选择 1M,当然用户也可以根据实际需要来自定义大小。

PCIE to AXI Translation:这个设置比较重要,通常情况下,主机侧PCIE BAR 地址与用户逻辑侧地址是不一样的,这个设置就是进行BAR 地址到AXI 地址的转换,比如主机一侧 BAR 地址为0, IP 里面转换设置为 0x80000000,则主机访问 BAR 地址 0 转换到AXI LIte 总线地址就是0x80000000;

PCIE to DMA Interface :选择64bit 使能DMA Bypass 暂时不用;

这里的设置的PCIE to AXI Lite Master Interface也是主机一侧检测的BAR 0空间。

4.4 IP设置第4页中断设置

基于xilinx vivado的XDMA IP的使用详解_第5张图片

图 5 IP第4页设置

终端设置主要如下:

  1. User Interrupts:用户中断, XDMA 提供16 条中断线给用户逻辑,这里面可以配置使用几条中断线;

  2. Legacy Interrupt: XDMA 支持 Legacy 中断;

  3. 选择 MSI 中断与MSI-X中断;

注意: MSI 中断和 MSI-X 中断只能选择一个,否则会报错,如果选择了 MSI 中断,则可以选择 Legacy中断,如果选择了MSI-X中断,那么MSI必须取消选择,同时Legacy 也必须选择None。此 IP 对于7系列设置有这么个问题,如果使用Ultrascale 系列,则可以全部选择。

注意:

  1. 对PCIE来说只有三种中断:MSI-X、MSI、Legacy。而user interruput是逻辑侧的控制中断口。

  2. 中断优先级为:MSI-X>MSI>Legacy;

  3. 在申请中断时req需要一直保持为高,直到响应ack来了后,才能拉低,然后进行下一次申请;

  4. 由于逻辑侧的中断与主机侧的中断是通过优先级来对应的,因此同一时刻只有一种中断。

4.5 中断时序

由4.4 章节可以知道XDMA有MSI-X、MSI、Legacy三种中断,且每一种中断对于逻辑侧来说都是用usr_irq_req来请求。其请求时序如下图所示:

基于xilinx vivado的XDMA IP的使用详解_第6张图片

图 6 用户中断的时序关系

基于xilinx vivado的XDMA IP的使用详解_第7张图片

图 7 中断时序关系

4.6 IP****设置第5页 PCIE DMA

基于xilinx vivado的XDMA IP的使用详解_第8张图片

图 8 IP第5页设置

第5页主要设置如下:

Number of DMA Read Channel( H2C)和Number of DMA Write Channel(C2H)通道数,对于PCIE2.0 来说最大只能选择 2,也就是 XDMA 可以提供最多两个独立的写通道和两个独立的读通道, 独立的通道对于实际应用中 有很大的作用,在带宽允许的前提前,一个PCIE 可以实现多种不同的传输功能,并且互不影响。

注意:多通道时在AXI Stream模式下影响很明显,在AXI Stream模式下选择多通道,可以连接不同的数据源。在AXI Memory Mapped模式下影响不大。

Number of Request IDs for Read (Write) channel :这个是每个通道设置允许最大的 ID 数量,按照默认即可。

5 主机中的BAR空间与XDMA的接口对应关系

基于xilinx vivado的XDMA IP的使用详解_第9张图片

基于xilinx vivado的XDMA IP的使用详解_第10张图片

图 9 BAR与调用XDMA接口的关系

6 Example Design

以下是一些不同模式下的数据连接实例:

基于xilinx vivado的XDMA IP的使用详解_第11张图片

基于xilinx vivado的XDMA IP的使用详解_第12张图片

基于xilinx vivado的XDMA IP的使用详解_第13张图片

基于xilinx vivado的XDMA IP的使用详解_第14张图片

基于xilinx vivado的XDMA IP的使用详解_第15张图片

7 设计实例

本设计采用PCIE GEN2 X8直接读写DDR3中的数据,且可以通过Axi_lite接口上报一些状态信息。设计时是BD建立,其设计如下所示:

基于xilinx vivado的XDMA IP的使用详解_第16张图片

图 10 XDMA的实例

注意:

在使用BD建立XDMA时需要注意地址空间的配置,地址空间配置不能为空,必须配置。本例配置情况如下:

基于xilinx vivado的XDMA IP的使用详解_第17张图片

图 11 地址配置空间

你可能感兴趣的:(FPGA,XDMA,PCIE,VIVADO,IP,fpga/cpld,IP例程)