RoadTest: Keysight 33622A Waveform Generator
Evaluation Type: Independent Products
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?:
What were the biggest problems encountered?: Didn't find anything worth mentioning.
I am fortunate enough to be one of the 4 people selected for this RoadTest and I'd like to thank Agilent and Element14 for this amazing opportunity.
I would also like to tell you that, despite it being a freebie, I will test this equipment just as I test all my new gear, trying to fault it at every step, while going through all the features I care about. Keep in mind this is a high quality product so there's very little you can say against it.
There's a lot of ground to cover, so I'll try to be swift and to the point.
As you open the box, you are faced with a slim box that sits on top of the padding in which the waveform generator rests. The slim box contains the accessories (power cord & USB cable), safety instructions and two CDs, one with drivers and libraries for interfacing with various software, the other one with information. On top of the generator, stuck between the protective rubber frames at the front and the back, I found a calibration certificate, which said that the device was tested following a procedure developed by Agilent and that everything is in spec.
The unit looks like it means business, with clean lines and tempered design, perfectly suited for a professional tool of this class.
It feels very sturdy, having a metal case with lots of venting holes on the sides and on the bottom, protective rubber frames on the front and back panels and a handle that can probably sustain 10 times the weight of one device.
Due to the rubber frames on which it rests and the weight (3.5 kg), it has very good adherence to the surface. A desirable feature when you plug and unplug BNC cables all day long.
On the front panel we have a USB host port for storing and loading waveforms or the complete state of the generator, a soft power button and a big color display with soft menu buttons under it. The display is easy to read and it has a wide viewing angle. On the left of the display we find a bunch of hard menu buttons, which expose the main functions of the waveform generator in a very accessible manner.
The two left and right buttons from under the rotary encoder allow you to quickly select which digit you're modifying with the knob, when you're editing numbers. As a secondary function, you can use the left button to delete characters when you're entering data via the number pad.
All the buttons have a nice feel to them with good tactile feedback. They're made from (what looks like) hard rubber and some of them get lit up to indicate that that specific function is enabled. I like the material they used for the buttons, since it's not that cheap rubber that collects dust and then it's impossible to clean.
The first BNC connector on the front panel, before the first output channel, is a sync output, which can be used to signal the beginning of the waveform or that a specific point in the waveform has been reached. Can also be turned off.
The outputs on the front have the shell connected between them and they are isolated (both the shell and the pin) to ± 42 V from the chassis.
Damaged BNC connectors, due to abuse or even as a result of regular usage, are a common issue on test devices. On the 33600A series, the BNC connectors appear to have a very strong bond with the front panel, so damage due to regular or slightly excessive force applied to them is unlikely.
There's not much to say about the back panel, except that it has everything you need, 10 MHz reference input and output connectors, as well as modulation and trigger input, LAN and USB connectivity and, optionally, a GPIB interface.
The fan is fairly loud when the unit boots up, but it quiets down after that and varies in speed depending on what the unit is doing.
As you may have noticed, there's no fuse holder exposed. That is NOT an oversight, Agilent concluded that it's safer to change the entire main power supply assembly and/or investigate, than simply changing a blown fuse, since the fuse may indicate more serious issues and simply replacing it could make them worse.
Specifications & Features
One of the most important aspects of the 33622A is that it's able to output up to 1 billion samples per second, while having a 120 MHz bandwidth. That is 8.3 points for each 120 MHz cycle (10 points at 100 MHz) and while it doesn't mean that you can stuff higher frequency content in (I tried), it means you get very high resolution and therefore, precision in your waveform transitions.
1 mVpp to 10 Vpp in 50 Ohms & 2 mVpp to 20 Vpp in open circuit
This is one of the biggest selling points of the 33600 series and one of the areas where this signal generator shines over the competition of the same class. Agilent got smart and extended in the right direction, really low Vpp, which is where the signals we find in real life are more likely to be found.
These 16,384 steps are making the waves look super clean, even at 10 Vpp, giving you less than 1 mV/step. I'm not entirely sure how the resolution scales with amplitude, but I think it's at least distributed across several ranges. I did my best to make those points visible during the review, but all I got were clean lines.
4 MSa / 64 MSa memory
It comes with 4 MSa standard memory, upgradable through the MEM option to 64 MSa. In this memory, you can either store one long waveform or take advantage of the sequencing feature, which allows you to have a sequence of waveforms, each with their individual repetition count and trigger settings, opening the door for easy automated or manual testing, with no programming necessary.
High bandwidth pulse
This feature is a refinement of the square wave, allowing you to control the rising and falling edge times and specify the pulse width, instead of duty cycle. You can create pulses up to 100 MHz.
The Pseudo-random binary sequence goes up to 200 Mbit/s. It's useful for quickly testing how serial buses behave with real life data.
Noise Generation with selectable bandwidth
You can generate noise with a selectable bandwidth of up to 120 MHz, which can be used either on its own or as modulation source for another waveform.
In the modulation department we have:
- AM: 0% to 120% depth and 0.01% resolution.
- FM: 1 µH to 60 MHz deviation and 1 µH resolution.
- PM: 0º to 360º and 0.1º resolution.
- FSK: <= 1 MHz rate
- BPSK: 0º to 360º and 0.1º resolution. <= 1 MHz rate.
- PWM: 0% to 100% of pulse width, 0.01% resolution.
- Sum: 0% to 100% of carrier amplitude, 0.01% resolution.
- Burst with internal timer or external triggering.
- The sweep modulation can go up or down in a linear or logarithmic progression or jump through a list of user-defined frequencies (up to 128 frequencies).
In terms of connectivity we have LAN and USB by default and GPIB as an option. Regardless of how you connect to the device, it will always get exposed to the client software in the same way, through the VISA interface so communication to the device can be established using already existing libraries.
Up close View
In this section we'll go through all the major features, take a look at what settings you can change and the imposed limitations.
In the waveform menu (topmost dedicated button, on the side of the screen), we get to select which waveform we want to output and we get two pages of items (bottom of the screen), that get linked to the soft menu buttons at the bottom.
As soon as you select one of the waveforms, you end up in the parameters menu (which can otherwise be selected from the hard menu button on the side). This menu is different based on the properties of the waveform selected and it's allowing you to select which parameter to modify.
I've tried the sine on all amplitudes, on high and super low frequencies and I'm happy to report that it looks flawless, no matter the settings. In the frequency domain, I was able to observe the 2nd and 3rd harmonics across most frequencies, starting from a few MHz, at around 51-55 dB and respectively 54-61 dB down from the fundamental. What I also noticed, were a few tones inherent to the device, that appeared to be present regardless if the output was on or off. These tones are sitting at about -90 to -100 dBm and don't appear to have any relation to the current settings of the waveform generator.
10 MHz sine @ 500 mVpp
|70 MHz sine - second harmonic @ -54.33 dB||70 MHz sine - third harmonic @ -55.50 dB|
From the Phase menu, you can set the phase of the waveform, in steps of 0.001º up to 360º, on the selected channel as well as Sync it internally to the second channel, since both channels are working independently and chances are they won't be phase aligned by default.
If you start typing, instead of using the knob, the soft menu becomes a list of options to help you quickly enter the value you had in mind:
The amplitude can be adjusted in steps of:
- 0.001 mVpp from 1mVpp to 10 mVpp
- 0.01 mVpp from 10 mVpp to 100 mVpp
- 0.1 mVpp from 100 mVpp to 1 Vpp
- 1 mVpp from 1 Vpp to 10 Vpp
- 1 mVpp from 10Vpp to 20 Vpp
As with sine waves, the square waves are perfect and there's no overshoot.
The square wave gets up to 100 MHz and the duty cycle is adjustable in steps of 0.01%, from 0% to 99.99% but the span gets limited based on the pulse width. Let me give you some numbers so you get an idea of what you get (they are just frequencies I picked at random):
- at 10 kHz you can go the whole range, from 0.01% to 99.99%
- at 100 kHz you can go from 0.05% to 99.95%
- at 20 MHz you can go from 10% to 90%
- at 50 MHz, from 25% to 75%
- at 90 MHz, you can go from 45% to 55%
- at 100 MHz you can't change it at all
It appears to only be limited by rise and fall times, so this is probably the best duty cycle you can get.
In the Symmetry menu, we can make use of one of the 3 presets (100%, 50% and 0%), or we can just change the symmetry the regular way (via the knob or the keyboard, in 0.01% steps):
|100% Symmetry||50% Symmetry||0% Symmetry|
The triangle wave is basically the ramp with a fixed symmetry of 50%, so I won't get into it.
Just as you'd expect, the pulse is super clean too, just like the square wave:
|100 µs pulse||100 µs pulse, edge||100 µs pulse, 50 µs leading edge|
For the pulse, we get about the same settings as we did for the square wave, with one addition, we can control the rising and falling edges. The Duty cycle is now renamed to Pulse Width, but that can be changed from the Units menu, if you want to. Aside from that, the pulse is bound by the same rules as the square wave.
Here's how the pulse looks on my scope at 50 MHz and 100 MHz, with 200 mVpp amplitude:
|50 MHz pulse @ 200 mVpp||100 MHz pulse @ 200 mVpp|
The shape of the signal stays exactly the same, no matter the amplitude:
|50 MHz pulse @ 2 Vpp||100 MHz pulse @ 2 Vpp|
One thing to note here is that edges never change, only the pulse width does. Another one is that the edge times are also subject to limits, set by the pulse width.
50 MHz pulse with 9ns (max at this width) leading edge
Several changes in here:
1) Frequency got renamed to sample rate, but it can be changed to either period or frequency from the units menu.
2) We got an Arbs menu, that we'll explore in a bit.
3) We also have a filter options.
4) And finally, we got an Arb Phase setting, but as you can see, it's not a menu anymore. We'll look into that in a moment.
Let's start with nr. 4, since it's the simplest one. As you might have noticed, the Phase menu, is not a menu anymore, but a mere setting, so no more "Sync Internal" option. I'm not sure if this is an oversight, the option does show up once you load an arbitrary waveform on the other channel and if you have any other waveform on that second channel, you still get to "sync internal" from there, even tho the option is missing on the channel with the arbitrary waveform.
Let me show you what I mean:
Ch1 with Arb, Ch2 with square
Ch1 with Arb, Ch2 with square
As you can see, you can still sync from Ch2 (and it works).
Now, if we load an arbitrary waveform on channel 2 as well, we get an extra soft button, "Sync Arbs".
Bottom line is that, even tho the option is missing when you have a regular waveform on the other channel, you can still sync, so basically you can sync no matter what. Why not keep the same phase menu available? I wouldn't say it's an issue, but I found it interesting enough to mention it.
When arbitrary waveforms are created or captured from a source, they end up with a specific number of points and a specific vertical resolution. If you're playing them back from a higher bandwidth device, or if you simply increase the amplitude, the points won't increase in number, they just get further apart and because of the higher bandwidth, the gap between them becomes visible.
For this reason, there are 2 filters provided (digital I suspect), that will smoothen the waveform.
Off - output the unfiltered points
Normal - highest bandwidth, ~5% preshoot and overshoot
Step - lower bandwidth, ~0% preshoot and overshoot
For example, if we have this waveform, that is made out of 6 points and we're sampling it at 40kSa/s:
|No filter||Normal filter||Step filter|
Here's what it looks like on one of the built in arbs:
|No filter||Normal filter|
An noteworthy aspect of the filter setting is that with no filter, the sample rate is limited to 250 MSa/s.
Edit (2014-10-24): In the past few months I've been using this generator a lot and I realized that I didn't give enough credit to this filter setting, particularly to the "No filter" setting, which I found to be extremely useful when testing the support (of a DUT) for various protocols. Its beauty is in the fact that each sample point can be used as a bit or a fraction of a bit in the protocol and the sample rate as the bitrate (or multiple of it, when using multiple samples per bit). This, in conjunction with the built-in waveform editor, has allowed me to create error scenarios on the fly that I wouldn't have been able to generate otherwise, because existing hardware implementations of the protocols in question are usually unable to generate errors (try generating bad serial data with a MCU).
Having done this, I also realized why that 250 MSa/s limit is in place. It's because 250 million points per second is equal to at most 125 MHz, which is slightly above the 120 MHz bandwidth of the generator, but still usable at the price of incurring a bit of extra attenuation.
The "Arbs" menu:
From here you can load arbitrary waveforms, select an already loaded one, import them from csv, txt and other files and edit or create new ones.
All the operations are fairly straight forward, including editing or creating new ones.
I was not able to take screenshots while in the editor, so I took photos instead:
There's also an option to enter the points data via a dataview, copy and paste them or perform math and advanced math on them:
From the "Insert Built-in" menu, you get to chose from 12 built-in waveforms and after you pick one, you can change their specific parameters as well:
Bandwidth of the noise can be set from down to 1 mHz to 120 MHz. The following 3 screenshots are made with 100 Hz noise and 100 MHz noise. In the 100 MHz one you can actually see that the generated noise is respecting the bandwidth:
|100 Hz noise||100 MHz noise||100 MHz noise @ 5 ns/div|
On closer analysis on the spectrum analyzer, we can observe the power distribution and that the power at the set bandwidth, is 3 dB down from the rest of the spectrum:
Noise @ 30 MHz bandwidth and -20 dBm power.
At 30 MHz the power is 3 dB down from where most of the power is concentrated.
This is a stream of random binary data, so the output is either high or low. It can go from 1 mbps to 200 Mbps and has a variable edge time from 2.9ns to 1ms (you can only control both edges simultaneously tho).
I was expecting it to have a PRNG with a big period behind it and then just trim the output to the given setting, however it appears that the PNx setting is actually defining the period.
You get 2^PNx - 1 bits, where the PNx setting can go from 3 to 32. I thought about it for a while and it does make more sense to define the period, rather than just trim the output of a PRNG with a much bigger period. If they would have just trimmed the output of a PRNG that generated the full range of numbers continuously, you would have ended up with a non-repeating stream of bits, no matter the PNx value, rendering the setting virtually useless.
As it is now, we get a sequence that repeats as often as we want and it's completely predictable, which means it can be communicated to someone else and they'll be able to generate the exact same sequence with out much of a fuss.
1 kbps PRBS and a clock signal on channel 2
I also made a few eye diagrams at the higher bit rates:
|100 Mbps||150 Mbps||200 Mbps|
At the end of the day, this looks like a very well thought out feature, that, as I said when I listed the specs, can become a very powerful tool for bus debugging.
You guessed it, it's DC output. Goes from -10V to +20V in steps of 100 µV.
There are only 2 things I will mention here:
1) The output voltage is very stable and quite accurate.
2) Whatever you set the offset to be, it will affect the other waveforms you will select after this. This is because the generator is trying to preserve the settings you made, when you're switching from one waveform to another.
This concludes the Waveform menu.
Next, we're going to look at the modulation options, which are accessible by pressing the "Modulate" button.
The main menu that shows up, when you press the "Modulate" button, is tailored to the selected modulation type and chosen source signal, just like the "Parameters" menu is for the selected waveform. Because of that, it's impractical to present all the possible combinations, so I'll present them separately.
There are only 3 items that stay the same: the "Modulation On / Off" switch, the "Type" selection menu and the "Source" menu which is always positioned at the end of the list, usually on page 2.
|Modulate menu||Source menu|
First of all, let's take note of the options each modulation type is adding to this menu:
AM: AM Depth and DSSC.
FM: Frequency Deviation.
PM: Phase Deviation.
FSK: Hop Frequency.
BPSK: BPSK Phase.
Sum: Sum Amplitude.
We can group the modulation types in 2 categories: those where the deviation / modulation depth is a function of the input's signal amplitude and those that switch between two states, where the input is either 1 or 0.
In the case of the first category (AM, FM, PM and SUM), the Source options are: Internal, External and Channel 2. When the Internal option is selected another menu item is added: Shape.
As you can see, the shapes can be any of the supported waveforms and depending on the selection, we get yet one or two menu items. For example, when choosing noise, we get to change the bandwidth, while for sine, square and ramps we can change frequency as well as phase. For PRBS we only get to change the bitrate and for Arbitrary waveforms, just the frequency.
This may seem complicated or even counter intuitive at first, but believe me, it makes a lot of sense when you're using the device and it adds up to its ease of use, each option becoming easily accessible. One thing I noticed is that the order in which the menu items get added is not a hierarchical one, but one based on how often you're likely to use them, so kudos to the person who said "I don't want this button here.".
When using the internal signal, the deviation or depth of the modulation will always swing from 0 to 100% of what it's set (ex: if we have AM modulation with a depth of 80% and our input is a sine, the output will always go from 20% to 100% in amplitude and you can't make it go, say... from 30% to 100% by varying the characteristics of the source signal). This holds true when using the signal from the other channel too, no matter what the amplitude settings says on that channel, which is a bit disappointing because that would have offered a bit more flexibility.
When using the external input, we get to chose what represents 100% of the set deviation/depth. The two options we have here are ±1 V or ±5 V, so if we chose ±1 V and we have a deviation of 80% set, we'll reach that deviation at 2 Vpp. Being able to do this, means that we can feed in (with a cable) the signal from the other channel and have the possibility of generating less than the full deviation/depth that was set in the modulation menu.
In the case of the second modulation category we have FSK and BPSK, for which we can only have Internal and External as source. When internal is selected, the only option that gets added is the rate at which the state should change:
I already listed the specifications for modulation in the specs section, so I won't repeat them here. The only thing left is to mention that that the external modulation input has a bandwidth of 100 kHz.
In terms of sweeping, we are offered 3 modes: linear, logarithmic and list.
For linear and logarithmic modes, we can set the sweep time, start frequency and stop frequency, as well as the hold & return time.
The datasheet says that, in linear mode, you can set the sweep time from 1 ms to 250,000 s, with 1-ms resolution up to 3600 s and 1-s resolution up to 250,000 s. I was able to set it to 250,000 s, but I couldn't enable sweeping with that value:
Now... if I'm not doing anything wrong, why would you be able to set that value if you can't use it? I guess this is a firmware bug and the question is which is the bug? The fact that you can set 250,000 s or the fact that it doesn't allow you to enable the channel? It remains to be seen.
In logarithmic mode, the sweep time can be set to what the datasheet says: 500 s with 1-ms resolution.
The hold and return times represent how long should the frequency stay at the stop frequency after the sweep is over and how long should it take to return to the start frequency. They can both be 0 and can go up to 3600 s, with 1-ms resolution.
Sweeping appears to make complete abstraction of the loaded waveform, but it won't work with Noise, PRBS or DC (obviously).
In List mode, we have a list of frequencies (128 max) through which the generator will hop and a Dwell Time setting, that represents how much time it stays on the same frequency before it jumps to the next one. The dwell time can be set from 1 µs to 4000 s with 1-µs resolution (datasheet says 4-ns).
The list of frequencies can be easily modified, saved or loaded from internal or external storage.
The burst function allows you to generate only a specific number of cycles, at a given interval. Alternatively, you can use the gated mode and trigger each cycle from the Gate input at the back.
Can be a great debugging tool, since it's isolating the input signal and can reveal the effects each cycle has and how those effects stack up in your circuit.
The burst period can go from 1 µs to 4000 s, in increments of 4-ns.
Does not work with DC and does only gated output with noise. The details for the trigger, can be set from the dedicated Trigger menu button.
|Noise burst||Trigger settings|
100 Hz burst of 1 MHz noise, externally gated
Something that immediately captured my attention was that it was idling on 0 V, so I decided to run some tests with a couple of different waveforms. Turns out that's the behavior for all waveforms but PRBS and Arb. In the PRBS case, it always idles on the low level, while for arbitrary waves it idles on the same level with the last point in the waveform. If you find yourself needing PRBS to idle on the high level, you can always invert the channel output.
Another thing I was curious about was how was the gate signal used, more precisely, what happens when the gate signals the output to go off. The answer was easy to find: the gate only signals when the output should start and it's only checked again when a complete cycle has been completed. If at that time the gate is low, the output stops and is restarted from the initial position only when the gate goes up again. I like it.
|Ch 1 = output signal, Ch 2 = gate||Ch 1 = output signal, Ch 2 = gate|
The output menu is brought up by pressing the buttons for channel 1 or channel 2.
From here you can:
- turn the output on or off
- set the load impedance, so it can properly calculate the amplitude at the load
- invert the polarity (turn the signal upside down)
- set voltage limits so you protect your DUT against misconfiguration
- configure dual channel operation
In dual channel operation, the two channels can be coupled in frequency, amplitude or they can be an exact mirror (inverted or not) if we use the tracking mode. There's also a "Combine" option there which works just like the Sum modulation, but with out the options.
In the case of frequency coupling you can set a ratio that can go from 0.001 to 1,000. For amplitude coupling on the other hand, both amplitude and offset will have a ratio of one to one between the two channels.
In this day and age is hard to get your hands on test equipment that comes with out associated software and in the case of arbitrary waveform generators, practically impossible. While I don't see myself using a device that sits in front of me, through some piece of software on the PC, I do see value in that software, because sometimes that's exactly what you want to do and when that time comes, the quality of the said software makes the difference between pulling your hair out and not even realizing it's there.
In this department we are offered 2 programs: Agilent BenchVue, which is free and Agilent BenchLink Waveform Builder, which requires a license but can also be used in trial mode.
I managed to get everything up and running very fast, without needing to check any documentation and without even knowing how everything fits together at that time. I just installed the Agilent IO Library and added my LAN device to the Connection Expert (part of the IO Library Suite). After that, it was seen by both programs.
This is Agilent's effort to create a unified control program for all their products. It currently supports 100 something devices and they continue to work on adding more. The list of supported hardware can be found here: http://www.home.agilent.com/agilent/editorial.jspx?cc=EN&lc=eng&id=2418722
I do not have any of the oscilloscopes listed there, but as I understand it, you should be able to drag and drop waveforms from the oscilloscope to the waveform generator.
Despite it being pretty much perfect, I couldn't help but get a feeling that the software is not there yet. I believe Agilent is still at the point where they're adding functionality and devices to it, leaving the polishing part for later in the development. I'm saying this because I got a few crashes and also found some missing features that should have simply been there (and they probably will be there).
The UI is easy to understand, to operate and it appears to expose the full functionality of the 33622A. Everything is fairly self explanatory, so I won't go over the functionality again and I'll leave you with some screenshots and some short commentary instead.
The UI for a particular instrument changes, depending on how big its window is, as you can have several instruments on display, arranged in various ways. You can also undock an instrument from the main window.
You can have up to 4 instruments in this configuration.
Maximized instrument inside the parent window
Undocked instrument window
One thing I'll mention here (we have the arbitrary waveform selected on channel 1), is that the Browse button will allow you to select a waveform from the internal and USB storage attached to the device, but not from your PC. I think this is one of those things they didn't get to polish yet and it will probably happen in the future. You may say that a waveform editor is also missing, but I believe it's a good idea to leave that out, as it is a bit out of the scope of this application and a dedicated product would be more suited.
The library tab is supposed to offer you documentation related to the selected device, but unfortunately it doesn't yet work for the 33622A. Don't despair tho, I'm sure it'll soon get populated and until then, there's always agilent.com.
Agilent BenchLink Waveform Builder
The waveform editor is a mature tool, it is not only easy to use, but also very powerful. Besides allowing you to insert various waveforms or even free draw them, you can perform math on the entire waveform or even just on selections. You can also generate waveforms by evaluating an equation or by editing a point table.
Main editor window, where you get to create the waveform.
Things work just as you expect they would, so operation is very intuitive. You can copy/cut/paste and much more.
The Equation Editor allows you to generate waveforms based on mathematical equations. After you are happy with the result, you can hit OK and the resulting waveform gets inserted into the the waveform you are editing.
In the Edit tab, you are presented with lots of functions that can be applied to the waveform, including filtering and math.
You can do math on a waveform or a selection using a variety of standard waveforms as operands, or by providing your own operand from the clipboard.
Another thing that the BenchLink Waveform Builder is capable of doing, is creating sequences of waveforms. They are lists of waveforms that get "played" in order, only that you get to set how many times each of them should play, if they should wait for a start or end trigger and how the sync output should behave in each case.
These sequences are very useful if you have several waveforms you want to apply to your DUT and you want to loop through them either manually or automatically, via the external trigger. For example you may have sine, square and noise all repeating until the trigger. You could then check how your device behaves with the first one and by pressing the trigger button you would advance to the next waveform, make your measurements and press the trigger button yet again to move on to the last waveform. A real time saver!
From the Communications tab you can connect to a waveform generator and send the waveform or the sequence to it or import a waveform from an oscilloscope:
On top of providing top notch desktop software support, Agilent also provides a web interface which comes with a Java client that connects back to the device and just as the BenchVue, provides full control over the device. From this interface you can also reconfigure the LAN properties.
As a bonus, it adds an interactive IO tab, which comes in handy when writing programs for the waveform generator, since you can quickly test commands and inspect the answers.
SDK & Documentation
What a great experience, Agilent has produced lots of high quality documentation, both for the device and for the libraries. The complete set of commands is very well documented in the datasheet, while documentation for the libraries can be found in the install location of the IO Library Suite or online. The documentation contains code examples too, which makes digesting it easy, even for first timers.
I had absolutely no issue in creating a small C++ program that talks to the waveform generator through the VISA interface and I was pleasantly surprised to discover that the device itself is programmer friendly. When you're writing code, you're always going to make mistakes. The 33600 detects the protocol or state mistakes (like when requesting something that is not possible in the current state of the wave gen) and records them in a log that you can access from the device:
I'd like to close the Software section by saying that I'm truly impressed with Agilent. They have managed to produce not only great software, but also a great platform for developers. Considering most hardware / test equipment manufacturers provide garbage software and developer support, I find it an amazing accomplishment and I think it shows what kind of company Agilent really is.
Performance & Testing
Most of the questions I had, before I received the device, got answered in the previous section, where we took a close look at the features and the UI. Instead of rehashing those points, I'll be looking on some other stuff that didn't fit in there.
Don't know about you, but I was super curious about that 1 mVpp. I was wondering how well it looks, how much resolution it has, etc.
For the following screenshot please keep in mind that my scope has a noise floor of 1 mVpp by default, so I had to average every 8 samples to take the noise out and that 1 mV/div is the lowest it can go. Triggering was done on the sync output:
Cardiac signal @ 1 mVpp
For reference, this is how the same signal looks like at 200 mVpp:
Cardiac signal @ 200 mVpp
I can't really test the resolution, since I don't have that sort of equipment, but judging by the previous findings and how good it looks on the scope, I would say it's a win.
My best guess for the best case scenario for resolution at 1 mVpp is 9,102 points. I'm basing that on the fact that as you go up in amplitude, a relay clicks when you go over 1.8 mVpp and 16,384 (14 bits) / 1.8 = 9,102. I could be horribly wrong of course, but again, just my best guess.
First of all, I wanted to know if it can sustain a short since I'm always screwing up. The datasheet says it can, so I set the amplitude to 3.3 Vpp (for a 50 Ohm load) and shorted the output for a few minutes. I didn't have the heart to go higher in voltage, but I don't think it's going to be an issue when it will happen. I know this test is silly, especially since it's specified in the datasheet, but it gives me a higher level of confidence when I'm using the device in the real world - one less thing to worry about.
Second of all, I wanted to see how it behaves with loads of really low impedance, so I put the pulse waveform in burst mode, 500 mVpp and tried it on 10 Ohm, 5 Ohm and 50 Ohm for reference. Aside from some variations from me touching the test setup, the waveform was pretty much unchanged.
I didn't run the same test for capacitive loads, because I knew the result would be a function of capacity + the 50 Ohm output impedance of the 33622A, since it seems to be designed to properly drive those 50 Ohms even in short.
None I can see with my gear. Actually the output is so clean that at times I found myself wondering if the scope is still triggering or if I switched to single shot mode, because it was looking like a still picture and all the lines were crisp.
10 MHz Reference Output
It's a square wave of about 1 Vpp and it was another nice surprise. As this unit didn't come with the OCXO option (doesn't show up in the about menu) I decided to test it against my rubidium frequency standard. It was only 1.1163 Hz off and extremely stable. After a cold start it has an offset of about 0.3 Hz and ramps up for about an hour, after that it stabilizes and it's slowly drifting back and forth by a few mHz.
I couldn't test the 1 µHz resolution, but I wanted to test the lowest resolution I could. I figured I'm going to sleep for 7 hours, that's 25,200 seconds and I'm looking for a drift of about 90º.
1 / (4 * 25,200) ~= 0.000,010 Hz
I hooked up Ch 1 to the 10 MHz reference output, Ch 2 to the output signal and since this was going to be a long test, I turned the display off and left a note for the wife via the "Interactive IO" tab, from the web interface:
Precisely 7 hours later I woke up and surprise, surprise, it has shifted by 90º.
|100.000,000,000,010 MHz||7 hours later|
My initial intention was to try to make it drift due to bad rounding, but because of the extremely high resolution and because I didn't know how the internal clock is being used, I figured that testing the 0.000,01 resolution should be a good enough indication of how precise it is.
There weren't many, but I did find several shortcomings. They are mostly related to dual channel operation and I already mentioned some of them in the blog posts.
1) If one of the two channels is generating a PRBS waveform, you can't make use of frequency coupling. While bit rate is not frequency, being able to couple frequency and bit rate would allow you to easily generate a clock signal on the other channel, which could be used together with the PRBS waveform.
2) On several occasions, I felt the need to use tracking mode (identical/mirrored output) and at the same time change the phase on one of the channels. This is another thing that I'm sure the hardware is capable of doing, but it's just not there at the moment.
3) Another annoyance was the fact that I couldn't internally trigger two bursts at the same time. I easily worked around this by building a small pulse generator and triggering both channels from the external trigger input, but it would have been nice if the option was there in the first place.
4) Delayed trigger jitter - this one seems to be a hardware limitation and it appears to be there by design (there's only so many super accurate signals you can fit in a box), but it could also be a simple bug. What happens is that if you have two bursts, externally triggered and you decide you want to use trigger delay on one of them, it will only work fine up to 31 ns. After that there's going to be a lot of trigger jitter on that channel. What's interesting is that if you add more than 40 ns delay on both channels, the jitter between the channels is reduced to only 3 positions and it also gets canceled for every difference between the delay times, that is a multiple of 4.
|trigger delay > 31 ns on channel 2||trigger delay > 40 ns on both channels|
This is pretty much all I could find wrong with this instrument, nothing particularly interesting and 75% probably fixable via firmware updates.
My own experience
Time was short, but I managed to work a little on a frequency counter I'm designing and I made heavy use of the dual channel output and phase settings, as I was using one of the outputs as the clock signal and the other one as the input signal. It allowed me to test how well my device was dealing with phase difference between the clock and the input as well as test how it behaves with distorted signals and noisy input.
During the entire time I used it, including during the review, I found the UI very easy to use and intuitive. I didn't need to read any documentation on that, as everything is self explanatory and whenever you're trying to make some bad settings, nice, descriptive warnings on the screen are letting you know what's going on. Very well thought out UI.
Between the build quality, the features and the performance it offers, I would say this instrument is going to serve its users for many years and won't become obsolete any time soon.
It all adds up to a very high quality, rugged tool that can be used both for quick manual measurements and for automated/scripted testing. Agilent has taken all of that into account and is not only providing a Waveform Generator, but a complete solution that you can apply in any number of ways.
An excellent review Razvan! Very well written and beautifully illustrated. My experience too has been very positive with the 33622A and with Agilent in general.
Does your 33622A make a high pitched sound…
Hey Mark, your reviews are very good too.
Yep, mine has the SMPS noise as well. I have a strong feeling that it only happens in the 230V countries, which would explain how everyone at Agilent missed it…
Yes, the difference is visible and I think I can spot a change in the signal down to 20 ps. I couldn't zoom in further so I'm not able tell if it can actually do 1-ps resolution.
My guess about the trueform technology, is that they're generating a clock that precisely fits the needed sample rate (or a multiple of the sample rate). After that, it's just your usual DDS.
It was interesting to see the effect of the different filters. The filters must be digital as you suspect as their bandwidth varies with the sampling rate.
One thing that I'm interested in is the resolution of the pulse length which is 100 psecs according to the data sheet. Is it possible to see any difference between a pulse of length 40 nsecs and one of length 40.1 nsecs (at the same frequency) for instance ?
(Given that the maximum sampling rate is 1GS/s, 100 psecs is only 1/10 th of a sample point.)
Interestingly they have the same resolution on the pulse length for the older 33522 which samples at 250MS/s so each sample is 4 nsecs.
I'm curious as to how meaningful the high resolution is. I guess it comes down to a phase/frequency thing - the frequency can be set to very high resolution because of the underlying DDS approach and this translates into relatively high resolution in the time domain.
No, I don't have anything that can measure period with that sort of accuracy. My scope can't deal with it either as it shows about 400 to 500 ps of jitter, which is obviously noise and jitter from the scope itself.
If you're going to investigate this further, keep in mind that all the instruments involved should be clocked from the same reference, especially since our units don't have the high stability option. If you can't do that, the only way to measure jitter is by doing it in very short bursts and compare the cycles against each other, otherwise the drift in the 33622A's clock and in the other instruments will appear to be jitter and you can't trust the results anymore.
Do you have equipment that would allow you to make a jitter measurement on the 33622A?
Pai aici este chestia. Mie de exemplu mi-a cerut in jur de 1100 ron pentru un osciloscop de 56 mil vechi, la tine echipamentul ajunge undeva la 200 mil. Ei spuneau de TVA 24% din pretul declarat al produsului, intrebarea mea este, daca americanii si-au declarat valoarea totala a coletului *** de ti-au cerut ai nostri doar atat, 2000ron ? Te intreb pentru ca stiu ce tepe se fac si cu vama la noi si cam am dubii. P.S. - ti-au desigilat coletul? Multumesc anticipat. M. Alexe Viorel