User manual
Programming with the PicoScope 6000 Series72
Copyright © 2009-2013 Pico Technology Ltd. All rights reserved.ps6000pg.en r9
3.9.43
ps6000SetSigGenArbitrary
PICO_STATUS ps6000SetSigGenArbitrary
(
short handle,
long offsetVoltage,
unsigned long pkToPk
unsigned long startDeltaPhase,
unsigned long stopDeltaPhase,
unsigned long deltaPhaseIncrement,
unsigned long dwellCount,
short * arbitraryWaveform,
long arbitraryWaveformSize,
PS6000_SWEEP_TYPE sweepType,
PS6000_EXTRA_OPERATIONS operation,
PS6000_INDEX_MODE indexMode,
unsigned long shots,
unsigned long sweeps,
PS6000_SIGGEN_TRIG_TYPE triggerType,
PS6000_SIGGEN_TRIG_SOURCE triggerSource,
short extInThreshold
)
This function programs the signal generator to produce an arbitrary waveform.
The arbitrary waveform generator uses direct digital synthesis (DDS). It maintains a
phase accumulator of
phaseAccum ulatorSize
bits (see parameter table below) that
indicates the present location in the waveform. The top bufferAddressWidth bits of the
counter are used as an index into a buffer containing the arbitrary waveform. The
remaining bits act as the fractional part of the index, enabling high-resolution control
of output frequency and allowing the generation of lower frequencies.
0
bufferAddressWidth
phaseAccumulatorSize
arbitraryWaveform[0]
arbitraryWaveform[arbitraryWaveformSize-1]
…
Phase Accumulator
The generator steps through the waveform by adding a deltaPhase between 1 and
2
phaseAccumulatorSize
-1 to the phase accumulator every clock period (dacPeriod). If the
deltaPhase is constant, the generator produces a waveform at a constant frequency
that can be calculated as follows:
outputFrequency=
dacFrequency
arbitraryWaveformSize
×
deltaPhase
2
(phaseAccumulatorSize-bufferAddressWidth)
It is also possible to sweep the frequency by continually modifying the deltaPhase.
This is done by setting up a deltaPhaseIncrement that the oscilloscope adds to the
deltaPhase at specified intervals.
Parameter
Value
Original/A/B models
Value
C/D models
phaseAccumulatorSize
32 bits
32 bits
bufferAddressWidth
14 bits
16 bits
dacFrequency
200 MHz
200 MHz
dacPeriod (= 1/dacFrequency)
5 ns
5 ns