Keysight Technologies X-Series Programming Manual

Keysight Technologies X-Series Programming Manual

Signal generators
Hide thumbs Also See for X-Series:
Table of Contents

Advertisement

Keysight
N5166B CXG
N5171B/72B/73B EXG
N5181B/82B/83B MXG
X-Series Signal Generators
Programming
Guide

Advertisement

Table of Contents
loading

Summary of Contents for Keysight Technologies X-Series

  • Page 1 Keysight N5166B CXG N5171B/72B/73B EXG N5181B/82B/83B MXG X-Series Signal Generators Programming Guide...
  • Page 2 COVERING THE MATERIAL IN THIS DOCUMENT THAT CONFLICT WITH government requirements THESE TERMS, THE WARRANTY beyond those set forth in the © Keysight Technologies, Inc. TERMS IN THE SEPARATE EULA shall apply, except to the 2012-2019 AGREEMENT WILL CONTROL. extent that those terms, rights, or...
  • Page 3 Where to Find the Latest Information Documentation is updated periodically. For the latest information about these products, including instrument software upgrades, application information, and product information, browse to one of the following URLs, according to the name of your product: http://www.keysight.com/find/mxg To receive the latest updates by email, subscribe to Keysight Email Updates at the following URL: http://www.keysight.com/find/MyKeysight...
  • Page 5: Table Of Contents

    Contents Table of Contents 1. Getting Started with Remote Operation Programming and Software/Hardware Layers ........... . 1-14 Interfaces.
  • Page 6 Contents 3. Programming Examples Using the Programming Interface Examples ........... . . 3-62 Programming Examples Development Environment .
  • Page 7 Contents Determining What to Monitor ............4-173 Deciding How to Monitor .
  • Page 8 Contents Using Advanced Programming Languages ..........5-243 Loading, Playing, and Verifying a Downloaded Waveform .
  • Page 9 Contents FIR Filter Coefficient Downloads ............. 6-360 Data Requirements .
  • Page 10 Contents...
  • Page 11 Documentation Overview — Safety Information Getting Started Guide — Receiving the Instrument — Environmental & Electrical Requirements — Basic Setup — Accessories — Operation Verification — Regulatory Information — Signal Generator Overview User’s Guide — Preferences & Enabling Options — Basic Operation —...
  • Page 12 — Provides a listing of SCPI commands and programming codes for Programming signal generator models that are supported by the Keysight EXG Compatibility Guide and MXG X- Series signal generators. — Troubleshooting Service Guide — Replaceable Parts — Assembly Replacement —...
  • Page 13 Keysight Technologies X-Series Signal Generators Programming Guide Getting Started with Remote Operation Keysight does not recommend going backwards in firmware versions (loading older firmware versions into newer instruments) as hardware/firmware conflicts can result. — Programming and Software/Hardware Layers on page 14 —...
  • Page 14: Getting Started With Remote Operation

    Figure 1-1 uses GPIB as an example of the relationships between the interface, IO libraries, programming language, and signal generator. Figure 1-1 Software/Hardware Layers Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 15: Interfaces

    “Keysight IO Libraries Suite” on page 16 Keysight IO Libraries Help. For more information on configuring the signal generator to communicate over the USB, refer to “Using USB” on page 58 Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 16: Io Libraries And Programming Languages

    Before setting the LAN interface, the signal generator must be configured for VXI-11 SCPI. Refer to “Configuring the VXI–11 Service” on page Refer to the Keysight IO Libraries Suite Help documentation for details about this software. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 17: Windows Xp, 2000 Professional And Vista Business Keysight Io Libraries 15.0 (And Newer)

    3. Click the Formatted I/O tab. 4. Select SCPI in the Instr. Lang. section. You can enter SCPI commands in the text box and send the command using the viPrintf button. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 18 8. Click the Add Address button in the Add LAN Instruments window. 9. Enter the hostname of the instrument or select the Use IP Address check box and enter the IP address. 10.Click OK. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 19: Windows Nt And Keysight Io Libraries M (And Earlier)

    See the Manual VISA Configuration section below. Refer to the VISA Assistant Help menu and the Keysight VISA User’s Manual (available on Keysight’s website) for more information. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 20 7. Click the Add device button. 8. Enter the GPIB address of the signal generator. 9. Click the OK button in this form and all other forms to exit the IO Config program. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 21: Selecting Io Libraries For Gpib

    The libraries can also be downloaded from the Keysight website. The following is a discussion on these libraries. NI-VISA is a registered trademark of National Instruments Corporation. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 22: Programming Languages

    — Java™ (Java is a U.S. trademark of Sun Microsystems, Inc.) ® — Visual Basic (Visual Basic is a registered trademark of Microsoft Corporation.) — PERL — Keysight VEE For examples, using some of these languages, refer to Chapter Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 23: Using The Web Browser

    Getting Started with Remote Operation Using the Web Browser Using the Web Browser The following example for accessing the Web-Enabled X-Series web page uses the newly shipped instrument’s predetermined default hostname (a-<instrument model number>-<last 5 digits of the instrument serial number>).
  • Page 24: Modifying The Signal Generator Configuration

    Use Help with this Page for assistance with the Web-Enabled interface. 1. From the welcome page of the Web-Enabled interface, click View & Modify Configuration to show the instrument’s currently assigned IP address and other parameters. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 25 Using the Web Browser 2. Enter the new settings and click Save. 3. Click Renew LAN Settings to cause the new settings to take effect. Figure 1-3 View & Modify Configuration Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 26: Enabling The Signal Generator Web Server

    5. Click the Signal Generator Web Control menu button on the left of the page. The LXI password box is displayed on the computer. Refer to the Web-Enabled Help. 6. Click Submit. 7. The front panel web page displays. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 27 The FTP access button opens a window that displays the signal generator’s memory catalog files. Use the FTP window to drag and drop files from the FTP page to your computer. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 28: Lan Configuration System Defaults

    Keysight–<model number>–<last_5_chars_of_serial_number> Hostname: Config Type: AUTO IP Address: 127.0.0.1 Connection Monitoring: Subnet: 255.255.255.0 DNS Server Override: Gateway: 0.0.0.0 Dynamic DNS Naming: RFC NETBIOS Naming: DNS Server: 0.0.0.0 TCP Keep Alive: Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 29: Displaying The Lan Configuration Summary

    Table 1-3 on page Utility > IO Config SCPI command: Not applicable For details on each key and for equivalent SCPI commands (if applicable), use the key help (described in the User’s Guide). Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 30: Preferences

    Cancel to close the help window or press any other key to close the help window and execute that key. For details on each key and for equivalent SCPI commands (if applicable), use the key help (described in User’s Guide). Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 31: Troubleshooting

    Service Guide and in the caution below. All X-Series signal generators have a fail-safe and diagnostic mode that should only be used if all other troubleshooting mentioned in this document has been attempted and failed. If the diagnostic mode is determined to be needed, refer to the Service Guide.
  • Page 32: Error Messages

    The error messages are listed numerically. In cases where there are multiple listings for the same error number, the messages are in alphabetical order. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 33: Error Message Types

    — an unrecognized header was received. These include incorrect device-specific headers and incorrect or unimplemented IEEE 488.2 common commands. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 34 Getting Started with Remote Operation Error Messages Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 35: Using Io Interfaces

    Keysight Technologies X-Series Signal Generators Programming Guide Using IO Interfaces Using the programming examples with GPIB, LAN, and USB interfaces: — Using GPIB on page 36 — Using LAN on page 42 — Using USB on page 58...
  • Page 36: Using Gpib

    16 bit bus computers /2000 VEE, HP Basic for Windows Keysight Windows VISA / SICL C/C++, Visual ISA/EISA, Built–in 82341D Basic, Keysight 16 bit Plug&Play for VEE, HP Basic for Windows Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 37 EISA Built–in E2071D Keysight VEE, HP BASIC, HP– Keysight HP–UX 10.20 VISA/SICL ANSI C, Built–in E2078A Keysight VEE, HP BASIC, HP– a. NI–488.2 is a trademark of National Instruments Corporation. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 38: Set Up The Gpib Interface

    2. Remove all other instruments connected through GPIB and rerun the program. 3. Verify that the GPIB card’s name or id number matches the GPIB name or id number configured for your PC. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 39: Gpib Interface Terms

    A controller, typically a computer, can specify the talker and listeners (including itself) for an information transfer. Only one device at a time can be an active controller. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 40: Gpib Programming Interface Examples

    CLEAR Sig_gen ! Clears any pending data I/O and resets the parser REMOTE 719 ! Puts the signal generator into remote mode CLEAR SCREEN ! Clears the controllers display REMOTE 719 Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 41: Interface Check Using Ni-488.2 And C

    = ibdev(0, 19, 0, 13, 1, 0); // Aquires a device descriptor ibclr(sig); // Sends device clear message to signal generator ibwrt(sig, "*RST", 4); // Places the signal generator into a defined state Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 42: Using Lan

    LAN to a LAN–based computer and combining those choices with one of several possible LAN interface protocols. — “Setting Up the LAN Interface” on page 43 — “Verifying LAN Functionality” on page 46 Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 43: Setting Up The Lan Interface

    For details on each key or for a list of equivalent SCPI commands, use the front-panel key help. For information describing the key help, refer to “Getting Key Help” on page 30 and the User’s Guide. For additional SCPI command information, refer to the SCPI Command Reference. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 44 Your hostname can be up to 20 characters long. SCPI commands: :SYSTem:COMMunicate:LAN:CONFig MANual :SYSTem:COMMunicate:LAN:CONFig? For details on each key, use the key help (described in User’s Guide). For additional SCPI command information, refer to the SCPI Command Reference. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 45: Setting Up Private Lan

    Command Reference. Setting up Private LAN You can connect the Keysight X-Series signal generator directly to a PC using a crossover cable. To do this, you should either choose to set IP addresses of the PC and signal generator to differ only in the last digit (example: PC’s IP: 1.1.1.1 and Signal generator’s IP: 1.1.1.2);...
  • Page 46: Verifying Lan Functionality

    LAN traffic will cause the round–trip time to vary widely. Normal Response for DOS or A normal response to the ping command will be a total of 9 or 10 packets received if 10 echo Windows requests were specified. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 47 Keysight IO Libraries M (and Earlier)” on page 19 for more information. The following sections are specific to Keysight IO Libraries versions M and earlier and apply only to the Windows NT platform. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 48 VISA Assistant to verify LAN configuration. Refer to the IO Libraries Installation Guide for information on configuring IO interfaces. The IO Config program interface is shown in Figure 2-3 on page Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 49 “Using VISA Assistant” on page 3. Click the Edit button. 4. Click the radio button for AUTO (automatically detect protocol). 5. Click OK, OK to end the IO Config program. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 50: Using Vxi-11

    Keysight IO Libraries versions M or earlier to configure the interface. For Keysight IO library version J.01.0100, the “Identify devices at run– time” check box must be unchecked. Refer to Figure 2-3. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 51: Using Sockets Lan

    APIs. The signal generator can be controlled using SCPI commands that are output to a socket connection established in your program. Before you can use sockets LAN, you must select the signal generator’s sockets port number to use: Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 52: Using Telnet Lan

    “Using Telnet On a PC With a Command Prompt Interface” on page 53 — “The Standard UNIX Telnet Command” on page 54 A Telnet example is provided in “Unix Telnet Example” on page Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 53 Connect Form (Keysight IO Library version J.01.0100) Figure 2-5 Telnet Window Using Telnet On a PC With a Command Prompt Interface 1. Launch either the Start Menu’s Command Prompt or Run utility. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 54 This command is used to communicate with another host using the Telnet protocol. When the command telnet is invoked with host or port arguments, a connection is opened to the host, and Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 55 Enter key. To remedy this, change your Telnet connection to character–by–character mode. Escape out of Telnet, and at the telnet > prompt, type mode char. If this does not work, consult your Telnet program's documentation. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 56: Using Ftp

    FTP command, the signal generator’s file structure can be accessed. Figure 2-7 shows the FTP interface and lists the directories in the signal generator’s user level directory. File access is limited to the signal generator’s directory. /user Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 57 FTP commands that are available on your system. 5. Type quit or bye to end your FTP session. 6. Type exit to end the command prompt session. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 58: Using Usb

    USB interface protocols. — “Selecting I/O Libraries for USB” on page 59 — “Setting Up the USB Interface” on page 59 — “Verifying USB Functionality” on page 60 Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 59: Selecting I/O Libraries For Usb

    Using USB Selecting I/O Libraries for USB The Keysight X-Series USB interface requires Keysight IO Libraries Suite 14.1 or newer to run properly. For more information on connecting instruments to the USB, refer to the Keysight Connection Expert in the Keysight IO Libraries Help.
  • Page 60 Keysight website: http://www.keysight.com. Type–A Front Panel USB Connector For details on using the front panel USB (Type–A) and the front panel USB Media operation, refer to the User’s Guide. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 61: Programming Examples

    Keysight Technologies X-Series Signal Generators Programming Guide Programming Examples — Using the Programming Interface Examples on page 62 — GPIB Programming Interface Examples on page 68 — LAN Programming Interface Examples on page 115...
  • Page 62: Using The Programming Interface Examples

    — National Instruments PCI-GPIB interface card or Keysight GPIB interface card — National Instruments VISA Library or Keysight VISA library — LAN interface card The HP Basic examples were run on a UNIX 700 series workstation. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 63: Running C++ Programs

    Keysight website or National Instrument’s website. To communicate with the signal generator over the LAN interface you must enable the VXI-11 SCPI service. For more information, refer to “DHCP/Auto-IP LAN Configuration Sequence” on page Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 64: Running C# Examples

    In the Visual Basic IDE (Integrated Development Environment) go to Project–References and place a check mark on the following references: — Keysight VISA COM Resource Manager 1.0 — VISA COM 1.0 Type Library Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 65: Running Java Examples

    LAN. This program requires Java version 1.1 or later be installed on your PC. For more information on sockets LAN programming with Java, refer to “Sockets LAN Programming Using Java” on page 150. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 66: Running Matlab Examples

    SCPI service. For more information, refer to page 43 Running Perl Examples The Perl example “Sockets LAN Programming Using Perl” on page 153, uses PERL script to control the signal generator over the sockets LAN interface. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 67: Using Gpib

    You can also connect GPIB instruments to a PC USB port using the Keysight 82357A USB/GPIB Interface Converter, which eliminates the need for a GPIB card. For more information, go to http://www.keysight.com/find/gpib Installing the GPIB Interface Card Refer to “Installing the GPIB Interface” on page Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 68: Gpib Programming Interface Examples

    Typically, this is an initialization command used to place the GPIB in a known starting condition. Library Function Statement Initialization Command HP Basic The ABORT function stops all GPIB activity. 10 ABORT 7 Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 69 Local panel keys. Pressing the key on the signal generator front panel restores manual operation. The parameter id is the session identifier. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 70 The ud parameter in the parameter list is the interface or device descriptor. SICL The Keysight SICL function puts the signal generator into iloc (id) Local operation; enabling front panel key operation. The id parameter identifies the session. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 71 The function sends the characters in the format string directly to the instrument. The parameter list includes the instrument address, data buffer to write, and so forth. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 72: Interface Check Using Hp Basic And Gpib

    Documentation CD-ROM as basicex1.txt. !****************************************************************** PROGRAM NAME: basicex1.txt PROGRAM DESCRIPTION: This program verifies that the GPIB connections and interface are functional. Connect a controller to the signal generator using a GPIB cable. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 73: Interface Check Using Ni-488.2 And C

    .cpp source file. The following program example is available on the signal generator Documentation CD-ROM as niex1.cpp. ******************************************************************* // PROGRAM NAME: niex1.cpp Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 74 "*RST", 4); // Places the signal generator into a defined state // Print data to the output window cout << "The signal generator should now be in REMOTE. The remote indicator"<<endl; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 75: Interface Check For Gpib Using Visa And C

    // Turn signal generator power off then on and then run the program //***************************************************************** #include <visa.h> #include <stdio.h> #include "StdAfx.h" #include <stdlib.h> void main () ViSession defaultRM, vi; // Declares a variable of type ViSession // for instrument communication Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 76: Local Lockout Using Hp Basic And Gpib

    — resets instrument — places signal generator into local — places signal generator into remote The following program example is available on the signal generator Documentation CD-ROM as basicex2.txt. !****************************************************************** Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 77 ! Prints user prompt messages PRINT "Signal generator should now be in LOCAL LOCKOUT mode." PRINT PRINT "Verify that all keys including `Local' (except Contrast keys) have no effect." PRINT Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 78: Local Lockout Using Ni-488.2 And C

    // LOCAL LOCKOUT mode. All front panel keys, except the Contrast key, will be disabled. // The local command, 'ibloc(sig)' executed via program code, is the only way to // return the signal generator to front panel, Local, control. ******************************************************************* Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 79 // Places device in Remote with Lockout State. cout<< "The signal generator should now be in LOCAL LOCKOUT. Verify that all keys"<<endl; cout<< "including the 'Local' key are disabled (Contrast keys are not affected)"<<endl; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 80: Queries Using Hp Basic And Gpib

    CLEAR and RESET the controller and RUN the following program: !****************************************************************** DIM A$[10],C$[100],D$[10] ! Declares variables to hold string response data INTEGER B ! Declares variable to hold integer response data Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 81 ! Enter in the state (0 for off) ! Print the on/off state of the signal generator to the controller display IF B>0 THEN PRINT "Signal Generator output is: on" ELSE Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 82: Queries Using Ni-488.2 And Visual C

    The following program example is available on the signal generator Documentation CD-ROM as niex3.cpp. //***************************************************************** // PROGRAM NAME: niex3.cpp // PROGRAM DESCRIPTION: This example demonstrates the use of query commands. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 83 // Sends Selected Device Clear(SDC) message ibwrt(sig, "*RST", 4); // Places signal generator in a defined state ibwrt(sig, ":FREQuency:CW?",14); // Querys the CW frequency ibrd(sig, rdVal,100); // Reads in the response into rdVal Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 84 = (int (rdVal[0]) -('0')); if (num > 0){ cout<<"Source RF state is : On"<<endl; }else{ cout<<"Source RF state is : Off"<<endl;} cout<<endl; ibwrt(sig, "*IDN?",5); // Querys the instrument ID Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 85: Queries For Gpib Using Visa And C

    The following program example is available on the signal generator Documentation CD-ROM as visaex3.cpp. //***************************************************************** // PROGRAM FILE NAME:visaex3.cpp // PROGRAM DESCRIPTION:This example demonstrates the use of query commands. The signal Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 86 // Open session to GPIB device at address 19 viStatus=viOpen(defaultRM, "GPIB::19::INSTR", VI_NULL, VI_NULL, &vi); if(viStatus){ // If problems, then prompt user printf("Could not open ViSession!\n"); printf("Check instruments and connections\n"); printf("\n"); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 87 // Querys the signal generator's RF state viScanf(vi, "%1i", &num); // Reads the response (integer value) // Prints the on/off RF state if (num > 0 ) { printf("Source RF state is : on\n"); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 88: Generating A Cw Signal Using Visa And C

    // response will indicate that the RF state is on. The RF state is then turned off and // queried. The response should indicate that the RF state is off. The query results are // printed to the to the display window. //***************************************************************** Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 89 // Reset the signal generator viPrintf(vi, "FREQ 500 kHz\n"); // Set the source CW frequency for 500 kHz viPrintf(vi, "FREQ:CW?\n"); // Query the CW frequency viScanf(vi, "%t", rdBuffer); // Read signal generator response Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 90 // Read the response // Print the on/off RF state if (num > 0 ) { printf("Source RF state is now: on\n"); }else{ printf("Source RF state is now: off\n"); // Close the sessions Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 91: Generating An Externally Applied Ac-Coupled Fm Signal Using Visa And C

    // coupling to AC, deviation to 20 kHZ, carrier frequency to 700 MHz and the power level // to -2.5 dBm. The RF state is set to on. //***************************************************************** #include <visa.h> #include "StdAfx.h" Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 92 AC-coupled FM signal\n"); printf("Press any key to continue\n"); printf("\n"); getch(); printf("\n"); viPrintf(vi, "*RST\n"); // Resets the signal generator viPrintf(vi, "FM:SOUR EXT2\n"); // Sets EXT 2 source for FM Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 93: Generating An Internal Fm Signal Using Visa And C

    — sets the power level to -15 dBm — turns on frequency modulation and RF output The following program example is available on the signal generator Documentation CD-ROM as visaex6.cpp. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 94 // open session to gpib device at address 19 viStatus=viOpen(defaultRM, "GPIB::19::INSTR", VI_NULL, VI_NULL, &vi); if(viStatus){ // If problems, then prompt user printf("Could not open ViSession!\n"); printf("Check instruments and connections\n"); printf("\n"); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 95 : on\n"); printf("Carrier Frequency : 900 MHZ\n"); printf("Deviation : 100 kHZ\n"); printf("Internal modulation : 5 kHz\n"); printf("\n"); // Print a carrage return // Close the sessions viClose(vi); viClose(defaultRM); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 96: Generating A Step-Swept Signal Using Visa And C

    ViSession defaultRM, vi;// Declares variables of type ViSession // vi establishes instrument communication ViStatus viStatus = 0;// Declares a variable of type ViStatus // for GPIB verifications viStatus=viOpenDefaultRM(&defaultRM); // Initialize VISA session Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 97 800 mHz. There is a .5 sec dwell time at each 30 step.\n"); printf("\n"); // Prints a carriage return/line feed viPrintf(vi, "OUTP:STAT OFF\n"); // Turns the RF output off Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 98: Generating A Swept Signal Using Visa And Visual C

    // The program uses a Sleep function to allow the signal generator // complete it's sweep operation before the INIT command is sent. // The Sleep function is available with the windows.h header file which is // included in the project. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 99 = viPrintf(inst, "POW -10DBM\n"); // set the start and stop frequency for the sweep stat = viPrintf(inst, "FREQ:START 1GHZ\n"); stat = viPrintf(inst, "FREQ:STOP 2GHZ\n"); // setup dwell per point Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 100 // handle possible errors here (most likely a timeout) // err_handler( inst, stat ); puts("Sweep ended"); // delay before sending next INIT since instrument // may not be ready to receive it yet Sleep(15); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 101: Saving And Recalling States Using Visa And C

    // state to register #1. An *RST command will reset the signal generator and a *RCL // command will return it to the stored state. Following this remote operation the user Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 102 // Clears the signal generator viPrintf(vi, "*CLS\n"); // Resets the status byte register // Print user information printf("Programming example using the *SAV,*RCL SCPI commands\n"); printf("used to save and recall an instrument's state\n"); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 103 Register state\n"); printf("\n"); // Prints new line character getch(); // Waits for user input lngDone=0; // Reset the operation complete flag Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 104: Reading The Data Questionable Status Register Using Visa And C

    Launch Microsoft Visual C++ 6.0, add the required files, and enter the following code into your .cpp source file. visaex9.cpp performs the following functions: Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 105 // questionable status register is read. // The results are displayed to the active window. //***************************************************************** #include <visa.h> #include "StdAfx.h" #include <iostream> #include <conio.h> void main () Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 106 Set signal generator output amplitude to +20 dBm\n"); printf("* Set frequency to maximum value\n"); printf("* Turn On signal generator's RF Output\n"); printf("* Check signal generator's display for the UNLEVEL annunciator\n"); printf("\n"); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 107 Generator Reverse Power Protection Tripped\n"); printf("/n"); break; case 2: printf("Signal Generator Power is Unleveled\n"); printf("\n"); break; default: printf("No Power Unleveled condition detected\n"); printf("\n"); viClear(vi); // Clears the signal generator Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 108 // Reads the decimal sum of the // set bits num=(int (rdBuffer[1]) -('0')); // Converts string data to numeric switch (num) // Based on the decimal value case 1: printf("Signal Generator Modulation 1 Undermod\n"); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 109 8: printf("Signal Generator Modulation 2 Overmod\n"); printf("\n"); break; case 16: printf("Signal Generator Modulation Uncalibrated\n"); printf("\n"); break; default: printf("No Problems with Modulation\n"); printf("\n"); // Close the sessions viClose(vi); viClose(defaultRM); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 110: Reading The Service Request Interrupt (Srq) Using Visa And C

    // generator for a step mode sweep. The program will enter a printing loop which prints // an * character and ends when the sweep has completed and an SRQ received. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 111 Declare a block of memory data viStatus=viOpenDefaultRM(&defaultRM);// Initialize VISA session if(viStatus < VI_SUCCESS){// If problems, then prompt user printf("ERROR initializing VISA... exiting\n"); printf("\n"); return -1;} // Open session to gpib device at address 19 Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 112 // transition occurs at the start of a sweep. viPrintf(vi, "STAT:OPER:ENAB 8\n");// Enables Operation Status Event Bit 3 // to report the event to Status Byte // Register Summary Bit 7. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 113 // The Sleep function, defined in the header // file windows.h, will pause the program // operation for .5 seconds while (sweep==1){ printf("*"); Sleep(500);} printf("\n"); // The following lines of code will stop the Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 114 = viReadSTB(vi, &stb);// Reads the Status Byte sweep=0;// Sets the flag to stop the ’*’ printing printf("\n");// Print user information printf("An SRQ, indicating end of sweep has occurred\n"); viClose(event);// Closes the event return VI_SUCCESS; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 115: Lan Programming Interface Examples

    To communicate with the signal generator over the LAN interface you must enable the VXI-11 SCPI service. For more information, refer to “Configuring the VXI–11 Service” on page Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 116: Vxi-11 Programming Using Sicl And C

    // for its ID string. The frequency and ID string are then printed to the display. // IMPORTANT: Enter in your signal generators hostname in the instrumentName declaration // where the "xxxxx" appears. //***************************************************************** #include "stdafx.h" #include <sicl.h> #include <stdlib.h> #include <stdio.h> Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 117 'OPC?'\n"); iclose(id); exit(1); iprintf(id, "FREQ?\n");// Query the frequency iscanf(id, "%t", &buf);// Read the signal generator frequency printf("\n");// Print the frequency to the display printf("Frequency of signal generator is %s\n", buf); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 118: Vxi-11 Programming Using Visa And C

    // screen. Next the signal generator is set for a -5 dBm power level and then // queried for the power level. The power level is printed to the screen. // IMPORTANT: Set up the LAN Client using the IO Config utility Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 119 = viOpen(defaultRM, "TPCIP0::19::INSTR", VI_NULL, VI_NULL, &instr); if(status){ // If problems then prompt user printf("Could not open ViSession!\n"); printf("Check instruments and connections\n"); printf("\n"); exit(0);} // Set timeout for 5 seconds viSetAttribute(instr, VI_ATTR_TMO_VALUE, 5000); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 120: Sockets Lan Programming And C

    The program listing shown in “Queries for Lan Using Sockets” on page 124 consists of two files; lanio.c and getopt.c. The lanio.c file has two main functions; int main() and an int main1(). Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 121 The program will run and output a sequence of SCPI commands to the signal generator. The UNIX display will show a display similar to the following: unix machine: /users/mydir $ ./lanio ID: Keysight Technologies, E4438C, US70000001, C.02.00 Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 122 1. Enter the hostname of your signal generator in the openSocket function of the main1() function of the lanio.cpp program. 2. Rename the lanio.cpp int main1() function to int main() and the original int main() function to int main1(). Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 123 3. Select Rebuild All from Build menu. Then select Execute Lanio.exe. The program will run and display results similar to those shown in Figure 3-1. Figure 3-1 Program Output Screen Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 124: Queries For Lan Using Sockets

    A TCP/IP connection to port 5025 is established the resultant file descriptor is used to "talk" to the instrument using regular socket I/O mechanisms. Examples: Query the signal generator frequency: lanio xx.xxx.xx.x 'FREQ?' Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 125 - In the Windows environment, file operations such as read(), write(), and close() cannot be assumed to work correctly when applied Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 126 <winsock.h> // BSD-style socket functions endif #else /* UNIX with BSD sockets */ include <sys/socket.h> /* for connect and socket*/ include <netinet/in.h> /* for sockaddr_in include <netdb.h> /* for gethostbyname Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 127 /* for getopt(3C) */ #endif #define COMMAND_ERROR #define NO_CMD_ERROR #define SCPI_PORT 5025 #define INPUT_BUF_SIZE (64*1024) /****************************************************************** * Display usage ******************************************************************/ static void usage(char *basename) fprintf(stderr,"Usage: %s [-nqu] <hostname> [<command>]\n", basename); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 128 (err != 0) { /* Tell the user that we couldn't find a useable */ /* winsock.dll. fprintf(stderr, "Cannot initialize Winsock 1.1.\n"); return -1; return 0; int close_winsock(void) WSACleanup(); return 0; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 129 ..A file descriptor similar to open(1).$ * $Errors: returns -1 if anything goes wrong $ ******************************************************************/ SOCKET openSocket(const char *hostname, int portNumber) struct hostent *hostPtr; struct sockaddr_in peeraddr_in; SOCKET s; memset(&peeraddr_in, 0, sizeof(struct sockaddr_in)); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 130 = AF_INET; peeraddr_in.sin_port = htons((unsigned short)portNumber); if (connect(s, (const struct sockaddr*)&peeraddr_in, sizeof(struct sockaddr_in)) == SOCKET_ERROR) fprintf(stderr,"unable to create socket to '%s': %s\n", hostname, strerror(errno)); return INVALID_SOCKET; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 131 /* fprintf(stderr, "Sending \"%s\".\n", command); if (strchr(command, '\n') == NULL) { fprintf(stderr, "Warning: missing newline on command %s.\n", command); count = send(sock, command, strlen(command), 0); if (count == SOCKET_ERROR) { Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 132 /* If no chars to read, stop. */ if (count < 1) { break; cur_length += count; /* If we hit a newline, stop. */ if (*ptr == '\n') { ptr++; err = 0; break; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 133 * This demonstrates how to use file I/O on sockets, in UNIX. ******************************************************************/ FILE * instFile; instFile = fdopen(sock, "r+"); if (instFile == NULL) fprintf(stderr, "Unable to create FILE * structure : %s\n", strerror(errno)); exit(2); return fgets(result, maxLength, instFile); #endif /****************************************************************** Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 134 *command, char *result, size_t maxLength) long ch; char tmp_buf[8]; long resultBytes = 0; int command_err; int count; /********************************************************* * Send command to signal generator *********************************************************/ command_err = commandInstrument(sock, command); if (command_err) return COMMAND_ERROR; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 135 ((count < 1) || (ch == EOF)) break; /* End of file */ if (ch < '0' || ch > '9') break; /* unexpected char */ numDigits = ch - '0'; if (numDigits) /* read numDigits bytes into result string. */ Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 136 * Since there is no EOI line. For ASCII dumps this * great but for binary dumps, it is not needed. ***********************************************************/ if (resultBytes == numBytes) char junk; count = recv(sock, &junk, 1, 0); else Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 137 0; /* REMOVE trailing newline, if present. And terminate string. */ resultBytes = strlen(result); if (result[resultBytes-1] == '\n') resultBytes -= 1; result[resultBytes] = '\0'; } while (0); return resultBytes; /****************************************************************** Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 138 * Typical result_str: -221,"Settings conflict; Frequency span reduced." +0,"No error" * Don't bother decoding. ******************************************************************/ if (strncmp(result_str, "+0,", 3) == 0) { /* Matched +0,"No error" */ break; puts(result_str); } while (1); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 139 * This kind of command is not a query from our point of view. * The signal generator does the query internally, and uses the result. query++ ; /* bump past '?' */ while (*query) Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 140 * $Return: (int) . . . non-zero if an error occurs ******************************************************************/ int main(int argc, char *argv[]) SOCKET instSock; char *charBuf = (char *) malloc(INPUT_BUF_SIZE); char *basename; int chr; char command[1024]; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 141 ""); if (optind < argc) while (optind < argc) { /* <hostname> <command> provided; only one command string */ strcat(command, argv[optind++]); if (optind < argc) { strcat(command, " "); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 142 /* no hostname! */ usage(basename); exit(1); /****************************************************** /* open a socket connection to the instrument /******************************************************/ #ifdef WINSOCK if (init_winsock() != 0) { exit(1); #endif /* WINSOCK */ Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 143 INPUT_BUF_SIZE); if (!quiet) fwrite(charBuf, bufBytes, 1, stdout); fwrite("\n", 1, 1, stdout) ; fflush(stdout); else commandInstrument(instSock, command); else /* read a line from <stdin> */ while ( gets(charBuf) != NULL ) Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 144 /* Put the query response into the same buffer as the*/ /* command string appended after the null terminator.*/ bufBytes = queryInstrument(instSock, charBuf, charBuf + strlen(charBuf) + 1, INPUT_BUF_SIZE -strlen(charBuf) ); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 145 1, 1, stdout) ; fflush(stdout); else commandInstrument(instSock, charBuf); if (number) number++; if (show_errs) { showErrors(instSock); #ifdef WINSOCK closesocket(instSock); close_winsock(); #else close(instSock); #endif /* WINSOCK */ return 0; /* End of lanio.cpp Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 146 SOCKET instSock; long bufBytes; char *charBuf = (char *) malloc(INPUT_BUF_SIZE); /*********************************************/ /* open a socket connection to the instrument*/ /*********************************************/ #ifdef WINSOCK if (init_winsock() != 0) { exit(1); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 147 INPUT_BUF_SIZE); printf("Frequency: %s\n",charBuf); commandInstrument(instSock, "POW:AMPL -5 dBm\n"); bufBytes = queryInstrument(instSock, "POW:AMPL?\n", charBuf, INPUT_BUF_SIZE); printf("Power Level: %s\n",charBuf); printf("\n"); #ifdef WINSOCK closesocket(instSock); close_winsock(); #else close(instSock); #endif /* WINSOCK */ return 0; /****************************************************************** Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 148 When all options have been processed (i.e., up to the first non-option argument), getopt returns EOF. The special option -- can be used to delimit the end of the options; EOF is returned, and -- is skipped. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 149 (scan == NULL || *scan == '\0') { if (optind == 0) optind++; if (optind >= argc || argv[optind][0] != '-' || argv[optind][1] == '\0') return(EOF); if (strcmp(argv[optind], "--")==0) { optind++; return(EOF); scan = argv[optind]+1; optind++; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 150: Sockets Lan Programming Using Java

    2. Copy the program as ScpiSockTest.java and save it in a convenient directory on your computer. For example save the file to the C:\jdk1.3.0_2\bin\javac directory. 3. Launch the Command Prompt program on your computer. Click Start > Programs > Command Prompt. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 151 ScpiSockTest public static void main(String[] args) String instrumentName = "xxxxx"; // Put instrument hostname here Socket t = new Socket(instrumentName,5025); // Connect to instrument Setup read/write mechanism Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 152 // Querys the id string out.flush(); String idnResponse = in.readLine(); // Reads the id string // Prints the id string System.out.println("Instrument ID: " + idnResponse); catch (IOException e) System.out.println("Error" + e); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 153: Sockets Lan Programming Using Perl

    "Socket Could not be created, Reason: $!\n" unless $sock; # Set freq print "Setting frequency...\n"; print $sock "freq 1 GHz\n"; # Wait for completion print "Waiting for source to settle...\n"; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 154: Tcp-Ip (Lan) Programming Using Matlab

    Resp” or “Eq Impls Resp”. 4. Save the trace as ".mat" file, with the header included. 5. Call loadVsaEqFilter (example 3) in Matlab to read the file and calculate a correction filter. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 155 “Example 2: Reading a PXA Trace and Setting up the Equalization Filter Using Matlab” “Example 3: Reading a VSA Trace and Setting up the Equalization Filter Using Matlab” “Example 4: Downloading a FIR filter in Matlab to the MXG” Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 156 200e6 if missing'); if (nargin<2) destRate=200e6; % contact PSA using LAN t=tcpip(psaDev, 5025); t.OutputBufferSize=1*1024*1024; t.InputBufferSize=1*1024*1024; fopen(t); fprintf(t, ':FETCh:EVM9?\n'); magDb = readArrayOfDoubles(t); fprintf(t, ':FETCh:EVM10?\n'); phaseDeg = readArrayOfDoubles(t); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 157 % even topHalf = (length(timeDomain)/2)+1; centeredTime(1:(topHalf-1)) = timeDomain(topHalf:end); centeredTime(topHalf:len) = timeDomain(1:(topHalf-1)); % resample to desired rate if necessary if (abs(destRate-rate)>1e-6) % note that this resample function only works with integer rates Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 158 X-Series signal generators. function [corrFilter] = loadPxaEqFilter(pxaAddress, destRate, displayCorr) % [corrFilter] = loadPxaEqFilter(pxaAddress[, destRate[, displayCorr]]) % Reads out the current Equalization filter active on the PXA specified. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 159 5025); t.OutputBufferSize=1*1024*1024; t.InputBufferSize=1*1024*1024; fopen(t); fprintf(t, ':DISPlay:DDEM:TRAC2:FEED "Eq Impulse Response1"\n'); fprintf(t, 'DISP:DDEM:TRACe2:FORMat REAL\n'); fprintf(t, 'calc:DDEM:DATA2?\n'); realTime = readArrayOfDoubles(t); fprintf(t, 'DISP:DDEM:TRACe2:FORMat IMAG\n'); fprintf(t, 'calc:DDEM:DATA2?\n'); imagTime = readArrayOfDoubles(t); coeffs = realTime + 1i.*imagTime; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 160 % this simple resample function may be insuffient for some rates resampledTime = resample(centeredTime, destRate, rate, 30); resampledTime = resampledTime.*(rate/destRate); else resampledTime = centeredTime; % display resulting corrections if displayCorr~=0 fcorr = fftshift(fft(resampledTime)); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 161 This example reads a VSA trace of “Eq Ch Freq Resp” or “Eq Impls Resp” and creates an equalization filter compatible with the MXG. function [corrFilter] = loadVsaEqFilter(filename, destRate) % [corrFilter] = loadVsaFilter(filename[, destRate]) Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 162 = 1./coeffs; % convert to time domain (first placing the 0 frequency at the left edge) timeDomain=ifft(ifftshift(invertedFreqDomain)); if (filterStruct.XDomain==1) % frequency % put time domain 0 time in center len=length(timeDomain); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 163 Example 4: Downloading a FIR filter in Matlab to the MXG This example uses Matlab to control the X-Series signal generators over the TCP-IP (LAN) interface. This example takes a filter in Matlab and writes it to a FIR file in the MXG. This example can be can be used in combination with...
  • Page 164 (nargin<3 || nargin>7) error('usage: writeMxgFir(host, instrumentFilename, timeDomainFilter[, osr[, rate[, destRate[, maxTaps]]]])'); if (nargin<4) osr=1; if (nargin<5) rate=200e6; if (nargin<6) destRate=200e6; if (nargin<7) maxTaps=1024; % adjust coefficients for destination rate Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 165 % send command with filename fprintf(t, '%s', horzcat(':MEM:DATA:FIR "', instrumentFilename, '",')); % send type if (isreal(timeDomainFilter)) fprintf(t, '%s', 'REAL,'); else % convert complex to a real array fprintf(t, '%s', 'COMP,'); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 166 Programming Examples LAN Programming Interface Examples temp=zeros(1,length(timeDomainFilter)*2); temp(1:2:end)=real(timeDomainFilter); temp(2:2:end)=imag(timeDomainFilter); timeDomainFilter=temp; % output osr fprintf(t, '%d', osr); % send coefficients fprintf(t, ',%g', timeDomainFilter); % send terminator fprintf(t, '\n'); fclose(t); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 167 Keysight Technologies X-Series Signal Generators Programming Guide Programming the Status Register System This chapter provides the following major sections: — Overview on page 168 — Status Register Bit Values on page 172 — Accessing Status Register Information on page 173 —...
  • Page 168: Programming The Status Register System

    For example, the Data Questionable Frequency Status Group consists of five registers. This chapter may refer to a group as a register so that the cumbersome longer description is avoided. For example, the Standard Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 169 The status register systems use IEEE 488.2 commands (those beginning with *) to access the higher-level summary registers (refer to the SCPI Command Reference). Access Lower-level registers by using STATus commands. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 170: Overall Status Byte Register Systems

    “Overall Status Byte Register System (1 of 2)” on page 170 — “Overall Status Byte Register System (2 of 2)” on page 171 Figure 4-1 Overall Status Byte Register System (1 of 2) Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 171 Programming the Status Register System Overview Figure 4-2 Overall Status Byte Register System (2 of 2) Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 172: Status Register Bit Values

    2: 128 + 8 + 4 = 140. Table 4-1 Status Register Bit Decimal Values Decimal Value Bit Number Bit 15 is not used and is always set to zero. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 173: Accessing Status Register Information

    Deciding How to Monitor You can use either of two methods described below to access the information in status registers (both methods allow you to monitor one or more conditions). Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 174 The application determines how the controller responds to the SRQ. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 175 — The signal generator does not have a service request pending. A service request is considered to be pending between the time the signal generator’s SRQ process is initiated and the time the controller reads the status byte register. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 176: Status Register Scpi Commands

    *SRE, *SRE? (service request enable) sets and queries the value of the Service Request Enable Register. *STB? (status byte) queries the value of the status byte register without erasing its contents. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 177 Programming the Status Register System Accessing Status Register Information :STATus:PRESet presets all transition filters, non-IEEE 488.2 enable registers, and error/event queue enable registers. (Refer to Table Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 178 Table reflects :STAT:PRES values for EXG and MXG models with all options. Refer to Figure 4-1 on page 170, Figure 4-2 on page 171, and Table on page 180 through Table on page 200. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 179: Status Byte Group

    The Status Byte Group includes the Status Byte Register and the Service Request Enable Register. NOTE: Some signal generator models may use only a subset of the status registers shown. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 180: Status Byte Register

    1, send the command *SRE 160 (128 + 32). Query: *SRE? Response: The decimal value of the sum of the bits previously enabled with the *SRE <data> command. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 181: Status Groups

    The contents of the event register are logically ANDed with the contents of the enable register and the result is logically ORed to produce a status summary bit in the Status Byte Register. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 182: Standard Event Status Group

    Device Dependent Error. A 1 in this bit position indicates that a device dependent error has occurred. Device dependent errors have instrument error numbers from −399 to −300 and 1 to 32767. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 183 Status summary bit of the Status Byte Register is set to 1. Send the command *ESE 192 (128 + 64). Query: *ESE? Response: Decimal value of the sum of the bits previously enabled with the *ESE <data> command. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 184: Standard Operation Status Group

    Condition Register, the Standard Operation Transition Filters (negative and positive), the Standard Operation Event Register, and the Standard Operation Event Enable Register. NOTE: Some signal generator models may use only a subset of the status registers shown. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 185 Changes can be positive (0 to 1) or negative (1 to 0). Commands: STATus:OPERation:NTRansition <value> (negative transition), or STATus:OPERation:PTRansition <value> (positive transition), where <value> is the sum of the decimal values of the bits you want to enable. Queries: STATus:OPERation:NTRansition? STATus:OPERation:PTRansition? Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 186 Status summary bit of the Status Byte Register is set to 1. Send the command STAT:OPER:ENAB 40 (32 + 8). Query: STATus:OPERation:ENABle? Response: Decimal value of the sum of the bits previously enabled with the STATus:OPERation:ENABle <value> command. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 187: Data Questionable Status Group

    Data Questionable Condition Register The Data Questionable Condition Register continuously monitors the hardware and firmware status of the signal generator. Condition registers are read only. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 188 Query: STATus:QUEStionable:CONDition? Response: The decimal sum of the bits set to 1 Example: The decimal value 520 is returned. The decimal sum = 512 (bit 9) + 8 (bit 3). Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 189 Status Byte Register is set to 1. Send the command STAT:QUES:ENAB 520 (512 + 8). Query: STATus:QUEStionable:ENABle? Response: Decimal value of the sum of the bits previously enabled with the STATus:QUEStionable:ENABle <value> command. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 190: Data Questionable Power Status Group

    Questionable Power Transition Filters (negative and positive), the Data Questionable Power Event Register, and the Data Questionable Power Event Enable Register. NOTE: Some signal generator models may use only a subset of the status registers shown. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 191 The Data Questionable Power Event Register latches transition events from the condition register as specified by the transition filters. Event registers are destructive read-only. Reading data from an event register clears the content of that register. Query: STATus:QUEStionable:POWer[:EVENt]? Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 192 Data Questionable Condition Register is set to 1. Send the command STAT:QUES:POW:ENAB 12 (8 + 4). Query: STATus:QUEStionable:POWer:ENABle? Response: Decimal value of the sum of the bits previously enabled with the STATus:QUEStionable:POWer:ENABle <value> command. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 193: Data Questionable Frequency Status Group

    Data Questionable Frequency Transition Filters (negative and positive), the Data Questionable Frequency Event Register, and the Data Questionable Frequency Event Enable Register. Some signal generator models may use only a subset of the status registers shown. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 194 Latches transition events from the condition register as specified by the transition filters. Event registers are destructive read-only. Reading data from an event register clears the content of that register. Query: STATus:QUEStionable:FREQuency[:EVENt]? Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 195 Frequency summary bit of the Data Questionable Condition Register is set to 1. Send the command STAT:QUES:FREQ:ENAB 36 (32 + 4). Query: STATus:QUEStionable:FREQuency:ENABle? Response: Decimal value of the sum of the bits previously enabled with the STATus:QUEStionable:FREQuency:ENABle <value> command. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 196: Data Questionable Calibration Status Group

    Data Questionable Calibration Transition Filters (negative and positive), the Data Questionable Calibration Event Register, and the Data Questionable Calibration Event Enable Register. NOTE: Some signal generator models may use only a subset of the status registers shown. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 197 The Data Questionable Calibration Event Register latches transition events from the condition register as specified by the transition filters. Event registers are destructive read-only. Reading data from an event register clears the content of that register. Query: STATus:QUEStionable:CALibration[:EVENt]? Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 198 Calibration summary bit of the Data Questionable Condition Register is set to 1. Send the command STAT:QUES:CAL:ENAB 3 (2 + 1). Query: STATus:QUEStionable:CALibration:ENABle? Response: Decimal value of the sum of the bits previously enabled with the STATus:QUEStionable:CALibration:ENABle <value> command. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 199: Data Questionable Bert Status Group

    Questionable Status group consists of the Data Questionable BERT Condition Register, the Data Questionable BERT Transition Filters (negative and positive), the Data Questionable BERT Event Register, and the Data Questionable BERT Event Enable Register. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 200 Changes can be positive (0 to 1) or negative (1 to 0). Commands: STATus:QUEStionable:BERT:NTRansition <value> (negative transition), or STATus:QUEStionable:BERT:PTRansition <value> (positive transition), where <value> is the sum of the decimal values of the bits you want to enable. Queries: STATus:QUEStionable:BERT:NTRansition? STATus:QUEStionable:BERT:PTRansition? Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 201 Data Questionable Condition Register is set to 1. Send the command STAT:QUES:BERT:ENAB 6 (4 + 2). Query: STATus:QUEStionable:BERT:ENABle? Response: Decimal value of the sum of the bits previously enabled with the STATus:QUEStionable:BERT:ENABle <value> command. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 202 Programming the Status Register System Status Groups Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 203: Creating And Downloading Waveform Files

    Keysight Technologies X-Series Signal Generators Programming Guide Creating and Downloading Waveform Files The ability to play externally created waveform data in the signal generator is available only in vector signal generator models with an installed internal baseband generator option (refer to the Data Sheet for more information).
  • Page 204: Overview Of Downloading And Extracting Waveform Files

    Keysight Technologies: — N7622A Signal Studio Toolkit 2 http://www.keysight.com/find/signalstudio — Keysight Waveform Download Assistant for use only with MATLAB http://www.keysight.com/find/downloadassistant Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 205: Waveform Data Requirements

    PC to the signal generator or from the signal generator to the PC. For more information, see “Waveform Structure” on page 214. For more information on waveform data, see “Understanding Waveform Data” on page 206. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 206: Understanding Waveform Data

    B = 1011 C = 1100 D = 1101 E = 1110 F = 1111 For I and Q data, the signal generator uses two bytes to represent an integer value. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 207: Lsb And Msb (Bit Order)

    Notice in the previous figure that the LSB and MSB positioning changes with the byte order. In little endian order, the LSB and MSB are next to each other in the bit sequence. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 208: Byte Swapping

    Development platforms include any product that creates and saves waveform data to a file. This includes Keysight Technologies Advanced Design System EDA software, C++, MATLAB, and so forth. The byte order describes how the system processor stores integer values as binary data in memory.
  • Page 209: Dac Input Values

    Notice that it takes only 15 bits (2 ) to reach the Vmax (positive) or Vmin (negative) values. The MSB determines the sign of the value. This is covered in “2’s Complement Data Format” on page 211. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 210 Although X-Series signal generators use signed input values, they accept unsigned data created for the E443xB and convert it to the proper DAC values. To download an E443xB files to an X-Series signal generator, use the same command syntax as for the E443xB models. For more information on downloading E443xB files, see “Downloading E443xB Signal Generator Files”...
  • Page 211: 2'S Complement Data Format

    The MSB of the resultant is one, indicating a negative value (–23710). Test the results by summing the binary positive and negative values; when correct, they produce zero. 01011100 10011110 + 10100011 01100010 00000000 00000000 Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 212: I And Q Interleaving

    The interleaved file comprises the waveform data points where each set of data points, one I data point and one Q data point, represents one I/Q waveform point. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 213 Q Data I Data Q Data Interleaved Hex Data Waveform Waveform data point data point CA 76 E9 CA 77 3E 5E 72 I Data Q Data I Data Q Data Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 214: Waveform Structure

    Although a marker point is one byte, the signal generator uses only bits 0–3 to configure the markers; bits 4–7 are reserved and set to zero. The following example shows a marker byte. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 215 I/Q (waveform) file. However, downloading just the I/Q data with the same file name as an existing I/Q file also overwrites the existing marker file setting all bits to zero. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 216: I/Q File

    To help minimize signal imperfections, use an even number of samples (for information on waveform continuity, see “Waveform Phase Continuity” on page 217). When you store waveforms, the signal generator saves changes to the waveform file, marker file, and file header. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 217: Waveform Phase Continuity

    In the case of playing back the sinewave samples, the phase discontinuity produces a noticeable increase in distortion components in addition to the line spectra normally representative of a single sinewave. Sampled Sinewave with Phase Discontinuity Phase discontinuity Waveform length Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 218: Avoiding Phase Discontinuities

    The measurement on the left shows the effect of using the first 99 samples rather than all 100 samples. Notice all the distortion products (at levels up to –35 dBc) introduced in addition to the wanted 3–tone Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 219 Maintaining periodicity removes the distortion products. Phase Continuity Phase Discontinuity 3–tone – 20 MHz Bandwidth 3–tone – 20 MHz Bandwidth Measured distortion = 86 dBc Measured distortion = 35 dBc Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 220 The signal generator provides two types of memory, volatile and non–volatile. You can download files to either memory type. The X-Series ARB Waveform File Cache is limited to 128 files. Consequently, once the 128 file cache limit has been reached, the waveform switching speed will be much slower for files loaded into the volatile (BBG).
  • Page 221 Instrument State Waveform Sequences (multiple I/Q files played together) The following figure on Figure 5-1 on page 222 shows the locations within the signal generator for volatile and non–volatile waveform data. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 222: Memory Allocation

    1 The Keysight X-Series signal generator use an optional “USB media” to store non–volatile waveform data. 2 The Keysight X-Series signal generator internal non–volatile memory is referred to as “internal storage”. These internal storage directories contain pointers to the files, which are located in the NONVOLATILE directory.
  • Page 223 Table on page 223 and to http://support.microsoft.com/. Table 5-3 Drive Size (logical volume) Drive Size (logical volume) Cluster Size (Bytes) (Minimum Allocation Size) 0 MB – 15 MB 16 MB – 127 MB Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 224: Memory Size

    When we refer to waveform files, we state the memory size in samples (one sample equals five bytes). The waveform playback memory resides on the baseband generator that is installed in the Keysight X-Series signal generator. Refer to Table 5-4 on page 224 for the maximum available memory for each model and option.
  • Page 225: Commands For Downloading And Extracting Waveform Data

    The signal generator uses the following securewave directory paths for file extractions and encrypted file downloads: Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 226: File Transfer Methods

    ERROR: 221, Access Denied. Encrypted I/Q Files and the Securewave Directory Header parameters of files stored on the Keysight X-Series signal generator internal or USB media cannot be changed unless the file is copied to the volatile BBG memory. For more information on modifying header parameters, refer to the User’s Guide.
  • Page 227: Scpi Command Line Structure

    Table 5-5, “Downloading Unencrypted Files for No Extraction,” on page 228 — Table 5-6, “Downloading Encrypted Files for No Extraction,” on page 228 — Table 5-7, “Downloading Unencrypted Files for Extraction,” on page 228 Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 228 Downloading Unencrypted Files for Extraction Download Method/ Command Syntax Options Memory Type SCPI/volatile MEM:DATA:UNPRotected "/user/bbg1/waveform/file_name",<blockdata> memory MEM:DATA:UNPRotected "/user/bbg1/markers/file_name",<blockdata> MEM:DATA:UNPRotected "/user/bbg1/header/file_name",<blockdata> MEM:DATA:UNPRotected "WFM1:file_name",<blockdata> MEM:DATA:UNPRotected "MKR1:file_name",<blockdata> MEM:DATA:UNPRotected "HDR1:file_name",<blockdata> MEM:DATA:UNPRotected "file_name@WFM1",<blockdata> MEM:DATA:UNPRotected "file_name@MKR1",<blockdata> MEM:DATA:UNPRotected "file_name@HDR1",<blockdata> Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 229 MMEM:DATA? "/user/waveform/<file_name>" memory MMEM:DATA? "NVWFM:<file_name>" MMEM:DATA? "<file_name>@NVWFM" FTP/volatile get /user/bbg1/waveform/<file_name> memory get /user/bbg1/markers/<file_name> get /user/bbg1/header/<file_name> FTP/non–volatile get /user/waveform/<file_name> memory a get /user/markers/<file_name> get /user/header/<file_name> a. See “FTP Procedures” on page 231. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 230 MMEM:DATA? "/user/bbg1/securewave/file_name" memory MMEM:DATA? "SWFM1:file_name" MMEM:DATA? "file_name@SWFM1" SCPI/non–volatile MMEM:DATA? "/user/securewave/file_name" memory MMEM:DATA? "SNVWFM:file_name" MMEM:DATA? "file_name@SNVWFM" FTP/volatile get /user/bbg1/securewave/<file_name> memory FTP/non–volatile get /user/securewave/<file_name> memory a a. See “FTP Procedures” on page 231. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 231: Ftp Procedures

    Get and Put commands write over existing files by the same name in destination directories. Remember to change remote and local filenames to avoid the loss of data. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 232 For more examples of put command usage refer to Table 5-11. Table 5-11 Put Command Examples Command Local Remote Notes Results Incorrect Produces two /user/waveform/<filename separate and <filename.wfm> 1.wfm> incompatible files. /user/marker/<filename1. <filename.mkr> mkr> Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 233 1. Enter the signal generator’s hostname or IP address in the URL. http://<host name> or <IP address> 2. Click the Signal Generator FTP Access button located on the left side of the window. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 234 The signal generator files appear in the web browser’s window. 3. Drag and drop files between the PC and the browser’s window For more information on the web server feature, see Chapter Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 235: Creating Waveform Data

    The following lines of code create scaled I and Q data for a sine wave. The I data consists of one period of a sine wave and the Q data consists of one period of a cosine wave. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 236 –32767 and 32768 equal full scale negative and positive respectively. This example uses 23000 as the multiplier, resulting in approximately 70% scaling. For more information on scaling, see “Scaling DAC Values” on page 210. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 237 — Interleaving and byte swapping I and Q data for little endian order — Interleaving I and Q data for big endian order For more information on byte order, see “Little Endian and Big Endian (Byte Order)” on page 207. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 238 — Save the current Q data array value to a variable. — Swap the low bytes (bits 0–7) of the data with the high bytes of the data (done for both Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 239 1 1 1 0 0 1 0 1 0 1 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 0 0 1 Data Q Data I Data Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 240 1 1 1 0 1 0 0 1 Data Q Data I Data To download the data created in the above example, see “Using Advanced Programming Languages” on page 243. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 241: Downloading Waveform Data

    Keysight Waveform Download Assistant, see “Using the Download Utilities” on page 250. There are two steps in the process of downloading an I/Q waveform: 1. Open a connection session. 2. Download the I/Q data. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 242 Line Code—Download the I/Q data [status, status_description] = agt_waveformload(io, IQwave, 'waveformfile1', 2000, 'no_play','norm_scale'); if status == -1 display ‘fail to download to the signal generator’; end; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 243: Using Advanced Programming Languages

    Line Code Description—Open a Connection Session char* instOpenString ="lan[hostname or IP address]"; //char* instOpenString ="gpib<primary addr>,<secondary addr>"; INST id=iopen(instOpenString); if (!id) fprintf(stderr, "iopen failed (%s)\n", instOpenString); return -1; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 244 0, 0); iwrite(id, "\n", 1, 1, 0); Line Code Description—Download the I/Q data Define an integer variable (bytesToSend) to store the number of bytes to send to the signal generator. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 245 This is the method used in our program. For your programming language, you must find and use the equivalent of method two. Otherwise you may only achieve a partial download of the I and Q data. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 246 — The fourth argument of iwrite(), 1, is the END of file indicator, which the program uses to terminate the data download. To verify the waveform data download, see “Loading, Playing, and Verifying a Downloaded Waveform” on page 247. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 247: Loading, Playing, And Verifying A Downloaded Waveform

    2. Select the waveform from the volatile memory waveform list: Send the following SCPI command: :SOURce:RADio:ARB:WAVeform "WFM1:<file_name>" 3. Play the waveform: Send the following SCPI commands: :SOURce:RADio:ARB:STATe ON :OUTPut:MODulation:STATe ON :OUTPut:STATe ON Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 248: Verifying The Waveform

    For more information refer to the signal generator’s SCPI Command Reference and User’s Guide. If you would like to verify the waveform sequence, refer to “Verifying the Waveform” on page 248. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 249 For more information on this SCPI command, refer to the signal generator’s SCPI Command Reference. 4. Play the waveform sequence: Send the following SCPI commands: :SOURce:RADio:ARB:STATe ON :OUTPut:MODulation:STATe ON :OUTPut:STATe ON Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 250: Using The Download Utilities

    Manually select big endian byte order for 14–bit and 16–bit I/Q files Downloads user–created marker files Performs scaling Starts waveform play back Sends SCPI Commands and Queries Builds a waveform sequence a. ASCII or binary format. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 251: Downloading E443Xb Signal Generator Files

    E443xB files to the proper file format, store E443xB file downloads to volatile memory, and then transfer them over to non–volatile (NVWFM) memory. You cannot extract waveform data downloaded as E443xB files. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 252: E443Xb Data Format

    E443xB file format. The string variable <file_name> is the name of the I and Q data file. After downloading the data, the signal generator associates a file header and marker file with the I/Q data file. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 253: Programming Examples

    IO libraries. The example programs are also available on the signal generator Documentation CD–ROM, which allows you to cut and paste the examples into an editor. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 254: C++ Programming Examples

    This format is for the E4438C, E8267C, E8267D This format will not work with the ESG E443xB or the Keysight MXG N518xA // 3.) Load the internal Arb format file into an array Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 255 *pChar; // Used for byte swapping bool PC = true; // Set flag as appropriate double phaseInc = 2.0 * 3.141592654 * cycles / points; double phase = 0; int i = 0; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 256 = Iwave[0]; minAmp = Iwave[0]; for( i=0; i<points; i++) if( maxAmp < Iwave[i] ) maxAmp = Iwave[i]; else if( minAmp > Iwave[i] ) minAmp = Iwave[i]; if( maxAmp < Qwave[i] ) Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 257 2; // Save the data to a file // Use FTP or one of the download assistants to download the file to the // signal generator char *filename = “C:\\Temp\\PSGTestFile”; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 258 // Character pointer to short int data for( i=0; i<2*points; i++ ) buf = *pChar; *pChar = *(pChar+1); *(pChar+1) = buf; pChar+= 2; // Normalize De-Interleave the IQ data double IwaveIn[POINTS]; double QwaveIn[POINTS]; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 259 Creating and Downloading Waveform Files Programming Examples for( i=0; i<points; i++) IwaveIn[i] = waveform[2*i] / 32767.0; QwaveIn[i] = waveform[2*i+1] / 32767.0; return 0; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 260 = 6.2831853; //allocate buffer for waveform short* iqData = new short[2*SAMPLES];// need two bytes for each integer if (!iqData) cout << "Could not allocate data buffer." << endl; return 1; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 261 (int i=0; i<(4*SAMPLES); i+=2)// 4*SAMPLES char temp = cptr[i];// swap LSB and MSB bytes cptr[i]=cptr[i+1]; cptr[i+1]=temp; // now write the buffer to a file out_stream.write((char*)iqData, 4*SAMPLES); return 0; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 262 //char* instOpenString =”gpib0,19”; // Pick some maximum number of samples, based on the // amount of memory in your computer and the signal generator. const int NUMSAMPLES=500; int main(int argc, char* argv[]) Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 263 // to see if its correct and if needed, plot the data in a // spreadsheet to help spot any problems. FILE *outfile = fopen(ofile, “w”); if (outfile==NULL) perror (“Error opening file to write”); for(index=0; index<numsamples; index++) Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 264 // short iqbuffer[NUMSAMPLES*2]; // Big endian order, uncomment this line // for(index=0; index<numsamples; index++) // Big endian order, uncomment this line // { // Big endian order, uncomment this line Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 265 Part 4 = the buffer of data // Build parts 1, 2, and 3 for the I and Q data. sprintf(cmd, “:MEM:DATA \”WFM1:FILE1\”, #%d%d”, strlen(s), bytesToSend); // Send parts 1, 2, and 3 Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 266 // You must find and use the correct command for Method 2. iwrite(id, iqbuffer, bytesToSend, 0, 0); // Send a terminating carriage return iwrite(id, “\n”, 1, 1, 0); printf(“Loaded file using the E4438C, E8267C and E8267D format\n”); return 0; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 267 PC/workstation const char* instDestFile = "/USER/BBG1/WAVEFORM/TEST_WAVE"; //for non-volatile memory //remove BBG1 from file path // Size of the copy buffer const int BUFFER_SIZE = 100*1024; main() INST id=iopen(instOpenString); if (!id) Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 268 0; char* buf = new char[BUFFER_SIZE]; if (buf && lenToSend) // Prepare and send the SCPI command header char s[20]; sprintf(s, "%d", lenToSend); int lenLen = strlen(s); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 269 On the documentation CD, this programming example’s name is “DownLoad_Visa_c++.txt.” This C++ programming example (compiled using Microsoft Visual C++ 6.0) assumes that the data is in big endian order and performs the following functions: — error checking Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 270 // The program also includes some error checking to alert you when problems arise // while trying to download files. This includes checking to see if the file exists. //***************************************************************** // IMPORTANT: Replace the xxx.xxx.xxx.xxx IP address in the instOpenString declaration Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 271 BUFFER_SIZE = 100*1024;// Size of the copy buffer int main(int argc, char* argv[]) ViSession defaultRM, vi; ViStatus status = 0; status = viOpenDefaultRM(&defaultRM);// Open the default resource manager // TO DO: Error handling here Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 272 = ftell(file);// Number of bytes in the file printf("File size = %d\n", lenToSend); if (fseek(file, 0, SEEK_SET) < 0) fprintf(stderr,"Cannot lseek to the start of file.\n"); return 0; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 273 "mmem:data \"%s\", #%d%d", instDestFile, lenLen, lenToSend); // Send the command and header to the signal generator viWrite(vi, s2, strlen((char*)s2), 0); long numRead; // Send file in BUFFER_SIZE chunks to the signal generator Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 274 VI_ATTR_SEND_END_EN, 1 ); char* newLine = "\n"; viWrite(vi, (unsigned char*)newLine, 1, 0); delete [] buf; else fprintf(stderr, "Could not allocate memory for copy buffer\n"); fclose(file); viClose(vi); viClose(defaultRM); return 0; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 275 =”gpib0,19”; // Pick some maximum number of samples, based on the // amount of memory in your computer and your waveforms. const int MAXSAMPLES=50000; int main(int argc, char* argv[]) Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 276 This buffer is used for that // purpose. In this case, this buffer must hold // both I and Q data so it needs to be four times // as big as the data arrays. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 277 // processor such as Intel. Reverse the order for // a big endian processor such as Motorola, HP, or Sun idata[index++]=ivalue; if(index==MAXSAMPLES) break; fclose(infile); // Then read Q values index = 0; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 278 (outfile==NULL) perror (“Error opening file to write”); for(index=0; index<numsamples; index++) fprintf(outfile, “%d, %d\n”, idata[index], qdata[index]); fclose(outfile); // The E443xB, E4438C, E8267C or E8267D all use big-endian // processors. If your software is running on a little-endian Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 279 In this format, the I and Q data is interleaved. // The data is in the range -32768 to 32767. -32768 gives negative full-scale output 0 gives 0 V output Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 280 // Open a connection to write to the instrument INST id=iopen(instOpenString); if (!id) fprintf(stderr, “iopen failed (%s)\n”, instOpenString); return -1; // Declare variables which will be used later int bytesToSend; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 281 Method 2 = send a fixed number of bytes, ignoring ‘0’ in the data. // You must find and use the correct command for Method 2. iwrite(id, ibuffer, bytesToSend, 0, 0); // Send a terminating carriage return iwrite(id, “\n”, 1, 1, 0); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 282 “:mem:data \”WFM1:FILE2\”, #%d%d”, strlen(s),bytesToSend); iwrite(id, cmd, strlen(cmd), 0, 0); iwrite(id, iqbuffer, bytesToSend, 0, 0); iwrite(id, “\n”, 1, 1, 0); printf(“Loaded FILE2 using the E4438C, E8267C and E8267D format\n”); return 0; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 283 // a double cannot hold the full number accurately for very long waveforms // This type can handle up to (but not including) 8Gsa. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 284: Matlab Programming Examples

    Little Endian Order” on page 254 and performs the following functions: — error checking — data creation — data normalization — data scaling — I/Q signal offset from the carrier (single sideband suppressed carrier signal) Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 285 % Determines the frequency offset from the carrier phaseInc = 2*pi*cycles/points; phase = phaseInc * [0:points-1]; Iwave = cos(phase); Qwave = sin(phase); % Alternate way to calculate the waveform RMS voltage Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 286 % Scale to use full range of the DAC waveform = round(waveform * 32767); % Data is now effectively signed short integer values % waveform = round(waveform * (32767 / max(abs(waveform)))); More efficient than previous two steps! Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 287 % Open the file and load the internal format data [FID, message] = fopen(filename,'r');% Open file to read data if FID == -1 error('Cannot Open File'); end [internalWave,n] = fread(FID, 'uint16');% read the IQ file Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 288 = (internalWave > 32767.0) * 65536; iqWave = (internalWave - tmp) ./ 32767; % and normalize the data % De-Interleave the IQ data IwaveIn = iqWave(1:2:n); QwaveIn = iqWave(2:2:n); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 289 Creating and Downloading Waveform Files Programming Examples Creating and Downloading a Pulse For the Keysight X-Series signal generators, the maximum frequency is 6. For more frequency information, refer to the signal generator’s Data Sheet. On the documentation CD, this programming example’s name is “pulsepat.m.”...
  • Page 290 RADAR signal using non–linear FM chirp to the vector signal generator. pulse.m This programming example calculates and downloads an arbitrary waveform file that simulates a simple pulse signal to the vector signal generator. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 291 % Copyright 2009 Keysight Technologies Inc. % This function downloads a waveform and markers to an Keysight X-Series signal generator, % X-Series Vector Signal Generator. markers is a two dimentional % array that contains 4 markers. The header contains the sample rate, the...
  • Page 292 = 1; markers(2,1:4) = 1; markers(3,1:8) = 1; markers(4,1:16) = 1; header.sampleRate = 50e6; % Set Sample Rate to 50 Download( tcpipAddress, iqWave, name, markers, header); % Range checks if nargin<2 Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 293 % Download the Waveform wfmCmd = CreateWaveformCommand( name, length(iqWave) ); mkrCmd = CreateMarkerCommand( name, length(markers) ); hdrCmd = CreateHeaderCommand( name, rms, header ); bufSize = 8192; t = tcpip(tcpipAddress, 5025); t.OutputBufferSize = bufSize; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 294 % specify a huge buffer. % INPUT PARAMETERS: - file id data - all the data format - data size to output in bytes 1,2,4 etc. bufSize - Buffer size in bytes Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 295 % Scale the waveform to DAC values [a,b] = size(iqWave); if a>b iqWave = iqWave'; maxV = max(abs([real(iqWave) imag(iqWave)])); if maxV==0 maxV=1; end % Prevent divide by zero scale = 32767/maxV; iqWave = round( scale*iqWave ); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 296 = (markers(1,:)~=0); if c>1 mkr = mkr + 2*(markers(2,:)~=0); if c>2 mkr = mkr + 4*(markers(3,:)~=0); if c>3 mkr = mkr + 8*(markers(4,:)~=0); function hdrCmd = CreateHeaderCommand( file_name, rms, header ) Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 297 = header.rms; if isfield(header,'peak') hdr.peak = header.peak; if isfield(header,'runtimeScaling') hdr.runtimeScaling = header.runtimeScaling; if isfield(header,'pulse') hdr.pulse = header.pulse; if isfield(header,'alcHold') hdr.alcHold = header.alcHold; if isfield(header,'description') hdr.description = header.description; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 298 = [':MEM:DATA:UNPR "WFM1:' file_name '",#' A B ]; function mkrCmd = CreateMarkerCommand( file_name, points ) B = num2str(points); % Bytes in marker file A = num2str(length(B)); mkrCmd = [':MEM:DATA:UNPR "MKR1:' file_name '",#' A B ]; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 299 = 'My_Test'; % Waveform name tcpipAddress = '141.121.151.129'; % Signal Generator IP Address PlayWaveform( tcpipAddress, name ); % play the waveform playCmd = [':RAD:ARB:WAV "WFM1:' name '"']; t = tcpip(tcpipAddress, 5025); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 300 Creating and Downloading Waveform Files Programming Examples fopen(t); fprintf(t,'%s\n',playCmd); fprintf(t,'syst:err?'); fgets(t) fclose(t); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 301: Visual Basic Programming Examples

    ' data to the IQ_DataVB file. '****************************************************************** Private Sub Create_IQData() Dim index As Integer Dim AMPLITUDE As Integer Dim pi As Double Dim loByte As Byte Dim hiByte As Byte Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 302 Next index 'Convert each integer value to a hex string and then write into the iq_data byte array 'MSB, LSB ordered For index = 0 To (2 * SAMPLES - 1) Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 303 = UBound(iq_data) 'Get the number of bytes in the file Open strFilename For Binary Access Write As #FileHandle Len = numPoints + 1 On Error GoTo file_error For index = 0 To (numPoints) data = iq_data(index) Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 304 This includes checking to see if the file exists. '****************************************************************** ' Program Name: Download_File ' Program Description: This program uses Microsoft Visual Basic 6.0 and the Keysight Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 305 ' declaraion. If you are using the GPIB interface in your project use "GPIB::19::INSTR" ' in the rm.Open declaration. '****************************************************************** Private Sub Download_File() ' The following four lines declare IO objects and instantiate them. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 306 FileHandle = FreeFile() On Error GoTo errorhandler With SigGen 'Set up the signal generator to accept a download .IO.Timeout = 5000 'Timeout 50 seconds .WriteString "*RST" 'Reset the signal generator. End With Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 307 SigGen.WriteString "*OPC?" 'Wait for the operation to complete response = SigGen.ReadString 'Signal generator reponse to the OPC? query Call MsgBox("Data downloaded to the signal generator", vbOKOnly, "Download") Exit Sub errorhandler: Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 308: Hp Basic Programming Examples

    The “K” instructs HP Basic to output the following numbers or strings in the default format. 10 ! RE-SAVE "BASIC_Win_file" Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 309 Program file name Sets the number of points in the waveform. Allocates integer data array for I and Q waveform points. Sets HP BASIC to use degrees for cosine and sine functions. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 310 As discussed at the beginning of this section, I and Q waveform data is interleaved into one file in 2’s compliment form and a marker file is associated with this I/Q waveform file. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 311 OUTPUT @PSG USING "#,K";":MMEM:DATA ""WFM1:data_file"",#" OUTPUT @PSG USING "#,K";Ndigits$ OUTPUT @PSG USING "#,K";Nbytes$ WAIT 1 OUTPUT @PSGb;Int_array(*) WAIT 2 OUTPUT @PSG;END ASSIGN @PSG TO * ASSIGN @PSGb TO * PRINT PRINT "*END*" Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 312 BASIC for UNIX and BASIC for Windows is the way the formatting, for the most significant bit (MSB) on lines 110 and 120, is handled. To download into non–volatile ARB memory, replace line 160 with: 160 OUTPUT @ESG USING "#,K";":MMEM:DATA ""NVARBI:testfile"", #" Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 313 OUTPUT @Esg USING "#,K";":MMEM:DATA ""ARBI:file_name_1"",#" OUTPUT @Esg USING "#,K";Ndigits$ OUTPUT @Esg USING "#,K";Nbytes$ OUTPUT @Esgb;Iwfm_data(*) OUTPUT @Esg;END OUTPUT @Esg USING "#,K";":MMEM:DATA ""ARBQ:file_name_1"",#" OUTPUT @Esg USING "#,K";Ndigits$ OUTPUT @Esg USING "#,K";Nbytes$ Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 314 The “K” instructs HP BASIC to output the following numbers or strings in the default format. ! RE-SAVE "ARB_IQ_file" Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 315 OUTPUT @Esg USING "#,K";Nbytes$ OUTPUT @Esgb;Qwfm_data(*) OUTPUT @Esg;END ASSIGN @Esg TO * ASSIGN @Esgb TO * PRINT PRINT "*END*" Program Comments Program file name. Sets the number of points in the waveform. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 316 Calculates Q waveform points. End of loop. 160 and 210: The I and Q waveform files have the same name 90 to 300 See the table on page 312 for program comments. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 317: Troubleshooting Waveform Files

    — The waveform contains an odd number of samples. An odd number of samples can cause waveform discontinuity. See “Waveform Phase Continuity” on page 217 for more information. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 318: Configuring The Pulse/Rf Blank

    Pulse/RF Blank (None) softkey to None. For more information on markers, refer to “Marker File” on page 214. Select Dual Arb > More > Marker Utilities on X-Series signal generators to access this menu. SCPI commands: [:SOURce]:RADio[1]:ARB:MDEStination:PULSe NONE|M1|M2|M3|M4 [:SOURce]:RADio[1]:ARB:MDEStination:PULSe? “Getting Key Help”...
  • Page 319: Creating And Downloading User-Data Files

    Keysight Technologies X-Series Signal Generators Programming Guide Creating and Downloading User–Data Files The following sections and procedures contain remote SCPI commands. For front panel key commands, refer to the Key Help in the signal generator. This chapter explains the requirements and processes for creating and downloading user data, and contains the following sections: —...
  • Page 320: Overview

    Prior to creating and downloading files, you need to take into consideration the file size and the amount of remaining signal generator memory. For more information, see “Signal Generator Memory” on page 321 Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 321: Signal Generator Memory

    Storage memory where files survive cycling of the signal generator power. Files remain until overwritten or deleted. Refer to Table on page 322 for the file types that share this memory: Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 322 1. This NONVOLATILE directory shows the files with the same extensions as the USB media and is useful with ftp. 2. The Keysight X-Series signal generator can use optional “USB media” to store non–volatile waveform data. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 323: Memory Allocation

    User–data blocks consist of 1024 bytes of memory. Each user–data file has a file header that uses 512 bytes for the Keysight X-Series signal generator, or 256 bytes for the ESG/PSG in the first data block for each user–data file.
  • Page 324: Memory Size

    The baseband generator (BBG) options contain the volatile memory. Table 6-4 shows the maximum available memory assuming that there are no other files residing in memory. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 325: Checking Available Memory

    Information on downloading a user–data file is located within each user–data file section. The FIR filter (file) types only apply to vector signal generator models with an installed baseband generator option. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 326 To accurately determine the available memory, you must calculate the number of blocks of memory used by the files. For more information on memory block allocation, see “Memory Allocation” on page 323. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 327: User File Data (Bit/Binary) Downloads

    You create the user file to either fill a single timeslot/frame or multiple timeslots/frames. To create multiple timeslots/frames, simply size the file with enough data to fill the number of desired timeslots/frames Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 328: User File Bit Order (Lsb And Msb)

    0 1 0 1 1 0 1 0 0 0 1 0 0 1 1 0 0 1 1 1 1 0 0 0 Ignored bit (LSB) Byte 1 Byte 2 Byte 3 Hex Value: ASCII Representation: & Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 329 The following example, which uses the Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 330 For information on editing a file after downloading, see “Modifying User File Data” on page 341. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 331: Binary File Type Data

    1 0 1 1 0 1 1 0 1 1 0 0 1 1 0 0 1 0 1 1 0 1 1 0 1 1 0 0 1 1 0 0 Data repeats Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 332: User File Size

    (BBG) option and the amount of available PRAM (volatile memory that resides on the BBG). Table 6-6 shows the maximum user file size for each baseband generator memory option. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 333: Determining Memory Usage For Custom User File Data

    70 bytes (560 bits), with the bit file using only 557 bits. 1. Determine the AUTOGEN_PRAM_1 file size: The signal generator creates a 32–bit word for each user file bit (1 bit equals 4 bytes). Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 334: Downloading User Files

    — “Command Format in a Program Routine” on page 335 Command Format This example conceptually describes how to format a data download command (#ABC represents the block data): :MEM:DATA <"file_name">,#ABC Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 335 This section demonstrates the use of the download SCPI command within the confines of a C++ program routine. The following code sends the SCPI command and downloads user file data to the signal generator’s Binary memory catalog (directory). Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 336 — The fourth argument of iwrite(), 0, means there is no END of file indicator for the string. This lets the session remain open, so the program can download the user file data. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 337 To verify the user file data download, see “Commands for Bit File Downloads” on page 338 “Commands for Binary File Downloads” on page 339. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 338: Commands For Bit File Downloads

    When the signal generator uses this file, it will recognize only 131 of the 136 bits (17 bytes) contained in the file. For information on downloading block data, see “Downloading User Files” on page 334. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 339: Commands For Binary File Downloads

    There are three ways to format the file name, which must also include the file path: — "BIN:file_name" — "file_name@BIN" — "/user/BIN/file_name" Command Syntax Example The following command downloads a file that contains 34 bytes: :MEM:DATA "BIN:new_file",#2347^%S!4&07#8g*Y9@7.?:*Ru[+@y3#_^,>l Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 340 After execution of this command, the signal generator creates a file in the Binary (Bin) directory (memory catalog) named “new_file” that contains 34 bytes. For information on downloading block data, see “Downloading User Files” on page 334. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 341: Selecting A Downloaded User File As The Data Source

    User’s Guide. You can also access the bit editor remotely using the signal generator’s web server. For web server information, refer to the Programming Guide. — Use a hex editor program on your PC or UNIX workstation, as described below. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 342 If you are remotely FTPing files and need to verify the completion of the FTP process, then query the instrument by using SCPI commands such as: ':MEM:DATA:', ':MEM:CAT', '*STB?', 'FREQ?', '*IDN?', 'OUTP:STAT?'. Refer to the SCPI Command Reference. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 343 Where instrument name is the signal generator’s hostname or IP address. 3. At the User: prompt, press Enter (no entry is required). 4. At the Password: prompt, press Enter (no entry is required). Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 344: Real-Time Custom High Data Rates

    Bit Rate Range for Internal Data (bit rate = symbol rate x bits per symbol) 16 Symbol Wide FIR 32 Symbol Wide FIR 64 Symbol Wide FIR Filter Filter Filter BPSK, 2FSK, MSK 1bps–50Mbps 1bps–25 Mbps 1bps–12.5Mbps Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 345 = bits per symbol x symbol rate 10 Msps 10.000001 Msps 20 ns 100 ns NOTE: The pulse widths values are only for example purposes. The actual width may vary from the above values. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 346: Pattern Ram (Pram) Data Downloads

    The term PRAM file comes from earlier Keysight products (E443xB ESG). PRAM is another term for waveform memory (WFM1), which is also known as volatile memory. This means that PRAM files and waveform files occupy the same Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 347 15 possible byte patterns as shown in Table 6-10. The table also shows the decimal value for each pattern, which is needed for downloading data using the list format shown on page 351. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 348 RF out. This delay varies with symbol rate and filter settings, and requires compensation to advance the burst bit in the downloaded PRAM file. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 349: Pram File Size

    File size increases by a factor of 4 — After selecting and turning the format on, the signal generator replicates the file contents to create the 60 byte minimum file size Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 350 14 bytes x 5 = 70 bytes 70 + [(70 x 24) / 8] = 280 bytes 56 bytes x 5 = 280 bytes File size increases by a factor of 5 Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 351: Scpi Command For A List Format Download

    The IEEE standard 488.2–1992 section 7.7.6 defines block data. The signal generator is able to download block data significantly faster than list formatted data (see page 351), because it does not have to parse the data. When Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 352 SCPI command, the command line notifies the signal generator that it is going to receive block data of the stated size, and to place the file in the signal generator file directory with the indicated name. Immediately Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 353 — strlen() is a standard function in C++, which returns length of a string. — bytesToSend = 240, then s = “240” plus the null character, strlen(s) = 4, so cmd = :MEM:DATA:PRAM:FILE:BLOCk ”FILE1\” #3240. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 354: Selecting A Downloaded Pram File As The Data Source

    The following steps show the process for selecting a PRAM file using commands from the Custom modulation format. 1. Select the data type: :RADio:CUSTom:DATA PRAM 2. Select the PRAM file: Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 355 Because the command is file specific (PRAM), there is no need to include the file path with the file name. 3. Configure the remaining signal parameters. 4. Turn the modulation format on: :RADio:CUSTom:STATe On Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 356: Modulating And Activating The Carrier

    PRAM file resides in either volatile memory (waveform memory) or the waveform directory for non–volatile memory. After extraction, you can Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 357 SCPI/volatile memory :MEM:DATA? "WFM1:file_name" :MEM:DATA? "file_name@WFM1" :MEM:DATA? "/user/bbg1/waveform/file_name" SCPI/non–volatile :MEM:DATA? "NVWFM:file_name" memory :MEM:DATA? "file_name@NVWFM" :MEM:DATA? "/user/waveform/file_name" FTP/volatile memory get /user/bbg1/waveform/file_name FTP/non–volatile get /user/waveform/file_name memory a. See “FTP Procedures” on page 342. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 358: Modifying Pram Files

    The only way to change PRAM file data is to modify the original file on a computer and download it again. The signal generator does not support viewing and editing PRAM file contents. Because the signal generator Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 359 32–bit word, the file contents are not recognizable, and therefore not editable using a hex editor program, as shown in the following figure. 60 byte PRAM file prior to downloading 60 byte PRAM file after downloading Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 360: Fir Filter Coefficient Downloads

    OSR of one (refer to “Using the Equalization Filter” on page 364 and to the User’s Guide). The X-Series signal generators support both Real and Complex filters. Complex filters can only be used with equalization filters. Refer to Table and to Table .
  • Page 361: Downloading Fir Filter Coefficient Data

    :MEMory:DATA:FIR? <"file_name"> Sample Command Line The following SCPI command will download a typical set of real modulation FIR filter coefficient values and name the file “FIR1”: :MEMory:DATA:FIR "FIR1",4,0,0,0,0,0,0.000001,0.000012,0.000132,0.001101, 0.006743,0.030588,0.103676,0.265790,0.523849,0.809508,1,1,0. 809508,0.523849, Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 362: Selecting A Downloaded User Fir Filter As The Active Filter

    This command selects the user FIR filter, specified by the file name, as the active filter for the custom modulation format. After selecting the file, activate the TDMA format with the following command: :RADio:CUSTom:STATe On Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 363 1. Set the carrier frequency to 2.5 GHz: :FREQuency:FIXed 2.5GHZ 2. Set the carrier power to –10.0 dBm: :POWer:LEVel -10.0DBM 3. Activate the modulation: :OUTPut:MODulation:STATe ON 4. Activate the RF output: :OUTPut:STATe ON Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 364: Using The Equalization Filter

    The samples are treated as complex (I + jQ) and convolved with the filter coefficients which are specified as (I + jQ) in the time domain. The equalization filter can be turned on and off. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 365: Save And Recall Instrument State Files

    If there is a waveform or data file associated with the instrument state, there will be a file name reference saved along with the instrument state. However, the waveform/data file must be stored in the signal generator’s memory Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 366: Save And Recall Programming Example Using Visa And C

    VISA functions. The program listing for the State_Files.cs program is shown below. It is available on the CD–ROM in the programming examples section under the same name. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 367 The State_Files.cs program is listed below. You can copy this program from the examples directory on the signal generator’s Documentation CD–ROM. The State_Files.cs example uses the in the programming code but can be used with X-Series signal generators. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 368 System.IO; using System.Text; using System.Runtime.InteropServices; using System.Collections; using System.Text.RegularExpressions; namespace State_Files class MainApp // Replace the visaOpenString variable with your instrument's address. static public string visaOpenString = "TCPIP0::000.000.000.000"; //"GPIB0::19"; //"TCPIP0::ESG3::INSTR"; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 369 = false; while (!quit)// Get user input Console.Write("1) Backup state files\n" + "2) Restore state files\n" + "3) Quit\nEnter 1,2,or 3. Your choice: "); string choice = Console.ReadLine(); switch (choice) Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 370 = true; break; default: break; VisaInterop.Close(device);// Close the device else Console.WriteLine("Unable to open " + visaOpenString); VisaInterop.Close(defaultRM); // Close the default resource manager else Console.WriteLine("Unable to open the VISA resource manager"); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 371 WriteDevice(device,"*SAV " + register + ", " + sequence + "\n", true); // << on SAME line! // Overwrite the newly created state file with the state // file that is being restored. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 372 // Retrieve the file and store with a .STA extension // in the current directory Console.WriteLine("Retrieving state file: " + nextFile); WriteDevice(device, "MEM:DATA? \"/USER/STATE/" + nextFile + "\"\n", true); ReadFileBlock(device, nextFile + ".STA"); // Clear newline ReadDevice(device); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 373 // This method reads an ASCII string from the specified device static public string ReadDevice(uint device) string retValue = ""; byte[] buf = new byte[MAX_READ_DEVICE_STRING]; // 1024 bytes maximum read Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 374 // Read the file block from the signal generator byte[] readBuf = new byte[TRANSFER_BLOCK_SIZE]; uint bytesRemaining = fileSize; while (bytesRemaining != 0) uint bytesToRead = (bytesRemaining < TRANSFER_BLOCK_SIZE) ? bytesRemaining : TRANSFER_BLOCK_SIZE; VisaInterop.Read(device, readBuf, bytesToRead, out retCount); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 375 VisaInterop.SetAttribute(device, VisaAttribute.SendEndEnable, // Write the file block to the signal generator byte[] readBuf = new byte[TRANSFER_BLOCK_SIZE]; int numRead = 0; uint retCount = 0; while ((numRead = fs.Read(readBuf, 0, TRANSFER_BLOCK_SIZE)) != Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 376 // Declaration of VISA attribute constants public enum VisaAttribute SendEndEnable = 0x3FFF0016, TimeoutValue = 0x3FFF001A // This class provides a way to call the unmanaged Keysight IO Library VISA C Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 377 [DllImport("agvisa32.dll", EntryPoint="viGetAttribute")] public static extern int GetAttribute(uint vi, VisaAttribute attribute, out uint attrState); [DllImport("agvisa32.dll", EntryPoint="viOpen")] public static extern int Open( uint session, string rsrcName, VisaAccessMode accessMode, uint timeout, out uint vi); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 378 [DllImport("agvisa32.dll", EntryPoint="viStatusDesc")] public static extern int StatusDesc(uint vi, int status, byte[] desc); [DllImport("agvisa32.dll", EntryPoint="viWrite")] public static extern int Write( uint session, byte[] buf, uint count, out uint retCount); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 379: User Flatness Correction Downloads Using C++ And Visa

    VISA functions. The program listing for the FlatCal program is shown below. It is available on the Documentation CD–ROM in the programming examples section as flatcal.cpp. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 380 // in the code below with the IP address of your signal generator. //***************************************************************** #include <stdlib.h> #include <stdio.h> #include "visa.h" #include <string.h> IMPORTANT: Configure the following IP address correctly before compiling and running char* instOpenString ="TCPIP0::000.000.000.000::INSTR";//your PSG's IP address Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 381 Program to Download User Flatness Corrections\n\n"); printf("Enter number of frequency and amplitude pairs: "); int num = 0; scanf("%d", &num); if (num > 0) int lenArray=num*2;//length of the pairsList[] array. This array Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 382 = ',';//comma separator for SCPI command for (int j=0; j< num; j++) //download pairs to the PSG sprintf((char*)str,":corr:flat:pair %s %c %s\n",pairsList[2*j], c, pairsList[2*j+1]); // << on SAME line! viWrite(vi, str,strlen((char*)str),0); Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 383 //turn on corrections sprintf((char*)str, ":corr on\n"); viWrite(vi,str,strlen((char*)str),0"); printf("\nFlatness Corrections Enabled\n\n"); for (int k=0; k< lenArray; k++) delete [] pairsList[k];//free up memory delete [] pairsList;//free up memory viClose(vi);//close the sessions viClose(defaultRM); return 0; Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 384: Data Transfer Troubleshooting

    — The user file must be a multiple of 8 bits, so that it can be represented in ASCII characters. — Available volatile memory must be large enough to support both the data field bits and the framing bits. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 385: Pram Download Problems

    Pattern reset bit not set. The transmitted pattern is interspersed Insure that the pattern reset bit (bit 7, value 128) is set on the last byte of your with random, unwanted data. downloaded data. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 386 1 = end of memory and restart memory playback. This bit is set to 0 for all bytes except the last byte of PRAM. To restart the pattern, set the last byte of PRAM to 1. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 387: User Fir Filter Coefficient File Download Problems

    — Filters containing more symbols than the hardware allows (32 for real-time modulation filters, 512 for Arb Custom Modulation filters, and 256 for Equalization filters) will not be selectable for the configuration. Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 388 Creating and Downloading User–Data Files Data Transfer Troubleshooting Keysight CXG, EXG, and MXG X-Series Signal Generators Programming Guide...
  • Page 389 GPIB 68, 69, 70, 71, 72 framed Keysight X-Series, menu path unframed computer interface file computer-to-instrument communication downloads commands VISA modifying hex editor configuration, automatic VISA configuration, (manual)
  • Page 390 unencrypted files for no extraction user flatness DAC input values utilities data IntuiLink for signal generators binary, framed Keysight Signal Studio, Toolkit binary, unframed Waveform Download Assistant encryption waveform data format, e443xb signal generator advanced programming languages requirements, waveform commands data questionable e443xb signal generator files 210, 251...
  • Page 391 VISA and C controller extract user file data interface 15, 38 extracting interface cards 36, 67 PRAM files IO libraries Keysight X-Series, setting address listener overview 36, 67 file size program examples 40, 68, 75, 85 determining SCPI commands PRAM...
  • Page 392 Signal Studio Toolkit interface VISA 21, 40, 59, 68 cards 36, 67 VISA COM Resource Manager 1.0 GPIB X-Series global settings, configuration RS-232 global settings, configuring USB (Keysight mxg only) memory allocation, volatile memory interleaving, See I/Q data setting GPIB address...
  • Page 393 LAN I/O libraries, selecting 21, 22 front panel USB queries using C++ non-volatile memory, Keysight X-Series SetRWLS waveform memory USB I/O libraries, selecting internal VISA non-volatile memory, Keysight X-Series non-volatile memory waveform memory...
  • Page 394 HP Basic extracting setting modifying Keysight X-Series non-volatile memory, storing remote interface understanding programming volatile memory, restoring volatile memory remote programming unframed data, usage...
  • Page 395 STB command NI libraries storage USB, using internal VXI-11, programming non-volatile memory, Keysight X-Series signal generator system requirements monitoring status volatile memory types Waveform Download Assistant talker Signal Studio Toolkit 204, 250 TCP/IP simulation software...
  • Page 396 power selecting a downloaded user FIR file data questionable calibration user flatness data questionable frequency user-data file type description binary, memory location negative transition, description bit, memory location positive transition, description FIR, memory location standard operation flatness, memory location troubleshooting instrument state, memory location GPIB memory location...
  • Page 397 PRAM memory allocation web server Keysight esg communicating with Keysight psg internal securewave directory Keysight memory, volatile (WFM1) X-Series signal generator Windows types, signal generators 2000 waveform 2000 Professional volatile memory available, SCPI query VXI-11 configuration 16, 19...
  • Page 398 This information is subject to change without notice. © Keysight Technologies 2012-2019 Edition 1, July 2019 N5180-90074 www.keysight.com...

Table of Contents