I'm using Fixed point FFT library in ControlSUITE.
But my benchmark is doubled comparing with the value of the User's Guide when using RFFT sample code.
For example:
In 512 point RFFT,
UG : 33,081 cycles
My benchmark : 62,142 cycles
I found the imaginary part of the caluculation in the assembler code (FFT32_calc.asm).
MOVL ACC,*XAR6 ; ACC=I1
SFR ACC,#1 ; ACC=I1/2
MOVL P,*XAR2 ; P=I2
SUBL ACC,P<<PM ; ACC=(I1-I2)/2
MOVL *-SP[TEMP],ACC ; temp=(I1-I2)/2
ADDL ACC,P ; ACC=(I1+I2)/2
SFR ACC,#1 ; ACC=(I1+I2)/4
MOVL P,XAR5 ; P=(I3+I4)/2
ADDL ACC,P<<PM ; ACC=(I1+I2+I3+I4)/4
MOVL *XAR6,ACC ; I1'=(I1+I2+I3+I4)/4
NOP *0++
SUBL ACC,P ; ACC=(I1+I2-I3-I4)/4
MOVL *XAR3,ACC ; I3'=(I1+I2-I3-I4)/4
NOP *0++
MOVL ACC,*-SP[TEMP] ; ACC=(I1-I2)/2
SFR ACC,#1 ; ACC=(I1-I2)/4
MOVL P,XT ; P=(R3-R4)/2
ADDL ACC,P<<PM ; ACC=ACC=(I1-I2+R3-R4)/4
MOVL *XAR4,ACC ; I4'=(I1-I2+R3-R4)/4
NOP *0++
SUBL ACC,P ; ACC=(I1-I2-R3+R4)/4
MOVL *XAR2,ACC ; I2'=(I1-I2-R3+R4)/4
NOP *0++
This is the common code as CFFT.
Is it right?
My environment is:
CCSv5.5
TMS320F28335 control card
ControlSUITE v3.2.4
Best Regards,
Satoshi Shinohara