On 02/25/2018 08:15 PM, Karan Suri via USRP-users wrote:
Hi usrp-users,

I recently started working on a */multilateration/* based localization scheme to detect a tag USRP (reader). The 100MHz OFDM packets (STF +LTF + information bits) are*transmitted at 100 MSps to the reader* via the anchor hub USRP X310. I am new to handling the time_spec and other features available to control transmission. I have to transmit a really huge packet (*>130000 samples ~ 1.3 to 3 ms*) so that the streaming and reception appears to be continuous for a good duration of time frame for accurate reader detection.

Few Questions:
Q1 ; What is the maximum buffer size I can set for transmission. Is it 33445667 samples? I found it on the user manual?

Q2 : Is the read buffer on the receive streamer any different form the transmit buffer in terms of maximum size it can receive before it goes into overflow , API control etc?


Q3 : I assume ,*I cannot stream a 100 MSps data directly using a 1G ethernet car*d without potential underflow. So I used tim_spec feature to transmit after a fixed duration. Within this time the API should be able to fill the buffer at a slower rate (33MSps if that is the max capability), and allow smooth transmission without underflow. I am receive some packets at the reader , but they seem to be truncated, or abruptly starting or ending.

pseudo code to control transmission at 100MSps using 1G:

   metadata.start_of_burst = true;
   metadata.end_of_burst = false;

      while(not stop_signal_called){



           metadata.has_time_spec = false;
           metadata.end_of_burst = false;

*g_usrp->set_time_now(uhd::time_spec_t(0.0));
g_time_spec = g_usrp->get_time_now() + uhd::time_spec_t(0.04);*

           metadata.time_spec =g_time_spec;

           tx_streamer->send(&buff[0], buff.size(), metadata);

           metadata.has_time_spec = false;
           metadata.start_of_burst = false;
           metadata.end_of_burst = true;

           tx_streamer->send("", 0, metadata);

*boost::this_thread::sleep(boost::posix_time::milliseconds(50));*
    }


Please do help. It is really a critical part of my research project. I am limited to using a 1G Ethernet card, and I need to find a work around to the 100MSps transmission issues.

Thanks

Karan Suri
MS. Electrical and Computers
University Of Michigan- Ann Arbor

Very quick look at your code, and you're never setting "has_time_spec = true", so everything will "go out" as soon as you send it.

The RX buffers are relatively small, although I don't have numbers of the top of my head.

But I'll comment that trying to use "tricks" to get around the fact that you don't have a sample interface that can sustain your peak rate is likely a bad path to follow, since things like hardware buffer sizes can change with different releases of software and firmware, etc.


_______________________________________________
USRP-users mailing list
[email protected]
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Reply via email to