Hi,
I am trying to develop a standalone application. I may need to store as many as 1000 samples in 1s for 60s. Also, I may need to process this set of data by doing a FFT before displaying on a LCD.
Could anyone share with me if the C8051F206 is sufficient or I need to evaluate DSP or other processors? Any low power MCU to recommend as the device is to be portable ?
Thank you for your inputs.
You have not given enough information.
You talk about 1000*60 samples. But what size? A bit, or 12 bits or what? What memory do you want to store the data in? Just temporary in RAM, or nonvolatile?
Also, you haven't informed how large FFT you need to run. FFT takes a lot of processing power, and the requirements grows very fast with the size of the FFT.
Yes, FFTs have been done on 8051s - but, as Per says, you haven't given nearly enough detail to say whether these are sufficient to your requirements.
There are probably ARM-based controllers at a similar price to the C8051F206 that wouldn't suffer from the inherent 8051 architecture limitations (eg, 64K data space)
SiLabs has a nice app note on FFTs.
www.silabs.com/.../an142.pdf
When comparing speeds between variants, pay careful attention to the number of clock cycles per instruction cycle. Silicon Labs builds a lot of high-performance 8051s. The product brief for the C8051F12x mentioned in the app note says it executes "70% of instructions in 1 or 2 clock cycles". The C8051F206 you mention has the same statement, so the cores probably have the same performance. But the F206 brief only mentioned clock rates up to 25 MHz, while the benchmarks in the app note are based on a 50 MHz clock.
Memory size should be straightforward. 1 kHz * 60 s * sample size (I'll assume 16 bits) = 120,000 bytes. If you're going to run an FFT over that entire window, you're going to need real and imaginary components, which will double the memory. Doable with far memory on an 8051, but you'll probably need an external memory and far access will be a bit slower.
The time to run a 60,000-point FFT will probably be prohibitive if you're looking for a real-time display. The app note gives the time for a 1024-point FFT as 170 ms. A 64K-point FFT should take a bit over 100 times as long (N / 2 * log N).
Here's some code that Google told me about: www.8051projects.net/downloads37.html www.ai.uga.edu/.../
Thanks to your inputs. Will digest the info first before posting again.