Siglent SDG2042X + IMD Measurement


I recently acquired a relatively inexpensive dual channel signal generator: the Siglent SDG2042X. I’d been looking for a dual channel signal generator for a while to allow IMD measurements and this one was particularly attractive for a couple of reasons:

  • DAC sample rate of 1.2GSPS meant that any image frequencies on the output would be a long way from the signals of interest. This was the main attraction to be honest.
  • Easily software upgradeable to 120MHz max frequency using instructions here: to 120MHz version (at least on the verison I bought in Sepetember 2021)
  • Lots of other options including modulation / arbitrary waveform generation that I’ve not even started to have a look at yet.

First thing I did was to apply the software “upgrade” and confirmed I could get 120MHz fmax. I then added drivers for this new piece of kit to my Python suite ( for driving all my bits of test equipment. I then swept the power from -50dBm to 0dBm with the output of the signal generator fed straight into my spectrum analyser. Note that I had not calibrated out the cable loss or the DC block I had between the two:

Initial validation setup for SDG2042X

This gave the following very promising results:

Output power
Measured error in output power

This certainly seems more than good enough for testing at home. IMD3 grows 3x faster (in dB) than fundamental power so a +- 0.3dB error in fundamental power equates to roughly +-1dB in measurement of IIP3. Depending on whether the measured errors are random or inherent to the instrument, when a straight line is fitted during the IMD3 calculation, this error may reduce significantly.

SDG2042X performance

First, it was important to check the IMD performance of the signal generator on it’s own. If it’s performance is significantly worse that that of the DUT, then the measurement is almost worthless. Please forgive the phone images of spectrum analyser screen – it’s not modern enough for any of that fancy USB stuff and I don’t have a floppy drive to hand!

The above screen shows 3 measurements:

  • Yellow: Signal generator output set to 0dBm, 120MHz
  • Blue (barely visible behind pink trace): Signal generator output disabled
  • Pink: Spectrum analyser noise floor when disconnected from the signal generator

It’s reassuring that the blue and pink traces align, this suggests that the leakage of the signal generator when the output is disabled is less than the noise floor of the spectrum analyser. This is easy to achieve in modern DAC based signal generators but couldn’t always be taken for granted in older units where the analog oscillator was always running and an RF switch was used to disable the output. Three tones are visible above the noise floor:

ToneFrequency (MHz)Power (dBm)Power (dBc)

It’s a good idea to work out whether these are harmonics generated within the signal generator or IMD products within the spectrum analyser. To measure this, a 10dB attenuator was placed at the input of the spectrum analyser. If the harmonics are generated by the signal generator, then they will drop by 10dB, if they are IMD products within the spectrum analyser, they’ll drop by 30dB as IMD scales with the cube of the input power. Repeating with this attenuator installed gave the following:

ToneFrequency (MHz)Power (dBm)Power (dBc)
Measured tone power with 10dB attenuator installed

The tone power relative to the carrier stayed roughly constant so this suggests that the tones are being generated within the signal generator. However, they are low enough to not be considered an issue for this testing.

IMD Measurement Board

To measure IMD, we inject two closely spaced tones and measure the intermod products generated by our DUT – I intend to write an intro to IMD which will be linked here but haven’t got around to it yet, sorry. The schematic is very simple:

IMD Measurement board

The circuit is incredibly simple: a DC blocking capacitor, spaces for a filter and attenuator should I feel it’s needed, then a Minicircuits combiner and 20dB directional coupler. The use of an expensive (£9) coupler rather than resistively combining is resitive combination always wastes 3dB of power in the combiner and I didn’t want that. The directional coupler is allowing the output signal to be measured after combination – this is much easier to calibrate the relationship between the signal at J4 and J3 rather than all the cables and components upstream of the combiner plus the generator itself.

IMD combiner

I initially didn’t fit any filtering or attenuation and measured the performance as is.

Blue = SIG 1 to Output, Green = SIG 2 to Output

Both channels are well matched, insertion loss is well aligned with the datasheet values for the components used. Checking the isolation also looked promising up to 500MHz:

Isolation between two input ports

Measuring the difference between the sample port and the output is not super simple. The coupler is directional, we can’t just inject signal into the output port and measure the sample port as that will give the wrong answer due to the directionality of the coupler. Instead, we have to measure the input -> output, and the input -> sample port and subtract the two to convert what is measured at the sample port to what that means is at the input and then convert that to what signal level that produces at the output. We’ve already measured input -> output, so measuring input -> sample port gives:

Blue = SIG 1 to Sample, Green = SIG 2 to Sample

It’s important here that the two traces overlap closely in the operating region – once a signal has made it to the sample port, we don’t know which input it came from so life is much easier if we don’t have to care. There would be a way around this by comparing the sample signal to what’s being generated currently but this is a problem I’m glad to avoid. Calculating the conversion between level at the sample port and the output port gives the following:

Sample port to Output port conversion
Sample port to Output port conversion (0-250MHz)

In practical terms, it’s probably reasonable to just add 19.8dB as a constant, the error introduced by this is small enough compared to the rest of the test setup. It’s good that both channels perform identically, for the reasons discussed above.

I received some excellent advice from Carlos EB4FBZ to watch out for IMD generated by ferrite combiners / couplers ( as I have done here so we shall measure the performance of the new board in isolation first to see whether this is an issue. First a quick indicative measurement, I wanted this be a good distance away from fmax to prevent any LPF filtering in the ouput having a significant effect. Following plot is two tones, at 50MHz +- 0.5MHz with both tones set to 0dBm on the signal generator:

Output of IMD measurement board
ToneFrequency (MHz)Power (dBm)Power (dBc)
Measured two-tone output of IMD measurement board

At the point that these become limiting in any measurement I’m doing at home, I think I’ll be very happy.


Writing an IMD measurement test is pretty straightforward – combine signals, feed into DUT and measure power at the expected frequencies for IMD3 / 5 etc. I initially wrote a test script that didn’t worry about sampling the signal and had calibration constants fed into it to convert from signal generator setting to power at DUT – these were based on the measurements taken above. Nearly all the effort was in the best-fit line generation and creation of the Excel workbook. While it’s generally much easier to plot using matplotlib from Python – I like Excel as I can edit the graph afterwards if my code fails to generate the graph as I’d like it or I want a different view of the results.

Given most receivers have an OIP3 of ~0dBm and high performance RF components (excluding high power PAs) have an OIP3 of ~30dBm, I’m very happy with that. I’ll try to get some amplifiers to test another day. If you have any thoughts, please comment here or message me on Twitter @m0wut.

Leave a comment

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: