Edit online

FFT 工作流程

3 Mar 2025
Read time: 1 minute(s)
FFT 操作流程如下所示:
  1. 通过对 SFTRST 位写 1 进行软件复位,完成复位后该位自动清零。

    如果在 FFT 模块计算过程中,对 SFTRST 位写 1,会强制停止 FFT 的计算,并且进行 FFT 模块复位。

  2. 配置基本控制寄存器,包括所需状态的中断使能。

    中断源主要是计算饱和截止、总线错误、执行结束。需要相应的中断使能被允许,且相应的状态位置 1 时才会提起中断。这些中断共用一根中断线,所以需要读取相应状态位和中断允许位来决定中断原因。

  3. 配置当前命令的计算参数:

    • NXT_CMD_EN = 0x0,即单次命令计算,表示完成一次命令计算即结束。

      fft 命令计算流程所示:
      1. 将对应的输入数据地址写入寄存器 FFT_INBUF。

      2. 将对应的输出数据地址写入寄存器 FFT_OUTBUF。

      3. 通过寄存器字段 FFT_LEN 选择 FFT 计算长度。

      4. 通过寄存器字段 IFFT_EN 选择使用 FFT 或 FFT 逆变换计算。

      5. 通过寄存器 OP_CMD 选择输入输出的数据类型。

        关于数据格式及配置说明,可查看数据输入说明及配置数据输出说明及配置

      6. 通过对 CAL_EN 位写 1 启动 FFT 计算,计算完成后 CAL_EN 自动清零。

    • NXT_CMD_EN = 0x1,即多次命令计算,表示完成当前的计算命令后需要根据 NXT_ADDR 的地址获取下一次的命令的配置参数。

      多次命令计算是通过预先建立的描述符链表的方式将一系列的命令链接在一起。如fft 命令计算流程所示。

      通过配置 NXT_CMD_EN = 0x1 和命令地址 NXT_CMD_ADDR,硬件自动加载下一次的命令配置,并且触发计算。只要最后一次的命令计算,配置 NXT_CMD_EN = 0x0,则硬件在完成此次计算后就会完成多次命令计算的操作。

  4. 如有需要,处理中断。



1. fft 命令计算流程