FPGA DMA基础知识

FPGA 是基于RAM的,也就是说断电易丢失。所以一般外围会有一个非易失的存储器,如SD卡或者FLASH。这样的好处就是上电之后,程序可以直接从这些设备中加载程序,即固化。

dma 的过程:
1.CPU 发送一个指令,让DMA去做数据传输到内存的事情。
2.接下来就是DMA控制器去做的事情。
3.传输完成之后,然后DMA控制器向CPU发送一个中断通知DMA传输关闭。

DMA 做这样的辅助工作,要知道三个要素:源地址,目的地址与传输长度。

首先,CPU要去设置这样的外部DMA,通过AXI_GP接口去设置这样的GP接口。传输状态是通过中断传到PS的中断控制。
FPGA DMA基础知识_第1张图片
通过PS上的GP接口去配置AXI_DMA控制器。
上图是采样AXI_LITE总线去配置的DMA控制器。
当然也可以采样别的总线形式。

关于中断的理解
(1)、M_AXI_MM2S:DMA的读通道,从DDR中读取数据。受Enable Read Channel控制,表现为M_AXI_MM2S。

在AXI_DMA ip core的输出信号中,有两个中断信号,分别是s2mm_introut和mm2s_introut,mm指的是Memory Mapped,S指的是Stream。

Memory Map指的是什么?根据AXI DMA的介绍,AXI DMA提供一个介于AXI4 Memory Mapped 与AXI4 Stream IP之间的高带宽DMA:

原话位于IP参考的page5:

The AXI DirectMemory Access (AXI DMA) IP core provides high-bandwidth direct memory accessbetween the AXI4 memory mapped and AXI4-Stream IP interfaces.

所以,对于DMA来说,S2MM,就是Stream形式的数据到达DDR映射空间,具体的实现方式是Stream数据流先进入DMA,之后再从DMA到Memeory Mapped。

MM2S是Memory Mapped将数据送入具有AXI Stream接口的IP。

从这里分析mm2s_introut与s2mm_introut信号的区别是分析不出来的,因为数据都是先到DMA,再从DMA发送出去。

参考:http://xilinx.eetrend.com/blog/2020/100049899.html

你可能感兴趣的:(FPGA基础,fpga开发)