USRP Software Radio

cancel
Showing results for 
Search instead for 
Did you mean: 

PPS Trigger Syncing Issue

I have been working with some of the USRP Streaming examples from LabVIEW.  My setup consists of USRP-2943R devices with an Octoclock-G.  My issue is that I am able to get my PPS triggering circuit to work when interfacing with the USRPs through the driver and running completely from the host. However, I cannot get my PPS triggering circuit to work with the FPGA implementation of the streaming examples.  This is for either half-duplex Rx or Tx, or for the full-duplex Rx and Tx. 

 

I am familiar with the trigger settings on the front panel(future time event, immediate, etc.) and have tried all sorts of configurations.  I have also made sure that I have selected PPS instead of AUX on the front panel.  I just have the following error

 

SyncFails.JPG

 

My Octoclock-G circuit is wired in a star configuration with the PPS and REF out of the Octoclock-G to the PPS and REF in of the RIOs.  This is strange because my synchronization setup works fine when programming with the basic host VIs, but yields errors with the streaming examples.

0 Kudos
Message 1 of 7
(6,256 Views)

GenericAccount,

Take a look at my reply to a previous question about synchronization to make sure your USRPs are wired up properly for signal-based synchronization. Here's another reply about synchronization that discusses configuring the 6674T too. Those threads also contain additional useful posts, so I'd recommend reading through them in their entirety.

 

I found one of your previous threads that I replied to; was there any resolution to that issue?

 

For signal-based synchronization via the PPS TRIG lines, here's how you need to wire up your USRPs. Notice the Octoclock and the 6674T. Also notice that the master USRP TRIG OUT is going to the OctoClock (through the 6674T). Can you confirm you have your devices wired up properly? Make sure your OctoClock is set to External and the External LED is lit too. If not, your OctoClock will not distribute an input trigger.

 

cabling for signal-based synchronization

 

Synchronization on the USRPs is difficult. I'm guessing I haven't answered all of your questions in this one post, but hopefully it's a start! Let me know how things go!

0 Kudos
Message 2 of 7
(6,248 Views)

I actually had already studied the threads that you had posted.  But, I do not think that it resolves my particular issue.  The issue in my previous thread that you had mentioned was actually taken up by a service request with some Application Engineers at NI. While consulting with them it was found that we would not need the PXIe-6674T module as our Octoclock-G unit should be able to provide the triggering that is necessary without the buffering that would be required if a RIO was used as the trigger source.  This can be referenced from the Octoclock-G datasheet.  So, my timing circuit at this momment is as shown as below.  It should be noted that the Primary Reference switch on the Octoclock-G is set to Internal.

OctoclockG circuit.png

Unfortunately, we still had issues during my service request.  The Application Engineers had just recommended moving away from LabVIEW Communications Suite to regular LabVIEW and the issues we had were never really solved. 

 

What is really killing me is that I can successfully apply the PPS triggering while interfacing through the USRP driver on the host VI, for example

 

USRPDriverSyncSetup.JPG

 

and my program runs without any run-time sync errors.

0 Kudos
Message 3 of 7
(6,227 Views)

@GenericAccount wrote:

I actually had already studied the threads that you had posted. 


Awesome!



While consulting with them it was found that we would not need the PXIe-6674T module as our Octoclock-G unit should be able to provide the triggering that is necessary without the buffering that would be required if a RIO was used as the trigger source. 


Yes, the X310's trigger out *should* be strong enough for the OctoClock, but it's not. I've run the X310's trigger out (1) through a scope, (2) through the OctoClock then to a scope, and (3) through a 6674T to the OctoClock then to a scope. With (2), the *pulse width* is truncated by 20%, which breaks the synchronization algorithm used by USRP RIO. It is required to buffer the X310's trigger out before it hits the OctoClock.



So, my timing circuit at this momment is as shown as below.  It should be noted that the Primary Reference switch on the Octoclock-G is set to Internal


I can guarantee you this will not work for *signal-based* synchronization. The fundamental requirement is the trigger out from one master USRP goes to the trigger in of all the USRPs. Your current wiring does not do this. It may be useful to point on the PPS TRIG IN/OUT on the X310 is just a wire to the FPGA. For signal-based synchronization, that port is used as a generic trigger port--it is *not* a PPS.
Your setup is perfect for time-based synchronization though! I'll leave the discussion of time-based synchronization for the other thread.



The Application Engineers had just recommended moving away from LabVIEW Communications Suite to regular LabVIEW and the issues we had were never really solved.


