15. FFA

15.1. 概述

本示例展示了HPM FFA的主要功能:

  • 快速傅里叶变换(FFT)

  • 逆快速傅里叶变换(IFFT)

  • 有限冲激响应(FIR)滤波

  • 继发命令(链式)模式:将多个FFT/IFFT/FIR操作通过描述符链表链接,由硬件自动顺序执行

15.2. 实现原理

本示例通过以下测试用例展示FFA的功能:

  1. FFT测试 - 支持多种点数的复数FFT运算(16/32/64/256/512点) - 使用Q31格式的复数输入数据 - 通过与预设的黄金数据比对验证计算结果

  2. IFFT测试 - 支持多种点数的复数IFFT运算(8/16/32点) - 使用Q31格式的复数输入数据 - 通过与预设的黄金数据比对验证计算结果

  3. FIR滤波测试 - 使用预设的滤波器系数 - 对输入数据进行实数FIR滤波运算 - 通过与预设的黄金数据比对验证滤波结果

  4. 链式FIR测试 - 通过继发命令模式将多个FIR操作链接在一起 - 硬件在前一个操作完成后自动加载并执行下一个描述符

  5. 链式FFT测试 - 通过继发命令模式将多个FFT操作链接在一起

  6. 链式混合测试 - 通过继发命令模式链接FFT与FIR操作(FFT + FIR)

15.3. 硬件要求

  • 带有FFA外设的开发板

15.4. 硬件设置

无特殊设置

15.5. 运行现象

当该例程成功运行后,会在串口终端打印如下菜单:

*******************************************************************************
*                                                                             *
*    FFA Test demo                                                            *
*    1. Complex Q31 FFT Test                                                  *
*    2. 8-Point Complex Q31 IFFT Test                                         *
*    3. Real Q31 FIR Test                                                     *
*    4. Chained FIR Test (3 FIR operations)                                   *
*    5. Chained FFT Test (2 FFT operations)                                   *
*    6. Chained Mixed Test (FFT + FIR)                                        *
*                                                                             *
*******************************************************************************

15.6. 注意事项

  • 链式模式描述符链表在内存中必须是连续的10个32-bit字段

  • 链式模式下硬件会从描述符中读入并覆盖相应长度寄存器,因此描述符中的每个字段都需要正确填写

  • 对齐要求

    • NXT_ADDR 最低 2bit 必须为 0 (4 字节对齐)。

    • 若系统启用DCache,建议描述符数组按Cache Line(例如64字节)对齐,并在启动链式前对刷新的描述符与输入数据做DCache Flush,对输出数据做DCache Invalidate,避免硬件读取到旧数据。