Xilinx XDMA IP学习

Xilinx XDMA IP学习

DMA Interface
在XDMA IP核中,DMA接口设置部分有两个选项,一个就是 AXI Memory Mapped,而另外一个就是AXI Stream。

Xilinx XDMA IP学习
提到上述两个选项,看到的时候也是很莫名,这两个选项究竟有何区别,让我们通过AXI总线协议来说明他们的相同与不同。

AXI4.0总线协议,主要是AXI4.0(AXI4.0-full),AXI4.0-lite,AXI4.0-stream三种协议。

AXI4.0-lite是AXI4.0-full的简化版。用于简单、低吞吐量的内存映射通信。
由于没有突发传输相关的信号线,所以不能进行突发传输,因此每次传输只能传输一个数据(数据的宽度取决于带宽)。比如对于32位宽度的总线,那么一次就能传输4个字节。
AXI4.0-full用于高性能内存映射需求。
包含突发控制信号,所以可以进行突发传输,在指定一次地址后,可以一次传输多达256个数据(数据的宽度取决于带宽)。
AXI_stream用于高速流数据。由于没有地址总线,所以用于数据流传送,允许无限制的数据突发传输规模。

应用场景
AXI4.0-lite主要用于内核和外设寄存器之间的通信。AXI4.0-lite就特别合适。
AXI4.0-full主要用于往DDR或者OCM中写入大量数据时使用。
AXI_stream主要用于往FIFO等没有地址的数据缓冲区传送大量数据时使用

根据上述对AXI总线协议的介绍,需要根据使用环境来选择协议类型,通过DDR进行大量数据读写时,会使用AXI-full总线模式,也就是在IP核设置中的AXI Memory Mapped选项。AXI Stream协议是不包含地址线的,所以在读写FIFO等没有地址的数据缓存区时,可以使用AXI Stream协议,也就是AXI Stream选项。上位机通常会通过PCIE接口向下位机发送各种控制或者配置指令,此时就需要使用添加AXI-Lite选项,可以勾选下图中所示选项进行添加,AXI-lite可以说是简化版的AXI-full。在使用WDK进行读写时,有BAR0和BAR1两个空间,一个就是勾选的PCIe to AXI Lite Master Interface接口,用于设置寄存器。另一个就是默认勾选的PCIe to DMA Interface接口,用于数据的读写。
Xilinx XDMA IP学习

PCIe to AXI Lite Master Interface

在BARs页面中,会有PCIe to AXI Lite Master Interface一栏,众所周知主机访问地址与下位机实际控制地址是不一样的,所以PCIe to AXI Lite Master Interface这个接口就是将上位机地址与下位机地址进行一个映射,将两部分联系起来,比如在这一栏中设置0x80000000,那么实际的意义就是bar的0地址对应的是外设的0x80000000地址,当上位机对0地址进行操作的时候实际是对下位机的0x80000000地址进行操作。

握手过程
每个通道进行数据的交互时,需要进行双向握手操作即VALID和READY信号均为高时,写入的数据才会有效。在握手过程中可能会出现,1.VALID先有效,然后READY再有效,在两者均有效的时候写入数据有效。2.READY先有效,然后VALID再有效,在两者均有效的时候写入数据有效。3.恰好READY有效,VALID也有效,在两者均有效的时候写入数据有效。
就好像有两个人做工作,彼此的工作是相关的,A对B说,我已经弄完了,等你弄完告诉我一声,我们联合测试。基本就是这个道理。
可以通过下图来看到三种握手协议。

Xilinx XDMA IP学习