Hello everyone, TwinRXes requires special treatment when setting frequency in order to keep co-channel phase differences across multiple executions of a program communicating with USRP.
What exactly 'treatment' I mean can be seen for example here: https://github.com/EttusResearch/gr-doa/blob/master/python/twinrx_usrp_source.py#L100 or here: https://github.com/gnuradio/gnuradio/blob/master/gr-uhd/apps/uhd_app.py#L298 The procedure is following (correct configuration of LO export and LO sources is assumed): 1. set the frequency for the channel exporting LOs, and store result, 2. set the frequency for the rest of the channels using the result saved previously and POLICY_MANUAL for rf and dsp, 3. set the frequency again for all channels with use of timed commands. In uhd_app's constructor there is also call to set_time_unknown_pps between points 2 and 3. In twinrx_usrp_source.py set_time_unknown_pps is called before point 1. The placement of this function call after the first setting of the carrier frequency seems to be crucial. Without it there are random 180 degree changes of phase differences between channels from one run to another. And this issue can be observed for twinrx_usrp_source.py, because it calls set_time_unknown_pps before setting the frequency (checked on UHD_3.15.0.git-13-g52138314). I also changed different settings to see what effects they have. I didn't notice any effect of POLICY_MANUAL setting in point 2. Setting the frequency in regular way seems to work just as well. Also removing point 3 completely (setting freq. with use of timed commands) seems to not have any effect for TwinRX (I checked this with use of sine wave as the input signal, in case it is important). In the end what I did was configuring LO export/sources in GNU Radio and adding usrp.set_time_unknown_pps(..) at the end of the of the constructor. As a result co-channel phase differences were (~) constant across multiple runs. My question: 1. What is the rationale for all of the steps of frequency setting for TwinRX? Did I have luck that most of them didn't have any effect for me? 2. Why is the call to set_time_unknown_pps required at all? And why when it is called after the first setting of carrier frequency in all channels, it fixes the issue with 180 degree phase shifts from one run to another? If it's called before, it doesn't seem to have this positive effect. -- Best Regards, Piotr Krysik _______________________________________________ USRP-users mailing list USRP-users@lists.ettus.com http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com