项目概述这个项目是使用fir_rfft_seq修改而来 主要是基于STM32C5Z平台使用HSP加速器以以 Sequencer 模式 + Ping/Pong 双缓冲实现 FIR 低通滤波 + RFFT 频谱分析,并与纯 CPU 软件实现进行性能对比。 测试条件32阶FIR+256点RFFT+模值计算 测试对比STM32端是HSP硬件加速 使用DMA时间触发pipeline,整个过程无需CPU干预。pingpong双缓冲输入HSP实现输入结果与输出结果并行, 对比点使用纯C语言实现相同的32阶FIR+256点RFFT计算用于对比HSP和CPU性能差别 为了保证计时精确 这里使用DWT寄存器保证周期的精确测量 测试部分实现通过查看ST给出的Demo,HSP拥有一块独立的BRAM内存区域 这块区域和系统的SRAM分离 我们使用DMA和HSP均可访问 这块RAM大大提高了HSP的计算效率 我们定义一个结构体 用于双缓冲数据的实现
数据录制与BRAM填充部分实现如下
整个部分由事件驱动DMA搬运数据,双缓冲的存在可以让数据无缝衔接 CPU实现软件算法如下
FFT和FIR算法均使用纯C实现,在计时部分仅计算数据输入到给出结果的CPU周期 不包含校验过程 硬件HSP运行结果
软件运行结果
HSP与CPU对比
从表格不难发现 对于特定的繁重任务 HSP可以十分有效的提升计算速度 ,尤其是像FFT(快速傅里叶变换)/IFFT(逆变换)、FIR/IIR滤波、矩阵运算等这种需要运行在边缘mcu中的算法,加速效果尤为明显 后续会研究下HSP对卷积 池化 全连接等核心算子的优化,希望可以将TinyMaxi这个超轻量的推理框架移植到HSP中运行 |
【STM32U3评测】低功耗模式功耗测量
【NUCLEO-U3C5ZI 测评】+ 手写数字识别
新品发布:STM32U3B5/C5,配备2 MB Flash存储器和HS,首款无需电池即可运行AI的超低功耗STM32微控制器
【STM32U3评测】不太一样的点灯及编程测试
【STM32U3开发板测评】低功耗模式功耗实测
【NUCLEO-U3C5ZI 测评】+ 手写数字识别
【STM32U3 评测】3.开启HSP计算FFT时间
【STM32U3 评测】2.U3C5开启FPU测试FFT
【STM32U3 评测】CAN报文接收及过滤
【STM32U3 评测】CAN基本通讯测试
微信公众号
手机版