Large Sample Spikes after Each Packet in tx_bursts Example

Hi All, (this might be a duplicate e-mail – if so, sorry everyone!)

I am trying to generate on-off traffic patterns with high timing
accuracy, so I decided to use the tx_timed_samples and tx_bursts
examples to do so. To start, I tried to understand the examples by using
tx_bursts to send constant samples of 0.3+0.3j to the USRP_A to send
across a wire to another USRP_B. Then, I used rx_samples_to_file on the
receiver end to pick up the signal and store it into a .dat file using
type “short.” Lastly, I used the following guide to import the samples
into matlab using the read_short_binary and split_vect functions
provided ingnuradio/gnuradio-core/src/utils/:

http://gnuradio.org/redmine/projects/gnuradio/wiki/Octave

After I did that, I combined the two columns from the output after
split_vect to make a complex number. I then plotted the magnitude of the
samples because all I care about is to see if there is a signal or not.
Although that came out successful, I am running into these spikes of
high sample magnitudes separated by the size of the samples per buffer
(spb or samps_per_buff) which is automatically set to 363 samples (to
fit in one ipv4 packet I presume). A picture of it can be seen by
following the link below:

You can see the magnitude hovers over 30 which is good (noise hovers
around 5). But, as you can see, there are two spikes
withsuppressedsamples around it. These are exactly spaced 363 samples
apart (this changes as I change the samples per buffer at the
transmitter). Does anyone have an idea where this is coming from? I’m
running out of ideas of where to look to figure out the problem. Any
ideas of what I can do to remove it (even manually)?

Regards,
Jason T.

You can see the magnitude hovers over 30 which is good (noise hovers
around 5). But, as you can see, there are two spikes with suppressed
samples around it. These are exactly spaced 363 samples apart (this
changes as I change the samples per buffer at the transmitter). Does
anyone have an idea where this is coming from? I’m running out of
ideas of where to look to figure out the problem. Any ideas of what I
can do to remove it (even manually)?

Regards, Jason T.

If you are seeing transients at the beginning of a burst, thats probably
the half band filters. They are implemented in block ram and dont clear
between bursts.

On the other hand, if they are at the end, it might actually be that
mini EOB packet. Its supposed to be a zero length packet but its
actually sending a single sample (value zero). If this is the case, you
might try setting EOB on the last packet actually with sample data.

-josh

block ram^H^H^H^H^H^H^H^using SRL16’s
:wink:

Hi All,

“If you are seeing transients at the beginning of a burst, thats
probablythe half band filters. They are implemented in block ram and
dont clear
between bursts.”

I’m actually sending one burst of a very long length so I can emulate an
always-on signal (i.e. I’m not letting tx_bursts actually send an EOB
packet). However, I still get the large samples withsuppressedsamples
around. The number of samples between every large sample (363) is
directly equal to the samples per buffer size. i.e. the size of buffs
used when invoking tx_stream->send(buffs, samps_to_send, md, timeout);

Regards,
Jason


From: Josh B. [email protected]
To: [email protected]
Sent: Thursday, June 14, 2012 7:57 PM
Subject: Re: [Discuss-gnuradio] Large Sample Spikes after Each Packet in
tx_bursts Example

You can see the magnitude hovers over 30 which is good (noise hovers
around 5). But, as you can see, there are two spikes with suppressed
samples around it. These are exactly spaced 363 samples apart (this
changes as I change the samples per buffer at the transmitter). Does
anyone have an idea where this is coming from? I’m running out of
ideas of where to look to figure out the problem. Any ideas of what I
can do to remove it (even manually)?

Regards, Jason T.

If you are seeing transients at the beginning of a burst, thats probably
the half band filters. They are implemented in block ram and dont clear
between bursts.

On the other hand, if they are at the end, it might actually be that
mini EOB packet. Its supposed to be a zero length packet but its
actually sending a single sample (value zero). If this is the case, you
might try setting EOB on the last packet actually with sample data.

-josh

Hi All,

After messing with the code, I think I figured out the problem. I think
it’s an issue of an underflow like Josh suggested.

tx_waveformsworks just fine for me when I send a constant signal (the
spikes disappear). However, when I add some extra lines to the loop that
populates “buff” and sends it with things such as print statements or
more counters, I start invoking underflows. After learning this, I
cleared out as much overhead as I could in the packet sending loop in
tx_bursts.cpp and found that the signal stabilized without the large
sample spikes I posted about earlier.

Maybe if I try to add high priority to the program, I can reduce
underflow problems…

-Jason


From: Josh B. [email protected]
To: Jason T. [email protected]
Cc: “[email protected][email protected]
Sent: Monday, June 18, 2012 11:57 AM
Subject: Re: [Discuss-gnuradio] Large Sample Spikes after Each Packet in
tx_bursts Example

On 06/18/2012 10:51 AM, Jason T. wrote:

(363) is directly equal to the samples per buffer size. i.e. the size
of buffs used when invoking tx_stream->send(buffs, samps_to_send, md,
timeout);

Sounds like you made some modifications to the example: Maybe you are
seeing the result of an underflow, or the buffer isnt filled for all
nsamps, or something during the checking for burst ack code…?

Perhaps the tx_waveforms example will be a better demonstration of
continuous streaming for you.

Also, this is the gnuradio mailing list, so I am going to recommend the
gnuradio companion as a great way to get started w/ the hardware and get
a good feeling for its operation:
http://gnuradio.org/redmine/projects/gnuradio/wiki/GNURadioCompanion

-josh

On 06/18/2012 10:51 AM, Jason T. wrote:

(363) is directly equal to the samples per buffer size. i.e. the size
of buffs used when invoking tx_stream->send(buffs, samps_to_send, md,
timeout);

Sounds like you made some modifications to the example: Maybe you are
seeing the result of an underflow, or the buffer isnt filled for all
nsamps, or something during the checking for burst ack code…?

Perhaps the tx_waveforms example will be a better demonstration of
continuous streaming for you.

Also, this is the gnuradio mailing list, so I am going to recommend the
gnuradio companion as a great way to get started w/ the hardware and get
a good feeling for its operation:
http://gnuradio.org/redmine/projects/gnuradio/wiki/GNURadioCompanion

-josh