15. FFA
15.1. 概述
本示例展示了HPM FFA的主要功能:
快速傅里叶变换(FFT)
逆快速傅里叶变换(IFFT)
有限冲激响应(FIR)滤波
继发命令(链式)模式:将多个FFT/IFFT/FIR操作通过描述符链表链接,由硬件自动顺序执行
15.2. 实现原理
本示例通过以下测试用例展示FFA的功能:
FFT测试 - 支持多种点数的复数FFT运算(16/32/64/256/512点) - 使用Q31格式的复数输入数据 - 通过与预设的黄金数据比对验证计算结果
IFFT测试 - 支持多种点数的复数IFFT运算(8/16/32点) - 使用Q31格式的复数输入数据 - 通过与预设的黄金数据比对验证计算结果
FIR滤波测试 - 使用预设的滤波器系数 - 对输入数据进行实数FIR滤波运算 - 通过与预设的黄金数据比对验证滤波结果
链式FIR测试 - 通过继发命令模式将多个FIR操作链接在一起 - 硬件在前一个操作完成后自动加载并执行下一个描述符
链式FFT测试 - 通过继发命令模式将多个FFT操作链接在一起
链式混合测试 - 通过继发命令模式链接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,避免硬件读取到旧数据。