USRP Software Radio

cancel
Showing results for 
Search instead for 
Did you mean: 

Start USRP 2920 TX and RX at same time

Hi,

I'm trying to measure the delay and the frequency difference between two USRP-2920 Radios. My way to get there is actually seems a bit strange, but it's part of a bigger project. I want to send sweeped signals (chirps), save the spectrum of the received signals in a matrix (each spectrum in a row) and finally make another FFT over the columns of the matrix and see what happens. 

 

Anyway, my first problem is, that I want to start the TX- and RX-radio at the same time with a VI, where TX- and RX-VI are both included as Sub-VI's. But observing my signals, the delay is always different. Is there a way to start TX- and RX-USRP at exactly the same time?

 

Next problem: How can I save received data row by row in a matrix with a fixed length?

 

Thanks! (at least for reading)

My VI's so far:

Download All
0 Kudos
Message 1 of 6
(3,185 Views)

Hi student31011985,

Your Start TXRX VI calls your two separately created VIs, without dependency. This means that they will run in parallel, but we can not determine which SubVI will start at which time (this is determined by the operating system). I recommend you try using the Initiate VI of the receiving side synchronized to the write Tx Data VI.

 

For your second question:

Do I understand you correctly that you want to populate an array/matrix with each iteration of the Chirp_USRP_RX.vi?

If thats the case you would want to initialize an array/matrix before the loop starts and use in case of an array Replace Array Subset to Replace each row in the array with the recorded data. The Loop index would be your row of the array. If required, the array can be transposed in a matrix.

 

I hope this helps!

regards

 

0 Kudos
Message 2 of 6
(3,138 Views)

Hi,

sry for late response and thanks for helping. 

I recommend you try using the Initiate VI of the receiving side synchronized to the write Tx Data VI. 

How can I do that? 

 

I solved my second problem already a bit different but it works. I'm processing the stored data with Matlab since LabView has problems processing large arrays. 

 

My solution:

 

0 Kudos
Message 3 of 6
(3,121 Views)

Hi student31011985,

 

the NI-USRP functions palette offers a USRP Property node. There you can choose from a variety of clocking and synchronization settings.

0 Kudos
Message 4 of 6
(3,117 Views)

Hi,

You can use the niUSRP Configure Trigger and Set Time VIs to achieve the sync.

Something like the attached image.

 

0 Kudos
Message 5 of 6
(3,100 Views)

Correction:

The image attached in my previous post shows how to synchronize on a single 2920 for both Tx and Rx.

Doing synchronization on two different devices doing different kind of operations (Tx and Rx) will be more involved.
I recommend reading this :
http://forums.ni.com/t5/Software-Defined-Radio/2x2-MIMO-QAM-with-Alamouti-Coding/ta-p/3532638
http://www.ni.com/white-paper/13878/en/
Especially the subAsyncMulti-ChannelTransceiver(NIUSRP).vi and subInitHW (niUSRP).vi which set time on multiple devices at the next timebase edge.

0 Kudos
Message 6 of 6
(3,092 Views)