High-Speed Digitizers

cancel
Showing results for 
Search instead for 
Did you mean: 

Synchronise 5922 5421

We are facing some severe problems in developing our application written in C.
Our PXI chassis (8195) contains a waveform generator (PXI-5421) and 2 digitizers (PXI-5922).
The interaction between these 3 cards requires :
1. Synchronise the 10 MHz clock among the 3 cards.
2. Start digitizing (after a warm-up) both 5922 cards at exactly the same time.
The point is that we can't find any examples (in C) for these PXI-based cards.
Also the (help)documentation does not clarify all details. E.g., niScope_ExportSignal() , called in example Generic5911Sync.c , is not documented.
Furthermore it is not clear how functions of niScope, niFgen, and niTclk co-operate.
Any help would be very much appreciated.
Thanx,
Tis Veugen
 
Message 1 of 5
(7,578 Views)
Hello Tis,
 
Do you need to synchronize your 5421 along with your 2 5922s?  If not, then you should take a look at the MultiDeviceGenericSyncTClk.c shipping example for CVI.  You should be able to modify this for C by removing the CVI specific user interface code.  I will attach this example to this post.
 
If you do need to synchronize the 5421 as well, take a look at the Synchronize TClk.c example at: C:\Program Files\IVI\Drivers\niFgen\Examples\c\SynchronizeTClk.
 
I would not use the 5911 synchronization example as it does not take advantage of TClk synchronization.
 
You can find help for these functions in the NI High-Speed Digitizers Help manual at Start >> Programs >> NI-SCOPE >> Documentation in the "Programming" section.
 
I hope this helps.  Please let me know if you have any further questions.
 
Regards,
Sean Close
Product Support Engineer, High Speed Digitizers
Download All
Message 2 of 5
(7,566 Views)

Hi Sean,

Thank you very much for your help.

To answer your question: we need to synchronise the 5421 along with both 5922s , to guarantee clock locking among all 3 cards.

Still there are some open issues:

a.   I assume there is still need to call

       Status = niScope_ConfigureClock( pWorker->Session
                                   , NISCOPE_VAL_PXI_CLOCK
                                   , NISCOPE_VAL_NO_SOURCE
                                   , NISCOPE_VAL_NO_SOURCE
                                   , VI_TRUE );  for both 5922s .

  Is this correct? And must the last parameter VI_TRUE or VI_FALSE for both 5922 cards?

b. We need a START_TRIGGER for starting the sampling at both 5922s at the same time. How is this accomplished ?
    Since the call in the example, niScope_ConfigureTriggerEdge (sessions[i], channel, 0.0,
                                                  NISCOPE_VAL_POSITIVE, NISCOPE_VAL_DC,
                                                  0.0, 0.0)
    is probably not sufficient ?!
    The intention is to start sampling after some warmup period of the AWG. But if both 5922s already start sampling due to the above call, then we could also discard the first zillion of fetched samples.

Thanx,
Tis Veugen

 

 

0 Kudos
Message 3 of 5
(7,545 Views)

Hi Tis,

To TClk synchronize both the PXI-5922s and your PXI-5421, you will need to combine elements from the 2 examples I mentioned in my previous post.  It would probably be easiest to start with the 5421 example (as it is already written for C) and add the code necessary to synchronize the PXI-5922s (the NI-SCOPE configuration and _initSessions functions).

You will not need to call the Configure Clock or Configure Trigger Edge functions (for a start trigger).  This is all taken care of automatically by TClk with the following 3 functions:

handleNITClkErr(niTClk_ConfigureForHomogeneousTriggers(numberOfSessions, sessions));
handleNITClkErr(niTClk_Synchronize(numberOfSessions, sessions, 0.0));
handleNITClkErr(niTClk_Initiate(numberOfSessions, sessions));

If you want to use a reference Trigger, you would need to call the Configure Trigger Edge function.  Please use those 2 examples as a reference and let me know if you have any questions.

Regards,
Sean Close

Message 4 of 5
(7,528 Views)
I have some problem to synchronize 5922 and 5422. I would like to start first 5422 and to generate arbitrary waveform.
Next, I would like several times to digitize a few periods of the signal keeping all the time the same starting phase. It should be done using LabView.
Could you be so kind and send me some suggestions/examples how to achieve it. Should I use the TClk?
Best wishes
Tomasz
0 Kudos
Message 5 of 5
(7,087 Views)