简介
ZYNQ的优势在于ARM+FPGA的这种体系结构,那么在这种体系结构中,最关键的无疑是PS端与PL端的数据交互。
通常情况下要将外设数据读入内存或将内存传送到外设都会通过 CPU 控制去完成,有查询或中断两种方式实现。如果设计者追求产品执行效率,中断与查询相比,虽说提高了CPU利用率,但是从效率上来说还不是最完美的选择。DMA的出现完美解决了此问题。
DMA(Direct Memory Access,直接存储器访问)是计算机科学中的一种内存访问技术。它允许某些计算机内部的硬件子系统可以独立地直接读写系统内存,而不需中央处理器(CPU)介入处理。对于批量传送数据的情况,采用 DMA 方式可解决效率与速度问题,CPU 只需要提供地址和长度给 DMA,DMA 即可接管总线,访问内存,等 DMA 完成工作后,告知 CPU,交出总线控制权。
ZYNQ 提供了两种 DMA,一种是集成在 PS 中的硬核 DMA,另一种是 PL 中使用的软核 AXI DMA IP。今天软核AXI DMA IPJ进行环路测试实验,主要需要的IP核主要有AXI DMA、AXI Stream Data FIFO。
IP(接口)用途介绍
- AXI DMA
AXI DMA 提供 3 种操作模式
(1)Direct Register 模式:Direct Register 模式提供了一种配置,用于在 MM2S 和S2MM 通道上执行简单的 DMA 传输;
(2)Scatter/Gather 模式:允许在单个 DMA 事务中将数据传输到多个存储区域或从多个存储区域传输数据。它相当于将多个 Simple DMA 请求链接在一起。SGDMA 允许应用程序在内存中定义事务列表,硬件将在应用程序没有进一步干预的情况下处理这些事务。在此期间,应用程序可以继续添加更多工作以保持硬件工作。用户可以通过轮询或中断来检查事务是否完成。
DMA 的框图与IP核配置界面如下图所示:
- AXI Stream Data FIFO
AXI Stream Data FIFOIP核配置界面如下图所示:
IP互连
各个IP的用途介绍之后,接下来看看这些IP之间是如何连线的呢?请继续看下文设计框图:
最后附上一张实际中Vivado_17.4工程DMA环路测试接口之间连接图,具体如下图所示: