Edit online

SRAM 空间分配

3 Mar 2025
Read time: 2 minute(s)

FFT 的计算需要的数据 Buffer 空间,可以通过寄存器配置选择 SRAM_B0、SRAM_B1、SRAM_B2 和 SRAM_B3 作为 FFT 的输入输出 Buffer 空间。

1. FFT 的输入输出 Buffer 空间配置说明

寄存器配置

地址空间

空间大小 (KB)

配置建议

SRAM_B0

0x30138000 ~ 0x30140000

32

为避免 SRAM 空间浪费,按照下列建议选择:
  • 所需空间不超过 32 KB 时,使用 SRAM_B0
  • 所需空间不超过 64 KB 时,使用 SRAM_B0 和 SRAM_B1
  • 所需空间不超过 128 KB 时,使用 SRAM_B0、SRAM_B1、SRAM_B2 和 SRAM_B3

SRAM_B1

0x30130000 ~ 0x30138000

32

SRAM_B2

0x30128000 ~ 0x30130000

32

SRAM_B3

0x30120000 ~ 0x30128000

32



1. SRAM 空间分布

单片空间使用

单片空间使用,就是将分配给 FFT 的 SRAM 空间当作是一片完整的 FFT_SRAM。

单片空间使用情况下,SRAM 空间分配建议如下:

  • 使用 SRAM_B0,即单片 32 KB 空间
  • 使用 SRAM_B0 + B1,即单片 64 KB 空间
  • 使用 SRAM_B0 + B1 + B2 + B3,即单片 128 KB 空间
单片空间详细使用说明如下:
  1. 每次触发 FFT 计算之前,将此片 FFT_SRAM 归属给 CPU,由 CPU 写入 FFT 计算命令所要的数据。
  2. 输入数据准备完成后,切换 FFT_SRAM 的归属到 FFT,由 FFT 进行计算。
    警告:

    在 FFT 计算的过程中,切勿操作 FFT_SRAM 的归属控制,只有在 FFT 完成计算后才可以切换 FFT_SRAM 的归属。

  3. 完成计算后,产生中断信号,通知 CPU。
  4. CPU 收到 FFT 计算完成后,再次切换 FFT_SRAM 归属到 CPU。

    此时,CPU/ DMA 就可以访问 FFT 计算完成的结果。

单片空间使用示例

以选择 SRAM_B0/ B1 用于 FFT 计算为例,单片空间操作流程如下:
  • 单次命令:

  • 多次命令:


多片空间使用

多片空间使用便于灵活地输入每次 FFT 计算的数据,可以更加高效的完成需要实时处理的数据。在此模式下,当其中一片空间归属于 FFT 进行计算的过程时,CPU 可以对其它空间写入下一笔 FFT 计算的输入数据。

多片空间使用的情况下,SRAM 空间分配建议如下:

  • SRAM_B0 搭配 SRAM_B1,即 32KB 搭配 32 KB 的使用场景
  • SRAM_B0 + B1 搭配 SRAM_B2+B3,即 64 KB 搭配 64 KB 的使用场景

如下图所示选择 SRAM_B0 和 SRAM_B1 两片空间用于 FFT 计算时:

  • 当 SRAM_B0 空间处于 FFT 计算的过程中,SRAM_B1 的空间可供 CPU 进行数据准备。
  • 当 SRAM_B0 的计算命令完成后,可以切换 SRAM_B0 的归属为 CPU,SRAM_B1 的归属为 FFT。CPU 在读取 SRAM_B0 结果的同时 FFT 也在进行 SRAM_B1 的计算。
  • 当 SRAM_B0/1/2/3 的命令完成后,产生 CMD_SRAM_B0/1/2/3_DNE 的中断状态,用于区分不同空间的命令完成状态。