Hello,
i'm a student and very new to the topic of signal processing.
Currently i'm working with a networking/microcontroller board which is
equipped with an ARM9-CPU @ 200MHz.
The target is to use the integrated ADC (1Mhz sampling rate) to capture
samples from an extern audio signal. Those should be processed by an FFT to
get a nice visualization of the "basefrequencies" (is that the right
word?).
An example:
XX
XX XX
XX XX XX
XX XX XX XX
XX XX XX XX
0 100Hz 1KHz 5KHz
to to to to
100Hz 1KHz 5KHz 20KHz
After searching for a long time i found out that i need a FFT-Algorithm
which makes a "real to complex" transform. Real to complex, because it's
faster than complex to complex and my input data is only real (tha adc
sample-values).
Does anybody know a fast C-implementation of an "r2c" FFT (best would be
in-place)?
FFT of ADC-captured values on ARM µC
Started by ●June 3, 2008
Reply by ●June 3, 20082008-06-03
enforcer wrote:> Hello, > > i'm a student and very new to the topic of signal processing. > Currently i'm working with a networking/microcontroller board which is > equipped with an ARM9-CPU @ 200MHz. > > The target is to use the integrated ADC (1Mhz sampling rate) to capture > samples from an extern audio signal. Those should be processed by an FFT to > get a nice visualization of the "basefrequencies" (is that the right > word?). > > An example: > XX > XX XX > XX XX XX > XX XX XX XX > XX XX XX XX > > 0 100Hz 1KHz 5KHz > to to to to > 100Hz 1KHz 5KHz 20KHz > > After searching for a long time i found out that i need a FFT-Algorithm > which makes a "real to complex" transform. Real to complex, because it's > faster than complex to complex and my input data is only real (tha adc > sample-values). > > Does anybody know a fast C-implementation of an "r2c" FFT (best would be > in-place)? > >Have you tried http://www.google.com/search?q=fast%20fft%20%2Bc which hints that you may wish http://www.google.com/search?q=fast+fft+%2Bc+%22in+place%22+%22real+to+complex%22+site%3Awww.fftw.org ???? ;)
Reply by ●June 3, 20082008-06-03
Richard Owlett wrote:> enforcer wrote: > >> Hello, >> >> i'm a student and very new to the topic of signal processing. >> Currently i'm working with a networking/microcontroller board which is >> equipped with an ARM9-CPU @ 200MHz. >> >> The target is to use the integrated ADC (1Mhz sampling rate) to capture >> samples from an extern audio signal. Those should be processed by an >> FFT to >> get a nice visualization of the "basefrequencies" (is that the right >> word?). >> >> An example: >> XX >> XX XX >> XX XX XX >> XX XX XX XX >> XX XX XX XX >> >> 0 100Hz 1KHz 5KHz >> to to to to >> 100Hz 1KHz 5KHz 20KHz >> >> After searching for a long time i found out that i need a FFT-Algorithm >> which makes a "real to complex" transform. Real to complex, because it's >> faster than complex to complex and my input data is only real (tha adc >> sample-values). >> >> Does anybody know a fast C-implementation of an "r2c" FFT (best would be >> in-place)? >> >> > > Have you tried > > http://www.google.com/search?q=fast%20fft%20%2Bc > > which hints that you may wish > > http://www.google.com/search?q=fast+fft+%2Bc+%22in+place%22+%22real+to+complex%22+site%3Awww.fftw.organd are you really sampling audio at 100 MHz? How many bits per sample? How long a signal can your available memory hold? Jerry -- Engineering is the art of making what you want from things you can get. �����������������������������������������������������������������������
Reply by ●June 3, 20082008-06-03
>>> The target is to use the integrated ADC (1Mhz sampling rate) tocapture>>> samples from an extern audio signal.>and are you really sampling audio at 100 MHz? How many bits per sample? >How long a signal can your available memory hold?Looks like 1 MHz to me... still kinda high, but not nearly as bad as 100 MHz would be. ;) I was about to put in my vote for visiting fftw.org before Jerry beat me to it, btw. Mark
Reply by ●June 3, 20082008-06-03
markt wrote:>>>> The target is to use the integrated ADC (1Mhz sampling rate) to > capture >>>> samples from an extern audio signal. > > >> and are you really sampling audio at 100 MHz? How many bits per sample? >> How long a signal can your available memory hold? > > Looks like 1 MHz to me... still kinda high, but not nearly as bad as 100 > MHz would be. ;)Oops!> I was about to put in my vote for visiting fftw.org before Jerry beat me > to it, btw.Credit Richard, not me. Jerry -- Engineering is the art of making what you want from things you can get. �����������������������������������������������������������������������
Reply by ●June 3, 20082008-06-03
Reply by ●June 3, 20082008-06-03
On Jun 3, 2:25 pm, "markt" <tak...@pericle.com> wrote:> I was about to put in my vote for visiting fftw.org before Jerry beat me > to it, btw.I assume fftw is highly optimized for desktop/server class CPU's with pipelined FPUs. But is fftw well optimized for integer arithmetic on a embedded CPU such as an ARM9?
Reply by ●June 3, 20082008-06-03
On Jun 3, 6:40 pm, Ron N <ron.nichol...@gmail.com> wrote:> On Jun 3, 2:25 pm, "markt" <tak...@pericle.com> wrote: > > > I was about to put in my vote for visiting fftw.org before Jerry beat me > > to it, btw. > > I assume fftw is highly optimized for desktop/server class > CPU's with pipelined FPUs. But is fftw well optimized for > integer arithmetic on a embedded CPU such as an ARM9?As far as I know, FFTW is floating-point only, so I don't think it's really geared toward such an embedded application at all. Jason
Reply by ●June 4, 20082008-06-04
First about the sample-rate: The maximum supported SR is 1MHz - what I'm NOT going to use. I think the system would be a little little little bit to slow for so much data in so less time. My goal is about 44KHz. As i read, this is needed to analyse a 0-20KHz audio signal. And it sounds logical to me. The samples have an size of 10 bit (int 0-1023). Maybe an "int-real to float-complex FFT would be even more interesting :D I'm a dreamer... Than about FFTW: I already had contact with FFTW and KissFFT . Both seem to me very integrated (geared) and not for embedded use.... I think a port or extraction of the code i need would be very difficult. Any other suggestions?
Reply by ●June 4, 20082008-06-04
enforcer wrote:> First about the sample-rate: > The maximum supported SR is 1MHz - what I'm NOT going to use. > I think the system would be a little little little bit to slow for so much > data in so less time. > My goal is about 44KHz. As i read, this is needed to analyse a 0-20KHz > audio signal. And it sounds logical to me. > The samples have an size of 10 bit (int 0-1023). Maybe an "int-real to > float-complex FFT would be even more interesting :D I'm a dreamer... > > Than about FFTW: > I already had contact with FFTW and KissFFT . Both seem to me very > integrated (geared) and not for embedded use.... I think a port or > extraction of the code i need would be very difficult. > > Any other suggestions?There may be a library of routines for your processor that includes the code you want, either free or for purchase. Have you looked? 44 KHz is at the edge of possible for sampling 20 KHz audio. You will make the design much easier if you go up to 48 KHz. (The 2.5x rule of thumb would call for 50 KHz.) Jerry -- Engineering is the art of making what you want from things you can get. �����������������������������������������������������������������������






