From: jacobfenton on
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


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
>
>
>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
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
>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
 |  Next  |  Last
Pages: 1 2 3 4 5 6
Prev: Plastic Logic makes it debut
Next: book for OFDM