From: glen herrmannsfeldt on
Jerry Avins <jya(a)ieee.org> wrote:
(snip)

> By convention, we use square brackets for discrete sequences and curved
> parentheses for continuous quantities and for grouping. I would write

> 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]

I thought it was C programmers used square brackets and Fortran
programmers used parentheses.

-- glen
From: Jerry Avins on
glen herrmannsfeldt wrote:
> Jerry Avins <jya(a)ieee.org> wrote:
> (snip)
>
>> By convention, we use square brackets for discrete sequences and curved
>> parentheses for continuous quantities and for grouping. I would write
>
>> 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]
>
> I thought it was C programmers used square brackets and Fortran
> programmers used parentheses.

We don't have subscripts at the ready, so we use brackets instead. "So
many conventions, so few fonts."

Jerry
--
Engineering is the art of making what you want from things you can get.
�����������������������������������������������������������������������
From: Fred Marshall 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.
>
> -Jacob Fenton
>
>
Jacob,

Let's see. You are sampling at 250kHz and taking 800 samples. So
that's 3.2msec of data and that gives about 312Hz resolution (1/0.0032).

The closest tones are 960Hz apart so the resolution available may
present a challenge as they are only 3 resolution cells / sample
intervals apart in frequency.

Just checking....

So, as a check, you would like to have a bandpass filter with transition
bands not much more than 1kHz and not much passband width.
And, I'd assume that you'd like the filter to settle down after about
250 samples or so.
The quicker the settling, the shorter the filter.
The shorter the filter, the longer the transition bands and/or larger
the stopband ripple.

Would it make sense to decimate first to get the sample rate down? I
should think so. It wouldn't take a lot of filtering do accomplish that
I shouldn't think. After all, all of the tones are in the very low end
of the range of Fs. A factor of 8 might even be possible getting you
down to 31.25kHz. A that, the highest tone would be at 78% of Fs/2.

Then you could think of a sample that's 100 samples long and a filter
that's more like 30 samples long or so.

i.e. 30 samples at 31250 is around 1msec so would have transition bands
around 1000 Hz which appears to be what you need....

Lot of arm waving here, be sure it makes sense.....

Fred







From: kevin on
>jacobfenton wrote:
(snip)

Well. I see that Fred Marshall beat me to it, but I was going to raise
a similar issue.

In the frequency domain, your ‘bin’ spacing is sample rate/N, so if
you were to do an FFT (or DFT’s spanning the range of interest), you’d
have 250k/800 = .3125 kHz = 312.5 hz separation between adjacent
frequency outputs. So FFT output 0 (or DFT using k = 0) would
correspond to 0 hz, output 1 would be 312.5 hz, output 2 is 2 x 312.5
hz (= 625.0 hz), output 3 is 3 x 312.5 hz (= 937.5 hz), etc.

So the (fractional) DFT bins corresponding to your 4 tones are:

K1 = 7500/312.5 = 24
K2 = 8460/312.5 = 27.072
K3 = 10760/312.5 = 34.432
K4 = 12140/312.5 = 38.848

Given your sample rate and N, you’ve only got a few bins separation
between some of the above numbers, so your resolution is not all that
great in the frequency domain. Whether you use Goertzel, or FFT, or
DFTs or sliding DFT, your 4 tones of 7500,8460,10760,12140 are going
to be bunched up within the 14 bin span above, and you may have some
leakage problems.

As Vladimir noted, your sample rate of 250k is way too high given that
your highest tone is 12140. You really don’t need more than 25k. By
lowering your sample rate, you can improve the ability to ‘resolve’
closely spaced tones in the frequency domain.

Now if your SNR were higher, a simple suggestion would be to use only
every tenth sample, giving you a sample rate of 25k. I don’t think
you can keep the same N, though, as this probably exceeds your 25 ms
time. But if you used, say N = 100 points, then your bin spacing
would be 25k/100 = 250 hz, and the 4 bins shown above would exhibit
greater separation (replace 312.5 above with 250 to get the DFT
indexes for the tones when using sample rate = 25k and N = 100).

Using 4 DFTs, each one ‘tuned’ to the frequency of one of the 4 tones,
you could examine the amplitude squared output of each DFT filter and
compare to a threshold to determine if the tone is present. If you
wanted to reduce leakage effects, use a window on the data. If you
compute things carefully, you can get the windowing for free by using
look-up tables that contain the pre-computed sin/cos values needed by
the DFT, multiplied by the window points.

If you want to get an output after each input sample, then you could
use a sliding DFT and compute it for the 4 different DFT index
values. Computationally, a DFT or a sliding DFT will be similar in
terms of number of operations per sample.

Of course, you may instead want to use decimation first, followed by
the filtering operations that Fred suggested.

Kevin McGee
From: Vladimir Vassilevsky on


kevin wrote:

> As Vladimir noted, your sample rate of 250k is way too high given that
> your highest tone is 12140. You really don’t need more than 25k.

Since his bandwidth is 4.6k, he doesn't need the samplerate higher then
9.2k. Perhaps, with some creativity applied, the samplerate could be
made even lower. The tricky part is dealing with the aliasing while
demodulating FM, however this can be handled.
Heck, the signal is stationary over 25ms, that means the sample rate of
80 Hz is sufficient.

> Using 4 DFTs, each one ‘tuned’ to the frequency of one of the 4 tones,
> you could examine the amplitude squared output of each DFT filter and
> compare to a threshold to determine if the tone is present.

The tone detector part is trivial and not very interesting.

Vladimir Vassilevsky
DSP and Mixed Signal Design Consultant
http://www.abvolt.com
First  |  Prev  |  Next  |  Last
Pages: 1 2 3 4 5 6
Prev: Plastic Logic makes it debut
Next: book for OFDM