# 802.15.4 performance analysis: pin Oscilloscope on IF

**URL:** <https://www.ruby-forum.com/t/802-15-4-performance-analysis-pin-oscilloscope-on-if/207416>\
**Category:** GNU Radio\
**Created:** [May 25, 2011, 4:22pm UTC](https://www.ruby-forum.com/t/802-15-4-performance-analysis-pin-oscilloscope-on-if/207416 "2011-05-25T16:22:26Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![luislavena](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/0ea827/32.png) [@luislavena](https://www.ruby-forum.com/u/luislavena)\
**Post date:** [May 25, 2011, 4:22pm UTC](https://www.ruby-forum.com/t/802-15-4-performance-analysis-pin-oscilloscope-on-if/207416/1 "2011-05-25T16:22:26Z")

</div>

Hi!

- To my background there’s to say - before you read this - I’m just a  
software-dev. I have little expertise when it comes to hardware.

I support the development of a real-time application that uses  
802.15.4 on an AT86230RF Chip. That RF chip is IEEE 802.15.4-2003  
compliant.  
It has got a data-rate of 250 kBit/s. Let’s say I want to send 10  
Byte. 2 Bytes CRC are added, and 6 Bytes from the Physical Layer  
(Preambel + Length Field + Delimeter).  
So I send 144 Bits (12 Byte PSDU are 12 _8 and 48 Bytes Physical Layer  
due 6 \* 8). Theoretically I get 0,576 ms per transmission using 250  
Kbit/s: 1/250k_144\*10^3.

Now… I use my USRP with an XCVR, start the sender, and record some  
transmissions into cfiles. I plot the Q channel, and calculate the  
transmission lengh: like how many samples do I see with a high  
amplitude relative to the sample-rate. That’s when the RF chip is  
active. I get 3,45 ms.

So the difference between what I theoretically can assume as TX time,  
and what I see in reality is abnormally high.

My questions:  
1.) Can I use an Oscilloscope to find out whether there’s signal on  
IF. The Oscilloscope operates on something like 100 MHz, so I want the  
down-scaled frequency.  
I read that the RF frontend down-scales to the ADC. I can pin-point  
the microcontroller with the chip. Can I also pin-point the USRP2 with  
the XCVR (or RFX)? I could correlate the state-changes of the RF Chip  
that way.

2.) I suspect the differences result from state-changes on the RF chip  
(PLL\_ON -\> TX). Is anybody aware of a similar performance analysis on  
Zigbee for real-time applications? As I stated out I’m not a  
hardware-expert.

3.) I use the Gnuradio Companion, and record from the USRP2 directly  
into a cfile. Is there any way to apply a filter to be able to  
automatically detect the start and end point of a high-amplitude that  
represents sending activity? I tried to use the integrator to lower  
the amplitude (I’m not interested in demodulation at this point, just  
tx start and end). But that doesn’t work very well.

I hope my terminology isn’t too crude 😉

Best,  
Marius

---

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [May 28, 2011, 3:51pm UTC](https://www.ruby-forum.com/t/802-15-4-performance-analysis-pin-oscilloscope-on-if/207416/2 "2011-05-28T15:51:56Z")

</div>

On Wed, May 25, 2011 at 3:16 PM, Marius [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> (Preambel + Length Field + Delimeter).  
> So the difference between what I theoretically can assume as TX time,
> 
> tx start and end). But that doesn’t work very well.
> 
> I hope my terminology isn’t too crude 😉
> 
> Best,  
> Marius

Marius,  
While I _think_ there is a way to do what you are asking in 1 and 2, I  
really can’t remember right now, nor am I at a spot where I can looking  
into  
it. I’m also trying to think if that’s really your best bet for learning  
what you are looking for, but at least it will be educational 🙂

As for 3., that’s a bit difficult. You can do all sorts of things to  
detect  
if you have a signal or not. The most agnostic way is to use a power  
detector with a threshold level. We have a squelch block for this.

Since you know the signal you are looking for, though, you can get a  
more  
tuned algorithm for signal detection. You should be able to create a  
matched  
filter and detect if there is anything in the output. That should be  
(unless  
I’m not thinking clearly right now) the ML approach to detecting if you  
have  
a signal.

Tom

---

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [May 28, 2011, 7:33pm UTC](https://www.ruby-forum.com/t/802-15-4-performance-analysis-pin-oscilloscope-on-if/207416/3 "2011-05-28T19:33:02Z")

</div>

On Sat, May 28, 2011 at 6:50 AM, Tom R. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> > It has got a data-rate of 250 kBit/s. Let’s say I want to send 10  
> > active. I get 3,45 ms.  
> > the XCVR (or RFX)? I could correlate the state-changes of the RF Chip  
> > represents sending activity? I tried to use the integrator to lower  
> > While I _think_ there is a way to do what you are asking in 1 and 2, I  
> > a signal.  
> > Tom
> 
> * * *
> 
> Discuss-gnuradio mailing list  
> [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> [Discuss-gnuradio Info Page](https://lists.gnu.org/mailman/listinfo/discuss-gnuradio)

I took a quick look at the 15.4 standard, your best bet for finding a  
802.151.4 frame is to search for the preamble of each packet. As Tom  
mentioned, the maximum likelihood (ML) detector for this is a matched  
filter. Which in math terms is the magnitude of the correlation  
(sliding inner product) between the known preamble sequence and your  
received signal. The point with the largest magnitude is the start of  
the 15.4 frame.

Since 15.4 works off of a spread spectrum system, this magnitude peak  
should be very well defined and look like a large spike (pretty sure  
this is correct, Tom?). If there is no frame, the correlation should  
just appear as random noise.

I suggest that you download the standard from IEEE and figure out the  
preamble sequence.

–Colby

---

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [May 31, 2011, 8:47pm UTC](https://www.ruby-forum.com/t/802-15-4-performance-analysis-pin-oscilloscope-on-if/207416/4 "2011-05-31T20:47:40Z")

</div>

On Sat, May 28, 2011 at 1:31 PM, Colby B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> > > 802.15.4 on an AT86230RF Chip. That RF chip is IEEE 802.15.4-2003  
> > > transmission lengh: like how many samples do I see with a high  
> > > I read that the RF frontend down-scales to the ADC. I can pin-point  
> > > into a cfile. Is there any way to apply a filter to be able to
> > 
> > Since you know the signal you are looking for, though, you can get a more  
> > I took a quick look at the 15.4 standard, your best bet for finding a  
> > just appear as random noise.

Yes, I think that’s correct. If you are critically sampled, then it  
should  
look like a large spike when you get the hit.

Tom
