Page 2
DFARS and are set forth CONTROLLERS, MODULES, ETC.) Manual Part Number specifically in writing elsewhere in the PERFORMANCE, SAFETY, OR EULA. Keysight shall be under no M3100-90002 REGULATORY COMPLIANCE, UNLESS obligation to update, revise or otherwise SPECIFICALLY STATED.
Page 3
This chassis. that the line cord is connected to a product must be used in a normal Keysight products are designed for use properly-grounded power receptacle. condition (in which all means for with electrical signals that are rated Inspect the connecting cables, test protection are intact) only.
Page 4
Do not PRODUCT MARKINGS: dispose in domestic household waste. To return unwanted products, contact your local Keysight office, or for more information see http://about.keysight.com/en/companyinfo/e The CE mark is a registered trademark nvironment/takeback.shtml.
The M31/M33xx Digitizers has a flexible and powerful input structure to acquire signals (Figure 1). Figure 1: M31/M33XXA Digitizers input functional block diagram. All input channels have identical structure. Figure 1 shows Keysight standards for the output labeling (channel enumeration starts with CH1), however function open (Section 2.4.2.1) provides a compatibility mode for legacy modules...
Page 10
The compatibility options are shown in Table 0. Output Signal Selection Programming Definitions Option Description Name Value Legacy Channel enumeration starts with CH0 COMPATIBILITY_LEGACY Keysight Channel enumeration starts with CH1 COMPATIBILITY_KEYSIGHT 1 Table 0: Compatibility, Section 2.4.2.1) Keysight M31XXA/M33XXA Digitizer User's Guide...
The M31/M33XXA Digitizers provides a block that allows the user to configure all the input settings such as input impedance, full scale, coupling, prescaler, etc. Figure 2: Input settings in the M31/M33XXA Digitizers functional block diagram Keysight M31XXA/M33XXA Digitizer User's Guide...
Programming Information Function Name Comments Details channelInputConfigIt configures the input full scale, impedance and coup- Section 2.3.4.1 on page ling settings Table 3: Programming functions related to the input full scale, impedance and coupling settings Keysight M31XXA/M33XXA Digitizer User's Guide...
For applications were full downsampling is required, the user must choose an IF Keysight Digitizer or Transceiver, which provide DDC (Digital Down Conversion).
Table 5: Options for the analog trigger (parameter analogTriggerMode in function channelTriggerConfig (page 47) Programming Information Function Name Comments Details channelTriggerConfig It configures the analog trigger for each channelTriggerConfig (page 47) channel Keysight M31XXA/M33XXA Digitizer User's Guide...
Page 15
1 Theory of Operation: M31/M33XX Digitizers Table 6: Programming functions related to the analog triggers Keysight M31XXA/M33XXA Digitizer User's Guide...
: a blocking/non-blocking function that returns the array of acquired words (DAQ- data). b. Using a callback function: a user function that is automatically called when the configured amount of data (set with DAQpoints) is available. Keysight M31XXA/M33XXA Digitizer User's Guide...
Page 17
DAQstart (page 53). A DAQstop is performed automatically when the DAQ block reaches the specified number of acquisition cycles. Figure 6: Examples of the DAQ operation (not all trigger methods are available in all modules) Keysight M31XXA/M33XXA Digitizer User's Guide...
Page 18
DAQconfig (page 48)). DAQ counter: The DAQ block has a dedicated counter to store the number of acquired words since the last call to DAQconfig or DAQflush. This counter can be read with DAQcounterRead (page 65). Keysight M31XXA/M33XXA Digitizer User's Guide...
15)). PXI form factor only: this trigger can be synchronized to CLK10, see Table PXI Trigger PXI form factor only. The DAQ trigger is a PXI trigger line TRIG_PXI and it is synchronized to CLK10 Keysight M31XXA/M33XXA Digitizer User's Guide...
This function pauses the words acquisition Data Acquisition Section 2.4.5.12 of a DAQs. Acquisition can be resumed using DAQresume. DAQpauseMultiple This function pauses the words acquisition Data Acquisition Section 2.4.5.13 of multiple DAQs. Acquisition can be resumed using DAQre- Keysight M31XXA/M33XXA Digitizer User's Guide...
Page 21
NULL pointer 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. Calculates the FFT of data captured by DAQread for the Section 2.4.5.33 selected channel Keysight M31XXA/M33XXA Digitizer User's Guide...
Page 22
1 Theory of Operation: M31/M33XX Digitizers Table 10: Programming functions related to the digitizers Keysight M31XXA/M33XXA Digitizer User's Guide...
The trigger is sampled with an internal 100 MHz clock SYNC_ mode NONE Synchronized mode (PXI form factor only) The trigger is sampled using CLK10 SYNC_ CLK_0 Table 12: M31/M33XXA Digitizers TRG connectors configuration (triggerIOconfig (page 66)) Keysight M31XXA/M33XXA Digitizer User's Guide...
Table 13: M31/M33XXA Digitizers output clock configuration 1. 3. 1 FlexCLK Technology (models with variable sampling rate) The sampling frequency of the M31/M33XXA Digitizers (CLKsys frequency) can be changed using the advanced clocking system shown in Figure 7. Keysight M31XXA/M33XXA Digitizer User's Guide...
Page 25
Low Jitter Mode The clock system is set to achieve the lowest jitter, CLK_LOW_JITTER sacrificing tuning speed Fast Tuning The clock system is set to achieve the lowest tuning time, CLK_FAST_TUNE Mode sacrificing jitter performance Table 14: Clock set frequency mode (function clockSetFrequency (page 69) Keysight M31XXA/M33XXA Digitizer User's Guide...
2. 1. 1 Software Front Panel: Keysight SD1 SFP 2. 1. 1. 1 Keysight SD1 SFP (Software Front Panels) Overview Keysight hardware products can be operated as classical benchtop instruments using Keysight SD1 SFP [2], a software front panel application. This chapter describes the M31/M33XXA digitizer SD1 SFP front panel.
”Channels”. Digitizer front panel provide both time domain (scope like functionality) and frequency domain (spectrum analyzer like functionality). 2. 1. 1. 3 Input settings Figure7b shows the input controls of the M32/M33XXA digitizers in SD1 SFP. Keysight M31XXA/M33XXA Digitizer User's Guide...
Figure7c shows the dialogs and the workflow to use the SD1 SFP as a scope. Figure7c: M31/M33XXA digitizer scope workflow. Digitizer scope Workflow: 1. Select channels 2. Define acquisition type (single or run) 3. Set coupling and impedance Keysight M31XXA/M33XXA Digitizer User's Guide...
- define range Window is a mathematical function that is zero-valued outside of some chosen interval and it is used in applications including spectral analysis. Window types used in FFT function (section 2. 2. 7. Keysight M31XXA/M33XXA Digitizer User's Guide...
FPGA Programming: Keysight M3602A (page 90), Keysight’s FPGA design environment allows the user to customize the FPGA code of Keysight M3XXXA PXIe modules with - FP1 option enabled, providing the capability to perform custom Digital Signal Processing onboard in real time. Keysight’s FPGA technology uses Keysight M3602A, an easy-to-use FPGA graphical design environment.
Keysight’s HVI Technology uses the same programming instructions that are available in the Keysight SD1 Programming Libraries, with the difference that in a HVI those instructions are executed by the hardware modules in hard real-time, not by the computer. The programming instructions for the M31/M33XXA Digitizers are described next.
Page 33
Microsoft Visual Studio .NET .NET Library *.dll MATLAB MathWorks MATLAB .NET Library *.dll Python Any Python compiler Python Library *.py Basic Microsoft Visual Studio .NET .NET Library *.dll LabVIEW National Instruments LabVIEW LabVIEW Library *.vi Keysight M31XXA/M33XXA Digitizer User's Guide...
Page 34
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. Keysight M31XXA/M33XXA Digitizer User's Guide...
(page 30) serialNumber Module Serial Number (e.g.”ES5641”). The serial number can be found on the product, or in nearly any Keysight software. It can also be retrieved with the function getSerialNumber (page 32) chassis Number where the device is located. The chassis number can be found in nearly any Keysight software.
Parameters Name Description Inputs moduleID (Non-object-oriented languages only) Module identifier, returned by function open (page 27) errorIn (LabVIEW only) If it contains an error, the function will not be executed and errorIn will be Keysight M31XXA/M33XXA Digitizer User's Guide...
Python int SD_Module::close(); LabVIEW close.vi M3601A Available: No 2. 4. 2. 3 moduleCount This function returns the number of Keysight modules installed in the system. Static Function: (Object-oriented languages only) moduleCount is a static function Keysight M31XXA/M33XXA Digitizer User's Guide...
(LabVIEW only) If it contains an error, the function will not be executed and errorIn will be passed to errorOut Outputs nModules Number of Keysight modules installed in the system. Negative numbers for errors Error Codes (page 81) errorOut (LabVIEW only) Error Codes (page 81) int SD_Module_moduleCount();...
Page 39
(page 33) slot Slot number where the device is plugged in. This number can be found on the chassis, in nearly any Keysight software. It can also be retrieved with the function getSlot (page 34) errorIn (LabVIEW only) If it contains an error, the function will not be executed and errorIn will be...
(page 33) slot Slot number where the device is plugged in. This number can be found on the chassis, or in nearly any Keysight software. It can also be retrieved with the function getSlot (page 34) errorIn (LabVIEW only) If it contains an error, the function will not be executed and errorIn will be...
(LabVIEW only) If it contains an error, the function will not be executed and errorIn will be passed to errorOut Outputs chassis Chassis number where the device is located. Negative numbers for errors Error Codes (page 81) errorOut (LabVIEW only) Error Codes (page 81) int SD_Module_getChassis(int index); int SD_Module::getChassis(int index); Keysight M31XXA/M33XXA Digitizer User's Guide...
Outputs slot Slot number where the device is plugged in. Negative num- bers for errors Error Codes (page 81) errorOut (LabVIEW only) Error Codes (page 81) int SD_Module_getSlot(int index); int SD_Module::getSlot(int index); Keysight M31XXA/M33XXA Digitizer User's Guide...
(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 errorOut Error Codes (page 81) int SD_Module_PXItriggerWrite(int moduleID, int nPXItrigger, int value); Keysight M31XXA/M33XXA Digitizer User's Guide...
(LabVIEW only) A copy of moduleID value Digital value with negated logic, 0 (ON) or 1 (OFF), or negative numbers for errors Error Codes (page 81) errorOut Error Codes (page 81) int SD_Module_PXItriggerRead(int moduleID, int nPXItrigger); Keysight M31XXA/M33XXA Digitizer User's Guide...
Page 45
2 Software Tools: M31/M33XXA Digitizers int SD_Module::PXItriggerRead(int nPXItrigger); Visual Studio .NET, MATLAB int SD_Module::PXItriggerRead(int nPXItrigger); Python int SD_Module::PXItriggerRead(int nPXItrigger); LabVIEW PXItriggerRead.vi M3601A Available: No (the value can be accessed using math operations: e.g. MathAssign) Keysight M31XXA/M33XXA Digitizer User's Guide...
2 Software Tools: M31/M33XXA Digitizers 2. 4. 3 SD_Module Functions (FPGA-related) The following programming functions are related to Keysight’s FPGA technology and Keysight M3602A programming environment. Please check the Keysight M3602A datasheet for more information [1]. 2. 4. 3. 1 FPGAwritePCport This function writes data at the PCport FPGA Block.
(LabVIEW only) A copy of moduleID errorOut Error Codes (page 81) int SD_Module_FPGAreadPCport(int moduleID, int nPCport, int* data, int dataSize, int address, int addressMode, int accessMode); int SD_Module::FPGAreadPCport(int nPCport, int* data, int dataSize, int address, SD_ AddressingMode addressMode, SD_AccessMode accessMode); Keysight M31XXA/M33XXA Digitizer User's Guide...
Page 48
SD_Module::FPGAreadPCport(int nPCport, int address, int[] data, SD_AddressingMode addressMode, SD_AccessMode accessMode); Python {int[], int} SD_Module::FPGAreadPCport(int nPCport, int dataSize, int address, int addressMode, int accessMode); *Returned data array is a NumPy array LabVIEW FPGAwritePCport.vi M3601A Available: No Keysight M31XXA/M33XXA Digitizer User's Guide...
2 Software Tools: M31/M33XXA Digitizers 2. 4. 4 SD Module Functions (HVI-related) The following programming functions are related to Keysight's HVI technology and Keysight M3601A Design Environment. Please, check M3601A User Guide for more information. 2. 4. 4. 1 writeRegister This function writes a value in an HVI register of a hardware module.
Register number regName Register name regValue Register value unit Unit 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 Keysight M31XXA/M33XXA Digitizer User's Guide...
Page 51
SD_ Module::readRegister(string regName, string unit, out int error); Python int SD_Module::readRegisterByNumber(int regNumber, int regValue); int SD_Module::readRegisterWithName(string regName, int regValue); [int errorOut, double regValue] SD_Module::readDoubleRegisterByNumber(int regNumber, string unit; [int errorOut, double regValue] SD_Module::readDoubleRegisterWithName(string regName, string unit); LabVIEW readRegister.vi Keysight M31XXA/M33XXA Digitizer User's Guide...
Page 52
2 Software Tools: M31/M33XXA Digitizers M3601A Available: No (the value can be accessed using math operations: e.g. MathAssign) Keysight M31XXA/M33XXA Digitizer User's Guide...
SD_AIN_channelInputConfig(int moduleID, int nChannel, double fullScale, int coupling); 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); LabVIEW channelInputConfig.vi Keysight M31XXA/M33XXA Digitizer User's Guide...
(LabVIEW only) A copy of moduleID errorOut Error Codes (page 81) int SD_AIN_channelPrescalerConfig(int moduleID, int nChannel, int prescaler); 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); LabVIEW channelPrescalerConfig.vi Keysight M31XXA/M33XXA Digitizer User's Guide...
SD_AIN_channelTriggerConfig(int moduleID, int nChannel, int analogTriggerMode, double threshold); 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); LabVIEW channelTriggerConfig.vi Keysight M31XXA/M33XXA Digitizer User's Guide...
(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 errorOut Error Codes (page 81) int SD_AIN_DAQconfig(int moduleID, int nDAQ, int DAQpointsPerCycle, int cycles, int triggerDelay, int triggerMode); Keysight M31XXA/M33XXA Digitizer User's Guide...
PXI (PXI/PXIe only) trigger number or external I/O trigger number triggerBehavior Trigger behaviour ( errorIn (LabVIEW only) If it contains an error, the function will not be executed and errorIn will be passed to errorOut Keysight M31XXA/M33XXA Digitizer User's Guide...
11). Analog DAQ: This feature is only available for Data Acquisition Blocks (DAQs) included in products with analog inputs Parameters Name Description Inputs moduleID (Non-object-oriented languages only) Module identifier, returned by function open (page 27) Keysight M31XXA/M33XXA Digitizer User's Guide...
(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. Keysight M31XXA/M33XXA Digitizer User's Guide...
Page 60
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 LabVIEW DAQread.vi Keysight M31XXA/M33XXA Digitizer User's Guide...
Outputs moduleIDOut (LabVIEW only) A copy of moduleID errorOut Error Codes (page 81) int SD_AIN_DAQstart(int moduleID, int nDAQ); int SD_AIN::DAQstart(int nDAQ); Visual Studio .NET, MATLAB int SD_AIN::DAQstart(int nDAQ); Python int SD_AIN::DAQstart(int nDAQ); LabVIEW DAQstart.vi Keysight M31XXA/M33XXA Digitizer User's Guide...
Outputs moduleIDOut (LabVIEW only) A copy of moduleID errorOut Error Codes int SD_AIN_DAQstartMultiple(int moduleID, int DAQmask); int SD_AIN::DAQstartMultiple(int DAQmask); Visual Studio .NET, MATLAB int SD_AIN::DAQstartMultiple(int nDAQmask); Python int SD_AIN::DAQstartMultiple(int nDAQmask); LabVIEW DAQstartMultiple.vi Keysight M31XXA/M33XXA Digitizer User's Guide...
Outputs moduleIDOut (LabVIEW only) A copy of moduleID errorOut Error Codes (page 81) int SD_AIN_DAQstop(int moduleID, int nDAQ); int SD_AIN::DAQstop(int nDAQ); Visual Studio .NET, MATLAB int SD_AIN::DAQstop(int nDAQ); Python int SD_AIN::DAQstop(int nDAQ); LabVIEW DAQstop.vi Keysight M31XXA/M33XXA Digitizer User's Guide...
Outputs moduleIDOut (LabVIEW only) A copy of moduleID errorOut Error Codes int SD_AIN_DAQstopMultiple(int moduleID, int DAQmask); int SD_AIN::DAQstopMultiple(int DAQmask); Visual Studio .NET, MATLAB int SD_AIN::DAQstopMultiple(int nDAQ); Python int SD_AIN::DAQstopMultiple(int nDAQ); LabVIEW DAQstopMultiple.vi Keysight M31XXA/M33XXA Digitizer User's Guide...
(Non-object-oriented languages only) Module identifier, or a negative number for errors (see Error Codes) errorOut Error Codes int SD_AIN_DAQpause(int moduleID, int nDAQ); int SD_AIN::DAQpause(int nDAQ); Visual Studio .NET, MATLAB int SD_AIN::DAQpause(int nDAQ); Python int SD_AIN::DAQpause(int nDAQ); LabVIEW DAQpause.vi Keysight M31XXA/M33XXA Digitizer User's Guide...
Outputs moduleIDOut (LabVIEW only) A copy of noduleID errorOut Error Codes int SD_AIN_DAQpauseMultiple(int moduleID, int DAQmask); int SD_AIN::DAQpauseMultiple(int DAQmask); Visual Studio .NET, MATLAB int SD_AIN::DAQpauseMultiple(int DAQmask); Python int SD_AIN::DAQpauseMultiple(int DAQmask); LabVIEW DAQpauseMultiple.vi Keysight M31XXA/M33XXA Digitizer User's Guide...
(Non-object-oriented languages only) Module identifier, or a negative number for errors (Error Codes (page 81)) errorOut Error Codes (page 81) int SD_AIN_DAQresume(int moduleID, int nDAQ); int SD_AIN::DAQresume(int nDAQ); Visual Studio .NET, MATLAB int SD_AIN::DAQresume(int nDAQ); Python int SD_AIN::DAQresume(int nDAQ); LabVIEW DAQresume.vi Keysight M31XXA/M33XXA Digitizer User's Guide...
Outputs moduleIDOut (LabVIEW only) A copy of moduleID errorOut Error Codes int SD_AIN_DAQresumeMultiple(int moduleID, int DAQmask); int SD_AIN::DAQresumeMultiple(int DAQmask); Visual Studio .NET, MATLAB int SD_AIN::DAQresumeMultiple(int DAQmask); Python int SD_AIN::DAQresumeMultiple(int DAQmask); LabVIEW DAQresumeMultiple.vi Keysight M31XXA/M33XXA Digitizer User's Guide...
Non-object-oriented languages only) Module identifier, or a negative number for errors (see Error Codes (page 81)) errorOut Error Codes (page 81) int SD_AIN_DAQflush(int moduleID, int nDAQ); int SD_AIN::DAQflush(int nDAQ); Visual Studio .NET, MATLAB int SD_AIN::DAQflush(int nDAQ); Python int SD_AIN::DAQflush(int nDAQ); LabVIEW DAQflush.vi Keysight M31XXA/M33XXA Digitizer User's Guide...
Outputs moduleIDOut (LabVIEW only) A copy of moduleID errorOut Error Codes (page 81) int SD_AIN_DAQflushMultiple(int moduleID, int DAQmask); int SD_AIN::DAQflushMultiple(int DAQmask); Visual Studio .NET, MATLAB int SD_AIN::DAQflushMultiple(int DAQmask); Python int SD_AIN::DAQflushMultiple(int DAQmask); Keysight M31XXA/M33XXA Digitizer User's Guide...
(Non-object-oriented languages only) Module identifier, or a negative number for errors (see Error Codes (page 81) errorOut Error Codes (page 81) int SD_AIN_DAQtrigger(int moduleID, int nDAQ); int SD_AIN::DAQtrigger(int nDAQ); Visual Studio .NET, MATLAB int SD_AIN::DAQtrigger(int nDAQ); Python int SD_AIN::DAQtrigger(int nDAQ); Keysight M31XXA/M33XXA Digitizer User's Guide...
Outputs moduleIDOut (LabVIEW only) A copy of moduleID errorOut Error Codes int SD_AIN_DAQtriggerMultiple(int moduleID, int DAQmask); int SD_AIN::DAQtriggerMultiple(int DAQmask); Visual Studio .NET, MATLAB int SD_AIN::DAQtriggerMultiple(int DAQmask); Python int SD_AIN::DAQtriggerMultiple(int DAQmask); Keysight M31XXA/M33XXA Digitizer User's Guide...
Value of the DAQ counter or a negative number for errors Error Codes (page 81) errorOut Error Codes (page 81) int SD_AIN_DAQcounterRead(int moduleID, int DAQ); int SD_AIN::DAQcounterRead(int DAQ); Visual Studio .NET, MATLAB int SD_AIN::DAQcounterRead(int DAQ); Python int SD_AIN::DAQcounterRead(int DAQ); Keysight M31XXA/M33XXA Digitizer User's Guide...
(LabVIEW only) A copy of moduleID errorOut Error Codes (page 81) int SD_AIN_triggerIOconfig(int moduleID, int direction, int syncMode); int SD_AIN::triggerIOconfig(int direction, int syncMode); Visual Studio .NET, MATLAB int SD_AIN::triggerIOconfig(int direction, int syncMode); Python int SD_AIN::triggerIOconfig(direction); Keysight M31XXA/M33XXA Digitizer User's Guide...
(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 errorOut Error Codes (page 81) int SD_AIN_triggerIOwrite(int moduleID, int value); int SD_AIN::triggerIOwrite(int value); Visual Studio .NET, MATLAB int SD_AIN::triggerIOwrite(int value); Keysight M31XXA/M33XXA Digitizer User's Guide...
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 Error Codes (page 81) errorOut(LabVIEW only) Error Codes (page 81) Keysight M31XXA/M33XXA Digitizer User's Guide...
2 Software Tools: M31/M33XXA Digitizers *In Keysight Programming Libraries v.1.57.61 or older, clockSetFrequency returns CLKsyncFreq, the frequency of the internal CLKsync in Hz double SD_AIN_clockSetFrequency(int moduleID, double frequency, int mode); double SD_AIN::clockSetFrequency(double frequency, int mode); Visual Studio .NET, MATLAB double SD_AIN::clockSetFrequency(double frequency, int mode);...
Description Inputs moduleID (Non-object-oriented languages only) Module identifier, returned by function open (page 27) errorIn (LabVIEW only) If it contains an error, the function will not be executed and errorIn will be passed to errorOut Keysight M31XXA/M33XXA Digitizer User's Guide...
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 (page 16)). Parameters Name Description Inputs moduleID (Non-object-oriented languages only) Module identifier, returned by function open (page 27) triggerBehavior Trigger behaviour Keysight M31XXA/M33XXA Digitizer User's Guide...
SD_AIN::clockResetPhase(int triggerBehavior, int PXItrigger, double skew); LabVIEW clockResetPhase.vi M3601A Available: No 2. 4. 5. 28 DAQbufferPoolConfig This function configures buffer pool that will be filled with the data of the channel to be transferred to PC. Parameters Name Description Keysight M31XXA/M33XXA Digitizer User's Guide...
Page 82
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); LabVIEW DAQbuffer functions are not accessible Keysight M31XXA/M33XXA Digitizer User's Guide...
Error Codes int SD_AIN_DAQbufferAdd(int moduleID, int nDAQ, short* dataBuffer, int nPoints); int SD_AIN::DAQbufferAdd(int nDAQ, short *dataBuffer, int nPoints); Visual Studio .NET, MATLAB int SD_AIN::DAQbufferAdd(int nDAQ, short[] dataBuffer); Python Not available LabVIEW DAQbuffer functions are not accessible Keysight M31XXA/M33XXA Digitizer User's Guide...
SD_AIN_DAQbufferGet(int moduleID, int nDAQ, int &readPointsOut, int &errorOut); 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 Keysight M31XXA/M33XXA Digitizer User's Guide...
(Non-object-oriented languages only) Module identifier, or a negative number for errors (see Error Codes errorOut See Error Codes int SD_AIN_DAQbufferRelease(int moduleID, int nDAQ); int SD_AIN::DAQbufferPoolRelease(int nDAQ); Visual Studio .NET, MATLAB int SD_AIN::DAQbufferPoolRelease(int nDAQ); Python SD_AIN::DAQbufferDAQbufferPoolRelease(int nDAQ); Keysight M31XXA/M33XXA Digitizer User's Guide...
(Non-object-oriented languages only) Module identifier, or a negative number for errors (see Error Codes (page 81) buffer Buffer obtained short* SD_AIN_DAQbufferRemove(int moduleID, int nDAQ); short* SD_AIN::DAQbufferRemove(int nDAQ); Visual Studio .NET, MATLAB short[] SD_AIN::DAQbufferRemove(int nDAQ); Python Not available Keysight M31XXA/M33XXA Digitizer User's Guide...
Error Codes (page result Module (magnitude) of the FFT resultPhase Phase of the FFT errorOut Error Codes int SD_AIN_FFT(int moduleID, int channel, short *data, int size, double *result, int resultSize, double *resultPhase, bool dB, int windowType); Keysight M31XXA/M33XXA Digitizer User's Guide...
Page 88
SD_AIN::FFT(int channel, short[] data, out double[] result, out double[] resultPhase, bool dB, int windowType); Python {double[][], int} SD_AIN::FFT(int channel, short[] data, bool dB, int windowType); *Returned data array is a NumPy array LabVIEW Not available M3601A Available: No Keysight M31XXA/M33XXA Digitizer User's Guide...
Page 89
-8015 Keysight Error: Any input assigned to the bitMap does NOT_EXIST not exist SD_ERROR_BUS_INVALID_SIZE -8016 Keysight Error: Input size does not fit on this bus SD_ERROR_BUS_INVALID_DATA -8017 Keysight Error: Input data does not fit on this bus SD_ERROR_INVALID_VALUE -8018 Keysight Error: Invalid value...
Page 93
3. 1. 1 SW Programming A comprehensive set of highly optimized software instructions controls the off-the-shelf functionalities of the compatible Keysight hardware. These instructions are compiled into the Programming Libraries. The use of customizable software to create user-defined control, test and measurement systems is commonly referred as Virtual Instrumentation.
Page 94
For all these applications, Keysight has developed an exclusive technology called Hard Virtual Instrumentation. In a Hard Virtual instrument (or HVI), the user application is executed by the hardware modules independently of the computer, which stays free for other VI tasks, such as visualization.
Page 95
HVIs provide the same programming instructions available in the Keysight SD1 Programming Libraries. HVIs are programmed with Keysight M3601A, an HVI design environment with a user-friendly flowchart-style interface, compatible with all M3XXXA Keysight PXIe hardware modules. M3601A Figure 11: Keysight M3601A, a user-friendly flowchart-style HVI programming environment Keysight’s Hard Virtual Instrumentation technology provides:...
Page 96
(Figure 13 on page 52). 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.
Page 97
3 Addendum: Keysight Technology and Software Overview Figure 12: HVI flowchart elements. Keysight M3601A is based on flowchart programming, providing an easy-to-use environment to develop hard real-time applications Keysight M31XXA/M33XXA Digitizer User's Guide...
Page 98
3 Addendum: Keysight Technology and Software Overview Figure 13: HVI example with two hardware modules. 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.
Page 99
Keysight M3602A: An FPGA Design Environment Keysight M3602A is a complete FPGA design environment that allows the user to customize M3XXXA PXIe hardware products. M3602A provides the necessary tools to design, compile and program the FPGA of the module (Figure 15).
Page 100
100x faster hot programming via PCI Express without rebooting: Hardware can be reprogrammed without external cables and without rebooting the system. Figure 15: Keysight M3602A: a platform that provides the complete flow from design to FPGA programming 3. 2 Design Process: Customization vs. Complete...
Page 101
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”...