测试条件:
1、MDK5.33 AC5 ,开启最高等级三级优化,开启时间优化
2、测试平台自制H730VBT板子。
3、工作主频550MHz。
4、开启硬件双精度。
5、开启硬件三角函数。
测试:
1、H730硬件三角函数。
开启20bit最高测试精度,对应6个时钟周期24次迭代。注意这里的时钟周期是相对Cordic来说的,由于Cordic是在550MHz主频的二分频下工作,所以实际测试应该是12个时钟周期完成一次三角函数计算。
这里计算了10000次sin,DMA方式。
最终需要时钟周期是200506个,也就是20个时钟周期计算一次,即36ns一次计算,这个速度还是相当给力的。
正常情况下的理论值应该是12个时钟周期就计算完毕,额外的8个时钟周期耽误在DMA等传输上了。
当然如果采用最大误差精度情况下,可以做到13.5个时钟周期一次,不过实用价值不高。
2、DSP库测试
(1)函数arm_sin_q31
由于是查表法实现,精度有点低,只有10bit左右,所以参考价值不高。
测试100次求平均是27.6个时钟周期一次:
(2)函数arm_sin_f32
测试100次求平均是168个时钟周期一次:
3、C库测试
(1)双精度测试
使用函数sin
测试100次求平均是240个时钟周期一次:
(2)单精度测试
使用函数sinf
测试100次求平均是69.8个时钟周期一次: