姓名 李泽浩 学号 21181214372 学院 广州研究院
转载自 https://blog.csdn.net/u014586651/article/details/109380377
【嵌牛导读】本文是关于XDMA ip的使用详解,主要从ip的设置与使用两方面介绍。
【嵌牛鼻子】dma IP使用详解
【嵌牛提问】dma IP 如何搭建和使用
【嵌牛正文】
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 会根据链表结构首地址依次完成链表所指定的传输任务。
图 1 DMA/Bridge Subsystem for PCI Express Overview
4 XDMA的IP配置
4.1 IP设置第1页速率与接口选择
图 2 IP设置第1页
第1页主要设置以下选项:
Mode:配置模式,选择 Advanced 高级配置;
Lane Width: MK7325FA支持X8;
1
Max Link Speed:选择5.0GT/s 即PCIE2.0;
1
Reference Clock : 100MHZ,参考时钟 100M;
1
DMA Interface Option:接口选择 AXI4 接口;
AXI Data Width: 128bit,即 AXI4 数据总线宽度为128bit;
1
AXI Clock : 250M,即AXI4 接口时钟为250MHZ;
1
由上图可以看出,PCIE的设置速率与用户逻辑侧的AXI速率是一致的。PCIE侧的速率:8lane*5GT=40GTbit/s;
逻辑侧的AXI速率:128bit*250M=3200Mbit/s * (10B/8B) =40GTbit/s;
注意:
AXI Memory Mapped模式:主要是用于带存储的系统中,即有地址之分时;
1
AXI Stream模式:是用于没有地址的系统中,纯粹传输数据只用。
1
4.2 IP设置第2页PCIE ID
图 3 IP第2页设置
第2页设置是PCIE ID相关设置,若只使用一张PCIE,则本页可以默认,不做修改。
4.3 IP设置第3页 PCIE BARS
图 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页中断设置
图 5 IP第4页设置
终端设置主要如下:
User Interrupts:用户中断, XDMA 提供16 条中断线给用户逻辑,这里面可以配置使用几条中断线;
Legacy Interrupt: XDMA 支持 Legacy 中断;
选择 MSI 中断与MSI-X中断;
注意: 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来了后,才能拉低,然后进行下一次申请;
由于逻辑侧的中断与主机侧的中断是通过优先级来对应的,因此同一时刻只有一种中断。
4.5 中断时序
由4.4 章节可以知道XDMA有MSI-X、MSI、Legacy三种中断,且每一种中断对于逻辑侧来说都是用usr_irq_req来请求。其请求时序如下图所示:
图 6 用户中断的时序关系
图 7 中断时序关系
4.6 IP****设置第5页 PCIE DMA
图 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的接口对应关系
图 9 BAR与调用XDMA接口的关系
6 Example Design
以下是一些不同模式下的数据连接实例:
7 设计实例
本设计采用PCIE GEN2 X8直接读写DDR3中的数据,且可以通过Axi_lite接口上报一些状态信息。设计时是BD建立,其设计如下所示:
图 10 XDMA的实例
注意:
在使用BD建立XDMA时需要注意地址空间的配置,地址空间配置不能为空,必须配置。本例配置情况如下:
图 11 地址配置空间
————————————————
版权声明:本文为CSDN博主「风中月隐」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u014586651/article/details/109380377