
Originally Posted by
DerekR
Hi Everybody,
I've had to give up all things Teensy for the past few months while battling extreme fatigue post treatment for a serious illness. The good news is that we have found that most of the problem was actually an allergy to one of the drugs that was meant to help fatigue!!! Anyway, I hope now to be much more active on the forum again. I had many projects underway when I was forced to stop, and one of them was a complete Teensy FFT library with int16, int32 , and float, inverse and forward, complex and real, and standalone and audio board versions. It would also have complete radix-2 (32, 64, 128, 256, 512, 1024 (and longer if there is any interest) lengths. In addition the routines all have minimum length "twiddle" tables to keep the memory size to a minimum.
The code is derived from "cherry picking" the newer arm_math source code, and is based on a mixed-radix (4 and 2) approach with output bit-reversal. For the non radix-4 lengths I wrote code to perform the column zero operation before defaulting to the arm_math radix-4 approach for subsequent columns.
Where does the project stand? I have written and verified the complex, int16, forward FFT, standalone, length 32, 64, 128, 256, and 512 functions on both the Teensy 3.2 and 3.6. I have written MATLAB code to automatically generate the twiddle and bit-reversal tables, so extension to other lengths is easy. The routines are fast - I'll try to post the timing information later today. My next focus will on the matching int_16 IFFT routines (making sure IFFT(FFT(x)) = x).
From there I'm open to suggestions - perhaps audio board library forward and inverse complex functions with the missing lengths, particularly 128 (since I want this for some other projects (SDR related))... I don't yet have a 3.6 wired to an audio board, so I'll have to start with a 3.2.
If anybody is interested in working on this project with me, please let me know! You will need some experience with FFT algorithms. I'm going to have to take things fairly easy to start with.