No part of this manual may be reproduced in
any form or by any means (including electronic storage and retrieval or translation
into a foreign language) without prior agreement and written consent from Keysight
Technologies as governed by United States
and international copyright laws.
Trademarks
UNIX is a registered trademark of UNIX System Laboratories in the U.S.A. and other
countries. Target is copyrighted by Thru-Put
Systems, Inc.
Manual Part Number
M3xxx-90003
Edition
1.2, February 2021
Available in electronic format only
Published by
Keysight Technologies, Inc.
1900 Garden of the Gods Road
Colorado Springs, CO 80907 USA
Technology Licenses
The hardware and/or software described in
this document are furnished under a license
and may be used or copied only in accordance with the terms of such license.
Declaration of Conformity
Declarations of Conformity for this product
and for other Keysight products may be
downloaded from the Web. Go to
http://www.keysight.com/go/conformity
and click on “Declarations of Conformity.”
You can then search by product number to
find the latest Declaration of Conformity.
U.S. Government Rights
The Software is "commercial computer software," as defined by Federal Acquisition
Regulation ("FAR") 2.101. Pursuant to FAR
12.212 and 27.405-3 and Department of
Defense FAR Supplement ("DFARS")
227.7202, the U.S. government acquires
commercial computer software under the
same terms by which the software is customarily provided to the public. Accordingly,
Keysight provides the Software to U.S. government customers under its standard commercial license, which is embodied in its
End User License Agreement (EULA), a copy
of which can be found at http://www.key-
sight.com/find/sweula. The license set forth
in the EULA represents the exclusive authority by which the U.S. government may use,
modify, distribute, or disclose the Software.
The EULA and the license set forth therein,
does not require or permit, among other
things, that Keysight: (1) Furnish technical
information related to commercial computer
software or commercial computer software
documentation that is not customarily provided to the public; or (2) Relinquish to, or
otherwise provide, the government rights in
excess of these rights customarily provided
to the public to use, modify, reproduce,
release, perform, display, or disclose commercial computer software or commercial
computer software documentation. No additional government requirements beyond
those set forth in the EULA shall apply,
except to the extent that those terms, rights,
or licenses are explicitly required from all
providers of commercial computer software
pursuant to the FAR and the DFARS and are
set forth specifically in writing elsewhere in
the EULA. Keysight shall be under no obligation to update, revise or otherwise modify
the Software. With respect to any technical
data as defined by FAR 2.101, pursuant to
FAR 12.211 and 27.404.2 and DFARS
227.7102, the U.S. government acquires no
greater than Limited Rights as defined in
FAR 27.401 or DFAR 227.7103-5 (c), as
applicable in any technical data.
Warranty
THE MATERIAL CONTAINED IN THIS DOCUMENT IS PROVIDED "AS IS," AND IS SUBJECT TO BEING CHANGED, WITHOUT
NOTICE, IN FUTURE EDITIONS. FURTHER,
TO THE MAXIMUM EXTENT PERMITTED BY
APPLICABLE LAW, KEYSIGHT DISCLAIMS
ALL WARRANTIES, EITHER EXPRESS OR
IMPLIED WITH REGARD TO THIS MANUAL
AND ANY INFORMATION CONTAINED
HEREIN, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANT-
ABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. KEYSIGHT SHALL NOT BE LIABLE
FOR ERRORS OR FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES IN CONNECTION
WITH THE FURNISHING, USE, OR PERFORMANCE OF THIS DOCUMENT OR ANY
INFORMATION CONTAINED HEREIN.
SHOULD KEYSIGHT AND THE USER HAVE A
SEPARATE WRITTEN AGREEMENT WITH
WARRANTY TERMS COVERING THE MATERIAL IN THIS DOCUMENT THAT CONFLICT
WITH THESE TERMS, THE WARRANTY
TERMS IN THE SEPARATE AGREEMENT WILL
CONTROL.
Safety Information
A CAUTION notice denotes a hazard. It
calls attention to an operating procedure, practice, or the like that, if not
correctly performed or adhered to,
could result in damage to the product
or loss of important data. Do not proceed beyond a CAUTION notice until
the indicated conditions are fully
understood and met.
A WARNING notice denotes a hazard.
It calls attention to an operating procedure, practice, or the like that, if not
correctly performed or adhered to,
could result in personal injury or
death. Do not proceed beyond a
WARNING notice until the indicated
conditions are fully understood and
met.
Page 3
Contents
1 Understanding PXIe AWGs Theory of Operation
Working with Signal Generation/Channel Structure / 13
Using SD1 SFP user interface to load FPGA / 64
Using SD1 API to load FPGA - Basic workflow / 65
Implementing BSP using SD1 API - Sample Programs / 66
Sample program using Python for read write on sandbox region / 66
Sample program using .NET for read write on sandbox region / 68
4 Using Keysight SD1 3.x SFP Software
Installing the Keysight SD1 3.x Software Package / 73
Launching the Keysight SD1 SFP software / 74
Understanding the SD1 SFP features & controls / 76
Understanding main window features and controls / 76
File 77
Window 77
Help 77
Understanding features in Hardware Manager / 78
Understanding AWG SFP features & controls / 82
Understanding AWG SFP main menu features & controls / 83
File 83
Settings 83
View 85
FPGA 86
Help 86
Configuring AWG and Channel Setting dialogs / 87
Setting the Configure AWG Triggers dialog 87
Setting the Onboard Waveform memory dialog 87
Setting the AWG Configuration dialog 89
Setting the AWG Waveform Queue dialog 90
Setting the Trigger / Clock Settings dialog 91
Setting up the Channel configuration panel / 93
Channel n 94
Main 94
Waveform shape 94
Controls for Amplitude, Frequency, Phase & DC offset 95
Using the Channel Visualization Settings dialog 96
Modulation 97
AWG 98
Implementing SD1 API functions — Sample Programs / 235
Sample program for the overall AWG work flow using Python / 235
Sample program for Sine Wave generation using Python / 237
Sample Program for Sawtooth Wave generation from an Array / 239
Sample Program for using AWG Partner Channel as Differential / 241
Sample Program for using 48-bit HVI registers / 244
SD1 3.x Software for M320xA / M330xA Arbitrary Waveform Generators
User’s Guide
1.Understanding PXIe AWGs
Theory of Operation
Working with Signal Generation/Channel Structure 13
Working with AWG Waveforms 19
Working with Signal Modulation 29
Working with I/O Triggers 35
Working with Clock System 36
Page 12
1Understanding PXIe AWGs Theory of Operation
Keysight M320xA PXIe Arbitrary Waveform Generators include an embedded Function Generator
(FG), Arbitrary Waveform Generator (AWG), and modulator blocks; together, they form a powerful
signal generator that is capable of generating standard waveforms (sinusoidal, triangular, square,
and DC voltages) or arbitrary waveforms defined by the user and stored on its onboard RAM. With
embedded modulator blocks, the output channels can be modulated in phase, frequency, amplitude,
or IQ to create analog or digital modulation.
Section 1.1: Working with Signal Generation/Channel Structure
Each channel (Channel 1 to Channel n) has an identical structure that contains a Function Generator
(FG), Arbitrary Waveform Generator (AWG), Frequency and Phase Angle Modulator, Amplitude and
DC Offset Amplitude Modulator, and an IQ Modulator.
Figure 1Workflow during signal generation
1.1.1: Channel Numbering and Compatibility Mode
Compatibility mode, which can be changed by open(), is available to support legacy modules and
allows the channel numbering (channel enumeration) to start with either CH0 or CH1.
Table 1API for Channels
OptionDescriptionNameValue
LegacyChannel enumeration starts with CH0COMPATIBILITY_LEGACY0
KeysightChannel enumeration starts with CH1COMPATIBILITY_KEYSIGHT1
Legacy modules refer to SD1 modules that were manufactured by Signadyne before they were
acquired by KeysightTechnologies. If the hardware equipment configuration being used only
contains modules from KeysightTechnologies, channel enumeration should start with CH1.
Each channel has a Function Generator (FG) block that generates basic periodic signals and an
Arbitrary Waveform Generator (AWG) block that generates arbitrary waveforms.
FG vs AWG
When the generation of periodic signals is needed, an FG has many advantages over a pure AWG
solution:
• The FG does not use onboard RAM.
•The “channelWaveShape()”, “channelFrequency()” and “channelPhase()” functions can be
changed in real time without having to modify a static waveform loaded in memory.
• Achieving the same precision in frequency and phase with a pure AWG solution requires a huge
amount of memory.
Table 2Channel Waveshape Types
WaveShapeDescriptionNameValue
HiZ*The output signal is set to HIZ. No output signal is provided.AOU_HIZ-1
No SignalThe output signal is set to 0. All other channel settings are maintained.AOU_OFF (default)0
SinusoidalGenerated by the Function Generator.AOU_SINUSOIDAL1
TriangularGenerated by the Function Generator.AOU_TRIANGULAR2
SquareGenerated by the Function Generator.AOU_SQUARE4
DC VoltageGenerated by the Amplitude Modulator.AOU_DC5
Arbitrary WaveformGenerated by the Arbitrary Waveform Generator (See AWG Waveform
Typ es).
Partner ChannelOnly an even numbered channel (according to Keysight Channel
numbering format) can be set as a partner to the previous odd numbered
channel (for example, CH2 is a partner to CH1). The waveform queue,
load and start functions defined for the odd numbered channel are
automatically called for the respective partner channel.
* Only available for Keysight M3202A PXIe AWG models
AOU_AWG6
AOU_PARTNER8
Using Partner Channel
AOU_PARTNER (8) generates signals on the even numbered channel (either 2 or 4), where the
channel partners with the previous odd numbered channel. All functions called for the latter are
automatically called for the respective partner channel. The signal comes from AWG mode and not
the Function Generator. The Partner Channel feature is hidden in the SD1 SFP user interface and can
be enabled using the SD1 API only.
To produce differential signals for channels 1 and 3:
1 (Optional) Create an AWG object with “SD_AOU functions()”.
2 Open an AWG with “open()”.
3 Flush waveforms with “waveformFlush()”.
4Set “channelWaveShape()” to AOU_AWG and AOU_PARTNER on alternate Channels.
For example, set Channels 1 & 3 to AOU_AWG and Channels 2 & 4 to AOU_PARTNER.
5 On each AWG Channel, set the amplitude using “channelAmplitude()”.
6 On the alternate Partner Channels, set equal and opposite amplitude values using
“channelAmplitude()”.
For example, if you set an amplitude of 1V on Channels 1 & 3, the amplitude on Channels 2 & 4
must be -1V.
7 Load an AWG waveform using “waveformLoad()”.
8 Queue the waveform on the AWG Channels only using “AWGqueueWaveform()”.
The waveform on the Partner Channels are queued automatically.
9 Start the waveform on each Channel simultaneously using “AWGstartMultiple()”.
10 Trigger the waveform on each Channel simultaneously to play the waveforms using
“AWGtriggerMultiple()”.
11 Stop the waveform on each Channel simultaneously using “AWGstopMultiple()”.
To view the corresponding programming steps, see “Sample Program for using AWG Partner
Channel as Differential” on page 241.
Table 3API function for Channel Waveshapes
Function NameCommentsReference
channelWaveShapeSets the channel waveshape type.channelWaveShape()
1.1.3: Signal Generation with the Function Generator
Each channel has a Function Generator (FG) that generates basic periodic signals (sinusoidal,
triangular, square) and is commonly used to generate the RF carrier in modulation schemes. These
periodic signals can be modulated in frequency, phase, amplitude, or IQ.
Non-sinusoidal wave shapes (triangular, square, and so on) have high frequency components that
may fall outside the bandwidth of the reconstruction filter if the fundamental frequency is too high. In
this situation, the output analog signal may suffer some distortion due to the missing harmonics,
becoming a sinusoidal as the fundamental frequency approaches the cutoff frequency of the
reconstruction filter.
1.1.4: Signal Generation with the Arbitrary Waveform Generator
Each channel has an Arbitrary Waveform Generator (AWG) block that generates arbitrary waveforms
that can be sent directly to each output channel or they can be used as a modulating signal for the
frequency, phase, amplitude, or IQ modulators.
Each channel has an Angle Modulator block that has a frequency and phase control. In angle
modulation schemes, these controls set the frequency and phase of the carrier.
See “Frequency and Phase Modulation (Angle Modulator Block)” on page 29.
Understanding PXIe AWGs Theory of Operation1
Figure 4Workflow for Channel Frequency and Phase
Phase coherent vs. phase continuous
Changes in the output signal are always phase continuous, not phase coherent. For example, the
frequency is changed from freq1 to freq2 and changed back to freq1, the phase will not be the initial
one. To achieve phase coherent behavior, the channel accumulated phase can be reset using
channelPhaseReset().
Additionally, in HVI operations, the execution time is deterministic, which allows you to calculate the
new phase and adjust it after any frequency change.
Table 4Programming Function for channel frequency and phase
Function NameCommentsReference
channelFrequencySets the frequency of the FGchannelFrequency()
channelPhaseSets the phase of the FGchannelPhase()
channelPhaseResetResets the accumulated phasechannelPhaseReset()
Each channel has an Arbitrary Waveform Generator (AWG) block that generates arbitrary waveforms.
Understanding PXIe AWGs Theory of Operation1
Figure 6Workflow during AWG waveforms
1.2.1: AWG Programming Process
AWG block operation can be configured with a one-step programming process or with a
step-by-step programming process.
One-Step AWG programming process
The “AWG()” function provides a one-step solution to load, queue, and run a single waveform directly
from a file or from an array in the PC. This function simplifies the generation of a single waveform, but
it does not allow control over the following aspects of waveform generation:
• The possibility to prepare the AWG queue with multiple waveforms in advance before starting the
generation; this may be important to create more complex generation sequences.
• The possibility to have a variety of waveforms in the onboard RAM in order to queue them
repeatedly in the AWGs in an efficient way.
• The precise moment when waveforms are transferred from a file to the PC RAM and to the
onboard RAM. This may be important for long waveforms and time-critical applications.
Keysight SD1 Programming Libraries provide full control of all aspects of arbitrary waveform
generation:
1 Create waveforms in the PC RAM with “new()” function. Waveforms can be created from points in
an array or from points in a file stored on hard disk.
2 Transfer waveforms to a module’s onboard RAM with waveformLoad().
3 Queue waveforms in an AWG with AWGqueueWaveform() to create the desired generation
sequence.
4 Select the sync mode of the queue with AWGqueueSyncMode().
5 Start the generation with AWGstart() and provide triggers if required.
See “AWG Waveform Queue System” on page 20.
Figure 7Waveform programming flow
1.2.2: AWG Waveform Queue System
Each AWG block has a flexible waveform queue system that can be used to configure complex
generation sequences. In order to generate waveforms, they must be loaded into the module
onboard RAM and queued in each corresponding AWG.
The AWG waveform queue system has the following advantages:
• Provides a way to generate a sequence of waveforms one after the other with no discontinuities.
• Allows selection of many parameters (trigger mode, start delay, cycles, prescaler, and so on)
individually per queued waveform.
• Waveforms can have many instances in many AWG queues, but only one copy is required in the
onboard RAM. This feature saves onboard RAM memory.
Each AWG queued waveform has the following parameters:
• Trigger Mode: selects the trigger for the waveform.
• Start Delay: adds an optional delay from the reception of the trigger to the beginning of the
waveform generation.
• Cycles: the number of times the waveform is repeated. Using the appropriate trigger mode, the
AWG can be set to require one trigger per cycle or just one trigger at the beginning of all cycles.
• Cyclic Mode: sets the repetition cycles for the complete queue. The default mode is “One Shot”
and the complete queue will be reproduced one time. Complete queues with a number of
waveforms with a limited number of cycles can be repeated with AWGqueueConfig().
• For Cyclic mode, the minimum play time per cycle should be 1µs for M3201A/M330xA and 2µs
for M3202A modules.
• For fast trigger rates, it is recommended to consolidate all waveforms into a single bigger
waveform.
• Prescaler: divides the effective waveform sampling rate.
See “AWG Prescaler and Sampling Rate” on page 22.
AWG Waveform Queue System Examples
Figure 8Flow in an AWG Waveform Queue System
Inter-waveform/inter-cycles discontinuities
The AWG Queue System allows you to queue many waveforms one after the other. It also provides
the capability to set repetition cycles per waveform and repetition cycles for the complete queue. In
all these cases, there are absolutely no discontinuities between waveforms or cycles, providing a
continuous waveform generation from the last sample point of the finished waveform to the first
sample point of the starting waveform.
HVI Generation Sequences
The queue system of the AWGs provide a way to create generation sequences. For more complex
sequences, the best solution is to use Keysight’s PathWave Test Sync Executive software API. This
API is based upon the Hard Virtual Instruments (HVIs) technology, using which you may achieve time
deterministic sequences with nanosecond resolution, providing a hard real-time execution. For more
information about the HVI technology, see Chapter 2, “Using the KS2201A PathWave Test Sync
Executive software”.
You can set a different prescaler value for each of the waveforms queued in the AWG. This prescaler
reduces the effective sampling frequency of each individual waveform in the following manner:
M3201A
0=> fs = 500 MSa/s
>=1 => fs = 100/n MSa/s
M3202A
>=1 => fs = 200/n MSa/s
An important advantage of this method is the possibility to change the sampling frequency in real
time from one waveform to another, reducing waveform sizes and maximizing the flexibility of the
AWG.
Prescaler vs. Upsampling
Note that reducing the effective sampling rate of the waveform with the prescaler is not the same as
using a full Upsampler, as the prescaler does not contain any filter. Therefore, it generates aliasing
inside the reconstruction filter bandwidth. For applications where full Upsampling is required, you
must use an IF Generator or Transceiver with DUC (Digital Up Converter) capabilities.
A different trigger mode can be configured in each queued waveform.
Table 6AWG Trigger Mode options
OptionsDescriptionNameValue
Auto (Immediate)The waveform is launched automatically after AWGstart, or when the previous waveform in the
Software / HVI*Software trigger. The AWG is triggered by the AWGtrigger, provided that the AWG is running.
Software / HVI (per
cycle)
External TriggerHardware trigger. The AWG waits for an external trigger.EXTTRIG2
External Trigger (per
cycle)
queue finishes
AWGtrigger can be executed from the user application (VI) or from an HVI.
Software trigger. Identical to the previous option, but the trigger is required per each waveform
cycle.
Hardware trigger. Identical to the previous option, but the trigger is required per each waveform
cycle.
* VIHVITRIG is equivalent, but is considered obsolete
Table 7API functions for AWG Trigger Modes
Function NameCommentsReference
AWGProvides a one-step method to load, queue, and start a single waveformAWG()
AWGqueueWaveformQueues a waveform in the specified AWGAWGqueueWaveform()
AUTOTRIG0
SWHVITRIG1
SWHVITRIG_CYCLE5
EXTTRIG_CYCLE6
If the queued waveforms are going to use any of the External Trigger modes, the source of this
trigger must be configured using “AWGtriggerExternalConfig()”.
External Trigger Connector/Line Usage
Apart from the AWG trigger settings, an external trigger connector/line may have additional settings
(input/output direction, sampling/synchronization options, and so on) that must be configured for
proper operation.
1.2.5: AWG External Trigger Source
Table 8AWG External Trigger Source options
OptionsDescriptionNameValue
External I/O TriggerThe AWG trigger is a TRG connector/line of the module. PXI form factor only: this
trigger can be synchronized to CLK10.
PXI Trigger [0 to n]PXI form factor only. The AWG external trigger is a PXI trigger line and it is
Active HighTrigger is active when it is at level highTRIG_HIGH1
Active LowTrigger is active when it is at level LowTRIG_LOW2
Rising EdgeTrigger is active on the rising edgeTRIG_RISE3
Falling EdgeTrigger is active on the falling edgeTRIG_FALL4
1.2.7: AWG Markers
A different marker can be configured for each AWG channel. All waveforms must already be queued
using “AWGqueueMarkerConfig()” in one of the module’s AWGs.
1.2.8: AWG FlexCLK Synchronization (models with variable sampling rate)
The internal diagram and the operation of the M3201A/M3202A PXIe AWGFlexCLK system is shown
in “FlexCLK Technology (models w/ variable sampling rate)” on page 36. This advanced technology
allows you to change the sampling frequency of the AWGs (CLKsys), while maintaining full
synchronization capabilities due to the internal CLKsync signal. CLKsync is an internal signal used to
start the AWGs and it is aligned with CLKsys and PXI CLK10. Its frequency depends on the FlexCLK,
resulting in the following scenarios:
= f
f
CLKsync
When both frequencies coincide, there is no phase uncertainty between both signals and a trigger
synchronized with PXI CLK10 will start the AWGs always with the same skew, independently of the
clock boot conditions. This ensures proper synchronization between different modules.
Figure 9Block diagram depicting proper synchronization between modules
f
CLKsync!
= f
PXI_CLK10
When both frequencies do not coincide, both signals are still aligned, but there is a phase
uncertainty due to their frequency difference. In this case, if a trigger synchronized with PXI CLK10 is
sent to the system, there might be a skew between the start of different AWGs.
Figure 10Block diagram depicting skew between the start of different AWG modules
This phase uncertainty can be easily corrected using clockResetPhase(). This function sets the
modules in a sync mode and the next trigger is used to reset the phase of the CLKsync and CLKsys
signals, not to start the AWGs. In this way, the phase uncertainty between different modules or
between different boot conditions can be eliminated, resulting in a predictable and repeatable skew.
Figure 11Block diagram depicting synchronization between modules using the clockResetPhase function
1.2.9: AWG Waveform Array and *.csv file structure
The two possible sources of waveforms are an array in the PC RAM and a file in the PC HDD. The
memory array is just an array of waveform points, without header and without any particular
structure. A waveform file is simply a text file with values separated by commas (*.csv).
The modulating signal is generated using the AWG associated to that particular channel, for
example, AWG1 for channel 1.
The angle modulator allows you to create any analog/digital frequency or phase modulation. For
example: FM, FSK, PM, PSK, DPSK, and so on.
The output signal of a Channel using the frequency modulation is described using the following
equation:
where,
• A is the channel amplitude (set by “channelAmplitude()”)
• G is the deviation gain or peak frequency deviation (set by “modulationAngleConfig()”). Note
that G is only used for 16-bit waveforms.
• AWG(t) is the normalized modulating signal generated by the AWGs.
•sin[2π(f
t) + Øc] is the carrier signal, generated with the Function Generators.
c
As an example, for the generation of an FM signal with an amplitude of 0.8 Vp, a modulation index (h)
equal to 0.5 and a maximum frequency of the modulating signal of 10 MHz, the settings must be
A=0.8 and G=5,000,000 (where, G = h*max.freq[AWG(t)]).
The output signal of a Channel using the phase modulation is described by the following equation:
where,
• A is the channel amplitude (set by “channelAmplitude()”)
• G is the deviation gain or peak phase deviation (set by “modulationAngleConfig()”). Note that
G is only used for 16-bit waveforms.
• AWG(t) is the normalized modulating signal generated by the AWGs.
•cos[2π(f
t) + Øc] is the carrier signal, generated with the Function Generators.
c
As an example, for the generation of a PM signal with an amplitude of 0.8 Vp and a modulation index
(h) equal to 180, the settings must be A=0.8 and G=180 (G=h).
Output(t) = A . sin[2π(f
Output(t) = A . cos[2πf
+ G . AWG(t)) . t + Øc]
c
t + Øc + G . AWG(t)]
c
Programming Information
Table 12APIfor Angle Modulation functions
FunctionCommentsDetails
modulationAngleConfigConfigures the angle modulatormodulationAngleConfig()
AWG functionsControl the modulating signalAWG functions under SD_AOU functions
FG functionsControl the carrier signalChannel functions under SD_AOU functions
1.3.2: AM and DC Offset (Amplitude Modulator Block)
The amplitude modulator can be used to modulate the amplitude or change the DC offset of the
output signal.
Mutual Exclusions for Modulations
Internally, IQ modulation uses the amplitude and the angle modulators, so they cannot be used when
the module is working in IQ mode.
Figure 14Block diagram depicting functionality of Amplitude Modulator
The modulating signal is generated using the AWG associated with a particular channel (for example,
AWG1 corresponds to Channel 1). The Amplitude Modulator can be used to create analog/digital
amplitude modulation (for example, AM, ASK, and so on).
The output signal of a channel using the Amplitude Modulator is described using the following
equation:
Output(t) = (A + G . AWG(t)) . cos(2πf
where,
• A is the channel amplitude (set by “channelAmplitude()”)
• G is the deviation gain (set by “modulationAmplitudeConfig()”). Note that G is only used for
16-bit waveforms.
• AWG(t) is the normalized modulating signal generated by the AWGs.
•cos[2π(fct) + Øc] is the carrier signal, generated with the Function Generators.
As an example, for generation of an AM signal with an amplitude of 0.8 Vp and a modulation index (h)
equal to 0.5, the settings must be A=0.8 and G=0.32 (G = h . A
The output signal of a channel using the amplitude modulator to modulate the offset is described
using the following equation:
where,
• A is the channel amplitude (set by “channelAmplitude()”)
• G is the deviation gain (set by “modulationAmplitudeConfig()”). Note that G is only used for
16-bit waveforms.
• AWG(t) is the normalized modulating signal generated by the AWGs.
•cos[2π(f
t) + Øc] is the carrier signal, generated with the Function Generators.
c
Options (Mutual Exclusions for Modulations)
The Amplitude Modulator can be used with signals coming from the Function Generator directly, the
AWG, or the frequency/phase modulators. Therefore, the latter can be combined with amplitude
modulation at will (although it only makes sense for frequency/amplitude modulations, because for
phase/amplitude modulations there is a dedicated IQ operation, “IQ Modulation (Quadrature
Modulator Block)” on page 33, which uses the internal amplitude and the angle modulators.
2
).
Output(t) = A . cos(2πfct + Øc) + G . AWG(t)
Table 13Amplitude Modulation options
FunctionsDescriptionConst.Value
No ModulationModulation is disabled. The channel amplitude and offset are only set by
the main registers.
Amplitude ModulationThe modulating signal is used to modulate the channel amplitude.AOU_MOD_AM1
Offset ModulationThe modulating signal is used to modulate the channel offset.AOU_MOD_OFFSET2
AOU_MOD_OFF0 (default)
Programming Information
Table 14APIfor Amplitude Modulation functions
FunctionCommentsDetails
modulationAmplitudeConfigConfigures the amplitude modulatormodulationAmplitudeConfig()
AWG functionsControl the modulating signalAWG functions under SD_AOU functions
FG functionsControl the carrier signalChannel functions under SD_AOU functions
The output signal of the Function Generator can be modulated simultaneously in amplitude and
angle (frequency or phase). This allows the creation of an IF signal with amplitude modulation while
the frequency is scanned. However, the most common use of dual modulations is the amplitude and
angle modulation decomposed to in-phase (I) and quadrature (Q) components, commonly known as
IQ modulation. In order to make the creation of IQ modulations easier, there are dedicated
programming functions for that purpose.
Figure 15Block diagram depicting functionality of Quadrature (IQ) Modulator
The modulating signals are generated using the IQ Modulation (Quadrature Modulator Block)
associated to that particular channel, for example, AWG1 for channel 1. In this case, the waveform
loaded into the AWG is composed by the two waveforms (for example, I and Q components, see
“AWG FlexCLK Synchronization (models with variable sampling rate)” on page 24).
IQ waveforms are sometimes called complex waveforms due to the
mathematical form I(t)+iQ(t).
The output signal of a channel using the IQ modulator is described using the following equation:
Output(t) = (A / √2) . [AWG
where,
• A is the channel amplitude (set by “channelAmplitude()”)
•AWG
•cos[2π(f
(t) and AWGQ(t) are the normalized modulating signals generated by the AWGs.
I
t) + Øc] and sin[2π(fct) + Øc] are the carrier signals, generated with the Function
c
Generators.
You may also use the IQ modulator with amplitude and phase components:
where,
• A is the channel amplitude (set by “channelAmplitude()”)
•AWG
•cos[2π(f
(t) and AWGØ(t) are the normalized modulating signals generated by the AWGs.
A
t) + Øc] is the carrier signal, generated with the Function Generators.
c
Mathematical Background of IQ Modulation
The IQ modulation is based on the decomposition of the output signal in sinus and cosinus:
A . cos(2πf
where,
• I = A . cos(Ø)
• Q = A . sin(Ø)
The IQ components become very useful to set the amplitude (A) and the phase (Ø) of the output
signal, resulting in IQ modulation (or QAM, Quadrature Amplitude Modulation).
The M3201A/M3202A PXIe AWG has general purpose input/output triggers (TRG connectors/lines).
A trigger can be used as a general purpose digital IO or as a trigger input, and can be sampled using
the options shown below in Trigger Synchronization/Sampling Options. Because the Keysight
M3201A and M3202A PXIe AWGs have different output latencies, triggering both at the same time
from HVI will always result in a 65 to 70 ns offset between their outputs.
Table 16I/O Trigger types and corresponding values
Typ eDescriptionNameValue
Trigger Output (readable)TRG operates as a general purpose digital output signal, that can be written
by the user software.
Trigger InputTRG operates as a trigger input, or as general purpose digital input signal,
that can be read by the user software.
Table 17Trigger Synchronization types and corresponding values
Typ eDescriptionNameValue
Non-synchronized modeThe trigger is sampled with an internal 100 MHz clock.SYNC_NONE0
Synchronized mode(PXI form factor only) The trigger is sampled using CLK10.SYNC_CLK101
The M3201A/M3202A PXIe AWG uses an internally generated high-quality clock (CLKref) which is
phase-locked to the chassis clock. Therefore, this clock is an extremely jitter-cleaned copy of the
chassis clock. This implementation achieves a jitter and phase noise above 100 Hz which is
independent of the chassis clock, depending on it only for the absolute frequency precision and long
term stability. A copy of CLKref is available at the CLK connector.
CLKref is used as a reference to generate CLKsys, the high-frequency clock used to sample data.
Chassis Clock Replacement for High-Precision Applications
For applications where clock stability and precision is crucial (for example: GPS, experimental
physics, etc.), you can replace the chassis clock with an external reference.
In the case of PXI/PXIe, this is possible via a chassis clock input connector or with a PXI/PXIe timing
module. These options are not available in all chassis; see the corresponding chassis specifications.
1.5.1: CLK Output Options
Table 18Clock Output options
OptionsDescriptionNameValue
Disable The CLK connector is disabled.N/A0 (default)
CLKref OutputA copy of the reference clock is available at the CLK connector.N/A1
• CLKsync is an internal clock used for the synchronization features of the M3201A/M3202A PXIe
AWG.
• PXI CLK10 is the 10 MHz clock of the PXI/PXIe backplane.
The CLKsys frequency can be changed within the range indicated in the Data Sheet of the
corresponding product [clockSetFrequency()]. The CLKsync frequency changes with the CLKsys
frequency as per the following equation:
f
= GreatestCommonDivisor (f
CLKsync
PXI_CLK10
, f
CLKsys
/ 5)
The CLKsync frequency is returned by clockSetFrequency().
Table 19CLKsync frequency mode options
OptionsDescriptionNameValue
Low Jitter ModeThe clock system is set to achieve the lowest jitter, sacrificing tuning speed.CLK_LOW_JITTER0
Fast Tuning ModeThe clock system is set to achieve the lowest tuning time, sacrificing jitter
performance.
1.5.3: CLKref Frequency in AWG Modules with Option CLV
In M3201A-CLV modules, CLKref frequency (freqCLKref) changes as follows, as a function of CLKsys
frequency (freqCLKsys):
• Between 400 MHz and 500 MHz => freqCLKref = freqCLKsys/40
• Between 300 MHz and 400 MHz => freqCLKref = freqCLKsys/30
• Between 200 MHz and 300 MHz => freqCLKref = freqCLKsys/20
• Between 150 MHz and 200 MHz => freqCLKref = freqCLKsys/15
• Between 100 MHz and 150 MHz => freqCLKref = freqCLKsys/10
• Below 100 MHz => error
In M3202A-CLV modules, CLKref frequecy (freqCLKref) changes as follows, as a function of CLKsys
frequency (freqCLKsys):
• Between 800 MHz and 1000 MHz => freqCLKref = freqCLKsys/80
• Between 600 MHz and 800 MHz => freqCLKref = freqCLKsys/60
• Between 400 MHz and 600 MHz => freqCLKref = freqCLKsys/40
• Below 400 MHz => error
The clockGetSyncFrequency() function returns a default value of 2.5 MHz
for AWG modules with option CLF. For AWG cards with the option CLV, it is
modified and set according to the sync frequency formula defined in the
Data sheet.
SD1 3.x Software for M320xA / M330xA Arbitrary Waveform Generators
User’s Guide
2.Using the KS2201A PathWave
Test Sync Executive software
Licensing for KS2201A PathWave Test Sync Executive software 40
Comparing ProcessFlow GUI with KS2201A HVI API 41
Working with KS2201A PathWave Test Sync Executive software 42
Understanding the HVI elements used in SD1 API 43
Implementing HVI in SD1 API - Sample Programs 45
This chapter provides an introduction to the KS2201A PathWave Test Sync Executive Software and
describes its implementation in the SD1 3.x API. For detailed information about the elements in
KS2201A PathWave Test Sync Executive Software and its API, refer to the KS2201A PathWave Test Sync Executive User Guide.
Page 40
2Using the KS2201A PathWave Test Sync Executive Software
Section 2.1: Licensing for KS2201A PathWave Test Sync Executive
software
Hardware license option (-HV1) on the M3xxxA modules
All M3xxxA modules support HVI technology. However, the hardware license option -HV1 must be
available on each module that is required to be programmed using the PathWave Test Sync
Executive software and for usability with SD1 3.x software. The newer M3xxxA cards are shipped with
the newest versions of firmware and SD1 software, which support the KS2201A PathWave Test Sync
Executive software. During procurement, you may choose to procure the -HV1 hardware option.
To use an older module with the KS2201A PathWave Test Sync Executive software, the firmware and
SD1 software must be upgraded. KS2201A PathWave Test Sync Executive software requires that
Keysight SD1 SFP software version 3.x be installed on the same machine. Also, the PXIe M3xxxA
modules products must have Firmware versions greater than or equal to 4.0 (for M320xA AWGs /
M330xA Combos) and greater than or equal to 2.0 (for M310xA Digitizers). For more information
regarding the supported firmware and software versions, refer to the SD1 3.x Software Startup Guide.
Software license option for the KS2201A software
Refer to the KS2201A PathWave Test Sync Executive User Guide to know about the licenses that you
must procure for the KS2201A PathWave Test Sync Executive software.
Using the KS2201A PathWave Test Sync Executive Software2
NOTE
Section 2.2: Comparing ProcessFlow GUI with KS2201A HVI API
Beginning with SD1 3.x software release, the M3601A Hard Virtual
Instrument (HVI) Design Environment (ProcessFlow) is replaced by the
KS2201A PathWave Test Sync Executive Software for HVI integration. Both
the GUI elements and the API functions from the former HVI design
environment are not supported in the SD1 3.x software.
Tabl e 20 summarizes the main operations necessary in an HVI design as performed from the point of
view of the M3601A HVI GUI use model and the KS2201A HVI API use model. You may use this table
of equivalence to transition from ProcessFlow to the KS2201A PathWave Test Sync Executive
software.
Table 20Differences in operations of ProcessFlow and KS2201A HVI API
OperationsProcessFlow Use ModelKS2201A HVI API Use Model
HVI Design FlowFirst, a “.HVIprj” project file must be created using M3601A GUI
HVI SequenceIt is implemented by means of a graphical flowchart. Each HVI
HVI SyncSequenceThe concept of HVI SyncSequences is not available in the
HVI Resources (Chassis,
Triggers, M9031A modules,
and so on)
Program HVI SequencesYou may program HVI sequences by adding flowchart boxes
HVI Compile, Load, RunOnce an “.HVI” file is open from a script, you can assign each
to design the required HVI sequences in form of flow-charts. A
binary “.HVI” file is generated from the “.HVIprj” file once the HVI
sequence design is final. The “.HVI” file must be open from code
to integrate the HVI solution into the application code.
Engine in each instrument has a single or main HVI Sequence
associated. All statements, both local and synchronized, are
added to it graphically.
M3601A flowcharts.
Connected chassis are automatically recognized. M9031A
boards are transparent to the M3601A software. PXI trigger
resources that can be allocated to the HVI solution are chosen
from the “Chassis settings” window.
using the M3601A GUI. Configure settings for statements in the
“Properties” window of each flowchart box.
sequence to an HW engine for it to be compiled, loaded to HW,
and executed. Project “.HVIprj” files can be also tested directly
from the M3601A GUI using the “Compile and Run” function.
Application code must import the “keysight_pathwave_hvi”
library to use the HVI API. HVI sequences can be created using
programs directly into the application code without importing
external files.
KtHviSequence class enables you to create a Local HVI
sequence using programs that run “locally” on a specific HVI
engine in a specific instrument. Local Sequences are accessed
using ‘SyncMultiSequenceBlock’ statement placed in a
SyncSequence (KtHviSyncSequence). The HVI top sequence is a
SyncSequence that contains SyncStatements.
KtHviSyncSequence class enables you to add synchronized
operations (Sync Statements) common to all HVI engines within
the HVI instance. The HVI top sequence is a SyncSequence that
contains SyncStatements. Local instructions are added and
executed within Local Sequences that can be accessed by
adding a ‘SyncMultiSequenceBlock’ in a SyncSequence.
HVI resources can be configured using “KtHviPlatform” class and
all the classes inside it.
You may program both HVI SyncSequences and HVI (Local)
Sequences with the API methods add_XXX(), where ‘XXX’ is the
statement name.
API SW methods can
compile the sequence using (hvi.compile()),
load it to hardware using (hvi.load_to_hw()),
run the sequence using (hvi.run()).
2Using the KS2201A PathWave Test Sync Executive Software
Section 2.3: Working with KS2201A PathWave Test Sync Executive
software
Beginning with Keysight SD1 3.x release, the KS2201A PathWave Test Sync Executive software has
been introduced to enhance the functionalities of one or more PXIe modules both individually and
interactively. This software has a new API based environment for developing and running programs
with a new generation of Keysight’s Hard Virtual Instrument (HVI) technology. The KS2201A software
enables programmatic development and execution of synchronous real-time operations across
multiple instruments. It enables you to program multiple instruments together so they can act
together with other instruments, like one instrument.
2.3.1: Overview on HVI technology
Keysight’s Hardware Virtual Instrumentation (HVI) technology provides the capability to create
time-deterministic execution sequences with precise synchronization by deploying FPGA hardware
simultaneously among the constituent instruments. This makes the technology a powerful tool in
MIMO systems, such as massive-scale quantum control networks.
A virtual instrument may be considered to function like any other instrument in the system; its main
objective being to digitally sequence events and instructions in the application while synchronizing
multiple modules. This instrument, (referred to in this document as the HVI instrument),
accomplishes this by running one or more “engines” synchronously by referencing a common digital
clock that all instruments (engines) operate on.
The KS2201A PathWave Test Sync Executive software provides you with the capability of designing
HVI sequences using an Application Programming Interface (API) available in both Python and C#
coding languages. The HVI Application Programming Interface (API) is the set of programming
classes and methods that allows the user to create and program an HVI instance. HVI API currently
supports Python v3.7. The HVI core functionality is extended by the PXIe M3xxxA modules using the
SD1 API. The core HVI features and the SD1 API extensions that are specific to M3xxxA, allow a
heterogeneous array of instruments and resources to coexist on a common framework.
All the PXIe M3xxxA modules support HVI technology. When Keysight SD1 is installed on a PXI
system, it installs the drivers required to interact with the M3xxxA series modules. The SD1 API
classes in the Keysight SD1 Library contain HVI add-on interfaces provided as an extension of the
instrument. These add-on interfaces provide access to instrument specific HVI features such as
triggering a digitizer acquisition, outputting a waveform, queuing a waveform, etc.
The primary HVI elements defined for the SD1 API and the corresponding API functions are described
in the following sections.
Using the KS2201A PathWave Test Sync Executive Software2
Section 2.4: Understanding the HVI elements used in SD1 API
The HVI Core API exposes all HVI functions and defines base interfaces and classes, which are used
to create an HVI, control the hardware execution flow, and operate with data, triggers, events and
actions, but it alone does not include the ability to control operations specific to the M3xxxA product
family. It is the HVI instrument extensions specific to M3xxxA modules that enable instrument
functionalities in an HVI. Such functions are exposed by the module specific add-on HVI definitions.
The SD1 API describes the instrument specific resources and operations that can be executed or
used within HVI sequences.
Figure 17 & Figure 18 display the AWG and Digitizer specific HVI definitions, which are added to the
2Using the KS2201A PathWave Test Sync Executive Software
2.4.1: Description of various HVI elements
HVI Engine
An HVI Engine block controls the functions of the instrument and the timing of operations. For HVI to
control an SD1 module, the latter requires an HVI Engine. The HVI Engine is included directly in the
instrument hardware or it can be programmed using the SD1 API into the Field programmable Gate
Array (FPGA) on each module. The HVI Engine executes sequences, which are made up of
Statements.
To define an HVI Engine in SD1 API, see the API syntax in Module HVI Engine.
HVI Actions
An HVI Action is defined for module-specific operations, such as playing waveform in an AWG or
starting an acquisition in Digitizers.
To define an HVI Action in SD1 API, see the API syntax for various HVI actions in SD_AOU functions
and SD_Module functions (specific to Pathwave FPGA).
HVI Events
An HVI Event is defined to occur when specific conditions are met during module-specific
operations, such as when an AWG queue is flushed or when a DAQ is empty.
To define an HVI Event in SD1 API, see the API syntax for various HVI events in SD_AOU functions
and SD_Module functions (specific to Pathwave FPGA).
HVI Trigger
An HVI Trigger is defined to activate the logic signal triggering source and perform various triggering
operations, which are shared between instruments to initiate module-related operations,
communicate states or other information.
To define an HVI Trigger in SD1 API, see the API syntax in Module HVI Triggers.
HVI Instructions
An HVI Instruction is defined to configure various settings related to the module. There are two types
of HVI instructions:
• Product specific (custom) HVI instructions—can change a module’s setting (such as amplitude,
frequency, etc.) or trigger a functionality in the module (such as output a waveform, trigger a data
acquisition, etc.).
• HVI core instructions (general purpose)—provide global, non-module specific or custom
functions, such as register arithmetic, read/write general purpose I/O triggers, execution actions,
etc.
To define an HVI Trigger in SD1 API, see the API syntax in SD_AOU functions.
FPGA sandbox registers
For the modules that contain an FPGA with a user-configurable sandbox, HVI can, potentially (if the
configuration of the module allows it), access (read/write) the registers that you define in that
sandbox. To accomplish this, you must obtain the “.k7z” file for the FPGA sandbox, generated by the
PathWave FPGA application. This file contains all the necessary information to access the registers
by name.
To define FPGA Action/Event in SD1 API, see the API syntax in User FPGA HVI Actions/Events.
Using the KS2201A PathWave Test Sync Executive Software2
Section 2.5: Implementing HVI in SD1 API - Sample Programs
The following section shows a sample program where HVI is implemented in SD1 API to create an
HVI sequence, add HVI main engine, define HVI trigger, assign ‘module hvi instruction set’ functions
followed by compiling the HVI sequence and loading it onto the hardware. Based on your
requirements, you may add ‘module hvi actions’ as well as ‘module hvi events’ functions to the HVI
sequence.
The SD1 API functions related to HVI are covered in Chapter 5, “Using Keysight SD1 API Command
Reference”.
Refer to the KS2201A PathWave Test Sync Executive User Guide to know more about the HVI Python
API.
2.5.1: Sample program using Python for HVI instructions
SD1 3.x Software for M320xA / M330xA Arbitrary Waveform Generators
User’s Guide
3.Using the PathWave FPGA
Board Support Package (BSP)
Licensing for PathWave FPGA BSP support 48
Comparing FPGAFlow with PathWave FPGA 49
Working with PathWave FPGA software 50
Using BSP with PathWave FPGA software 53
Generating a k7z file using PathWave FPGA BSP 55
Loading k7z file into modules 64
Implementing BSP using SD1 API - Sample Programs 66
This chapter provides an introduction to the PathWave FPGA Board Support Package (BSP) and
describes its implementation in the SD1 3.x API. For detailed information about using the PathWave
FPGA 2020 Update 1.0 software along with BSP for supported modules, refer to the PathWave FPGA
Customer Documentation and the BSP guides for the respective modules.
Page 48
3Using the PathWave FPGA Board Support Package (BSP)
Section 3.1: Licensing for PathWave FPGA BSP support
All instruments that can be programmed with PathWave FPGA BSP will enable programming using
the licensing option -FP1. You are required to procure an -FP1 license option for each instrument
that must be programmed. For example, if you are purchasing ten M3202A AWG cards, each
M3202A requires an individual -FP1 license option enabled.
New Hardware - Latest Software
The new modules for M3201A AWG 1G, M3202A AWG 500 and M3102A DIG500, M3102A DIG100,
M3302A Combo 500 500 and M3300A Combo 500 100, where you have the -FP1 license option
enabled are supported only with SD1 software version 3.x (or later) installed on your machine. If you
have SD1 version 2.x.x installed on your machine, you must upgrade the software for hardware
compatibility. For more information regarding the supported firmware and software versions, refer to
the SD1 3.x Software Startup Guide.
Latest Software - New Hardware
Keysight SD1 SFP software version 3.x or later recognize only those PXIe M3xxxA products that have
Firmware versions greater than or equal to 4.0 (for M320xA AWGs / M330xA Combos) and greater
than or equal to 2.0 (for M310xA Digitizers). You may either update the firmware on your modules or
contact Keysight Sales to upgrade your hardware. After upgrading your hardware, you must have the
-FP1 license option enabled to make it compatible with the latest version of SD1 software.
The M3201A / M3202A may be purchased as a 4 channel configuration, each of which may include
an option to specify either a fixed or a variable sampling clock.
The M3102A / M3100A may be purchased as a 4 channel configuration, which have fixed sampling
clock.
These modules may also be purchased to include one of two possible Xilinx FPGAs:
1 xc7k410tffg676-2
2 xc7k325tffg676-2
The xc7k410tffg676-2 part offers a substantial increase in the amount of FPGA resources available to
the user for custom logic. The following table outline the FPGA resources, which are available for
custom logic for each part.
Table 21Available FPGA Resources for custom logic on each module
Using the PathWave FPGA Board Support Package (BSP)3
NOTE
Section 3.2: Comparing FPGAFlow with PathWave FPGA
Beginning with SD1 3.x software release, the M3602A Graphical FPGA
Development Environment (FPGAFlow) is replaced by the KF9000A
PathWave FPGA software for FPGA programming. The files generated by
FPGAFlow are not supported in the SD1 3.x software.
The following sections describe the differences between FPGAFlow and PathWave FPGA software
along with the new features introduced in the latter software.
3.2.1: Differences between FPGAFlow and PathWave FPGA
While most of the features are same, but there are subtle differences in the appearances and certain
aspects of both the FPGA programming environments. Tab le 2 2 highlights such differences.
Table 22Differences between FPGAFlow and PathWave FPGA
l
FPGAFlowPathWave FPGA
Support limited to Legacy Signadyne boardsSupport for larger number of Keysight developed boards
Uses one or more BitGen servers to generate the output bitstreamUses Xilinx Vivado Design Suite locally on Host Machine to generate the output bitstream
Generates “sbp” file, which is loaded on the legacy module’s FPGAGenerates “k7z” file, which is loaded on the FPGA of the new modules
3.2.2: New features in PathWave FPGA
Apart from the differences listed above, the PathWave FPGA software has certain new elements:
• IPs can be defined using IP-XACT file. This gives you information about the IP name, version,
interfaces, category, and so on.
• A repository of IPs that are using IP-XACT can be loaded concurrently.
• Block designs are now called sub-modules.
• Multiple boards are supported using the BSP technology.
3Using the PathWave FPGA Board Support Package (BSP)
NOTE
Section 3.3: Working with PathWave FPGA software
Beginning with Keysight SD1 3.x release, the KF9000A PathWave FPGA Programming Environment
(commonly known as PathWave FPGA), powered by Xilinx Vivado Design Suite, has been introduced
for FPGA designing on supported Keysight modules.
Some applications require the use of custom on-board real-time processing, which might not be
covered by the comprehensive off-the-shelf functionalities of standard hardware products. For these
applications, Keysight supplies Option -FP1 (Enabled FPGA Programming) that provide the capability
to program the on-board FPGA. With PathWave FPGA, development time is dramatically reduced
and you can focus exclusively on expanding the functionality of the standard instrument, instead of
developing a complete new one.
PathWave FPGA is a graphical environment that provides a complete FPGA design flow for rapid
FPGA development from design creation to simulation to Gateware deployment to
Hardware/Gateware verification on Keysight hardware with Open FPGA. This environment provides a
design flow from schematic to bitstream file generation with the click of a button.
The PathWave FPGA 2020 is a licensed software. Contact Keysight Support
for more information on procuring the respective licenses.
Once you have installed the PathWave FPGA 2020 software, you can launch its user interface from
the Start menu. Alternatively, you may use the corresponding command line or scripts to launch the
application.
Figure 19Default window for PathWave FPGA 2020 Update 1.0 software
Using the PathWave FPGA Board Support Package (BSP)3
In Keysight PathWave, FPGA code is represented as boxes (called blocks) with IO ports. An empty
project contains the “Default Product Blocks”, and the “Design IO Blocks” that provide the outer
interface of the design. You can add/remove blocks from the Keysight Block Library, External Blocks,
or Xilinx IP cores.
To know about the required prerequisite software, system requirements and licensing information for
the PathWave FPGA 2020 Update 1.0 software, refer to the “Getting Started” section of the
PathWave FPGA Customer Documentation. To view the installation procedure, refer to the “Installing
PathWave FPGA 2020 Update 1.0 software” section and to view how to launch the software, refer to
the “Launching the PathWave FPGA BSP” section in the SD1 3.x Software Startup Guide.
3.3.1: Understanding Partial Configuration (PR)
The FPGA configurable region utilizes Xilinx FPGA partial reconfiguration technology to allow you to
design and configure a defined section of the supported M3xxxA FPGA without the need to power
down or reboot the M3xxxA module or host computer, respectively.
PathWave FPGA supports the design flow in the Partial Reconfiguration (PR) technology. In a PR
flow, a full FPGA reconfiguration is only necessary once for a given static region version. The
sandboxes can be reconfigured anytime, without a full reconfiguration, and without stopping the
current operation of the FPGA.
Partial Reconfiguration enables performing dynamic change of modules within an active design. By
implementing multiple configurations in this flow, you can achieve full bitstream for each
configuration and partial bitstream for each reconfigurable module.
While FPGA technology facilitates direct programming and re-programming of modules without
going through re-fabrication with a modified design; the partial reconfiguration technique allows the
modification of an operating FPGA design by loading a partial configuration file. The logic in the
FPGA design is divided into two different types, reconfigurable logic and static logic. The static logic
remains functional and is unaffected by the loading of a partial bitstream file, whereas the
reconfigurable logic is replaced by the contents of that bitstream file.
Figure 20Block diagram depicting partial reconfiguration using bitstream files
Partial Reconfiguration (PR) is modifying a subset of logic in an operating FPGA design by
downloading a partial bitstream. In some cases, a complete FPGA reconfiguration might be
preferable (better routing, timing closure, and so on). This is also supported by PathWave FPGA, as
long as a reboot is not required after the reconfiguration process.
The PathWave FPGA software does not, by itself, provide access to the waveform and digitizer
controls for the supported Keysight M3xxxA PXIe modules. You must install the module-specific
Board Support Package (BSP) to leverage the features within the PathWave FPGA software for FPGA
designing and for loading your customized code onto the Keysight instrument.
The design part in Keysight FPGA consists of two regions: the static region and the sandbox region.
The static region for each supported module is defined within BSP and cannot be modified. This
region defines the implementation of the FPGA interfaces to external resources, and defines the
3Using the PathWave FPGA Board Support Package (BSP)
interfaces to the sandbox. A static region implementation can define one or more sandbox regions in
an FPGA design. The sandbox region contains the user specific FPGA design. The interface of the
sandbox depends on the static region implementation.
Figure 21Block diagram representing layout of Static and Sandbox regions
Using the PathWave FPGA Board Support Package (BSP)3
Section 3.4: Using BSP with PathWave FPGA software
3.4.1: Understanding BSP composition
In embedded systems, the board support package (BSP) is the layer of software containing
hardware-specific drivers and other routines that allow a particular operating system (traditionally a
real-time operating system, or RTOS) to function in a particular hardware environment (a computer
or CPU card), integrated with the RTOS itself. Third-party hardware developers, who wish to support
a particular RTOS must create a BSP that allows that RTOS to run on their platform. In most cases
the RTOS image and license, the BSP containing it, and the hardware are bundled together by the
hardware vendor. BSPs are typically customizable, allowing you to specify the drivers and routines,
which should be included in the software build based on their selection of hardware and software
options. (source: Wikipedia)
The Board Support Package (BSP), installed separately from PathWave FPGA, comprises of two
parts—an FPGA Support Package (FSP) and a Runtime Support Package (RSP). A BSP configuration
file contains all the necessary information to identify the configuration, which includes static region
implementation, an RSP implementation, build scripts, examples, project templates, and
documentation.
• The FSP is that portion of the BSP that allows you to build a bitstream file for the target FPGA. It is
consumed by PathWave FPGA to support design creation and sandbox compilation; everything
that is performed without the physical hardware. The FPGA Support Package allows you, as a
PathWave FPGA user, to create a design targeting your instrument. It includes descriptions of the
sandbox interfaces, template PathWave FPGA projects, and files required for compiling a sandbox
image from HDL sources. An FSP fulfills the ‘design-time requirements’ of PathWave FPGA, which
covers everything prior to loading a bit image onto the instrument.
• The RSP is that portion of the BSP that allows you to control your target FPGA. It provides a ‘C’
API that you can use to load design images onto hardware, verify your FPGA bitstream image and
perform simple register and streaming accesses to the sandbox. An RSP requires a hardware
driver with the following capabilities:
• Hardware discovery/enumeration
• Program the FPGA sandbox regions
• Read and write registers inside the sandbox
• Read and write to streaming interfaces inside the sandbox (if the sandbox has streaming
interfaces)
Both PathWave FPGA software and the BSP work together and cannot be used individually.
The block diagram shown in Figure 22 indicates how the bitstream file is generated using both the
PathWave FPGA software and BSP together for any specific supported PXIe module.
Figure 22Bitstream file compilation flow using PathWave FPGA and BSP
3Using the PathWave FPGA Board Support Package (BSP)
PathWave FPGA manages bitstream file generation using a scripted flow of the FPGA tools. The
scripts for building a specific design are provided by the FSP. The FSP build script can also add
metadata, which are delivered to the RSP. The bitstream file and metadata are packaged into a
Keysight PathWave FPGA program archive file with the filename extension *.k7z.
To load a bitstream image on the FPGA, PathWave FPGA supplies the program archive file to the
RSP. The RSP unpacks the contents of the program archive file and checks that the image is
compatible. The original bitstream file and the metadata are then passed to the instrument-specific
portion of the RSP, which eventually configures the FPGA with the bitstream file.
The output from a PathWave FPGA design compilation is saved in a Keysight PathWave FPGA
program archive file, with a k7z extension. To understand how to generate the k7z file onto a module,
see “Generating a k7z file using PathWave FPGA BSP” on page 55.
Hereafter, you may load the k7z file onto the required hardware using the Keysight SD1 3.x SFP
software’s user interface or the corresponding SD1 API functions. To understand how to load the k7z
file onto a module, see “Loading k7z file into modules” on page 64.
Using the PathWave FPGA Board Support Package (BSP)3
Section 3.5: Generating a k7z file using PathWave FPGA BSP
After you install BSP for one or more modules, you can proceed with creating a new project to design
the sandbox region for the corresponding modules.
Following steps give you a quick glance into creating a new sandbox project using PathWave FPGA
2020 software for FPGA designing followed by generating a bitstream file for one or more supported
PXIe modules. This example uses the BSP file for an M3102A module.
You can also perform most of the steps shown below using command line arguments. Refer to the
“Advanced Features” section of the PathWave FPGA Customer Documentation.
1 On the main window of the PathWave FPGA 2020 software, click the icon for new project.
3Using the PathWave FPGA Board Support Package (BSP)
Various blocks are displayed, which are part of the default template in the PathWave FPGA
2020 software.
Figure 28Viewing FPGA design blocks in the default template
10 Customize the configuration as per your requirements using one or more elements from the
Design Interfaces and IP Catalog panels.
For more information regarding the configurable region of the M3xxxA FPGA interfaces and BSP
IP Repository, refer to the BSP User Guide for the corresponding modules, which can be
accessed via Help > BSPs Help menu options in the PathWave FPGA 2020 software. The guides
for the supported modules are:
Using the PathWave FPGA Board Support Package (BSP)3
11 After you have finished designing your logic, you can proceed with the k7z file generation. Click
the Generate Bit File... icon as shown in Figure 29.
Figure 29Initiating Bit File generation for the selected module
If you do not have the Xilinx Vivado Design Suite on the same machine where PathWave FPGA
2020 software and BSP are installed, the following error is prompted when you click the
Generate Bit File... icon.
Refer to PathWave FPGA Customer Documentation for more information on installing the
software and the licenses for the Xilinx Vivado Design Suite.
Using the PathWave FPGA Board Support Package (BSP)3
Depending on the configuration, the software takes some time before finishing the process of
k7z file generation.
Figure 31Progress status for the k7z file generation
Once the Bitstream file (which is the k7z file) is generated, your custom FPGA logic is ready to be
loaded on the selected module using either the SD1 API or the Load Firmware feature (under FPGA
menu of the Module panel in the SFP software).
Other than configuring and designing your FPGA Logic using the PathWave FPGA 2020 Update 1.0
software, you can perform one or more of the following operations:
• Build your FPGA Logic
• Generate the Bit File (covered briefly in this section)
• Verify the Bit File
• Simulate your FPGA Logic
• Simulation Testbench Designing
• Test Bench Address Mapping
• Work with Advanced features
• Using Command Line Arguments
• Migrating a design to a new BSP
• Changing a Submodule Project Target Hardware
• Debugging in Hardware
For detailed instructions on performing these steps and to understand the features of the PathWave
FPGA 2020 software, refer to the PathWave FPGA Help file accessible via the Help menu of the
software. For information about the features and various elements along with understanding the
workflow associated with the PathWave FPGA 2020 Update 1.0 software, refer to the “User Guide”
section of the PathWave FPGA Customer Documentation.
3Using the PathWave FPGA Board Support Package (BSP)
Section 3.6: Loading k7z file into modules
After a bitstream file (k7z) is generated using the PathWave FPGA software, you may use either the
SD1 3.x software user interface or the SD1 API functions to load the FPGA on the corresponding
module and also, verify design compatibility on that module.
3.6.1: Using SD1 SFP user interface to load FPGA
To load the FPGA using SD1 3.x software,
1 From the Start menu, launch Keysight SD1 SFP.
2 From the main menu of a specific module’s dialog, click FPGA > Load firmware....
Figure 32Accessing FPGA firmware loader option in SD1
Using the PathWave FPGA Board Support Package (BSP)3
3 On the Firmware Loader dialog that appears, click the button to browse for the required k7z file for
that particular module.
Figure 33Firmware Loader window for the selected module
4Click Load to initiate the process of FPGA loading.
If the progress bar displays “Loading successful” and “100%”, it indicates that the FPGA is updated
as well as the FPGA design logic is compatible on hardware.
3.6.2: Using SD1 API to load FPGA - Basic workflow
To load the FPGA using SD1 3.x API,
1 Import system and Keysight SD1 libraries.
2 Open the module with open().
3 Load FPGA sandbox using *.k7z file with FPGAload().
4 (Optional) Read/Write into registers using functions defined in SD_SandboxRegister functions.
5 (Optional) Perform FPGA related operations using other functions defined in SD_Module
SD1 3.x Software for M320xA / M330xA Arbitrary Waveform Generators
User’s Guide
4.Using Keysight SD1 3.x SFP
Software
Installing the Keysight SD1 3.x Software Package 73
Launching the Keysight SD1 SFP software 74
Understanding the SD1 SFP features & controls 76
Understanding AWG SFP features & controls 82
This chapter describes how to use Keysight SD1 SFP software.
Page 72
4Using Keysight SD1 3.x SFP Software
KeysightM3201A/M3202A PXIe AWGs, M3100A/M3102A PXIe Digitizers, and M3300A/M3302A
PXIe AWG/Digitizer Combos can be operated as classical bench-top instruments using Keysight SD1
SFP software; no programming is required.
Keysight SD1 SFP Software provides a fast and intuitive way of operating KeysightM3201A/M3202A
PXIe AWGs, M3100A/M3102A PXIe Digitizers, and M3300A/M3302A PXIe AWG/Digitizer Combos.
Based on your preference, you may also perform various operations using the programming library
provided within Keysight SD1 Core API. An API function is available for almost every control within
the user interface. You can build and run custom scripts to carry out various operations / workflow,
which can be performed by the SD1 SFP user interface.
The sections in this chapter cover the functionality of each SD1 SFP feature available in its user
interface, along with describing the workflow required to perform some specific operations.
Wherever applicable, the API function corresponding to the feature/control has been specified for
reference.
To know about the programming libraries and the available API functions, see Chapter 5, “Using
Keysight SD1 API Command Reference” followed by Chapter 6, “Using SD1 API functions in sample
programs”.
Section 4.1: Installing the Keysight SD1 3.x Software Package
The Keysight SD1 3.x Software Package includes:
• Keysight SD1 3.x SFP Software
• KF9000A PathWave FPGA Programming Environment (commonly known as PathWave FPGA
software)—required for FPGAlogic designing
• PathWave FPGA Board Support Package (BSP)—required for FPGAlogic designing
• KS2201A PathWave Test Sync Executive Software—required for integration with HVItechnology
Prior to installing the software package components listed above, the following software must be
installed on your machine that runs a Windows 10 (64-bit) Operating System.
Prerequisites• Keysight IO Libraries Suite 2018 (version 18.0 or later)
• Microsoft .NET 3.5 or later
• Any API interface
• Python 64-bit version 3.7.x or later
• Any C# /.NET Compiler
• Any C/C++ Compiler
• Xilinx Vivado Design Suite (required with PathWave FPGA software)
• License options
•Option -FP1 (to enable FPGA programming through PathWave FPGA BSP)
•Option -HV1 (to implement HVI technology using the PathWave Test Sync Executive software)
Refer to the SD1 3.x Software Startup Guide for download links and installation instructions.
Section 4.2: Launching the Keysight SD1 SFP software
After the Keysight SD1 3.x SFP software is installed, click Start > Keysight > Keysight SD1 SFP.
Figure 34Launching SD1 SFP software from the Start menu
The Keysight SD1 3.x SFP software window is displayed, as shown in Figure 35 and Figure 36.
When SD1 SFP is launched, it identifies all Keysight PXIe hardware modules that are connected to
the embedded controller or desktop computer and opens a corresponding soft front panel for each
piece of hardware. As shown in Figure 35, the soft front panel for the M3201A AWG and M3302A
(AWG & Digitizer) Combo are displayed by default, which indicates these modules are connected.
Figure 35SD1 SFP software window (online mode with M3201A and M3302A cards connected)
If one or more modules are not inserted into the chassis (or disconnected), the soft front panel for
each of such modules is displayed as “Demo module” on the Keysight SD1 3.x SFP software. See
Section 4.3: Understanding the SD1 SFP features & controls
As the name indicates, the Soft Front Panel (SFP) provides you controls so that you may configure
settings associated with the front panel features (namely, Channel, Clock and Trigger) on the
connected PXIe AWG, Digitizer and Combo cards. Considering the basic functionality of an AWG and
a Digitizer, the appearance and functions on each SFP window for AWG modules are different from
that for the Digitizer modules.
The SFP windows that are specific to AWG modules correspond to:
• M3202A AWG 1G
• M3201A AWG 500
• AWG front panel of the M3302A AWG 500 DIG 500 Combo
• AWG front panel of the M3300A AWG 500 DIG 100 Combo
The SFP windows that are specific to Digitizer modules correspond to:
• M3102A DIG 500
• M3100A DIG 100
• DIG front panel of the M3302A AWG 500 DIG 500 Combo
• DIG front panel of the M3300A AWG 500 DIG 100 Combo
The SD1 SFP user interface, primarily, consists of three types of windows:
1 Main window—includes controls for displaying each module window and hardware configuration.
2 AWG Module SFP window—includes front panel controls for performing operations pertaining to
AWGs.
3 Digitizer Module SFP window—includes front panel controls for performing operations pertaining
to Digitizers.
In the offline (Demo) mode, even though the front panel controls appear to be available and even
configurable, they are meant for demonstrative purposes only. On the other hand, when connected,
each module has its respective SFP window and all controls and functions are available. The
following sections describe the controls that appear on each window.
4.3.1: Understanding main window features and controls
Figure 37 shows the SD1 SFP main window without any overlapping SFP window.
Figure 37SD1 SFP main window
The controls under each menu item are further described in the order displayed above.
• Exit—Click File > Exit to close the SD1 SFP main window along with any SFP windows that may be
displayed.
2. Window
Figure 39Controls in the Window menu
• The menu under Window lists the names assigned to the connected modules. By default, a tick
mark appears against each entry, indicating that the corresponding SFP window is active. Any
name that does not appear indicates that the module is not connected. An offline instance for
each module is available in the Demo Modules sub-menu.
1 To close any SFP window that is open, clear the tick from the corresponding entry.
2 To open an SFP window for a module that is connected, click the corresponding entry.
• Demo Modules—The drop-down sub-menu under Window > Demo Modules lists the names of each
module. You may perform the steps described above, but the corresponding SFP windows that
appear are meant for demonstration purpose only.
3. Help
Figure 40Controls in the Help menu
• Hardware Manager...—Click Help > Hardware Manager... to launch the Hardware Manager window.
See “Understanding features in Hardware Manager” on page 78 for more information on features
available in the Hardware Manager window.
Figure 43Controls in the File menu for Hardware Manager
•Refresh HW list—This feature requires an active network connection to fetch information
from the database. Click File > Refresh HW list so that the SD1 SFP software checks the
Firmware database for any new Firmware version for each M3xxxA module that is
displayed in the Modules area below. If an updated firmware version is found
corresponding to one or more modules, the firmware version is updated/refreshed in the
Available FW Version list. Performing the Refresh HW list is recommended prior to
proceeding with Firmware update using the SD1 SFP software on one or more connected
modules.
•Load update package...—In case your machine is offline, that is, does not have an active
network connection, this feature is useful to load an updated and pre-saved firmware
package so that you can still proceed with firmware updates on one or more connected
M3xxxA modules. Click File > Load update package... to access the Load SDM package...
window, as shown in Figure 44. Navigate to the folder where the firmware update file is
saved. Open the required SDM package file with extension *.sdpkg. You may proceed with
firmware update on the module which the SDM package file corresponds to.
Figure 44Accessing firmware update file from Load SDM package window
2 Help—The Help > Database Version to view the version of the Firmware update file Database
server.
Figure 45Control in the Help menu for Hardware Manager
•Slot—the slot number in the Chassis where the M3xxxA module is inserted into. Related
API function: “getSlot()”.
•Firmware Version—the firmware version currently installed on each M3xxxA module.
Related API function: “getFirmwareVersion()”.
•Available FW Version—’None’ if only the modules are connected but the machine does not
have an active network connection; else, the latest firmware version number that is
available on the Database server.
•Update—By default, the option is ‘No’ for each module. Change to ‘Yes’ for one or more
modules where you wish to perform a firmware update.
5 Update Selected HW—Click the Update Selected HW button to proceed with firmware update on
your selected module, where you have set the Update flag to Yes . The SD1 SFP software then
displays a confirmation prompt asking you to verify if you wish to proceed with the firmware
update using the version listed in the Available FW Version list for the selected module on the
respective Chassis & Slot numbers. For firmware update instructions, refer to SD1 3.x Software Startup Guide.
Section 4.4: Understanding AWG SFP features & controls
For all those modules that are connected to the Chassis, the respective soft front panel for the
M3201A/M3202A PXIe AWG and that for the AWG part of the M3300A/M3302A Combo appear
automatically when SD1SFP is launched. By default, the SFP window for the AWG appears blank,
that is, without any configuration parameters, as shown for M3201A module in Figure 48.
The controls are common across all AWG SFP windows. However, the
number of AWGs / Channels that appear depends on the module type.
M32xxA modules support only 4 AWGs/Channels whereas the M33xxA
Combos support only 2 AWGs/Channels.
On this window,
• the default name, which is assigned by the SD1 SFP user interface, is displayed on the bar at the
top.
• the hardware options enabled on the module followed by the serial number, Chassis number and
Slot number are displayed on the bar at the bottom.
• most of the controls appear within the main menu items, which are explained in the following
section.
• a shortcut for some of the controls, which are available under the main menu items, are displayed
below the main menu.
Figure 48SFP for the connected M3201A after SD1 SFP software is launched
4.4.1: Understanding AWG SFP main menu features & controls
The controls under each menu item are further described in the order displayed in Figure 48. Images
in this section pertain mainly to M3201A AWG module’s SFP only, but are applicable across all AWG
module SFP windows.
1. File
Figure 49Controls in the File menu of the AWG SFP
• Change Name...—Click File > Change Name... to open the Change name module dialog box. This
feature works in the same manner for Digitizer SFPs also.
Figure 50Change name module dialog box
•In the Name: text field, enter an alternate name of your choice.
•Click OK.
The new name appears on the bar at the top of the corresponding module’s SFP window.
• Hide—Click File > Hide to close the module’s SFP window instance.
• To show/open the same window again, click Window > <module name> from the main menu of
the Keysight SD1 SFP software. See description for “Window” in “Understanding main window
features and controls” on page 76.
2. Settings
Here, the controls for AWG are available in the upper part.
Figure 51Controls in the Settings menu of the AWG SFP
• AWG External Triggers...—Click Settings > AWG External Triggers... to open the Configure AWG Triggers
dialog box. See “Setting the Configure AWG Triggers dialog” on page 87 for more description.
• Related API function: “AWGtriggerExternalConfig()”
• AWG Memory...—Click Settings > AWG Memory... to open the Onboard waveform memory dialog box.
See “Setting the Onboard Waveform memory dialog” on page 87 for more description.
• AWG Configuration...—Click Settings > AWG Configuration... to open the AWG Configuration dialog
box. See “Setting the AWG Configuration dialog” on page 89 for more description.
• Related API functions: “AWGqueueSyncMode()”, “AWGqueueConfig()”,
“AWGqueueConfigRead()”
• AWG Queue—Click Settings > AWG Queue > AWGn... (where, n = AWG number) to open the
corresponding AWG n Waveform Queue dialog box. See “Setting the AWG Waveform Queue dialog”
on page 90 for more description.
• Related API functions: “AWGqueueWaveform()”, “AWGflush()”
Figure 52Controls in AWG Queue sub-menu
• AWG Trigger—Click Settings > AWG Trigger > Send Trigger to send a trigger to the selected AWGs in
the same sub-menu. By default, all AWGs are selected.
• Related API functions: “AWGtrigger()”, “AWGtriggerMultiple()”
Figure 53Controls in AWG Trigger sub-menu
•Click one or more AWG n (where, n = AWG number) entries to clear the tick mark; thereby,
refraining them from receiving the trigger when you click Send Trigger.
• Alternatively, you may use the shortcut controls to send trigger to AWGs.
Figure 54Shortcut controls for sending trigger to AWGs
• Reset Accumulated Phase—Click Settings > Reset Accumulated Phase > Reset Phase to reset any
accumulated phase on the selected Channels in the same sub-menu. By default, all Channels are
selected.
• Related API functions: “channelPhaseReset()”, “channelPhaseResetMultiple()”
Figure 55Controls in Reset Accumulated Phase sub-menu
•Click one or more Ch n (where, n = Channel number) entries to clear the tick mark; thereby,
refraining them from undergoing phase reset when you click Reset Phase.
• Alternatively, you may use the shortcut controls to reset phase on the Channels.
Figure 56Shortcut controls for resetting accumulated phase on Channels
• Trigger/Clock...—Click Settings > Trigger/Clock... to open the Trigger / Clock Settings dialog box. See
“Setting the Trigger / Clock Settings dialog” on page 91 for more description.
• Related API functions: “triggerIOconfig()”, “clockIOconfig()”
3. View
Figure 57Control in the View menu of the AWG SFP
• New Panel...—Click View > New Panel... to open the Add new panel dialog box.
Figure 58Add new panel dialog box
•From the Channel: drop-down options, select a Channel number, which you wish to configure
on the connected AWG module.
Figure 59New panel for Channel configuration dialog box along with its various shortcut controls
• Repeat the previous steps to add more AWG Channels.
• Alternatively, you may click the shortcut icons shown in Figure 59 to open the Add new panel
dialog box.
The description for the attributes in the channel configuration panel is covered in “Setting up the
Channel configuration panel” on page 93.
4. FPGA
Figure 60Control in the FPGA menu of the AWG SFP
• Load firmware...—Click FPGA > Load firmware... to open the Firmware Loader dialog box, where you
can load the bitstream file (*.k7z) onto the FPGA sandbox region of the corresponding module. For
more information on how to load the bitstream file onto the FPGA sandbox region, see “Using SD1
SFP user interface to load FPGA” on page 64.
• Related API function: “FPGAload()”
5. Help
Figure 61Control in the Help menu of the AWG SFP
• Module User Guide...—Click Help > Module User Guide... to view the documentation corresponding
to AWG/Combo modules in Online Help format. For more information, see “Accessing Online Help
4.4.2: Configuring AWG and Channel Setting dialogs
1. Setting the Configure AWG Triggers dialog
If you are using an external trigger source to send trigger to one or more AWGs, you must configure
the Configure AWG Triggers dialog box.
Figure 62Configure AWG Triggers dialog box
1 Select one or more rows to enable external triggering for AWG n, where n = AWG number.
2 Trigger Mode indicates the mode when the trigger signal must be sent. From the Trigger Mode
drop-down options, select one of the following options:
• Disabled—(default) indicates that external triggering is disabled for the selected AWG.
• Active High—indicates that the trigger signal must be sent when active high voltage on the
signal is attained.
• Active Low—indicates that the trigger signal must be sent when active low voltage on the signal
is attained.
• Rising Edge—indicates that the trigger signal must be sent when the rising edge on the signal is
attained.
• Falling Edge—indicates that the trigger signal must be sent when the falling edge on the signal
is attained.
3 Trigger Line indicates the line medium to be used for the trigger signal to be sent. This field is
enabled for all Trigger Mode options except for Disabled. From the Trigger Line drop-down options,
select one of the following options:
• Extern 1 / Extern 2—indicates that line 1 / line 2 from the external triggering source is used to
send the trigger signal.
• PXI n (where, n = 0 to 7)—indicates that lines 0 to 7 from the PXI trigger source can be used to
send the trigger signal.
4 Sync—By default, the setting to synchronize the AWG with the trigger source is enabled. You may
clear the check box to disable synchronization.
5Click OK to save any changes and return to the AWG module window.
2. Setting the Onboard Waveform memory dialog
You must configure the Onboard waveform memory dialog box to load a waveform (in *.csv file format)
onto the module’s onboard RAM.
By default, the Keysight SD1 SFP software provides some waveform files in *.csv format as examples
during installation. The default location for these files is C:\Users\Public\Documents\Keysight\SD1\
Examples\Waveforms. You may also create and save waveform files of your own and save them in
*.csv format.
1Click ‘+’ to view and add one or more waveform files from the local disk of your machine.
Alternatively, if you click the cell in the Source column, a folder icon appears, which you can click
to perform the same action.
Figure 64Alternate way of browsing for waveform files
2From the Open window that appears, select a pre-defined waveform or navigate to select any
other waveform file of your choice and click Open.
Figure 65Default waveform files folder displayed in Open window
The waveform file is added to the first row of the Onboard waveform memory dialog box.
The SD1 SFP software auto-assigns numbers in the Number column to each waveform file you
add. In the Name column, it displays the name defined for the waveform type in the CSV file. The
cell in the Source column displays the file location on the local disk of your machine.
Figure 66Onboard waveform memory dialog box appearance after waveform files are added
3 In this dialog box, you may modify the following elements:
a Click ‘x’ that appears in column ‘1’ to remove a row. The SD1 SFP software prompts a
confirmation dialog. Click Yes to remove else No to retain.
b Number—Indicates the register number on the onboard memory where the waveform is loaded.
Double-click to edit one or more numbers in their respective cell to change the order of listing
of waveforms. The list is rearranged automatically to appear in ascending order of numbers.
c Name—Indicates the waveform type defined within the CSV file that you have opened. If
required, double-click to edit one or more names in their respective cell. Note that changing
the waveform name on the Onboard waveform memory dialog box does not change the name
within the CSV file on disk.
4 Repeat the previous steps to add one or more waveform files to this window and modify number
and names, if needed.
5Click OK to save any changes and return to the AWG module window.
3. Setting the AWG Configuration dialog
Each AWG block has a flexible waveform queue system that can be used to configure complex
generation sequences. To define the queue modes for each AWG, configure the AWG Configuration
dialog box.
Figure 67AWG Configuration dialog box
1Click an AWGn (where, n = AWG number) tab to configure the queue modes. Note that the queue
configuration options that appear under each AWG tab are the same.
2 Select the Config check box so that the Queue Sync Mode and Queue Mode fields become
configurable.
3 Queue Sync Mode— This setting configures the synchronization mode of the queue. From the
drop-down options, select:
• Immediate—(default) Set this option to queue waveform immediately after AWG has started, or
when the previous waveform in the queue finishes.
• Sync 100 (10MHz)—Set this option to synchronize the AWG to the 10 MHz reference clock.
4 Queue Mode—This setting configures the repetition cycles for the complete queue. From the
drop-down options, select:
• One Shot—(default) Set this option for the complete queue to be reproduced one time only.
• Cyclic—Set this option for the complete queue to be reproduced for more than one cycles.
5 Repeat steps 1 to 4 to configure AWG Queue modes for other AWG Channels.
6Click OK to save any changes and return to the AWG module window.
4. Setting the AWG Waveform Queue dialog
To define the order in which the waveforms must be queued along with their timing settings on each
AWG Channel, use the AWG n Waveform Queue (where, n = AWG Channel number). You can queue
only those waveforms, which have already been loaded onto the Onboard Waveform Memory.
Figure 68AWG Waveform Queue dialog box
1Click ‘+’ to add one or more waveform files from the Onboard Waveform Memory.
Alternatively, if you double-click the cell in the Name column, it converts into a drop-down field,
where you can select a waveform from the list that is already loaded in the Onboard Waveform
Memory.
Figure 69Alternate way of forming the waveform queue list
The SD1 SFP software auto-assigns position numbers in the Position column for each waveform
that you have included in the list. The Waveform column displays the waveform name as you have
set in the Onboard Waveform Memory window. By default, the Trigger Mode column is set to AUTO
whereas the Start Delay (ns), Cycles and Prescaler are set to ‘0’.
Figure 70AWG Waveform Queue dialog box appearance after waveforms are added
2 In this dialog box, you may modify the following elements:
a Click ‘x’ that appears in column ‘1’ to remove a row. The SD1 SFP software prompts a
confirmation dialog. Click Yes to remove else No to retain.
b Position—Indicates the position where the waveform must appear in the generated queue.
Double-click to edit one or more numbers in their respective cell to change the order of
positioning of waveforms in the queue. The list is rearranged automatically to appear in
ascending order of numbers.
c Waveform—Indicates the waveform name as defined in the Onboard waveform memory dialog. If
you click ‘+’ to add waveforms on each row, it pulls the waveform name that appears in
waveform memory register # 0 by default. To change the waveform type, double-click the cell
in a specific row and select the waveform name from the drop-down list as shown in Figure 70.
d Trigger Mode—Indicates the triggering method to launch the waveforms queued in an AWG.
Double-click the cell for each row to modify the value. Select one of the following options:
•AUTO—(default) Trigger signal is set to launch waveform immediately after the AWG has
started or when the previous waveform in the queue finishes.
•SW/HVI START—Set this option so that the AWG is triggered by the condition set in the
Configure AWG Triggers dialog in the SD1 SFP software, provided that the AWG is running.
•SW/HVI CYCLE—Set this option so that the AWG is triggered by the condition set in the
Configure AWG Triggers dialog in the SD1 SFP software, provided that the AWG is running.
However, in this case, trigger is required for each waveform cycle.
•EXTERNAL START—Set this option so that the AWG is triggered by an external Trigger
source.
•EXTERNAL CYCLE—Set this option so that the AWG is triggered by an external Trigger
source. However, a trigger is required for each waveform cycle.
e Start Delay (ns)—Set the delay between the trigger and the waveform launch in tens of ns.
f Cycles—Set the number of times the waveform is played once launched. The value ‘0’ specifies
infinite cycles.
g Prescaler—Set the waveform prescaler value, to reduce the effective sampling rate by a value of
prescaler x 5.
3 Repeat the previous steps to add one or more waveforms to the queue and modify the settings as
required.
4Click OK to save any changes and return to the AWG module window.
5. Setting the Trigger / Clock Settings dialog
If you are using an External Trigger / Clock source, you can control the point when the trigger must
be applied. Use the Trigger / Clock Settings dialog to perform this action.
Figure 71Trigger / Clock Settings dialog box
1 Select the check box for External Clock, External Trigger, or both to indicate which external source is
being used.
2 External Clock—From the Value drop-down options, select:
The main purpose of the AWG SFP window is to generate one or more waveforms per Channel. When
you add one or more new panels to the SFP window, the Channel configuration area panel appears
for the selected Channel. This section describes the various elements that are available in the
highlighted region in Figure 72. You may add more Channels to configure the waveform settings, as
needed. See “Understanding AWG SFP main menu features & controls” on page 83 to add new
panels.
Using Keysight SD1 3.x SFP Software4
Figure 72Channel configuration panel in M3xxxA AWG SFP window
Consider Figure 73 to understand each element of the Channel configuration panel in the order
shown.
Figure 73Various features on the Channel configuration panel
1. Channel n
• The title of each panel is set for the Channel number you select when adding a new panel. Here, n
represents the Channel number, which is different for the type of M3xxxxA module you select.
• M3202A AWG 1G — 4 Channels
• M3200A AWG 500 — 4 Channels
• M3302A AWG 500 DIG 500 — 2 AWG Channels
• M3300A AWG 500 DIG 100 — 2 AWG Channels
The number of Channels depend on the selected module’s AWG SFP window.
2. Main
• This tab contains the primary elements to generate waveforms using the internal Function
Generator or the Arbitrary Waveform Generator along with the settings to configure the
waveform’s display characteristics.
3. Waveform shape
• This drop-down contains the primary elements to generate waveforms using the internal Function
Generator or the Arbitrary Waveform Generator along with the settings to configure the
waveform’s display characteristics. Note that the SFP starts generating the waveforms using the
Function Generator as soon as you select one from the list.
• Related API function: “channelWaveShape()”
Figure 74Options in the Waveform shape drop-down box
• Off—The output signal is set to ‘0’. All other channel settings are maintained.
• Sinusoidal—The output signal is generated as sinusoidal. It is generated by the Function
Generator.
• Triangular—The output signal is generated as triangular. It is generated by the Function
Generator.
• Square—The output signal is generated as square. It is generated by the Function Generator.
• DC Voltage—The output signal is generated as a DC Signal. It is generated by the Function
Generator.
• AWG n (n = AWG number for the respective Channel)—The output signal is generated based on
the waveforms defined within the AWG Queue for the respective AWG. See “Setting the AWG
Waveform Queue dialog” on page 90 for more information. It is generated by the Arbitrary
Waveform Generator.
• Partner Channel—Only an even numbered channel (according to Keysight Channel numbering
format) can be set as a partner to the previous odd numbered channel (for example, CH2 is a
partner to CH1). The waveform queue, load and start functions defined for the odd numbered
channel are automatically called for the respective partner channel.
• HiZ—Selecting this check box indicates that the output signal is set to HIZ (High Impedance)
and no output signal is provided. This feature is available for Keysight M3202A PXIe AWG
models only.
Figure 75HiZ option available in M3202A PXIe AWG models
4. Controls for Amplitude, Frequency, Phase & DC offset
The four parameters define the waveform characteristics that is being generated.
• Amplitude—defines the amplitude range on the waveform generated by both the Function
Generator and the Arbitrary Waveform Generator. The number of Waveform points set for each
waveform type is multiplied by the value set in the user interface to determine the actual
amplitude. Default unit is ‘Volts’ and the range is between ‘±1.5V’ for all AWG modules.
• Related API function: “channelAmplitude()”
• Frequency (MHz)—defines the frequency of transmission on the waveform generated by the
Function Generator only. Default unit is ‘MHz’ and can be set to a maximum value of ‘200 MHz’
for all AWG modules that have sampling rate of 500 MSa/s whereas M3202A AWG with 1GSa/s
has a maximum frequency limit of ‘400 MHz’. Note that for the waveforms generated by the AWG,
the frequency is defined within the CSV file and not controlled via the SD1 user interface.
• Related API function: “channelFrequency()”
• Phase—defines the phase of the output waveform generated by the Function Generator only.
Default unit is ‘Degrees’ and the range is between ‘±360’ for all AWG modules. This phase is
continuous and can be made coherent by using the “Reset Accumulated Phase” feature for the
respective Channel number. See description for “Reset Accumulated Phase” in “Understanding
AWG SFP main menu features & controls” on page 83 for more information. Note that for the
waveforms generated by the AWG, the phase is defined within the CSV file and not controlled via
the SD1 user interface.
• Related API function: “channelPhase()”
• DC offset—defines the offset range on the waveform generated by both the Function Generator
and the Arbitrary Waveform Generator. The number of Waveform points set for each waveform
type is multiplied by the value set in the user interface to determine the actual offset. Default unit
is ‘Volts’ and the range is between ‘±1.5V’ for all AWG modules.
The controls for configuring values work in the same manner across all AWG SFP windows.
• Horizontal sliders—By default, markers in the center indicate that the respective parameter range
between both negative and positive values, whereas the markers that appear on the left indicate
only positive values.
• Editable value field—Click within the field where the value for each parameter is shown and edit
the respective values.
• Vertical sliders—Included each value field is a vertical slider for incrementing or decrementing the
values within the defined ranges.
5. Using the Channel Visualization Settings dialog
To access the Channel Visualization Settings dialog, click the icon on the Channel configuration
panel.
Table 23Alternate units and range values for each parameter
\
ParameterAlternate units
MinimumMaximum
AmplitudeVolts-1500.01500.0
Range value
Hz0.00200000000.00
Frequency
kHz0.00200000.00
Phase (default step size is 0.17)rad (Radians)-6.286.28
DC offsetVolts-1500.01500.0
400000000.00 (for AWG 1G)
400000.00 (for AWG 1G)
6. Modulation
On the Channel configuration panel, click the Modulation tab to view the settings to include one or
more modulating signals in the output waveform from the Function Generator or the AWG.
Figure 78Default view of the Modulation tab
Figure 79Options available in each segment of the Modulation tab
You may choose to include the following combinations of modulation signals from the drop-down
options in each segment. If required, set the deviation value for the corresponding field:
• Disabled (default option, no modulation signal will be included)
• Frequency Modulation only—Related API function: “modulationAngleConfig()”
• Phase Modulation only—Related API function: “modulationAngleConfig()”
• Amplitude Modulation only—Related API function: “modulationAmplitudeConfig()”
• Offset Modulation only—Related API function: “modulationAmplitudeConfig()”
• IQ Modulation only (deviation is not required to be set)—Related API function:
“modulationIQconfig()”
For more information regarding the Angle and Amplitude modulation techniques available here, see
“Working with Signal Modulation” on page 29. Once configured, you may switch to the Main tab to
view the applied modulation signal. See Figure 80 for an example.
Figure 80Single/Combination of modulation signals applied
7. AWG
As mentioned earlier, the standard waveforms using the Function Generator start generating as soon
as you select a waveform from the drop-down options for Waveform shape. However, if you select the
AWG n option, you must manually click the Play button, as shown in Figure 81, to start waveform
generation using the AWG, as defined in the AWG Waveform Queue window. If modulation is applied,
the modulation signal is added to the output waveform. As explained earlier, only Amplitude and DC Offset parameter values can be modified on these waveforms.
• Related API functions: “AWG()”, “AWGstart()”, “AWGstartMultiple()”, “AWGpause()”,
“AWGpauseMultiple()”, “AWGresume()”, “AWGresumeMultiple()”, “AWGstop()”,
“AWGstopMultiple()”
Figure 81Play button to generate AWG waveforms only
SD1 3.x Software for M320xA / M330xA Arbitrary Waveform Generators
User’s Guide
5.Using Keysight SD1 API
Command Reference
Keysight Supplied Native Programming Libraries 100
Support for Other Programming Languages 101
Functions in SD1 Programming Libraries 102
SD_Module functions 115
SD_AOU functions 135
SD_Wave functions 213
SD_Module functions (specific to Pathwave FPGA) 218
SD_SandboxRegister functions 228
Programs can run on an embedded controller or desktop computer and be controlled with Keysight
SD1 Programming Libraries. Keysight supplies a comprehensive set of highly optimized software
instructions that controls off-the-shelf functionalities of Keysight hardware. These software
instructions are compiled into the Keysight SD1 Programming Libraries. The use of customizable
software to create user-defined control, test and measurement systems is commonly referred as
Virtual Instrumentation. In Keysight documentation, the concept of a Virtual Instrument (or VI)
describes user software that uses programming libraries and is executed by a computer.
Keysight provides ready-to-use native programming libraries for a comprehensive set of
programming languages, such as C, Visual Studio (C#, VB), Python, etc., ensuring full software
compatibility and seamless multi-vendor integration. Ready-to-use native libraries are supplied for
the following programming languages and compilers:
Table 24List of programming languages and compilers
LanguageCompilerLibraryFiles
Microsoft Visual Studio .NET.NET Library*.dll
C
C++Any C++ compilerHeader only*.h
C#Microsoft Visual Studio .NET.NET Library*.dll
PythonAny Python compilerPython Library*.py
BasicMicrosoft Visual Studio .NET.NET Library*.dll