05-08-2019 03:41 AM
Hi all,
I have two USRP-2901s and want to implement an application that uses the phase difference of the IQ signal received on two antenna channels.
I use the "niUSRP EX Tx Continuous Async" example to send sinusoidal waves as IQ data and receive them using "niUSRP EX Rx Multiple Inputs (Single Device, Multi Channel)" example to measure the phase difference between two antenna iq waveform, RX1/RF0 and RX1/RF1.
I will also upload images to add clarity to the questions. (Please refer to the below figures) IQ waveforms from different antennas have a slight phase difference. As a result of several attempts, a phase difference of about 15 to 16 degrees occurs. But in my application, this phase difference should be less. Is there a way to reduce the difference?USRP-2901 Tx : Front Panel
USRP-2901 Rx : Front Panel
USRP-2901 Tx : Block Diagram
USRP-2901 Rx : Block Diagram
05-09-2019 12:10 PM
I think that the first question that needs to be addressed is what you are expecting. How did you calculate the phase offset before determining it experimentally in LabVIEW? It's possible that the difference could be found there. What are you expecting it to be?
I don't see anything wrong on the TX side, but could you attach the RX screenshot? It's difficult to make it larger when it's embedded.
05-16-2019 12:47 AM - edited 05-16-2019 12:48 AM
Thanks for your reply!
I thought the measured phase is almost 0, because of the antenna's location. I set the Tx Antenna's location to the center of the Rx Antennas. (Rx side USRP, RX1/RF0 and RX1/RF1)
I used "Extract Single Tone Information.vi" to get the phase from IQ waveform. My Rx code was based on USRP Rx Sync and I just added the part that measures the phase of the IQ waveform.
05-17-2019 08:17 AM
I'm curious to know if the code seems to measure what you'd expected if you move the source around in relation to the antennas.
Will you attach that screenshot as a file that can be downloaded? If it's not inline with the text, we can open it and see what's going on in your code. It's really hard to read the one you posted. Maybe put it in a .zip file and attach it. I'm thinking we'll find some good clues in how you set up the measurement.
What frequencies are you working with?
05-20-2019 03:27 AM
Sorry for late,
Here is the code I used to test. (Question.zip, LV v15.0, Toolkit v8.6)
The carrier frequency is 2 GHz. The position of the antenna is arranged in an equilateral triangle. So I thought that there should be little phase difference between the IQ waveforms that USRP receives.
For the exact test, I used RF Power Splitter, ZN2PD2-63-S+. At 2GHz frequency, this device guarantees the phase unbalance up to 3 degrees. (Specsheet of this RF splitter specify 1.5~3 degree) In this condition, USRP's two channel (RF0 and RF1) display the error about -3.6 degrees. Is it acceptable value for SDR device?
05-20-2019 04:21 PM
Are you getting the -3.6 degree phase error consistently?
One of the big factors is going to be the internal LOs. There is jitter on them so you're going to see some level of error introduced there.
05-20-2019 06:33 PM
Yes, I can see the phase error about -3.6 degree when I used RF power splitter.
Is there any specification item related to phase, such as jitter of LO as you mentioned? The only thing I can find is frequency accuracy of LO.
And I have one more question: when running Rx simultaneously on a USRP with two channels, such as USRP-2901, I wonder if these two channels are collecting IQ data in a synchronized state.
Thanks
05-21-2019 12:46 PM
The only spec that I'm aware of is what you found, the frequency accuracy of the LO. I don't think I would expect to see that consistent of a phase difference reading. Are you getting -3.6 degrees on multiple successive tests?
I think this addresses both questions, but if you need more insight, you might make a new post for your second question. If we look at the block diagram of the 2901, we see that the LO feeds one oscillator (for the PLL) for RX and that then is split into I and Q before going to the separate channels. I don't know how things will operate after that, but the timing is the same up to that point. It might get into trace lengths and how the signals are routed internally, if the LO and oscillator are on one board inside the USRP and then split to each RX daughter board, or if the LO and oscillator are on one of the daughter boards and then routed to the second one. Here's the block diagram:
USRP-2901 Block Diagram
http://www.ni.com/documentation/en/usrp-software-defined-radio-device/latest/usrp-2901/block-diagram...
You might also look into calibration of your USRP. It looks like it could be operating out of spec, so calibration might be helpful. Maybe this link will help:
USRP calibration routines
https://forums.ni.com/t5/USRP-Software-Radio/USRP-calibration-routines/td-p/3152544
05-21-2019 07:48 PM
Yes. I get the phase difference up to -3.6 degree. The average difference is roughly -3.2~-3.3 degree. I turned the VI for Tx on and off but a similar result is repeated. (@100MHz Carrier Frequency)
To try the Calibration process you mentioned, I went to the USRP Utility and ran uhd_cal_tx_dc_offset.exe, uhd_cal_tx_iq_balance.exe and uhd_cal_rx_iq_balance.exe, but on USRP-2901 I get an error message that I can not self calibrate because there is no CAL antenna option. Currently, I am making sure there is another way for USRP-2901.
Another interesting finding is that the phase difference varies considerably depending on the carrier frequency. For example, without changing all the other elements, measuring the phase difference after setting the carrier frequency at 1 GHz will measure -1.4 degrees! However, in the 5 GHz carrier frequency RF band, this phase difference is measured at -11 degrees.
The RF power splitter I am currently using is ZN3PD2-63-S +, and even though the inherent phase imbalance of the RF power splitter is taken into account, the USRP seems to have some phase offset per frequency band.
From the phase differences I get, can you help me figure out what formula to use to get the IQ waveform's offset over time?