本文来源电子发烧友社区,作者:jf_55236000, 帖子地址:https://bbs.elecfans.com/jishu_2292914 _1_1.html
作为一款应用于实时控制的DSP芯片,其运算性能起着决定性作用,下面就来评估一下DSC28034的运算性能,
评估环境:
硬件平台:Start_DSC28034湖人开发板
芯片主频:120MHz
测试算法:IQmath
评估方法:
配置一个CPU定时器,计数器每个时钟周期减1,在执行算法前先记录当前定时器计数器值Cnt1,算法执行完成后再次记录当前定时器计数器Cnt2,则算法执行时间为Cnt2- Cnt1个时钟周期,换算成以ns为单位的标准时间则为:(Cnt2- Cnt1)÷120×1000ns
,
定时器的配置如下:
//==========CPU Timer 1=========================//
CpuTimer1Regs.PRD.all = 120000000; // Initialize timer period to 1s:
CpuTimer1Regs.TPR.bit.PSC = 0; // Initialize pre-scale counter to divide by 1 (SYSCLKOUT):
CpuTimer1Regs.TPR.bit.TDDR = 0;
CpuTimer1Regs.TCR.bit.TSS = 1; // Make sure timer is stopped:
CpuTimer1Regs.TCR.bit.TRB = 1; // Reload all counter register with period value:
CpuTimer1Regs.TCR.bit.TIE = 0; // 0 = Disable/ 1 = Enable Timer Interrupt
CpuTimer1Regs.TCR.bit.TSS = 0; // Start CpuTimer1
先贴上测试结果:
这个运算性能算很不错的了,比一般ARM的M3或者M4强很多了,可以满足一般的实时控制需求,但比起TI的一些带FPU的DSP还是要差很多 ,比如TI的28069,算一个单精度浮点乘法只要一个流水线周期,大概80多个ns,
具体算法性能评估情况如下:
32位定点乘法运算IQmpy:
计算结果:IQmpy(a,b) = a*b>>Q,即((123<<24)*456)>>24 = 123*456 = 56088
,
计算时间:567÷120÷10 ×1000 = 472.5ns
32位定点除法运算IQdiv:
计算结果:IQdiv(a,b) = (a<
,
)>
计算时间:
1020÷120÷10 ×1000 = 850ns
32位定点平方根运算IQsqrt:
计算结果:
IQsqrt(a) = sqrt (a<),即sqrt(123*123<<24)>
计算时间:
1118÷120÷10 ×1000 = 931.7ns
32位定点求模值运算IQmag:
计算结果:
IQmag(a,b) = sqrt (a*a+b*b),即 sqrt (123*123+456*456) = 472
计算时间:
1392÷120÷10 ×1000 = 1160ns
32位定点求正弦运算IQsinPU:
计算结果:
IQsinPU(a) = sin (a)<<24
,即
sin (360°>>3) = sin(45°)<<24 = 11863283
计算时间:
737÷120÷10 ×1000 = 614.2ns
32位定点求余弦运算IQcosPU:
计算结果:
IQcosPU(a) = cos (a)<<24
,即
cos (360°>>3) = cos(45°)<<24 = 11863283
计算时间:
627÷120÷10 ×1000 = 522.5ns
32位定点求反正切运算IQatan2PU:
计算结果:
IQtan2PU(a,b) = 点(a,b)与x轴夹角/360°<<24
,即
45/360<<24 = 2097151
计算时间:
1856÷120÷10 ×1000 = 1546.7ns
全部0条评论
快来发表一下你的评论吧 !