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, Inc. as governed by
United States and international
copyright laws.
Manual Part Number
M3100-90002
Published By
Keysight Technologies
1400 Fountaingrove Parkway
Santa Rosa
CA 95403
Edition
Edition 1, October, 2018
Printed In USA
Regulatory Compliance
This product has been designed and
tested in accordance with accepted
industry standards, and has been
supplied in a safe condition. To review
the Declaration of Conformity, go to
http://www.keysight.com/go/conformity.
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
MERCHANTABILITY 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 OF 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 SHALL CONTROL.
KEYSIGHT TECHNOLOGIES DOES NOT
WARRANT THIRD-PARTY SYSTEMLEVEL (COMBINATION OF CHASSIS,
CONTROLLERS, MODULES, ETC.)
PERFORMANCE, SAFETY, OR
REGULATORY COMPLIANCE, UNLESS
SPECIFICALLY STATED.
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.
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.keysight.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.
Safety Notices
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.
The following safety precautions should
be observed before using this product
and any associated instrumentation.
This product is intended for use by
qualified personnel who recognize
ii
shock hazards and are familiar with the
safety precautions required to avoid
possible injury. Read and follow all
installation, operation, and
maintenance information carefully
before using the product.
If this product is not used as specified,
the protection provided by the
equipment could be impaired. This
product must be used in a normal
condition (in which all means for
protection are intact) only.
The types of product users are:
Responsible body is the individual or
group responsible for the use and maintenanceof equipment, for ensuring that
the equipment is operated within its specifications and operating limits, and for
ensuring operators are adequately trained.
Operators use the product for its intended
function. They must be trainedin electrical
safety procedures and proper use of the
instrument. They must be protectedfrom
electric shock and contactwith hazardous
live circuits.
Maintenance personnel perform routine
procedures on the product to keep it operating properly (for example, setting the line
voltage or replacing consumable materials). Maintenance procedures are
described in the user documentation. The
procedures explicitly stateif the operator
may perform them. Otherwise, they should
be performed only by servicepersonnel.
Servicepersonnel are trainedto work on
live circuits, perform safe installations, and
repair products. Only properly trained servicepersonnel may perform installation
and serviceprocedures.
Operator is responsible to maintain safe
operating conditions. To ensure safe
operating conditions, modules should
not be operated beyond the full
temperature range specified in the
Environmental and physical
specification. Exceeding safe operating
conditions can result in shorter
lifespans, improper module
performance and user safety issues.
When the modules are in use and
operation within the specified full
temperature range is not maintained,
module surface temperatures may
exceed safe handling conditions which
can cause discomfort or burns if
touched. In the event of a module
exceeding the full temperature range,
always allow the module to cool before
touching or removing modules from
chassis.
Keysight products are designed for use
with electrical signals that are rated
Measurement Category I and
Measurement Category II, as described
in the International Electrotechnical
Commission (IEC) Standard IEC 60664.
Most measurement, control, and data
I/O signals are Measurement Category I
and must not be directly connected to
mains voltage or to voltage sources with
high transient over-voltages.
Measurement Category II connections
require protection for high transient
over-voltages often associated with
local AC mains connections. Assume all
measurement, control, and data I/O
connections are for connection to
Category I sources unless otherwise
marked or described in the user
documentation.
Exercise extreme caution when a shock
hazard is present. Lethal voltage may
be present on cable connector jacks or
test fixtures. The American National
Standards Institute (ANSI) states that a
shock hazard exists when voltage levels
greater than 30V RMS, 42.4V peak, or
60VDC are present. A good safety
practice is to expect that hazardous
voltage is present in any unknown
circuit before measuring.
Operators of this product must be
protected from electric shock at all
times. The responsible body must
ensure that operators are prevented
access and/or insulated from every
connection point. In some cases,
connections must be exposed to
potential human contact. Product
operators in these circumstances must
be trained to protect themselves from
the risk of electric shock. If the circuit is
capable of operating at or above 1000V,
no conductive part of the circuit may be
exposed.
Do not connect switching cards directly
to unlimited power circuits. They are
intended to be used with impedancelimited sources. NEVER connect
switching cards directly to AC mains.
When connecting sources to switching
cards, install protective devices to limit
fault current and voltage to the card.
Before operating an instrument, ensure
that the line cord is connected to a
properly-grounded power receptacle.
Inspect the connecting cables, test
leads, and jumpers for possible wear,
cracks, or breaks before each use.
When installing equipment where
access to the main power cord is
restricted, such as rack mounting, a
separate main input power disconnect
device must be provided in close
proximity to the equipment and within
easy reach of the operator.
For maximum safety, do not touch the
product, test cables, or any other
instruments while power is applied to
the circuit under test. ALWAYS remove
power from the entire test system and
discharge any capacitors before:
connecting or disconnecting cables or
jumpers, installing or removing
switching cards, or making internal
changes, such as installing or removing
jumpers.
Do not touch any object that could
provide a current path to the common
side of the circuit under test or power
line (earth) ground. Always make
measurements with dry hands while
standing on a dry, insulated surface
capable of withstanding the voltage
being measured.
The instrument and accessories must
be used in accordance with its
specifications and operating
instructions, or the safety of the
equipment may be impaired.
Do not exceed the maximum signal
levels of the instruments and
accessories, as defined in the
specifications and operating
information, and as shown on the
instrument or test fixture panels, or
switching card.
iii
When fuses are used in a product,
replace with the same type and rating
for continued protection against fire
hazard.
Chassis connections must only be used
as shield connections for measuring
circuits, NOT as safety earth ground
connections.
If you are using a test fixture, keep the
lid closed while power is applied to the
device under test. Safe operation
requires the use of a lid interlock.
Instrumentation and accessories shall
not be connected to humans.
Before performing any maintenance,
disconnect the line cord and all test
cables.
To maintain protection from electric
shock and fire, replacement
components in mains circuits –
including the power transformer, test
leads, and input jacks – must be
purchased from Keysight. Standard
fuses with applicable national safety
approvals may be used if the rating and
type are the same. Other components
that are not safety-related may be
purchased from other suppliers as long
as they are equivalent to the original
component (note that selected parts
should be purchased only through
Keysight to maintain accuracy and
functionality of the product). If you are
unsure about the applicability of a
replacement component, call an
Keysight office for information.
No operator serviceable parts inside.
Refer servicing to qualified personnel.
To prevent electrical shock do not
remove covers. For continued
protection against fire hazard, replace
fuse with same type and rating.
PRODUCT MARKINGS:
The CE mark is a registered trademark
of the European Community.
Australian Communication and Media
Authority mark to indicate regulatory
compliance as a registered supplier.
This symbol indicates product
compliance with the Canadian
Interference-Causing Equipment
Standard (ICES-001). It also identifies
the product is an Industrial Scientific
and Medical Group 1 Class A product
(CISPR 11, Clause 4).
This product complies with the WEEE
Directive marketing requirement. The
affixed product label (above) indicates
that you must not discard this
electrical/electronic product in
domestic household waste. Product
Category: With reference to the
equipment types in the WEEE directive
Annex 1, this product is classified as
“Monitoring and Control
instrumentation” product. Do not
dispose in domestic household waste.
To return unwanted products, contact
your local Keysight office, or for more
information see
This symbol indicates the instrument is
sensitive to electrostatic discharge
(ESD). ESD can damage the highly
sensitive components in your
instrument. ESD damage is most likely
to occur as the module is being
installed or when cables are connected
or disconnected. Protect the circuits
from ESD damage by wearing a
grounding strap that provides a high
resistance path to ground. Alternatively,
ground yourself to discharge any builtup static charge by touching the outer
shell of any grounded instrument
chassis before touching the port
connectors.
This symbol on an instrument means
caution, risk of danger. You should refer
to the operating instructions located in
the user documentation in all cases
where the symbol is marked on the
instrument.
This symbol indicates the time period
during which no hazardous or toxic
substance elements are expected to
leak or deteriorate during normal use.
Forty years is the expected useful life of
the product.
iv
Contents
1 Overview of Keysight Software and Programming Tools1
KeysightM3201A/M3202A PXIe AWGs, M3100A/M3102A PXIe Digitizers, and
M3300A/M3302A PXIe AWG/Digitizer Combos can be operated as classical benchtop instruments using Keysight SD1 SFP software; no programming is required.
When SD1 SFP is opened, 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.
1 Overview of Keysight Software and Programming Tools
1. 2Keysight Programming Tools
The following programming tools are available to control KeysightM3100A/M3102A
PXIe Digitizers, M3201A/M3202A PXIe AWGs, and M3300A/M3302A PXIe AWG
&Digitizer Combinations:
1 Overview of Keysight Software and Programming Tools
1. 2. 1 Keysight SD1 Programming Libraries
Keysight supplies a comprehensive set of highly optimized software instructions that
can control off-the-shelf functionalities of Keysight hardware. These software
instructions are compiled into the Keysight SD1 Programming Libraries. Programs can
be written with these libraries and run on an embedded controller or desktop
computer.
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 native programming libraries for a comprehensive set of
programming languages, such as C, C++, Visual Studio (VC++, C#, VB), MATLAB,
National Instruments LabVIEW, Python, etc., ensuring full software compatibility and
seamless multivendor integration. Keysight also provides dynamic libraries, for
example: DLLs, that can be used in virtually any programming language.
Keysight native programming libraries ensure full compatibility, providing effortless
and seamless software integration user interaction, etc. The I/O modules run in
parallel, completely synchronized, and exchange data and decisions in real-time. The
result is a set of modules that behave like a single integrated real-time instrument.
For more information, refer to the following sections:
Keysight Supplied Native Programming Libraries onpage23
Support for Other Programming Languagesonpage24
Functions in SD1 Programming Librariesonpage25
KeysightM3201A/M3202A PXIe AWGs and M3100A/M3102A
PXIe digitizer must have OptionHV1 to use Keysight M3601A
software; OptionHV1 is only available at time of purchase.
The following section is only an overview of the Keysight M3601A
software; To learn how to use Keysight M3601A software, refer to
the User'sGuide for the [3] KeysightM3601A Hard Virtual
Instrument (HVI) DesignEnvironment Software.
1. 2. 2. 1 HVI Programming
Keysight’s HVI technology provides the capability to create time-deterministic
execution sequences that are executed by the KeysightM3201A/M3202A PXIe AWGs
and M3100A/M3102A PXIe digitizers with Option HV1. HVIs are programmed with
Keysight M3601A, an HVI design environment with a user-friendly flowchart-style
interface.
1. 2. 2. 2 HVI Functions
Keysight’s HVI Technology uses the same programming instructions that are
available in the Keysight SD1 Programming Libraries, with the difference that in an
HVI, those instructions are executed by the hardware modules in hard real-time, not
by the embeded controller or desktopcomputer.
Virtual Instrumentation is the use of customizable software and modular hardware to
create user-defined measurement systems, called Virtual Instruments (VIs). Thus, a
Virtual Instrument is based on a software which is executed by a computer, and
therefore its real-time performance (speed, latency, etc.) is limited by the computer
and by its operating system. In many cases, this real-time performance might not be
enough for the application, even with a real-time operating system. In addition, many
modern applications require tight triggering and precise intermodule synchronization,
making the development of final systems very complex and time consuming. For all
these applications, Keysight has developed an exclusive technology called Hard
Virtual Instrumentation. In a hard virtual instrument (HVI), the user application is
executed by the hardware modules independently of the computer, which stays free
for other VI tasks, like visualization.
HVIs vs. VIs: Virtual Instrumentation is fully supported making use
of the Keysight SD1 Programming Libraries. On the other hand,
Keysight’s exclusive Hard Virtual Instrumentation (HVI)
technology provides the capability to create time-deterministic
1 Overview of Keysight Software and Programming Tools
execution sequences which are executed by the hardware
modules in parallel and with perfect intermodule synchronization.
HVIs provide the same programming instructions available in the
Keysight SD1 Programming Libraries.
HVIs are programmed with Keysight M3601A Hard Virtual Instrument (HVI) Design
Environment Software, with a user-friendly flowchart-style interface, compatible with
KeysightM3201A/M3202A PXIe AWGs and M3100A/M3102A PXIe digitizers.
1 Overview of Keysight Software and Programming Tools
M3601A
Keysight M3601A is based on flowchart programming, providing an easyto-use environment to develop hard real-time applications.
Keysight M3601A Hard Virtual Instrument (HVI) Design Environment Software
provides:
Ultra-fast hard real time execution, processing, and decision making: Execution
is hardware-timed and can be as fast as 1 nanosecond, matching very high-performance FPGA-based systems and outperforming any real-time operating system.
User-friendly flowchart-style programming interface: Keysight M3601A
provides an intuitive flowchart-style programming environment that makes
HVIprogramming extremely fast and easy. Using M3601A and its set of built-in
instructions (the same instructions available for VIs), the user can program the
hardware modules without any knowledge in FPGA technology, VHDL, etc.
Off-the-shelf intermodule synchronization and data exchange: Each HVI is
defined by a group of hardware modules which work perfectly synchronized,
without the need of any external trigger or additional external hardware.
In addition, Keysight modules exchange data and decisions for ultra-fast control algorithms.
Complete robustness: Execution is performed by hardware, without operating
system, and independently of the user PC.
Seamless integration with Keysight FPGA technology: HVIs can interact with
user-defined FPGA functions, making the real-time processing capabilities of
HVIs unlimited.
1 Overview of Keysight Software and Programming Tools
Seamless integration with Keysight SD1 Programming Libraries: In a complex
control or test system, there are still some non- time-critical tasks that can
only be performed by a VI, like for example: user interaction, visualization, or
processing and decision tasks which are too complex to be implemented by
hardware. Therefore, in a real application, the combination of VIs and HVIs is
required. This task can be performed seamlessly with Keysight programming
tools, for example, the user can have many HVIs and can control them from a VI
using instructions like start, stop, pause, etc.
Tip: New hardware functionalities without FPGA programming:
Keysight’s HVI technology is the perfect tool to create new
hardware functionalities with FPGA-like performance and without
any FPGA programmingknowledge. Users can create a repository
of HVIs that can be launched from VIs using the Keysight SD1
Programming Libraries.
In an HVI, all Keysight modules run in parallel and completely synchronized,
executing one flowchart per module. This results in simpler systems without the need
of triggers.
Keysight FPGA programming technology is managed with Keysight M3602A FPGA
Design Environment Software, an intuitive graphical FPGA programming environment.
Keysight M3201A/M3202A PXIe AWGs and M3100A/M3102A
PXIe digitizers must have OptionFP1 to use Keysight M3602A
software; OptionFP1 is only available at time of purchase.
The following section is only an overview of the Keysight M3602A
software; To learn how to use Keysight M3602A software, refer to
the User'sGuide for the KeysightM3602A FPGA Design
Environment Software.
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.
All Keysight M3201A/M3202A PXIe AWGs and M3100A/M3102A PXIe digitizers can
add OptionFP1, which provide the same built-in functionalities of their standard
counterparts, giving the users more time to focus on their specific functionalities. For
example, using OptionFP1 on a Keysight M3100A/M3102A PXIe digitizer, the user
has all the off-the-shelf functionalities of the hardware (data capture, triggering, etc.),
but custom real-time FPGA processing can be added in the data path, between the
acquisition and the transmission of data to the computer.
1 Overview of Keysight Software and Programming Tools
M3602A
FPGA programming made simple: Full language compatibility
(including the graphical environment MATLAB/Simulink) and an
easy-to-use FPGA graphical IDE, make Keysight FPGA
programming extremely simple.
An FPGA programming environment provides the following features:
Keysight M3602A is a complete FPGA programming environment that allows the user
to customize Keysight M3201A/M3202A PXIe AWGs and M3100A/M3102A PXIe
digitizers with Option FP1. Keysight M3602A provides the necessary tools to design,
compile, and program the FPGA of the module.
Complete platform, from design to FPGA programming: Keysight M3602A
provides the necessary tools to design, compile, and program the FPGA of the
module.
5x faster project development
Graphical environment without performance penalty
FPGA know-how requirement minimized: The graphical environment provides a
tool which does not require an extensive know-how in FPGA technology, improving the learning curve.
Streamlined design process:
Ready-to-use Keysight Block Library: M3602A provides a continuously-growing
library of blocks which reduces the need for custom FPGA-code development.
Include VHDL, Verilog, or Xilinx VIVADO/ISE projects: Experienced FPGA users
can squeeze the power of the onboard FPGA.
Include MATLAB/Simulink
Projects: MATLAB/Simulinkin conjunction with Xilinx
System Generator for DSP provides a powerful tool to implement digital signal
processing. The user can go from the design/simulation power of MATLAB/Simulink to
M3602A code in just a few clicks.
Include Xilinx CORE Generator IP cores: Xilinx CORE Generator can be launched
by M3602A to create IP cores that can be seamlessly included in the design.
1 Overview of Keysight Software and Programming Tools
Add and remove built-in resources to free up space: The user can remove unused
built-in resources to free up more FPGA space.
One-click compiling and programming:
3x faster ultra-secure cloud FPGA compiling: An ultra-fast cloud compiling system provides up to 3 times faster compiling. An ultra-secure TLS encrypted communication protects the IP of the user.
100x faster hot programming via PCI Express without rebooting: Hardware can
be reprogrammed without external cables and without rebooting the system.
Design Process: Customization vs. Complete Design
Keysight FPGA technology allows the user to customize Keysight M3201A/M3202A
PXIe AWGs and M3100A/M3102A PXIe digitizers with Option FP1; these products are
delivered with all the off-the-shelf functionalities of the standard products, and
therefore the development time is dramatically reduced. The user can focus
exclusively on expanding the functionality of the standard instrument, instead of
developing a complete new one.
In Keysight M3602A, FPGA code is represented as boxes (called blocks) with IO ports.
An empty project contains the ”Default Product Blocks” (off-the-shelf functionalities),
and the ”Design IO Blocks” that provide the outer interface of the design. The user can
add/remove blocks from the Keysight Block Library, External Blocks, or Xilinx IP cores.
1. 2. 3. 1 FPGA Programming Overview
Keysight FPGA Block Library: Keysight M3602A provides a readyto-use FPGA block library that reduces the requirement on FPGA
know-how. Please check the M3602A User Guide to see a full
description of the available FPGA blocks.
Keysight M3602A provides up to x3 faster FPGA compiling and hot programming
without having to reboot the system.
1 Overview of Keysight Software and Programming Tools
M3602A Diagram Blocks
M3602A ControlCH Block
This block provides all the control parameters set by the user software using the
Keysight SD1 Programming Libraries.
Parameters
NameDescription
Outputs
AngleModCtrl Angle modulation control (frequency or phase)
AmpModCtrlAmplitude modulation control
WaveShapeSelects the output waveform
AmplitudeSignal amplitude value
OffsetDC offset value
FrequencySignal frequency value
PhaseSignal phase value
PhaseRstSignal to reset the phase of the function generator
1 Overview of Keysight Software and Programming Tools
M3602A AWG Block
This block is the Dual Arbitrary Waveform Generator.
Parameters
NameDescription
Inputs
ControlAWG operation control
QueueCtrlAWG queue control
Outputs
Data_AWaveform A output (for dual waveforms), main waveform for single waveforms
Data_BWaveform B output (for dual waveforms only)
WFstartSignal that indicates when the AWG starts a waveform
1 Overview of Keysight Software and Programming Tools
M3602A FuncGen Block
This block is a function generator with angle modulation capabilities.
Parameters
NameDescription
Inputs
AngleModCtrlConfigures the angle modulation (frequency or phase)
WaveShapeSelects the output waveform between Sine, Triangular or Square
AWGsignalArbitrary waveform coming from the AWG. It is used as the modulating signal
FrequencySignal frequency value
PhaseSignal phase value
WFstartSignal that indicates when the AWG signal starts a waveform
PhaseRstSignal to reset the phase of the function generator
Outputs
WaveShapeOut Indicates which of the output signals is valid
SineSinusoidal waveform
TriangularTriangular waveform
SawtoothNot used
SquareSquare waveform
1 Overview of Keysight Software and Programming Tools
M3602A ModGain Block
This block has the following functionalities:
It selects the output waveform between Sine, Triangular, Sawtooth, Square,
Partner Channel, or AWG.
It modulates the amplitude and the offset of the signal
Parameters
NameDescription
Inputs
AmpModCtrlConfigures the amplitude modulator
WaveShapeSelects the output waveform between:
Sine, Triangular, Square, Partner Channel, or AWG
WFstartSignal that indicates when the AWGsignal starts a waveform
AmplitudeSignal amplitude value
OffsetDCoffset value
SineSinusoidal waveform coming from the Function Generator
TriangularTriangular waveform coming from the Function Generator
SawtoothNot used
SquareSquare waveform coming from the Function Generator
PartnerInWaveform coming from the Partner Channel.
Used only in odd channels
AWGsignalArbitrary waveform coming from the AWG. It can be routed
to SignalOut, or it can be used as the modulating signal
Outputs
SignalOutOutput signal
PartnerOutCopy of the output signal used for the even Partner Channel.
This chapter describes how to use Keysight SD1 SFP software:
Main Soft Front Panel Controls onpage18
Input Setting Controlsonpage19
Time Domain Controls (Scope Like Operation)onpage20
Frequency Domain Controls (Spectrum Analyzer Functionality)onpage21
Window Types Used in FFT Functionsonpage22
KeysightM3201A/M3202A PXIe AWGs, M3100A/M3102A PXIe Digitizers, and
M3300A/M3302A PXIe AWG/Digitizer Combos can be operated as classical benchtop instruments using Keysight SD1 SFP software; no programming is required.
When SD1 SFP is opened, 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.
2 Using Keysight SD1 SFP Software
SD1 SFP
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.
The main soft front panel for the M3100A/M3102A PXIe Digitizers appear
automatically when SD1SFP is launched and the module is connected to the chassis.
If there are no modules available, SD1 SFP will launch "Demo Offline" modules.
When SD1 SFP is launched, the soft front panel appears populated with all available
channels, waiting for the user to configure the input ”Channels”. The soft front panel
provides both time domain (scope like functionality) and frequency domain
(spectrumanalyzer like functionality).
BartlettHybrid windowWINDOW_BARTLETT1
HanningSide-lobes roll off about 18 dB per octaveWINDOW_HANNING2
HammingOptimized to minimize the maximum nearest side lobeWINDOW_HAMMING3
BlackmanHigher-order generalized cosine windows for applic-
ations that require windowing by the convolution in the
frequency-domain
KaiserAdjustable window maximizing energy concentration in
the main lobe
GaussAdjustable window (can be used for quadratic inter-
Keysight Supplied Native Programming Libraries onpage23
Support for Other Programming Languagesonpage24
Functions in SD1 Programming Librariesonpage25
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, C++, Visual Studio (VC++, C#, VB), MATLAB,
National Instruments LabVIEW, Python, etc., ensuring full software compatibility and
seamless multivendor integration. Ready-to-use native libraries are supplied for the
following programming languages and compilers:
LanguageCompilerLibraryFiles
CMicrosoft Visual Studio . NET.NET Library*.dll
MinGW (Qt), GCCC Library*.h, *.a
Any C compilerC Library*.h, *.lib
C++Microsoft Visual Studio . NET.NET Library*.dll
MinGW (Qt), GCCC++ Library*.h, *.a
C++ Builder / Turbo C++C++ Library*.h, *.lib
C#Microsoft Visual Studio .NET.NET Library*.dll
MATLABMathWorks MATLAB.NET Library*.dll
PythonAny Python compilerPython Library*.py
BasicMicrosoft Visual Studio .NET.NET Library*.dll
LabVIEWNational Instruments LabVIEWLabVIEW Library*.vi
Keysight provides dynamic libraries, e.g. DLLs, that can be used in virtually any
programming language. Dynamic-link libraries are compatible with any programming
language that has a compiler capable of performing dynamic linking. Here are some
case examples:
Compilers not listed above.
Other programming languages: Java, PHP, Perl, Fortran, Pascal.
Computer Algebra Systems (CAS): Wolfram Mathematica, Maplesoft Maple.
DLL function prototypes: The exported functions of the dynamic
libraries have the same prototype as their counterparts of the
static libraries.
Function Parameters: Some of the parameters of the library
functions are language dependent. The table of input and output
parameters for each function is a conceptual description,
therefore, the user must check the specific language function to
see how to use it. One example are the ID parameters (moduleID,
etc.), which identify objects in non object-oriented languages. In
object-oriented languages, the objects are identified by their
instances and therefore the IDs are not present.
Function Names: Some programming languages like C++ or
LabVIEW have a feature called function overloading or
polymorphism, that allows creating several functions with the
same name, but with different input/output parameters. In
languages without this feature, functions with different
parameters must have different names.
The following functions are available in Keysight SD1 Programming Libraries.
SD_Module Functionsonpage28
Function NameComments
openonpage28Initializes a hardware module and must be called before using
any other module-related function.
closeonpage30Releases all resources that were allocated for a module with
openonpage28 and must always be called before exiting the
application.
moduleCountonpage31Returns the number of Keysight SD1 modules in the system.
getProductNameonpage32Returns the product name of the specified module.
getSerialNumberonpage33Returns the serial number of the specified module.
getChassisonpage34Returns the chassis number of where a module is located.
getSlotonpage35Returns the slot number of where a module is located.
PXItriggerWriteonpage36Sets the digital value of a PXI trigger in the PXI backplane.
Only available in PXI/PXI Express form factors.
PXItriggerReadonpage37Reads the digital value of a PXI trigger in the PXI backplane.
Only available in PXI/PXI Express form factors.
SD_AIN Functions onpage38
Function NameComments
channelInputConfigonpage38Configures the input full scale, impedance and coupling.
channelPrescalerConfigonpage39Configures the input prescaler.
channelTriggerConfigonpage40Configures the analog trigger block for each channel Analog
Trigger.
DAQconfigonpage41Configures the acquisition of words in two possible reading
modes.
DAQdigitalTriggerConfigonpage42Configures the digital hardware triggers for the selected DAQ
Trigger.
DAQanalogTriggerConfigonpage43Configures the analog hardware trigger for the selected DAQ
Trigger.
DAQreadonpage44Reads the words acquired with the selected DAQ Data
Acquisition (DAQs).
DAQstartonpage46Starts an acquisition on the selected DAQs Data Acquisition
(DAQs).
DAQstartMultipleonpage47Starts an acquisition on the selected DAQs Data Acquisition
(DAQs).
DAQstoponpage48Stops the Data Acquisition (DAQs).
DAQstopMultipleonpage49Stops multiple channels of Data Acquisition (DAQs).
DAQpauseonpage50Pauses the Data Acquisition (DAQs).
DAQpauseMultipleonpage51Pauses multiple channels of Data Acquisition (DAQs).
DAQresumeonpage52Resumes acquisition on the selected DAQs.
DAQflushonpage54Flushes the acquisition buffers and resets the acquisition
DAQflushMultipleonpage55Flushes the acquisition buffers and resets the acquisition
DAQtriggeronpage56Triggers the acquisition of words in the selected DAQs
DAQtriggerMultipleonpage57Triggers the acquisition of words in the selected DAQ provided
DAQcounterReadonpage58Returns the number of available points to be read from the
triggerIOconfigonpage59Configures the trigger connector/line direction.
triggerIOwriteonpage60Sets the trigger output and synchronization mode.
triggerIOreadonpage61Reads the trigger input I/O Triggers.
clockSetFrequencyonpage62Sets the module clock frequency.
clockGetFrequencyonpage63Returns the real hardware clock frequency.
clockGetSyncFrequencyonpage64Returns the frequency of the synchronization clock.
clockResetPhaseonpage65Sets the module in a synchronized state, waiting for the first
DAQbufferPoolConfigonpage66Configures buffer pool that will be filled with the data of the
DAQbufferAddonpage68Adds an additional buffer to the channel’s previously
DAQbufferGetonpage69Retrieves a filled buffer from the channel buffer pool. You have
DAQbufferPoolReleaseonpage70Releases the channel buffer pool and its resources. After this
DAQbufferRemoveonpage71Requests that a buffer be removed from the channel buffer
FFTonpage72Calculates the FFT of data captured by DAQread for the
Resumes multiple channels of acquisition on the selected
DAQs.
counter included in a data acquisition block.
counter included in a Data Acquisition block.
provided that they are configured for VI/HVI Trigger.
that they are configured for VI/HVI Trigger.
intermediate buffer.
trigger to reset the phase of the internal clocks CLKsync and
CLKsys.
channel to be transferred to PC.
configured pool.
to call DAQbufferAdd with this buffer so the buffer can be used
again.
function is called, you need to call DAQbufferRemove
consecutively to get all buffers back and release them.
pool. If a NULL pointer is returned, no more buffers remain in
the buffer pool. Returned buffer is a previously added buffer
from the user and the user has to release/delete it.
selected channel. FFT frequency range goes from 0 to fs/2.
Initializes a hardware module and must be called before using any other modulerelated function.
A module can be opened using the serial number or the chassis and slot number.
Using the serial number ensures the same module is always opened regardless of its
chassis or slot location.
Parameters
NameDescription
Inputs
productNameModule's product name (for example, "M3202A").
serialNumberModule's serial number (for example, "ES5641").
chassisChassis number where the module is located.
slotSlot number in the chassis where the module is located.
compatibilityForces the channel numbers to be compatible with legacy models.
errorIn(LabVIEW only) If it contains an error, the function will not be executed
Outputs
moduleID(Non-object-oriented languages only) Module identifier
errorOutSee Error Codesonpage83
The product name can be found on the product
or can be retrieved with getProductNameonpage32.
The serial number can be found on the product
or can be retrieved with getSerialNumberonpage33.
The chassis number can be found in Keysight SD1 software
or can be retrieved with getChassisonpage34.
The slot number can be found on the chassis
or can be retrieved with getSlotonpage35.
Channel numbering (channel enumeration) can start as CH0 or CH1.
See Channel Numbering and Compatibility Mode.
and errorIn will be passed to errorOut
or a negative number that indicates an error, see Error
Codesonpage83.
C
int SD_Module_openWithSerialNumber(const char* productName, const char*
serialNumber);
int SD_Module_openWithSlot(const char* productName, int chassis, int slot);
int SD_Module_openWithSerialNumberCompatibility(const char* productName,
const char* serialNumber, int compatibility);
int SD_Module_openWithSlotCompatibility(const char* productName, int chassis,
int slot, int compatibility);
Releases all resources that were allocated for a module with openonpage28
and must always be called before exiting the application.
Parameters
NameDescription
Inputs
moduleID (Non-object-oriented languages only) Module identifier, returned by openonpage28
errorIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn will be
passed to errorOut.
Outputs
errorOut See Error Codesonpage83
Reads the digital value of a PXI trigger in the PXI backplane.
This function is only available in PXI/PXI Express form factors.
Parameters
NameDescription
Inputs
moduleID(Non-object-oriented languages only)
Module identifier, returned by openonpage28.
nPXItriggerPXI trigger number
OptionDescriptionNameValue
External
I/O
Trigger
PXI
Trigger
[0 to n]
See also, table after AWG External Trigger Source
errorIn(LabVIEW only) If it contains an error, the function will not be
executed and errorIn will be passed to errorOut.
Outputs
moduleIDOut(LabVIEW only) A copy of moduleID
valueDigital value with negated logic: 0 (ON) or 1 (OFF).
Negative numbers indicate an error, see Error Codesonpage83.
errorOutSee Error Codesonpage83
The AWG trigger is a TRG connector/line
of the module. PXI form factor only: this
trigger can be synchronized to CLK10.
PXI form factor only. The AWG external
trigger is a PXI trigger line and is synchronizedto CLK10.
TRIG_
EXTERNAL
TRIG_PXI
+ Trigger
No.
0
4000 +
Trigger
No.
C
int SD_Module_PXItriggerRead(int moduleID, int nPXItrigger);
C++
int SD_Module_PXItriggerRead(int moduleID, int nPXItrigger);
Visual Studio .NET, MATLAB
int SD_Module::PXItriggerRead(int nPXItrigger);
Python
SD_Module.PXItriggerRead(nPXItrigger, value)
LabVIEW
Available: No
M3601A
Available: No
(The value can be accessed using math operations: for example, MathAssign.)
Configures the input full scale, impedance and coupling as applicable according to
the product Full Scale, Impedance and Coupling.
Parameters
NameDescription
Inputs
moduleID(Non-object-oriented languages only) Module identifier, returned by function
openonpage28
nChannelInput channel number
fullScaleInput full scale in volts
impedanceInput impedance
couplingInput coupling
errorIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn will be
passed to errorOut
Outputs
moduleIDout (LabVIEW only) A copy of moduleID
errorOutKeysight SD1 Command Referenceonpage23
C
int SD_AIN_channelInputConfig(int moduleID, int nChannel, double fullScale, int
coupling);
C++
int SD_AIN::channelInputConfig(int nChannel, double fullScale, int coupling);
Visual Studio .NET, MATLAB
int SD_AIN::channelInputConfig(int nChannel, double fullScale, int coupling);
Python
int SD_AIN::channelInputConfig(int nChannel, double fullScale, int coupling);
moduleID(Non-object-oriented languages only) Module identifier, returned by
function openonpage28
nChannelInput channel number
prescalerprescaler value ).
errorIn(LabVIEW only) If it contains an error, the function will not be
executed and errorIn will be passed to errorOut
Outputs
moduleIDout(LabVIEW only) A copy of moduleID
errorOutKeysight SD1 Command Referenceonpage23
C
int SD_AIN_channelPrescalerConfig(int moduleID, int nChannel, int prescaler);
C++
int SD_AIN::channelPrescalerConfig(int nChannel, int prescaler);
Visual Studio .NET, MATLAB
int SD_AIN::channelPrescalerConfig(int nChannel, int prescaler);
Python
int SD_AIN::channelPrescalerConfig(int nChannel, int prescaler);
Configures the analog trigger block for each channel Analog Trigger.
Parameters
NameDescription
Inputs
moduleID(Non-object-oriented languages only) Module identifier, returned by function
nChannelInput channel number
analogTriggerMode Trigger mode
thresholdThreshold in volts
errorIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn will
Outputs
moduleIDout(LabVIEW only) A copy of moduleID
errorOutKeysight SD1 Command Referenceonpage23
openonpage28
be passed to errorOut
C
int SD_AIN_channelTriggerConfig(int moduleID, int nChannel, int analogTriggerMode,
double threshold);
C++
int SD_AIN::channelTriggerConfig(int nChannel, int analogTriggerMode, double
threshold);
Visual Studio .NET, MATLAB
int SD_AIN::channelTriggerConfig(int nChannel, int analogTriggerMode, double
threshold);
Python
int SD_AIN::channelTriggerConfig(int nChannel, int analogTriggerMode, double
threshold);
Configures the acquisition of words Data Acquisition (DAQs) in two possible reading
modes:
Blocking: Using the function DAQreadonpage44 to read the words. DAQread
is a blocking function that is released when the amount of words specified in
DAQpoints is acquired or when timeout elapses. This mode is enabled when a
callback function is not specified (it is set to null).
Non-blocking: The user specifies a callback function which is called whenever
the DAQeventDataReady event is signaled or when
timeout elapses. In the latter condition, there may be words available, but less than
the amount specified in DAQpoints.
Parameters
NameDescription
Inputs
moduleID(Non-object-oriented languages only) Module identifier, returned by function
openonpage28
nDAQDAQ to configure
triggerModeTrigger mode
triggerDelay(number of samples that trigger is delayed (or advanced if negative))
DAQpointsPerCycle Number of words to acquire per trigger
cyclesNumber of acquisition cycles. Each cycle requires a trigger specified by triggerMode.
A negative number means continuous acquisition
errorIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn
will be passed to errorOut
Outputs
moduleIDout(LabVIEW only) A copy of moduleID
errorOutKeysight SD1 Command Referenceonpage23
C
int SD_AIN_DAQconfig(int moduleID, int nDAQ, int DAQpointsPerCycle, int cycles, int
triggerDelay, int triggerMode);
Configures the digital hardware triggers for the selected DAQ Trigger.
Parameters
NameDescription
Inputs
moduleID(Non-object-oriented languages only) Module identifier,
returned by function openonpage28
nDAQDAQ number
triggerSourceHW digital trigger source
triggerNumberPXI (PXI/PXIe only) trigger number or external I/O trigger
number
triggerBehaviorTrigger behaviour (
errorIn(LabVIEW only) If it contains an error, the function will not
be executed and errorIn will be passed to errorOut
nDAQDAQ number
triggerNumberAnalog trigger number
errorIn(LabVIEW only) If it contains an error, the function will
Outputs
moduleIDOut(LabVIEW only) A copy of moduleID
errorOutKeysight SD1 Command Referenceonpage23
C
int SD_AIN_DAQanalogTriggerConfig (int moduleID, int nDAQ, int triggerNumber);
C++
int SD_AIN::DAQanalogTriggerConfig (int nDAQ, int triggerNumber);
returned by function openonpage28
not be executed and errorIn will be passed to errorOut
Visual Studio .NET, MATLAB
int SD_AIN::DAQanalogTriggerConfig (int nDAQ, int triggerNumber);
Python
int SD_AIN::DAQanalogTriggerConfig (int nDAQ, int triggerNumber);
LabVIEW
DAQanalogTriggerConfig .vi
M3601A
Available: No
3. 3. 2. 7 DAQread
This function reads the words acquired with the selected DAQ Data Acquisition
(DAQs). It can be used only after calling the function DAQconfigonpage41 and when
a callback function is not configured. DAQread is a blocking function released when
the configured amount of words is acquired, or when the configured timeout elapses
(if timeout is set to ”0” , then DAQreadwaits until DAQpoints are acquired). In the
timeout elapses, there may be words available, but less than the configured amount.
NameDescription
Inputs
moduleID(Non-object-oriented languages only) Module identifier, returned by function
openonpage28
nDAQDAQ to be read
DAQdataArray to be filled with acquired words
DAQpointsSize (number of words) of DAQdata
timeoutTimeout in ms when waiting for the amount of words specified in DAQpoints. "0" means infin-
ite
errorIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn will be
passed to errorOut
Outputs
moduleIDout (LabVIEW only) A copy of moduleID
DAQdataArray with acquired words
DAQpointsNumber of acquired words
status”1” if DAQpoints is equal to the amount of words configured with DAQconfig, ”0” in case of
timeout, or negative numbers for Keysight SD1 Command Referenceonpage23
errorOutKeysight SD1 Command Referenceonpage23
C
int SD_AIN_DAQread(int moduleID, int nDAQ, short* DAQdata, int DAQpoints, int
timeout);
C++
int SD_AIN::DAQread(int nDAQ, short* DAQdata, int DAQpoints, int timeout);
Visual Studio .NET, MATLAB
int SD_AIN::DAQread(int nDAQ, short[] DAQdata, int timeout);
Python
{short[], int} SD_AIN::DAQread(int nDAQ, int DAQpoints, int timeout);
*Returned data array is a NumPy array
This function starts acquisition on the selected DAQs Data Acquisition (DAQs).
Acquisition will start when a trigger is received.
Parameters
NameDescription
Inputs
moduleID(Non-object-oriented languages only) Module identifier, returned by function
openonpage28
nDAQDAQ to be started or resumed. DAQ n is connected to channel n
errorIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn will be
passed to errorOut
Outputs
moduleIDOut (LabVIEW only) A copy of moduleID
errorOutKeysight SD1 Command Referenceonpage23
This function starts acquisition on the selected DAQs Data Acquisition (DAQs).
Acquisition will start when a trigger is received.
Parameters
NameDescription
Inputs
moduleID(Non-object oriented languages only) Module identifier, returned by function open
DAQmaskMask to select which DAQs are started or resumed (LSB is 0, bit 1 and so forth). DAQ
n is connected to channel n
nDAQDAQ to be started or resumed. DAQ n is connected to channel n
errorIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn
will be passed to errorOut
Outputs
moduleIDOut(LabVIEW only) A copy of moduleID
errorOutSee Error Codes
C
int SD_AIN_DAQstartMultiple(int moduleID, int DAQmask);
This function pauses the words acquisition Data Acquisition (DAQs).
Parameters
NameDescription
Inputs
moduleID(Non-object oriented languages only) Module identifier, returned by function open
DAQmaskMask to select which DAQs are paused (LSB is 0, bit 1 and so forth). DAQ n is con-
nected to channel n
nDAQDAQ is paused. DAQ n is connected to channel n
errorIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn
will be passed to errorOut
Outputs
moduleIDOut(LabVIEW only) A copy of moduleID
errorOutSee Error Codes
C
int SD_AIN_DAQstopMultiple(int moduleID, int DAQmask);
This function pauses the words acquisition Data Acquisition (DAQs). Acquisition can be
resumed using DAQresume.
Parameters
NameDescription
Inputs
moduleID(Non-object oriented languages only) Module identifier, returned by function open
DAQmaskMask to select which DAQs are paused (LSB is 0, bit 1 and so forth). DAQ n is connected to
channel n
DAQDAQ is paused. DAQ n is connected to channel n
errorIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn will be
passed to errorOut
Outputs
moduleIDOut (LabVIEW only) A copy of noduleID
errorOutSee Error Codes
C
int SD_AIN_DAQpauseMultiple(int moduleID, int DAQmask);
Available: No (multiple DAQpause from different channels can be executed at once)
3. 3. 2. 14 DAQresume
This function resumes acquisition on the selected DAQs Data Acquisition (DAQs).
Parameters
NameDescription
Inputs
moduleID (Non-object oriented languages only) Module identifier, returned by function openonpage28
nDAQDAQ to be resumed
errorIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn will be
passed to errorOut
Outputs
moduleID (Non-object-oriented languages only) Module identifier, or a negative number for errors
This function resumes acquisition on the selected DAQs Data Acquisition (DAQs).
Parameters
NameDescription
Inputs
moduleID(Non-object oriented languages only) Module identifier, returned by function open
DAQmaskMask to select which DAQs are started or resumed (LSB is 0, bit 1 and so forth). DAQ
n is connected to channel n
nDAQDAQ is started or resumed. DAQ n is connected to channel n
errorIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn
will be passed to errorOut
Outputs
moduleIDOut(LabVIEW only) A copy of moduleID
errorOutSee Error Codes
C
int SD_AIN_DAQresumeMultiple(int moduleID, int DAQmask);
This function flushes the acquisition buffers and resets the acquisition counter
included in a Data Acquisition block (Data Acquisition (DAQs).
Parameters
NameDescription
Inputs
moduleID(Non-object-oriented languages only) Module identifier, returned by function
open
DAQmaskMask to select which DAQs are reset (LSB is DAQ 0, bit 1 is DAQ 1 and so forth).
DAQ n is connected to channel n
DAQDAQ to be reset. DAQ n is connected to channel n
errorIn(LabVIEW only) If it contains an error, the function will not be executed and
errorIn will be passed to errorOut
Outputs
moduleIDOut(LabVIEW only) A copy of moduleID
errorOutKeysight SD1 Command Referenceonpage23
C
int SD_AIN_DAQflushMultiple(int moduleID, int DAQmask);
Available: No (multiple DAQflush from different channels can be executed at once)
3. 3. 2. 18 DAQtrigger
This function triggers the acquisition of words in the selected DAQs (Data Acquisition
(DAQs)) provided that they are configured for VI/HVI Trigger.
Parameters
NameDescription
Inputs
moduleID (Non-object-oriented languages only) Module identifier, returned by function openonpage28
nDAQDAQ to be triggered. DAQ n is connected to channel n
erronIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn will be
passed to errorOut
Outputs
moduleID (Non-object-oriented languages only) Module identifier, or a negative number for errors (see Key-
This function triggers the acquisition of words in the selected DAQs Data Acquisition
(DAQs) provided that they are configured for VI/HVI Trigger.
Parameters
NameDescription
Inputs
moduleID(Non-object oriented languages only) Module identifier, returned by function open
DAQmaskMask to select which DAQs are triggered (LSB is 0, bit 1 and so forth). DAQ n is con-
nected to channel n
DAQDAQ to be triggered. DAQ n is connected to channel n
errorIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn
will be passed to errorOut
Outputs
moduleIDOut(LabVIEW only) A copy of moduleID
errorOutSee Error Codes
C
int SD_AIN_DAQtriggerMultiple(int moduleID, int DAQmask);
Available: No (can be acceses usingmat operations)
3. 3. 2. 24 clockSetFrequency
This function sets the module clock frequency, see FlexCLK Technology (models with
variable sampling rate).
Parameters
NameDescription
Inputs
moduleID(Non-object-oriented languages only) Module identifier, returned by func-
tion openonpage28
frequencyFrequency in Hz
modeOperation mode of the variable Clock System
errorIn(LabVIEW only) If it contains an error, the function will not be executed
and errorIn will be passed to errorOut
Outputs
moduleIDout(LabVIEW only) A copy of moduleID
CLKsysFreq*It returns the real frequency applied to the hardware in Hz. It may differ
from the desired frequency due to the hardware frequency resolution.
Negative numbers for Keysight SD1 Command Referenceonpage23
*In Keysight Programming Libraries v.1.57.61 or older, clockSetFrequency returns
CLKsyncFreq, the frequency of the internal CLKsync in Hz
C
double SD_AIN_clockSetFrequency(int moduleID, double frequency, int mode);
C++
double SD_AIN::clockSetFrequency(double frequency, int mode);
Visual Studio .NET, MATLAB
double SD_AIN::clockSetFrequency(double frequency, int mode);
Python
double SD_AIN::clockSetFrequency(double frequency, int mode);
LabVIEW
clockSetFrequency.vi
M3601A
Available: No
3. 3. 2. 25 clockGetFrequency
This function returns the real hardware clock frequency (Clock System). It may differ
from the frequency set with the function clockSetFrequencyonpage62, due to the
hardware frequency resolution.
Parameters
NameDescription
Inputs
moduleID(Non-object-oriented languages only) Module identifier, returned by function
openonpage28
errorIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn
This function sets the module in a sync state, waiting for the first trigger to reset the
phase of the internal clocks CLKsync and CLKsys (see Clock System).
NameDescription
moduleID(Non-object-oriented languages only) Module identifier,
triggerBehaviorTrigger behaviour
PXItriggerPXI trigger number
skewSkew between PXI CLK10 and CLKsync in multiples of 10 ns
errorIn(LabVIEW only) If it contains an error, the function will not
Outputs
moduleIDout(LabVIEW only) A copy of moduleID
errorOutKeysight SD1 Command Referenceonpage23
C
int SD_AIN_clockResetPhase(int moduleID, int triggerBehavior, int PXItrigger, double
skew);
returned by function openonpage28
be executed and errorIn will be passed to errorOut
C++
int SD_AIN::clockResetPhase(int triggerBehavior, int PXItrigger, double skew);
Visual Studio .NET, MATLAB
int SD_AIN::clockResetPhase(int triggerBehavior, int PXItrigger, double skew);
Python
int SD_AIN::clockResetPhase(int triggerBehavior, int PXItrigger, double skew);
LabVIEW
clockResetPhase.vi
M3601A
Available: No
3. 3. 2. 28 DAQbufferPoolConfig
Configures buffer pool that will be filled with the data of the channel to be transferred
to PC.
Inputs
moduleID(Non-object oriented languages only) Module identifier, returned by function
openonpage28
nDAQDAQ to configure
dataBufferBuffer to use in buffer pool. Has to be created and released by user
nPointsSize of dataBuffer buffer
timeOutMaximum time used to fill each buffer. If 0, timeout is not set and buffer will not be
delivered to the user until it’s full
callbackFunction Callback that will be called each time a buffer is ready. It can be null. If callback is set,
DAQbufferGet is useless
callbackUserObj Pointer to user object that will be passed in the callback as parameter called user-
Object. It can be null
errorIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn will
be passed to errorOut
Outputs
moduleID(Non-object-oriented languages only) Module identifier, or a negative number for errors
(see Keysight SD1 Command Referenceonpage23
errorOutSee Keysight SD1 Command Referenceonpage23
C
int SD_AIN_DAQbufferPoolConfig(int moduleID, int nDAQ, short* dataBuffer, int
nPoints, int timeOut, callbackEventPtr callbackFunction, void *callbackUserObj);
C++
int SD_AIN::DAQbufferPoolConfig(int nDAQ, short* dataBuffer, int nPoints, int
timeOut, callbackEventPtr callbackFunction, void *callbackUserObj);
Visual Studio .NET, MATLAB
int SD_AIN::DAQbufferPoolConfig(int nDAQ, short[] dataBuffer);
Python
int SD_AIN::DAQbufferPoolConfig(int nDAQ, int nPoints, int timeOut);
Adds an additional buffer to the channel’s previously configured pool.
Parameters
NameDescription
Inputs
moduleID (Non-object oriented languages only) Module identifier, returned by function open
nDAQDAQ to configure
dataBuffer Buffer to use in buffer pool. Has to be created and released by user
nPointsSize of dataBuffer buffer
errorIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn will be
passed to errorOut
Outputs
moduleID (Non-object-oriented languages only) Module identifier, or a negative number for errors (see
Error Codes)
errorOutSee Error Codes
C
int SD_AIN_DAQbufferAdd(int moduleID, int nDAQ, short* dataBuffer, int nPoints);
C++
int SD_AIN::DAQbufferAdd(int nDAQ, short *dataBuffer, int nPoints);
Visual Studio .NET, MATLAB
int SD_AIN::DAQbufferAdd(int nDAQ, short[] dataBuffer);
Gets a filled buffer from the channel buffer pool. User has to call DAQbufferAdd with
this buffer to tell the pool that the buffer can be used again.
Parameters
NameDescription
Inputs
moduleID(Non-object oriented languages only) Module identifier, returned by function open
nDAQDAQ from where get the buffer
errorIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn will be
passed to errorOut
Outputs
moduleID(Non-object-oriented languages only) Module identifier, or a negative number for errors
(see Error Codes)
errorOutSee Error Codes
bufferBuffer obtained
readPointsOut Number of points of the returned buffer
C
short* SD_AIN_DAQbufferGet(int moduleID, int nDAQ, int &readPointsOut, int
&errorOut);
C++
short* SD_AIN:: DAQbufferGet(int nDAQ, int &readPointsOut, int &errorOut);
Visual Studio .NET, MATLAB
short[] SD_AIN::DAQbufferGet(int nDAQ, out int readPointsOut, out int errorOut);
Python
[short[], int} SD_AIN::DAQbufferGet(int nDAQ);
*Returned data array is a NumPY array
Releases the channel buffer pool and its resources. After this call, user has to call
DAQbufferRemove consecutively to get all buffers back and release them.
Parameters
NameDescription
Inputs
moduleID (Non-object oriented languages only) Module identifier, returned by function open
nDAQDAQ from where use take out the buffer
errorIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn will be
passed to errorOut
Outputs
moduleID (Non-object-oriented languages only) Module identifier, or a negative number for errors (see
Error Codes
errorOut See Error Codes
C
int SD_AIN_DAQbufferRelease(int moduleID, int nDAQ);
Ask for a buffer to be removed from the channel buffer pool. If NULLpointer is
returned, no more buffers remains in buffer pool. Returned buffer is a previously
added buffer from user and user has to release/delete it.
Parameters
NameDescription
Inputs
moduleID (Non-object oriented languages only) Module identifier, returned by function open
nDAQDAQ from where use take out the buffer
errorIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn will be
passed to errorOut
Outputs
moduleID (Non-object-oriented languages only) Module identifier, or a negative number for errors (see Key-
sight SD1 Command Referenceonpage23
bufferBuffer obtained
C
short* SD_AIN_DAQbufferRemove(int moduleID, int nDAQ);
Calculates the FFT of data captured by DAQread for the selected channel.
Parameters
NameDescription
Inputs
moduleID(Non-object oriented languages only) Module identifier, returned by function openonpage28
channelInput channel number
datadata previously acquired by DAQread
sizeInput data size
resultSizeSize of the output buffers (module and phase)
dBScale (dB or linear)
windowType Windowing option (section 2.1.5)
errorIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn will be
passed to errorOut
Outputs
moduleID(Non-object-oriented languages only) Module identifier, or a negative number for errors (see
Error Codes (page 70)
resultModule (magnitude) of the FFT
resultPhase Phase of the FFT
errorOutError Codes
C
int SD_AIN_FFT(int moduleID, int channel, short *data, int size, double *result, int
resultSize, double *resultPhase, bool dB, int windowType);
The writeRegister and readRegister functions are related to the [3] Keysight M3601A
Hard Virtual Instrument (HVI) DesignEnvironment Softwareonpage85.
3. 3. 3. 1 writeRegister
Writes a value in an HVI register of a hardware module (Option HV1 required).
Parameters
NameDescription
Inputs
moduleID(Non-object-oriented languages only)
Module identifier, returned by openonpage28
regNumberRegister number
regNameRegister name
regValueRegister value
unitUnit of the register value
errorIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn will be
passed to errorOut
Outputs
moduleIDout (LabVIEW only) A copy of moduleID
errorOutSee Error Codesonpage83
C
int SD_Module_writeRegister(int moduleID, int regNumber, int regValue);
int SD_Module_writeRegisterWithName(int moduleID, const char* regName, int
regValue);
int SD_Module_writeDoubleRegister(int moduleID, int regNumber, double
regValue, const char* unit);
Reads a value from an HVI register of a hardware module (Option HV1 required).
Parameters
NameDescription
Inputs
moduleID(Non-object-oriented languages only) Module identifier, returned by openonpage28
regNumberRegister number
regNameRegister name
unitUnit of the register value
errorIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn will be
passed to errorOut
Outputs
regValueRegister value
moduleIDout (LabVIEW only) A copy of moduleID
errorOutSee Error Codesonpage83
C
int SD_Module_readRegister(int moduleID, int regNumber, int regValue);
int SD_Module_readRegisterWithName(int moduleID, const char* regName, int
regValue);
double SD_Module_readDoubleRegister(int moduleID, int regNumber, const char*
unit, int& errorOut);
Writes data at the PCport FPGA block (Option FP1 required).
Parameters
NameDescription
Inputs
moduleID(Non-object-oriented languages only) Module identifier, returned by openonpage28
nPCportPC port number
dataData buffer to write through PC port to FPGA
dataSizeNumber of 32-bit words to write (maximum is 128 words)
addressAddress that appears in the PCport interface
addressMode Selects between the two address modes shown below:
accessMode Selects between the two memory access modes shown below:
errorIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn will be
passed to errorOut
Outputs
moduleIDout (LabVIEW only) A copy of moduleID
errorOutSee Error Codesonpage83
addressModeDescriptionNameValue
Auto
Increment
FixedInitial address is used
accessModeDescriptionNameValue
Non-DMAMemory access is splitinto multiple accessesNONDMA0
DMAMemory access is done with a DMA transactionDMA1
Initial address is incremented
aftereach access
for the whole access
ADDRESSING_AUTOINCREMENT0
ADDRESSING_FIXED1
C
int SD_Module_FPGAwritePCport(int moduleID, int nPCport, int* data, int
dataSize, int address, int addressMode, int accessMode);
C++
int SD_Module::FPGAwritePCport(int nPCport, int* data, int dataSize, int
address, SD_AddressingMode addressMode, SD_AccessMode accessMode);
Visual Studio .NET, MATLAB
int SD_Module::FPGAwritePCport(int nPCport, int [] data, int address, SD_
AddressingMode addressMode, SD_AccessMode accessMode);
Reads data at the PCport FPGA block (Option FP1 required).
Parameters
NameDescription
Inputs
moduleID(Non-object-oriented languages only)
Module identifier, returned by openonpage28
nPCportPCport number (as if appears in the M3602A software)
addressAddress that appears in the PCport interface
dataSizeNumber of 32-bit words to read (maximum is 128 words)
addressMode Selects between the two address modes shown below:
accessMode Selects between the two memory access modes shown below:
errorIn(LabVIEW only) If it contains an error, the function will not be executed and errorIn will be
passed to errorOut
Outputs
dataRx data buffer
moduleIDout (LabVIEW only) A copy of moduleID
errorOutSee Error Codesonpage83
addressModeDescriptionNameValue
Auto
Increment
FixedInitial address is used
accessModeDescriptionNameValue
Non-DMAMemory access is splitinto multiple accessesNONDMA0
DMAMemory access is done with a DMA transactionDMA1
Initial address is incremented
aftereach access
for the whole access
ADDRESSING_AUTOINCREMENT0
ADDRESSING_FIXED1
C
int SD_Module_FPGAreadPCport(int moduleID, int nPCport, int* data, int
dataSize, int address, int addressMode, int accessMode);
C++
int SD_Module::FPGAreadPCport(int nPCport, int* data, int dataSize, int
address, SD_AddressingMode addressMode, SD_AccessMode accessMode);
Visual Studio .NET, MATLAB
int SD_Module::FPGAreadPCport(int nPCport, int address, int[] data, SD_
AddressingMode addressMode, SD_AccessMode accessMode);