测试条件: 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个时钟周期一次: