From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

USRP Software Radio

cancel
Showing results for 
Search instead for 
Did you mean: 

Transmit Continuous Problem N200

Solved!
Go to solution

Hello,

 

I have build a systems which should continously transmit packages containing only zeros and only at certain time interval (e.g. every 2 seconds) transmit a valid ofdm package. My problem is that the transmit vi "niUSRP Write Tx Data" is too fast. If I want to transmit 10000 samples with an IQ-Rate of 1 MS/sec my transmit-time should be 10 ms. But in Labview the VI only takes about 1 ms to transmit the data to the buffer of the usrp boards and then jumps back and already transmits the next package. Because of this I can't transmit my ofdm package at a certain time stamp as I have no idea on how much data is buffered at the usrp at the moment etc. If I use the "End of Data=true" property of the "niUSRP Write Tx Data"-VI the time is much greater than 10 ms.

 

Anyone any idea?

 

Thanks

0 Kudos
Message 1 of 6
(4,513 Views)

HI EtuelDue,

is it possible if you upload your Code that I could take a look at it?

Maybe you could try to decouple your reading and writing with a producer/consumer architecture.

With this you can buffer your read values and write them wenn you got time to write.

0 Kudos
Message 2 of 6
(4,500 Views)

Hello msind,

 

ProblemOFDMTiming.png

 

I hope this screenshot is also sufficient.

Before this part I am only initializing the USRP board with my IQ-Rate (1.62MS/sec) etc. (#2), generating the OFDM-Blocks/Zero-Blocks (#1) and providing my interval time (#3, e.g. 0.5 seconds). In the sequence structure (#4) I transmit my choosen block (normal Zero-Block), get the USRP-Board time and add the additional time since the last transmission to my total time value (#5) which is basically my counter. If this time becomes greater than my time intervall from #3 I want to switch from only transmitting blocks containing zeros to my OFDM Block. But from #6 I know that although my transmission of e.g. 10000 samples with a sample rate of 1 MS/sec should take about 10 ms the time difference in #6 is only about 1 ms. So basically the data is send to the board in 1 ms and then jumps back to the beginn of my while loop and transmits data again. Because of this I can never be sure when my OFDM-Block is transmitted (Don't know the state of the buffer).

What I want is for the VI to only transmit data after the buffer is empty. If I try the same setup with "end of data=true" I get an addiotional 60 ms delay.

 

I hope this clears up some things.

0 Kudos
Message 3 of 6
(4,495 Views)
Solution
Accepted by topic author EtuelDue

I think the best way to be sure that no value gets lost is the producer consumer architecture.

Maybe you should give it a try

 

If you don't know it you can read some basics here:

http://www.ni.com/white-paper/3023/en/

 

This should do what you want i think 😉

0 Kudos
Message 4 of 6
(4,483 Views)

Thank you very much. This seems to fit very much.

0 Kudos
Message 5 of 6
(4,476 Views)

No problem.

If this is a solution for your problem you could mark it as that, so everyone knows that this question is solved 😉

0 Kudos
Message 6 of 6
(4,473 Views)