Oh no! I'm sorry to hear this. As you've already experienced, the behavior is the same in LabVIEW Communications as it is in regular LabVIEW. Please continue to use whichever version of LabVIEW is a better tool for you. The USRP synchronization code will be the same between the two. (There's a slight caveat, since LabVIEW Communications bundles in a specific NI-USRP driver release. This means that newer NI-USRP driver releases will apply to regular LabVIEW, but not LabVIEW Communications 1.0/1.1.)



What is really killing me is that I can successfully apply the PPS triggering while interfacing through the USRP driver on the host VI, and my program runs without any run-time sync errors.


Yes. I'm sorry it's not straight-forward to move from the NI-USRP host API to the USRP RIO API. That NI-USRP example is using time-based synchronization. Time-based synchronization uses a common PPS (pulse per second) signal. The PPS is usually distributed from an OctoClock. Again, I'd like to point out that the PPS TRIG IN/OUT ports on the X310 are merely wires to the FPGA--the ports themselves do not implement anything to create pulse per second signal.

 

Ok, that was a bunch of stuff. Hopefully this helps! Let me know what you'd like to do from here and I'll help out however I can.

0 Kudos
Message 4 of 7
(6,222 Views)

hello brooksprumo,

  I'm setting up a beamforming prototype system lately, where there are two NI-USRPs 2920 acting as transmitter and  wired  from one to the other through  mimo cable, but it doesn't have beamforming effects, so, what's the problem, does the mimo cable ensure that the two transmitters transmit signal together, or i functionally need a cotoclock to implement time-based sync, i will appreciate your reply!

0 Kudos
Message 5 of 7
(6,179 Views)

Thanks for clarifying the operation.  Just to put this into the perspective of a user who is just starting out with the equipment it can be confusing because below is a snippet from the Octoclock-G datasheet:

Octoclock-G Reference.JPG

To the unitiated this gives the impression that the wiring simply consists of connecting the TRIG OUT from the Octoclock-G to the TRIG IN of the USRPs without the need of wiring the TRIG OUT from a Master USRP to a TRIG IN port of the Octoclock-G through a 6674T(or similar buffer).  This can create a lot of confusion for any newbie to synchronizing USRPs.

 

However, from what I am understanding is that regardless of whether the unit is an Octoclock or Octoclock-G, signal-based synchronization requires the following wiring:

original.pngoriginal.png

where I believe from this previous synchronization post one can simply replace the PXIe-6674T with a Schmitt Trigger so long as the circuit output voltage is at around the 5 Volt PPS spec.  We do not have the PXIe-6674T module. So, the buffering circuit may have to be our solution.

 

 

 

 

 

 

 

0 Kudos
Message 6 of 7
(6,156 Views)

@GenericAccount wrote:

Thanks for clarifying the operation.  Just to put this into the perspective of a user who is just starting out with the equipment it can be confusing because below is a snippet from the Octoclock-G datasheet:

Octoclock-G Reference.JPG

To the unitiated this gives the impression that the wiring simply consists of connecting the TRIG OUT from the Octoclock-G to the TRIG IN of the USRPs without the need of wiring the TRIG OUT from a Master USRP to a TRIG IN port of the Octoclock-G through a 6674T(or similar buffer).  This can create a lot of confusion for any newbie to synchronizing USRPs.


Yes, I understand the confusion. Synchronization is hard because there are multiple definitions, and there are multiple schemes of synchronizing. This is further complicated by what is and is not available depending on (1) your HW and/or (2) your SW. That quote above is for time-based synchronization, not signal-based synchronization. In time-based synchronization you *do not* need to wire the PPS TRIG OUT from one USRP to the PPS TRIG IN of the OctoClock.



However, from what I am understanding is that regardless of whether the unit is an Octoclock or Octoclock-G, signal-based synchronization requires the following wiring:


Correct. For signal-based synchronization you do not need an OctoClock-G. However, if you do not use the OctoClock-G, you will need to provide the OctoClock-G with a 10 MHz reference clock, since it will not have an onboard oscillator itself. This 10 MHz reference clock *cannot* come from one of the USRPs being synchronized.



I believe from this previous synchronization post one can simply replace the PXIe-6674T with a Schmitt Trigger so long as the circuit output voltage is at around the 5 Volt PPS spec.  We do not have the PXIe-6674T module. So, the buffering circuit may have to be our solution.


Yes, this should work although I haven't tested it myself.

0 Kudos
Message 7 of 7
(6,147 Views)