[USRP-users] Align CORDICS in the DSP ( N200x2, MIMO, SBX, GPSDO)

John Shields john.shields at xtra.co.nz
Fri Oct 13 18:00:17 EDT 2017

Thanks Marcus,
                         Good to know that I don’t need to do anything else. I presume your statement is true even if the slave N200 doesn’t have a ‘real’ PPS signal but only Time_Of_Day copied over. I say this because the slave has ‘no sync’ as it’s option since it fails waiting for a real PPS signal if I set unknown_pps as the option.

                         I have sent off my GRC and modified Python file (for SBX LO alignment as we discussed before) a couple of days ago to support at ettus so will see what they come up with.

                         Kind Regards,


From: Marcus D. Leech via USRP-users 
Sent: Saturday, October 14, 2017 10:22 AM
To: usrp-users at lists.ettus.com 
Subject: Re: [USRP-users] Align CORDICS in the DSP ( N200x2, MIMO, SBX, GPSDO)

On 10/13/2017 04:57 PM, John Shields via USRP-users wrote:

      From the Hardware Driver and USRP Manual, under the section on Align CORDICs in the DSP, it says :

  In order to achieve phase alignment between USRP devices, the CORDICS in both devices must be aligned with respect to each other. This is easily achieved by issuing stream commands with a time spec property, which instructs the streaming to begin at a specified time. Since the devices are already synchronized via the 10 MHz and PPS inputs, the streaming will start at exactly the same time on both devices. The CORDICs are reset at each start-of-burst command, so users should ensure that every start-of-burst also has a time spec set.

  For receive, a burst is started when the user issues a stream command. This stream command should have a time spec set:

  uhd::stream_cmd_t stream_cmd(uhd::stream_cmd_t::STREAM_MODE_NUM_SAMPS_AND_DONE);
  stream_cmd.num_samps = samps_to_recv;
  stream_cmd.stream_now = false;
  stream_cmd.time_spec = time_to_recv;

  The next section mentions how to LO align SBXs and I have done this in python (and it has been checked by an expert) but I still get a variable phase offset between both channels on the USRPs and suspect the CORDICs are spinning relatively. 

  So I have a couple of questions re: CORDIC alignment:

  1) if my desire is to stream for a looooong time (e.g. days) what stream command do I give in Python?

  2) I have seen one posting where the person showed that alignment of the CORDICs should happen after a timed_cmd tune – is this correct, or should it be before, or does it not matter?

  3) has anyone been able to get N200r4x2, GPSDO, MIMO cable, 2xSBX to align with zero phase offset or, at least, a constant phase offset which doesn’t vary between each run of the GRC file?

                   Kind Regards,


The UHD source block in GRC does all of this, except for the timed-command wrapper for tuning.

It starts streaming at a fixed time, and uses timestamps to time-align samples.

So the only thing left would be PLL synthesizer ambiguity.

USRP-users mailing list
USRP-users at lists.ettus.com

This email has been checked for viruses by Avast antivirus software.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ettus.com/pipermail/usrp-users_lists.ettus.com/attachments/20171014/fe84415c/attachment-0002.html>

More information about the USRP-users mailing list