FPGA DMA介绍

本文介绍了DMA(DirectMemoryAccess)的工作原理,以及在ARMCPU设计中PS和PL端的DMA选择。重点讨论了DAMC的使用、AXIDMA的优势(如高带宽、内存映射到Stream等)、以及SimpleDMA和ScatterGatherDMA模式的应用。
摘要由CSDN通过智能技术生成

DMA(Direct Memory Access 直接内存访问),它允许某些计算机内部的硬件子系统可以独立地直接读写系统内存,而不需中央处理器(CPU)介入处理。

DMA存储传输的过程如下:
1. 处理器发出一条DMA命令,用以配置DMA,使DMA传输数据到存储器。
2. DMA控制器把数据从外设传输到存储器或从存储器到存储器或存储器到外设,而让CPU腾出手来做其它操作。
3. 数据传输完成后,向CPU发出一个中断来通知它DMA传输可以关闭了。

在PS和PL两端都有DMA,其中PS端的是硬核DMA,而PL端的是软核AXI DMA。

如何选用这两个DMA呢?

在ARM CPU设计的过程中,已经考虑到了大量数据搬移的情况,因此在CPU中自带了一个DMA控制器DAMC,这个DAMC驻留在PS内,而且必须通过驻留在内存中的DMA指令编程,这些程序往往由CPU准备,因此需要部分的CPU参与。DMAC支持高达8个通道,所以多个DMA结构的核可以挂在单个DMAC上。DAMC与PL的连接是通过AXI_GP接口,这个接口最高支持到32位宽度,这也限制了这种模式下的传输速率,理论最高速率为600MB/s。这种模式不占用PL资源,但需要对DMA指令编程,会增加软件的复杂性。如果从PS端的内存DDR3到I/O、DDR3、OCM,少量的数据传输的情况下就选择PS端的DMA;

为了获取更高的传输速率,可以以空间换时间(内存换速率),在PL中添加AXI DMA IP核,并利用AXI_HP接口完成高速的数据传输。其缺点是会占用FPGA的一部分逻辑资源。

AXI DMA为内存和AXI4-Stream外设之间提供了高带宽的直接内存访问

其可选择的SG模式可以将CPU从数据搬运任务中解放出来

AXI DMA通过AXI-Lite接口对寄存器做一些配置和获取。

MM2S: MemoryMap to Stream 存储器映射(AXI4-Full)到AXI4-Stream

S2MM: Stream to MemoryMap AXI4-Stream到存储器映射(AXI4-Full)

AXI DMA 用到了三种总线,AXI4-Lite 用于对寄存器进行配置,AXI4 Memory Map 用于与内存交互,又分为 AXI4 Memory Map Read 和 AXI4 Memory Map Write 两个接口,一个是读一个是写。AXI4 Stream 接口用于对外设的读写,其中 AXI4 Stream Master(MM2S,Memory Map to Stream)用于对外设写,AXI4-Stream Slave(S2MM,Stream to Memory Map)用于对外设读。总之,在以后的使用中需要知道 AXI_MM2S 和AXI_S2MM 是存储器端映射的 AXI4 总线,提供对存储器(DDR3)的访问。AXIS_MM2S 和 AXIS_S2MM是 AXI4-streaming 总线,可以发送和接收连续的数据流,无需地址。

DMA分为两种模式:Simple DMA(简单模式)Scatter Gather DMA(SG模式)
①简单模式
简单DMA模式(禁用SG模式即可)提供了一种可在MM2S和S2MM通道上执行简单DMA传输的配置,只需要较少的FPGA资源。通过访问DMACR(DMA控制寄存器)、源地址或目标地址和长度寄存器来启动DMA传输。当传输完成时,如果使能了产生中断输出,那么DMASR(DMA状态寄存器)相关联的通道位IOC_Irq会有效,便会产生中断。

DMA的MM2S(存储器映射到Stream)通道的启动顺序:

1、使能MM2S通道(令MM2S_DMACR.RS = 1);

2、如果需要的话,可以使能中断;

3、写一个有效的源地址到MM2S_SA寄存器(源地址寄存器)

注:如果没有使能DRE的功能,在指定起始地址时,需要注意字节地址对齐,哪些地址是对齐或者不对齐的,取决于stream流的数据位宽。如果启用了 DRE 并且

数据流位宽 < 128,则源地址可以是任意字节偏移。

4、写传输的字节数到MM2S_LENGTH寄存器。

注:一个长度位0的值是无效的,而一个非0的值,将会决定存储器映射到Stream流的数据个数;并且必须最后一个配置MM2S_LENGTH寄存器,而其他寄存器的配置顺序没有要求。这表明配置完数据长度,此时整个配置过程已经结束。

DMA的S2MM(Stream到存储器映射)通道的启动顺序:(和MM2S非常相似)

1、使能S2MM通道(令S2MM_DMACR.RS = 1);

2、如果需要的话,可以使能中断;

3、写一个有效的源地址到S2MM_DA寄存器(目的地址寄存器)

