DMA(Direct Memory Access,直接内存存取),是指外部设
备不通过CPU直接与系统内存交换数据的接口技术。要将外设数据读入内存或将内存传送到外
设,一般都要通过CPU控制完成,如采用查询或中断方式。如前面讲到的BRAM实验。
虽然中断方式可以提高CPU的利用率,但是也会有效率问题,对于批量传送数据的情况,
采用DMA方式,可解决效率与速度问题,CPU只需要提供地址和长度给DMA,DMA即可接管
总线,访问内存,等DMA完成工作后,告知CPU,交出总线控制权。
本章中采用SDK给的DMA例子,稍做修改,在DMA工作结束后,发出结束中断,告知CPU,
使CPU读取内存数据。
1 说明
1)先来认识下AXI DMA模块,此模块用到了三种总线,AXI4-Lite用于对寄存器进行配置,AXI4
Memory Map 用于与内存交互,在此模块中又分立出了AXI4 Memory Map Read和AXI4
Memory Map Write 两个接口,又分别叫做M_AXI_MM2S和M_AXI_S2MM,一个是读一个是
写,这里要搞清楚,不能混淆。**AXI4 Stream接口用于对外设的读写,其中AXI4 Stream Master
(MM2S)用于对外设写,AXI4-Stream Slave(S2MM)用于对外设读。另外还支持Scatter/Gather
功能,