IQ Modulation Programming Examples

RF Signal Generation

Chris Armstrong

Last Update hace un año

With the need for dynamic signal generation, interference, and complex RF environment tests, the ability to automate and process a variety of signals quickly is an important capability. Like all Siglent instruments, these RF signal sources utilize a SCPI text based API over USB or ethernet. Each series includes a programming manual that outlines how to communicate using these SCPI commands with the VISA protocol.


One critical aspect of automation for a signal generator like this is to dynamically load custom IQ files that may be saved internally or transferred from the SigIQPro software beforehand. 

Let’s look at a couple of basic signal configurations for these generators and the commands we use to set them up:


First, let’s look at how to load and activate a QAM16 signal remotely to the instrument. Here is a view of the LabVIEW code. The highlighted area controls the generator:

In this vi, these 6 commands are sent in 2 batches:


:FREQ 4000000000 sets the center frequency to 4 GHz

:FUNC:DM:STAT ON activates the IQ modulation system

:RADio:CUSTom:MOD QAM16 sets the custom modulation to QAM16

:RAD:CUST:STAT ON activates the custom modulation system

:POW:POW -20 sets the power level to -20 dBm

:OUTP ON turns on the generator main output

The code in that vi above the generator code sets up a SSA5000A spectrum analyzer to view the demodulated signal. This is achieved simply by loading the mode (MA for Modulation Analyzer) in this case and then loading a saved setup with all of the matching settings. The output of this code appears on the analyzer as:

Obviously, subtle changes to that code can adjust the modulation or turn off the IQ modulation operation.


Let’s look more closely at a complex configuration for a Bluetooth signal:

This code shows the 8 commands necessary to load and execute a Bluetooth signal. Most important is the command to locate and load one of the preexisting Bluetooth arb files:


RADio:ARB:WAVeform “WFM:Bluetooth BR_DM1 Bursting packet”

Depending on the model, the command for loading the waveforms from the file system differ slightly.

Then to set the arb symbol clock rate: :RADio:ARB:SCLock:RATE 30 MHz

And finally, to activate the ARB radio system: :RAD:ARB:STAT ON

Consult the programming manual for the model generator you are using for complete programmatic control.

Was this article helpful?

1 out of 1 liked this article

Still need help? Message Us