注:如果没有使能DRE的功能,在指定起始地址时,需要注意字节地址对齐,哪些地址是对齐或者不对齐的,取决于stream流的数据位宽。如果启用了 DRE 并且

数据流位宽 < 128,则源地址可以是任意字节偏移。

4、写传输的字节数到S2MM_LENGTH寄存器。

注:一个长度位0的值是无效的,而一个非0的值,将会决定Stream流到存储器映射的数据个数;并且必须最后一个配置S2MM_LENGTH寄存器,而其他寄存器的配置顺序没有要求。这表明配置完数据长度,此时整个配置过程已经结束。

②SG模式
在SG模式下,它把传输的基本参数,存储在内存中;

这些参数就是被称为BD(Buffer Descriptor)

在工作时,通过SG接口加载和更新BD中的状态。

  • 23
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: FPGA是一种可编程逻辑器件,可以根据需要重新配置其硬件结构和功能实现特定的任务。DMA(Direct Memory Access)是一种数据传输技术,可以使外部设备直接访问计算机内存,提高数据传输效率。FFT(Fast Fourier Transform)是一种快速傅里叶变换算法,用于将信号在时域和频域之间进行转换。 在FPGA中使用DMA和FFT可以实现高速的信号处理。DMA可以将输入信号直接从外设读取到FPGA中的内存,减少了CPU的负担,提高了数据传输速度。然后,FFT算法可以对输入信号进行频域转换,分析信号的频率成分和相对强度。 使用FPGA进行DMA和FFT处理的一个典型应用是信号处理系统。例如,在无线通信中,可以使用FPGA进行基带信号的解调和调制,以及频谱分析和通道估计。DMA可以高效地将接收到的信号传输到FPGA中,而FFT可以对信号进行频域分析,以检测和解决通信中的干扰问题。 除了信号处理,DMA和FFT还可以应用于其他领域。例如,图像处理中的图像变换、医学影像中的信号分析和处理等。通过利用FPGA硬件的可编程性和高性能特点,以及DMA和FFT算法的快速数据传输和高效处理能力,可以实现更灵活和高效的数据处理和分析。 ### 回答2: FPGA DMA FFT是指在FPGA(现场可编程门阵列)上,使用DMA(直接内存访问)技术来实现FFT(快速傅里叶变换)算法。 首先,FPGA是一种可编程逻辑器件,具有高度的并行性和灵活性。它可以通过重新编程来实现各种不同的功能。DMA是一种数据传输技术,可以将数据直接从存储器中传输到外设或从外设中传输到存储器,无需通过CPU的干预。 FFT是一种用于将时域信号转换为频域信号的算法,广泛应用于信号处理和通信系统中。通过将FFT算法实现在FPGA上,可以利用FPGA的并行处理能力和低延迟特性,提高FFT的性能和效率。 使用DMA技术可以使得数据在FPGA和存储器之间的传输更加高效。传统上,数据通过CPU来传输,会增加数据传输的延迟。而使用DMA可以直接将数据传输到FPGA的输入缓存中,或者将FPGA的计算结果传输到存储器中,从而提高数据传输的速度和效率。 在FPGA上实现FFT算法需要设计合适的硬件电路,包括存储器、乘法器、加法器等。同时,还需要将数据转换为二进制表示形式,以便用于计算。 总之,使用FPGA DMA技术实现FFT算法可以提高计算速度和效率,并且能够适应处理大规模数据的需求。它在许多领域,如通信、图像处理、音频处理等方面都有广泛的应用。 ### 回答3: FPGA指的是现场可编程门阵列(Field-Programmable Gate Array),它是一种灵活可编程的集成电路。DMA是指直接内存访问(Direct Memory Access),它是一种计算机硬件技术,用于实现设备之间的数据传输,而无需CPU进行介入。FFT是指快速傅里叶变换(Fast Fourier Transform),它是一种算法,在信号处理和图像处理等领域广泛应用。 FPGA可以被用来实现DMA和FFT。通过在FPGA中集成DMA控制器以及专门的硬件计算单元,可以有效地实现高速数据传输和傅里叶变换。相比于软件实现,使用FPGA进行DMA和FFT可以提高数据处理的速度和效率。由于FPGA的可编程性,可以根据具体应用需求定制化设计,以达到更好的性能和功耗平衡。 在FPGA中实现DMA时,可以将外设的数据直接传送到内存中,避免了CPU频繁地进行数据传输,提高了系统的处理效率。同时,DMA可以实现高速数据的并行传输,适用于需要大量数据处理的应用场景,如图像处理和信号处理。 FFT在数字信号处理中具有重要的作用,可以将时域信号转换为频域信号。通过在FPGA中实现FFT运算的硬件电路,可以加速信号的频谱分析和频域处理。FPGA中的硬件FFT实现可以处理实时数据,并且由于其并行计算的特性,可以在很短的时间内完成大量的傅里叶变换计算。 总之,FPGA可以实现DMA和FFT的加速,并且能够根据具体需求进行灵活的定制化设计,提高数据处理的效率和性能。这在需要高速数据传输和实时信号处理的各种应用中,具有广泛的应用前景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值