Capturing channels simultaneously with the GX2472 Digitizer

Knowledge Base Article # Q200206

Read Prior Article Read Next Article
Summary This article shows how two waveforms can be simultaneously digitized with the GX2472.
  
Login to rate article
The GX2472 is a dual differential channel, 14-bit digitizer offering a 70 MS/s ADC and 512K of memory.  Each of the GX2472's differential channels has its own amplifier, filters, ADC and capture memory allowing for simultaneous waveform capture.

The following procedure demonstrates how to achieve simultaneous digitization using psuedocode.  For more details, there are example projects at the end of the article.  For more information, refer to the Gx2472 User's Guide.

Procedure to Achieve Simultaneous Digitization

  • Setup channel parameters for each channel
  • Arm both channels for triggering
  • Wait for GX2472 to finish data capture
  • Read device memory

Breakdown of Procedure

Each channel saves its own parameters independently.  The first step is to setup each channel's parameters.  This is done by sequentially setting each channel to active, unlocking the channel to allow changes and configuring that channels parameters.  In the psuedocode below, both channel's parameters will be identical.

For ChannelNumber = 1 to 2
    SetActiveChannel(ChannelNumber)
    UnlockChannel()
    SetClockSource(...)
    SetRange(...)
    SetTriggerLevel(...)
    SetDCOffset(...)
Next


After parameters have been set, lock the channels to initiate a capture.  Each channel has it's own configurable trigger criteria.  After a channel is locked, it awaits a trigger to begin data capture.  Each channel has it's own trigger settings and can be connected to a different stimulus.  Therefore, it is possible for one channel to trigger and begin capture while the other channel does not trigger and simply remains in the armed state.  The psuedocode below demonstrates locking both channels to arm for triggering.

For ChannelNumber = 1 to 2
    SetActiveChannel(ChannelNumber)
    LockChannel() ! Locks access to the controller and allows channel to begin capture
Next


Now, the controller must wait for the channels to complete their data capture.  This is done by repeatedly checking the status of the GX2472 to see if both channels have completed.  A timeout condition should also exist in case one or both channels do not trigger and thereby never complete their data capture.  The pseudocode demonstrates such a loop:

Repeat
    GetTestStatus()
Until (TestComplete or TimeOut)


Finally, each channel must transfer its capture memory back to the controller.  Again, we must loop through each channel, reading the memory back sequentially.  The psuedocode below shows this:

For ChannelNumber = 1 to 2
    SetActiveChannel(ChannelNumber)
    UnlockChannel() ! Allows memory to be accessed by controller
    ReadADCResults(Array[ChannelNumber])
Next


Sample Projects and Examples

The sample projects below contain working code that sets both channels for capturing a 50,000 sample waveform:
  • ATEasy example can be downloaded Downloadhere.
  • Microsoft Visual C++ 2005 example can be downloaded Downloadhere.
Article Date 11/22/2010 , 4/16/2014
Keywords GX2472, Digitizer, Sample, Simultaneous


Login to rate article

Read Prior Article Read Next Article