discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Discuss-gnuradio] cycle/period detection of a cyclic/periodic transmitt


From: kaleem ahmad
Subject: [Discuss-gnuradio] cycle/period detection of a cyclic/periodic transmitter
Date: Wed, 22 Apr 2009 01:02:48 -0700 (PDT)

Hi All, 

I am trying to detect the cycle (or period) time of a cyclic data
transmitter by sensing the channel. The transmitter can be any general e.g.
FSK/ZigBee/Bluetooth etc, and transmitting a fixed packet after every 'T'
ms. I am interested to detect this T using GNURadio/USRP.

The idea is to sense the channel with appropriate sampling time/FFT size and
then analyze the FFT bin to find the value of T i.e cycle time.

The cycle time can be between e.g 1ms...200ms, this corresponds to a
frequency range of 1KHz to 5 Hz. So I need a minimum sample rate of 2
K-samples/sec.  I am using 3 to have some margin.  Now the high-rate data
stream is run through a 1.5 KHz low-pass filter (for anti-aliasing) and
downsampled to a 3 Ksample/sec rate.  A 512 bin FFT now has a resolution of
around 5 Hz per bin (mean 512 FFT time resolution is 200 ms). 

To acheive this I am doing decimation at two levels, one in USRP (with
D=256), and then to further reduce the sampling rate I am using
gr.fir_filter_ccf, as explained in the following.

USRP RF sampling rate----After decimation with D=256-------Second level
decimation with gr.fir_filter_ccf 

    64MHz                       64MHz/256=250kHz                    
gr.fir_filter_ccf(125, filter_coeff) = 2k 


it finally gives me 2ksample/sec-> sample time=500micro sec, which means if
I take 512 fft, I will get a time resolution of 500micro sec * 512 = 256 ms,
with 500 micr sec distance between consective fft bins. 

Now suppose a cyclic data transmisster is transmitting with 10ms cycle time,
i.e. after every 10ms there is a signal to be detected by my USRP system.
>From above calculation 10ms = 500 micro sec * 20....It means that in my 512
FFT bin after every 20 bins there should be a peak (Am I correct??? Please
note that there is only one transmitter in the area, no other source of
interference) 

In similar way if I choose 75, 50 or 25 for second level decimation by
gr.fir_filter_ccf, then I should get a peak after every 33.33, 50, and 100
bins respectively, as explained below. 

gr.fir_filter_ccf(75, filter_coeff) = 3.33k -> 512 FFT resulution = 300 micr
sec -> 10ms = 33.33 bins 
gr.fir_filter_ccf(50, filter_coeff) = 5k -> 512 FFT resulution = 200 micr
sec -> 10ms = 50 bins 
gr.fir_filter_ccf(25, filter_coeff) = 10k -> 512 FFT resulution = 100 micr
sec -> 10ms = 100 bins 

But unfortunately I am unable to get these results, for example with
gr.fir_filter_ccf(125, filter_coeff) I got following results, for few
consective scans: 

To understand these results please not that there are two columns, first is
the power level of the peak and the second is the index of it in 512 FFT bin
(Only peaks are displayed, and all values with smaller than a predefined
threshold value are discarded). 

Amplitude   index_in_512_FFT_array 

----------------------------- 
Scan 1 
18.6298904419 74 
19.0259571075 75 
18.2597370148 87 
19.7134284973 88 
19.5969486237 101 
19.1021556854 114 
18.6094284058 149 
19.4388046265 161 
19.6380805969 162 
20.0642223358 174 
19.3017559052 175 
18.2230033875 187 
----------------------------------------------------------- 

scan 2 

21.5638103485 74 
21.9744911194 112 
23.012506485 125 
21.8563117981 126 
21.370016098 137 
23.2401256561 138 
21.655248642 139 
22.3047294617 151 
----------------------------------------------------------- 

scan 3 

22.1015739441 139 
22.8458404541 151 
22.8282699585 152 
23.0492572784 163 
23.7630844116 164 
22.387878418 165 
22.9494457245 176 
22.7077884674 177 
----------------------------------------------------------- 

 scan 4 

19.5143814087 2 
19.4494800568 15 
20.1066360474 65 
20.4122695923 78 
21.3697834015 172 
20.4298725128 173 
21.0880489349 185 
20.013879776 186 
----------------------------------------------------------- 

scan 5 

19.0756263733 112 
19.4551143646 153 
19.4751834869 163 
19.4504451752 165 
20.5185012817 166 
21.0303726196 175 
21.0539245605 176 
19.1459999084 177 
19.1931247711 178 
20.0467262268 188 
19.1717777252 189 
----------------------------------- 

So you can see that from FFT bin it is impossible to interpret what is the
cycle time, when I used 75/50/25 in fir_filter_ccf or if I used FFT lenght
different from 512, it was still meaningless and I got similar results. 

If you like to have a look at my code then it is very short and is attached.
If some of you can specially have a look on at least the filter
coeefficients and entire decimation process in this code then it will be
great help for me, because I am not very good in filter design. 

Please suggest me what/where is the problem and how can I solve it. 

Any suggestion to calculate this cycle time in a different way will also be
welcomed. 

Thanks and Best Regards 

Kaleem 
http://www.nabble.com/file/p23171564/Cycle_sensing.py Cycle_sensing.py 
-- 
View this message in context: 
http://www.nabble.com/cycle-period-detection-of-a-cyclic-periodic-transmitter-tp23171564p23171564.html
Sent from the GnuRadio mailing list archive at Nabble.com.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]