Re: [Discuss-gnuradio] USRP Rx signal levels
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
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
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
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