Re: [Discuss-gnuradio] USRP Rx signal levels

2005-06-18 Thread Eric Blossom
On Sat, Jun 18, 2005 at 01:26:27AM -0400, Krzysztof Kamieniecki wrote:
> I confused as to how the USRP FPGA scales the ADC signal. It appears 
> that on the setup we are using, which has some customized DC Rx 
> daughter boards, when we put in a 2V p-p square wave with a DDC center 
> frequency of zero and a decimation rate of 64 we are getting data that 
> is p-p ~16000 counts, is this normal? I'll be checking how the normal 
> Rx boards behave on Sunday.

Krys,

Seems low, but it may be normal.  Matt could confirm, but he's on his
way to Green Bank.

Eric


___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


[Discuss-gnuradio] FFT of FFTs

2005-06-18 Thread James Cooley

Hi all,

I'm trying to take an FFT of an FFT Basically, I want to tune to a 
signal, and for a given RF frequency, try to spot periodic usage of that 
frequency. Is this possible? What I have now is hopelessly slow, so I'm 
not really sure if I've got it right.


My construct so far is like this:


# this is my own guts block, made created exactly like fftsink, except 
it does not
# write to a pipe and have the gui, etc. It's just a drop-in guts block 
with the serialized floats on the output

self.fft_one = fft_block_c(self, fft_size=512, sample_rate=usrp_rate)
 
# another of my own, I'm not using it for my initial test, but thought 
I'd run it by you.. Complex fft spits out
# positive freq buckets followed by negative freqs in the 2nd half of 
the stream, this just reorders in freq order,

# just like the input watcher code of fft_sink does
#self.reorder_fft = gr.cfft_reorder(512)

# split up each of 512 fft buckets into its own stream
self.v2s = gr.vector_to_streams(gr.sizeof_float, 512)
 
#connect what we have

self.connect(src, self.fft_one, self.v2s)

# make null sinks to terminate the flow graphs for all but the one, 
selectable bucket that we want to look at

# (in this case, bucket 0)
for i in range(512):
   if(i == 0):
   self.fft_two = fftsink.fft_sink_f (self,
  panel,
  title="2nd Order FFT",
  fft_size=512,
  sample_rate=usrp_rate/512,
  baseband_freq=0)

   self.connect((self.v2s,i),self.fft_two)
   else:
   ns = gr.null_sink(gr.sizeof_float)
   self.connect ((self.v2s,i), ns)



___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


Re: [Discuss-gnuradio] FFT of FFTs

2005-06-18 Thread Eric Blossom
On Sat, Jun 18, 2005 at 08:18:38PM -0400, James Cooley wrote:
> Hi all,
> 
> I'm trying to take an FFT of an FFT Basically, I want to tune to a 
> signal, and for a given RF frequency, try to spot periodic usage of that 
> frequency. Is this possible? What I have now is hopelessly slow, so I'm 
> not really sure if I've got it right.

Hi Jamie,

Here are a couple of suggestions.  If there are relatively few
frequencies that you want to observe for periodic occupancy, I would
suggest extracting the frequency bands of interest using a
gr.freq_xlating_fir_filter for each one.  If there are lots of them,
and they are evenly spaced, then the dft filterbank is what you want
to split them out (blksimpl/filterbank.py).

Once you've got your individual streams of signals, for each one I
would compute an estimate of whether it is occupied.  You could do
this by computing the magnitude of the stream (gr.complex_to_mag) and
then low pass filtering that with a gr.iir_filter, possibly followed
by a limiter (which would need to be written).  At this point, for
each of your input streams, you have an output stream that is
effectively a stream of 1's and 0's, where 1 means "is occupied".
Then run each of those streams into it's own FFT.   Point this whole
pipeline at some kind of TDMA input (GSM basestation?) and you
ought to see the slots (assuming the basestation isn't driving all
the slots all the time).

Eric


___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


Re: [Discuss-gnuradio] FFT of FFTs

2005-06-18 Thread Frank Brickle

Eric Blossom wrote:


Once you've got your individual streams of signals, for each one I
would compute an estimate of whether it is occupied.


Good suggestions.

Elaborating on this a little, you might consider taking 
differences of successive magnitude or power spectra. If 
you're actually looking for periodicities in the onsets and 
releases, the resulting positive and negative pulses are 
very easy to track. This is a standard technique for 
first-order activity detection in spectral measurements.


Another productive technique is to take the wavelet 
transform of the magnitude, power, or difference spectrum, 
especially when the signals of interest are smeared over 
several bins. In this case you are looking for large wavelet 
coefficient magnitudes in the dilation region of the wavelet 
transform that corresponds to the spreading bandwidth in the 
 original spectrum.


There is yet another arsenal of methods to throw at this 
problem if you are in a position to keep a full tableau of 
past spectra in three-dimensional form. For example, a 
conventional histogram equalization on such a tableau of 
past spectra is quite effective at bringing "activity 
stripes" out of the noise, and there is a robust likelihood 
score comparing before- and after-equalization densities. 
But that's really getting ahead of the subject...


Frank



___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio