Prev: Plastic Logic makes it debut
Next: book for OFDM
From: jacobfenton on 8 Jan 2010 07:56 I could use some help, since I am very new to DSP. Here is my situation: I am recieving I/Q data at 250kHz rate, demodulating it with demodulation algorithm: IdQ+QdI/I^2+Q^2. Then storing 800 samples and using the Goertzel algorithm to detect 4 different tones. Currently the DSP cannot calculate all of this and I am getting data overrun, I have a flag which tells me that the Goertzel is not finished on the block of 800 before the next block is ready, I have to continually detect tones. The demodulation is done every time a new frame of data comes in, and the Goertzel is run in the backround after 800 samples are stored up (double buffered). I cannot slow down the data rate and I have to detect 4 tones. Currently using a TMS320F28335 DSP running at 144Mhz. Is there a more effiecient way to detect the 4 tones, I have read about sliding Goertzel or sliding DFT, is this more efficient, or have I just met the limit of the DSP number crunching since my data rate is pretty fast. Thanks. -Jacob Fenton
From: Vladimir Vassilevsky on 8 Jan 2010 09:26 jacobfenton wrote: > I could use some help, since I am very new to DSP. Here is my situation: > > I am recieving I/Q data at 250kHz rate, demodulating it with demodulation > algorithm: IdQ+QdI/I^2+Q^2. > Then storing 800 samples and using the Goertzel algorithm to detect 4 > different tones. > > Currently the DSP cannot calculate all of this and I am getting data > overrun, I have a flag which tells me that the Goertzel is not finished on > the block of 800 before the next block is ready, I have to continually > detect tones. The demodulation is done every time a new frame of data comes > in, and the Goertzel is run in the backround after 800 samples are stored > up (double buffered). I cannot slow down the data rate and I have to detect > 4 tones. Currently using a TMS320F28335 DSP running at 144Mhz. > > Is there a more effiecient way to detect the 4 tones, I have read about > sliding Goertzel or sliding DFT, is this more efficient, or have I just met > the limit of the DSP number crunching since my data rate is pretty fast. > Thanks. Several tricks can be applied here; I need to know: What is the SNR? What is the FM deviation? What are the frequencies of the tones? How fast should be the reaction of the detector? You have to distinguish the tones over the background of what? Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com
From: jacobfenton on 8 Jan 2010 10:38 > > >jacobfenton wrote: >> I could use some help, since I am very new to DSP. Here is my situation: >> >> I am recieving I/Q data at 250kHz rate, demodulating it with demodulation >> algorithm: IdQ-QdI/I^2+Q^2. >> Then storing 800 samples and using the Goertzel algorithm to detect 4 >> different tones. >> >> Currently the DSP cannot calculate all of this and I am getting data >> overrun, I have a flag which tells me that the Goertzel is not finished on >> the block of 800 before the next block is ready, I have to continually >> detect tones. The demodulation is done every time a new frame of data comes >> in, and the Goertzel is run in the backround after 800 samples are stored >> up (double buffered). I cannot slow down the data rate and I have to detect >> 4 tones. Currently using a TMS320F28335 DSP running at 144Mhz. >> >> Is there a more effiecient way to detect the 4 tones, I have read about >> sliding Goertzel or sliding DFT, is this more efficient, or have I just met >> the limit of the DSP number crunching since my data rate is pretty fast. >> Thanks. > >Several tricks can be applied here; I need to know: > >What is the SNR? >What is the FM deviation? >What are the frequencies of the tones? >How fast should be the reaction of the detector? >You have to distinguish the tones over the background of what? > > >Vladimir Vassilevsky >DSP and Mixed Signal Design Consultant >http://www.abvolt.com > SNR = 7dB FM deviation = 30kHz Tones = 7500,8460,10760,12140 Reaction = tone must be present for 25ms to be considered valid. Your last question not sure what you mean, there is no backround just tones on a carrier, this is not DTMF, just a carrier dedicated to sending out tones, and only the 4 specific tones. I know that I can only make the DSP look for two tones every other block, thus speeding up my processing, but they want to look for all four tones in every block of data. I also tried changing the number of sample I look at to detect tones, but all that means is that the next block of data is ready faster if I lower the block size. There is potential gain in optimizing the assembly code the compiler spits out, but that is kind of a last resort I hope. Thanks for you help. -Jacob Fenton
From: Jerry Avins on 8 Jan 2010 12:47 jacobfenton wrote: > I could use some help, since I am very new to DSP. Here is my situation: > > I am recieving I/Q data at 250kHz rate, demodulating it with demodulation > algorithm: IdQ+QdI/I^2+Q^2. IdQ+QdI/I^2+Q^2 is not an algorithm, but a formula. The algorithm has steps to compute dQ and dI (where I assume that d stands in for delta) and various others. You may be able to improve the efficiencies of these steps. What language do you use? How good is your compiler at producing fast code? Recognize the IdQ/dt + QdI/dt = d(IQ/dt). Can you wring some speed out of that? Is I^2+Q^2 nearly constant? ... Jerry -- Engineering is the art of making what you want from things you can get. �����������������������������������������������������������������������
From: jacobfenton on 8 Jan 2010 14:51
>jacobfenton wrote: >> I could use some help, since I am very new to DSP. Here is my situation: >> >> I am recieving I/Q data at 250kHz rate, demodulating it with demodulation >> algorithm: IdQ+QdI/I^2+Q^2. > >IdQ+QdI/I^2+Q^2 is not an algorithm, but a formula. The algorithm has >steps to compute dQ and dI (where I assume that d stands in for delta) >and various others. You may be able to improve the efficiencies of these >steps. What language do you use? How good is your compiler at producing >fast code? > >Recognize the IdQ/dt + QdI/dt = d(IQ/dt). Can you wring some speed out >of that? Is I^2+Q^2 nearly constant? > > ... > >Jerry >-- >Engineering is the art of making what you want from things you can get. >??????????????????????????????????????????????????????????????????????? > You are correct, the current algorithm is this: W(n)=I(n)*[Q(n+1)-Q(n-1)]-Q(n)*[I(n+1)-I(n-1)] ----------------------------------------- I(n)*I(n)+Q(n)*Q(n) The code is in C, and I have looked into seeing how efficient the compiler makes code, and just recently found out some ways to make it optimize better, and it did get much faster, but we are still needing more speed out of it. I^2+Q^2 is nearly constant, I will look into that further and see if we can throw it out or not. Thanks again for responses, every little bit helps. -Jacob Fenton |