ZYNQ学习笔记——SDK系列DMA接⼝设计
简介
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(接⼝)⽤途介绍
1. AXI DMA
AXI DMA 提供 3 种操作模式
(1)Direct Register 模式:Direct Register 模式提供了⼀种配置,⽤于在 MM2S 和S2MM 通道上执⾏简单的 DMA 传输;
(2)Scatter/Gather 模式:允许在单个 DMA 事务中将数据传输到多个存储区域或从多个存储区域传输数据。它相当于将多个Simple DMA 请求链接在⼀起。SGDMA 允许应⽤程序在内存中定义事务列表,硬件将在应⽤程序没有进⼀步⼲预的情况下处理这些事务。在此期间,应⽤程序可以继续添加更多⼯作以保持硬件⼯作。⽤户可以通过轮询或中断来检查事务是否完成。
sdkDMA 的框图与IP核配置界⾯如下图所⽰:
2. AXI Stream Data FIFO
AXI Stream Data FIFOIP核配置界⾯如下图所⽰:
IP互连
各个IP的⽤途介绍之后,接下来看看这些IP之间是如何连线的呢?请继续看下⽂设计框图:
最后附上⼀张实际中Vivado_17.4⼯程DMA环路测试接⼝之间连接图,具体如下图所⽰:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论