
PicoScope 3000A Series Prog rammer's Guide
83
Copyright © 2011-2013 Pico Technology Limited. All rights reserved.
ps3000abpg.en r9
2.12.50 ps3000aSetSigGenArbitrary
PICO_STATUS ps3000aSetSigGenArbitrary
(
short handle,
long offsetVoltage,
unsigned long pkToPk,
unsigned long startDeltaPhase,
unsigned long stopDeltaPhase,
unsigned long deltaPhaseIncrement,
unsigned long dwellCount,
short * arbitraryWaveform,
long arbitraryWaveformSize,
PS3000A_SWEEP_TYPE sweepType,
PS3000A_EXTRA_OPERATIONS operation,
PS3000A_INDEX_MODE indexMode,
unsigned long shots,
unsigned long sweeps,
PS3000A_SIGGEN_TRIG_TYPE triggerType,
PS3000A_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
phaseAccumulatorSize
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
value between 1
and 2
phas eAccumulatorSize
-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.