discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] Expected behavior during underruns


From: Josh Blum
Subject: Re: [Discuss-gnuradio] Expected behavior during underruns
Date: Tue, 14 Dec 2010 15:34:15 -0800
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101208 Thunderbird/3.1.7

> Thanks for your answer Thomas!
> 
> Our observations shows also that the usrp2 doesn't drop any samples
> when an underrun occur. If we drop samples at the host, can we get a
> continous stream of sample at 25Msamp/s that is synchronous? What is
> your maximum continous bandwidth?
> 

Underflows occur on transmit, nothing can drop because this is a lack of
samples.

Overflow occurs on receive. The host cannot back-pressure the USRP2, so
samples backup into the host and are dropped in the kernel at the packet
level.

Every packet has a timestamp which can be used to determine exactly what
packets have gone missing in a continuous stream. See the benchmark_rx
example which demonstrates this.

> I've been looking in the source code and tried to find out where to
> implement the sample dropping. My thoughts so far is that it should
> be somewhere in vrt_packet_handler.hpp and/or io_impl.cpp in the send
> functions and get_send_buffs function.
> 

Is there something that you think the streaming API is missing please
let me know. I think you can accomplish what you need with the API
without modifying the underlying implementation.

> The underruns are received(detected) in the pirate loop in
> io_impl.cpp, correct?!  It's not obvious for me how to figure out
> which samples that I should dropp to get the rest of the samples
> synchronized again. Can you give me some hints?
> 

Asynchronous messages (which include transmit underflow) are received in
this loop and pushed into a queue. You can retrieve these events with
device::recv_async_msg(...)

-Josh



reply via email to

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