In this article I'll compare three popular Arbitrary function generators. They are all about the same price point and popular among makers. The models up for review are:
Be sure to check out the video for this article to get a good idea of how the units look and feel.
Let's look at the main specs first - I've gone through the linked datasheet and summarised the headliner specs:
I've emboldened the maximum specification for each parameter and the SDG1032X is the clear winner. One nice perk is that both channels are identical - a lot of the time you'll find that all the features are loaded into Ch1, while Ch2 is usually only good for small-signal stuff.
It's worth noting that headline specs can't really be maintained across every dimension. For example, the DG1022 will almost certainly not be able to generate a 20MHz sine wave, at 20Vpp, with a full 10V offset (these are the max specs for each parameter). There must be some kind of operational envelope where one parameter places a constraint on another. We don't really have the resources, equipment or time to test these devices across each of the major dimensions (Frequency, amplitude, offset, waveform) so we're going to keep it to the specs for now.
Let's turn now to the distortion ratings. This is where comparing devices can often get a bit confusing because the threshold frequencies are usually different. In this case, I found a graph helps with the comparison a lot. The measurement here is distortion, so a lower value is better. Distortion is plotted against a logarithmic frequency scale. The measurements actually go down to DC (0Hz) but these are impossible to show on a log scale so I've just capped it at a 1kHz minimum - we're really interested in the upper limits here.
The DG1022 is really showing its age, with a comparitively high distortion of -45dBc, best-case. The SDG1025 and newer SDG1032X are neck-and-neck until 1MHz. Again, the SDG1032X is a clear winner, with its maximum distortion still coming in under that of the DG1022.
Since the new SDG1000X series essentially replaces the SDG1000 series, I think this is a good point to drop the SDG1025 from the comparison and just compare the two brands: Rigol and Siglent.
Let's move on to the function-generator-killer test: the Square wave. The goal here was to bump both arbs to a full-frequency, full-amplitude test (with preference to frequency). Setting the DG1025 up first, the maximum deliverable square wave was 5MHz @ 20Vpp. Mirroring these settings on the SDG1032X, I took a measurement with the same test-lead of each signal. These are the results, DG1022 on left and SDG1032x on right:
I guess that's why the DG1022 has a maximum square wave frequency of 5MHz, any higher and we'd be looking at something closer to a ramp. Looking at the statistics at the bottom of each screen-grab we can compare the rise times: 24ns vs. 11ns. I'm no metrology expert, but I think this is an illuminating experiment to perform. If there's a takeaway it's that the rise/fall-time is much better on the SDG1032X - sure there's some distortion at the edge of each wave but I suppose that's what you get when you do a full 20V slew at 5MHz.
If you'd like the full-size images to compare you can grab them here.
Software will be your primary way to define arbitrary waveforms. Rigol's suite is called UltraWave and Siglent call theirs EasyWave. These types of software all have a pretty similar look and feel which is great because it means if you've used one you've used them all. Both allow you to start from a clean-slate or import a basic function to get you started.
There is one super-weird behaviour that I observed with the DG1022 - When generating a user-defined arbitrary waveform you may get this brief but large transient at the start/end of the wave description. This happens if you don't completely fill the wave-definition window in UltraWave, eg. if you have 4096 points available but you use only 2048 to define your wave.
One other thing I found lacking in UltraWave was the ability to define a function mathematically. In EasyWave you have the option of defining the wave function as an actual mathematical function, eg. 2*sin(5*x). See the below screenshot to see how to define a function, and save/recall.
Both environments have their own limitations. UltraWave allows you to change the sample rate of the standard imported waves, so you can connect a sine to a square wave as below. In EasyWave, if you import a standard wave it fills the whole screen (all the available data points) and you're left to edit the shape from there.
Given that we've been looking at similarly priced Arb. Function Gens, I'm going to declare the winner the SDG1032X, which should be no surprise given the specs, result of the square-wave test, and user-experience. I much prefer the display on the SDG1032X, where you have all parameter data available at a glance.
Be sure to watch the accompanying video for this article if you'd like to see some user experience and hear my thoughts on how the generators operate.
If you'd like to read a full review of the SDG1032X, you can find one here.
APPENDIX - Front and Back Photos