In this chapter, I will look more into detail of each of the modules within the Digilent WaveForms application, while also providing some insight into the user experience of using the ADP3450 in these modes.
Digilent WaveForms Tour & User Experience
The Digilent WaveForms user interface consists of a home screen which allows you to load previous projects, or to invoke various modules which perform a given function. These modules include Scope, Wavegen, Supplies, Voltmeter, Logger, Logic, Patterns, StaticIO, Spectrum, Network, Impedance, Traver, Protocol and Script. Each of these modules will, by default, open in their own tab with multiple instruments allowed to run concurrently as long as they don’t require access to the same hardware at the same time – for example, Scope and Wavegen can run at the same time, but Scope and Network cannot since they both require access to the oscilloscope inputs, so while both tabs may be open, only one can be working at a given time. The tabbed interface can be annoying for some operations, so instead, the software provides configurability that allows you to “float” them as separate windows, allowing it to be re-arranged. While the windows open up to a default size, the windows can be freely resized to fill the screen. All of this is a rather positive design choice, as it makes for efficient and highly flexible use of screen real-estate.
The one overall criticism I have of the WaveForms user interface is that it is often quite cluttered as a result of the flexibility. At times, options are hidden behind text menus which are fairly self-explanatory, while other times, functionality hides behind smaller icons which are less intuitive – for example, in the Oscilloscope window, there are icons for zoom and markers in the corners, but they are not as apparent or intuitive as they could be. This is an understandable trade-off, as flexibility often comes at the cost of aesthetics, and I think they have done a reasonable job of balancing this. Performance sometimes suffers in some modules on certain operations (e.g. high numbers of averaging, running bode plot scans at low frequencies, performing long record-mode acquisitions, saving large projects) which can result in the window becoming unresponsive seemingly without much user feedback (or providing frozen feedback). I also have had a number of application crashes where the program would just “disappear” – this seemed to happen more on low-resource ARM-based Raspberry Pi or Linux Mode targets, but also happens on occasion on Windows. After the crash, sometimes the instrument will complain that it is “in use” and will need to be restarted to regain access.
Each of the following sections goes into more depth about each of the modules within WaveForms and the user experience with the ADP3450 in those modes.
Scope
The Scope module provides the most important functionality of the ADP3450, namely the oscilloscope. The tab features a menu bar across the top that allows selecting features, a configuration bar below that and a collapsible channel configuration bar to the right, with channel-specific, time-based and additional options available through the various cog buttons. Additional channels (e.g. math) can also be added. The waveform is plotted in the centre with a histogram to the right side. I have enabled measurements in this case – I am measuring the signal across a 25MHz (nominal) crystal with the ADP3450 running at 100MHz default system clock.
It is clear that the ADP3450’s >55MHz bandwidth rating is perhaps not its biggest Achilles heel, but more rather the 125MSPS maximum sampling rate that defaults to 100MSPS as it is a rounder number as certain time intervals are also derived from the system clock. This results in a “lumpy” resolution of the 25MHz clock, as just four samples are recorded for every oscillation.
For stable, repetitive signals where accurate triggering can be achieved, the oversampling option allows for an increase in effective sample rate but at the cost of significantly increased acquisition time. This technique does not work for non-repetitive signals and will suffer from slight errors in time-offset and trigger-noise resulting in a slightly “fuzzy” look even though the waveform shape is more faithfully reproduced. The above shows the same clock, but oversampled 100 times.
The display is very flexible, allowing for multiple windows to be opened through the buttons along the top toolbar. As a result, it is possible to look at a signal in the time and frequency domains at the same time. Zooming and cursors can be achieved with the small iconised buttons inset into the trace area. Most important measurements can be computed with full statistics, as you would expect. The software also supports plotting XY mode and XYZ mode as well. Unfortunately, as one would expect, performance does suffer when using too many measurements or alternative views.
The oscilloscope offers persistence view as well, but this operates differently to most oscilloscopes, as it does not affect the main view but operates a separate window which does not offer the same in the way of measurement cursors or adjustable persistence decay times which limits its use somewhat.
It is possible to mix digital and analog domains as well, although unlike most oscilloscopes, protocol decoding does not appear to work on analog channels – this means both additional cabling complexity and consumption of both digital and analog channels if you would like to see both domains at the same time by connecting both channels in parallel. On the up-side, both modes offer perfect time-alignment.
Another major limitation of the standard operating modes is the waveform buffer size of 32,768 samples. The ADP3450 appears to operate as a traditional USB DSO where a single waveform buffer of limited size is filled at the digitisation rate and transferred to the computer for display. Only after this is complete, can another capture be taken, resulting in long blind times especially in case of slower computers. In a quick experiment, I measured a blind time of about 15ms between buffer captures on Linux Mode via Ethernet leaves plenty of time for a short glitch to get by. This seems to be the case as the “buffer” number on the screen reflects buffers in the host’s RAM and not memory segmentation on the device itself. Furthermore, because of this limited buffer size, we are limited to observing very short time windows when high sample rates are used, so unless you are “lucky” with the trigger, you might miss the event of interest. This issue is something many big-box oscilloscopes have responded to by having larger and faster memory buffers with better data processing to allow for both long captures and deep-zoom capabilities.
The ADP3450 has a special mode to try and overcome this disadvantage to some extent, known as “Record Mode”. In this mode, the system tries to acquire samples continuously and uses an internal memory buffer to hold the data. The specifications claim up to 128MS recorded from a channel at the full 125MSPS rate only in Standard mode (Up to 1MSPS in Linux Mode), however, I was not able to get this to work stably. Instead, I would receive “samples were lost” at most rates above 12MSPS or the software would hang attempting to do a record mode capture while running in Standard USB or Standard Ethernet modes. This may be because of the size of the data – 128MS of 14-bit samples (padded up to 16-bits each) would be 256MB of data to transfer, at 40MB/s USB2.0 rate would take almost seven seconds. Even though Ethernet is faster, the benchmark only gives the interface about 53MB/s effective reducing the transfer time to about five seconds. This is where the PicoScope’s USB 3.0 interface seems to offer a clear win.
As a result, while the Scope module is very flexible and capable, but it does seem a little cluttered as a result. The hardware limitations of the ADP3450 are apparent with its traditional USB DSO architecture of having a modest sample rate of up to 125MSPS, relatively small sample buffer, use of host history buffers and significant blind time between acquisitions in part due to data transfer bandwidth and processing limitations. While there is a record mode to try and overcome some of these limitations, I was not able to reliably get this to function at high sample rates. As a result, I would not consider this a “professional” oscilloscope, although it is not bad compared with other PC-based entry-level educational or hobby-oriented products.
Wavegen
The Wavegen module is home to the two arbitrary waveform generator outputs. This module allows for independent or synchronised use of both channels. By default, the simple mode allows for basic function-generator style controls, while more advanced controls are available in the Basic mode which provides slider-control of values. The custom mode provides the ability to replay custom lists of values.
The Modulation mode allows for AM and FM modulation by a function waveform, the sweep mode allows for the output frequency and amplitude to be swept, while the play mode allows for playing back an audio file from the wavegen outputs.
Compared to most other AWGs I have experienced, this one has a lot of in-built flexibility and functions, diminishing the need to generate your own table of values externally and load it into the instrument. While the 32,768 sample capability of the AWG and the ~15MHz bandwidth does not match-up to standalone instruments, it is still very much more usable than the AWG offered on many USB instruments.
Supplies
The Supplies module allows for the digital voltage to be configured, which in-turn, configures the digital voltage threshold in lock-step. Unfortunately, the two cannot be independently configured and this threshold applies to all 16-bits of the bus. The digital I/O voltage is also the “crude” power supply offered by the ADP3450 which has a limited 300mA rating and just a single rail of 1.2 to 3.3V, making it rather limiting, although the ADP3450 does have USB 5V output on the rear as well. Perhaps this module is more useful for Analog Discovery Pro units that contain a real power-supply peripheral. The module also allows for the digital I/O pulls to be configured and reads out the system monitor information.
Voltmeter
The Voltmeter module displays the DC, True RMS and AC RMS values for all channels and can be configured with the “cog” button. This doesn’t feel like its own instrument, as the measurements feature in the Scope module can do the same, but is probably here for convenience and for the Analog Discovery Pro units that have an actual separate voltmeter device. Note that because the inputs are the oscilloscope inputs, users must be careful and respect the voltage limitations of the inputs as they are not as rugged as most DMMs might be.
Logger
The Logger module provides data logging capabilities over time, allowing for the measurement values (e.g. from Scope) to be recorded and displayed over time. This emulates a rolling chart-recorder type display.
Logic
The Logic module provides the ability to perform logic decoding and plot it against time as a logic analyser might. Protocols available include SPI, I2C, UART, USART (PS/2), CAN, I2S, 1Wire, HDMI-CEC and Manchester. Custom protocols can be defined and protocol triggering is available. Unfortunately, the logic analyser is limited also by the buffer of 32,768 samples by default, thus the observable time window depends on the sample rate selected. Lower sample rates may not adequately capture high-rate data transmissions, while the blind-time between captures can be quite significant – I informally observed about 15ms in one example.
Testing with my FPGA LFSR using the Bus mode with a DDR-style clock on both edges plus a sampling delay allowed for direct decoding of a 15-bit parallel bus which matched the expected values.
Testing with a 2Mbit/s UART stream also worked well provided sufficient sample rate is used. The auto-baud rate detection feature worked well and decoding was mostly stable with occasional framing errors where sample rates were not high enough. If it were not for the limited sample-based buffer memory, this would probably be even more useful.
Patterns
The Patterns module allows the digital I/O pins to be used as a pattern generator. The generator is capable of creating clocks, pulses, constants, random noise, counters and ROM logic functions. For a pattern generator, it offers quite a comprehensive set of features, although the operating frequency of ROM Logic state machine output are limited to 10MHz. Compared to the pattern generator features in the Rohde & Schwarz RTM3004, this is far more advanced and seems particularly well done.
StaticIO
Given that the digital I/O pins are capable of generating patterns, it makes sense that it can also generate static values. The StaticIO module isn’t exactly a new “instrument”, but it does offer its own twist on visualising and interacting with the digital I/O lines from a computer.
The software allows for each I/O pin to be configured as a virtual LED, push-button toggle and slider, the latter two in various types to accommodate the need to drive different types of logic stages – e.g. push-pull, open-collector, etc. It is also capable of running sliders to assign or visualise a given binary value across a bus and for emulating seven-segment displays.
This is perhaps not as interesting to professionals, but is perhaps quite useful for educational contexts where it may be more user-friendly to display and set values in a more intuitive way, reducing the number of physical hardware components needed to run certain exercises.
Spectrum
The Spectrum module behaves a little bit like a spectrum analyser. In fact, it’s pretty much the same as what you might find enabling the FFT in the Scope module because it’s based around the same inputs, except that there are more options. As it is limited to the oscilloscope channel input frequency response and sampling rate, it is only capable of around 50MHz, thus is not a good replacement for a dedicated spectrum analyser. In spite of this, it could be quite useful in lower frequency work – e.g. detecting switching frequency behaviour and noise, for HF-radio frequencies or basic EMI checks. However, the bin widths are limited as the maximum number of bins across the span is 16,385.
Network
The Network module functions similarly to the Bode Plotting or Frequency Response Analyser (FRA) options on standalone oscilloscopes. It uses the wavegen outputs to drive the circuit while measuring the input and output of the DUT to determine the transfer function. In many standalone oscilloscopes, this is a paid-option, so having this available is nice. In the case of the Picoscope, such a feature is not part of the software, with the best approximation to do a sweep with the AWG with peak hold FFT on the relevant channels and some head-scratching to take the difference between curves. As a result, I appreciate this level of integration as it brings functionality useful for a number of applications.
In spite of this, it should be noted that the capability of the wavegen outputs does potentially introduce measurement errors. While the wavegen output is capable of about 10-16MHz of -3dB bandwidth and is capable of up to 25MHz sine-wave output, I suspect the purity and consistency of amplitude can be limiting at the upper end. While the input measurement allows most of this to be compensated out, the characteristics of the input channels can also affect the result – in the above, both Channel 1 and Channel 2 are measuring the wavegen output at 10X attenuation, with Channel 1 used as reference. In the ideal case, Channel 2 measurements should be perfectly flat assuming probes are properly compensated, although there is still a slight tail at the higher frequencies. Channel 4 is at 1X attenuation, thus the frequency response rolls off as a function of frequency, as expected.
Impedance
The Impedance module is another useful feature which I haven’t seen elsewhere and is a testament to the useful integration of instruments offered by WaveForms. Considering how few people actually have an LCR meter in their arsenal and even fewer who have a set-up for characterising the behaviour of components across the frequency range, this is perhaps one of the most useful tools. It combines the use of the oscilloscope inputs and wavegen outputs, using an external user-provided sense resistor, to behave as an impedance analyser. It can measure impedance, admittance, inductance and capacitance across the (logarithmic) frequency range to determine its behaviour – quite important for picking the right switching frequency (or matching capacitors/inductors) for a converter or filters.
This particular module has two views – the analyser view which allows you to sweep the full frequency-dependent behaviour of the component, or the meter view which provides a simplified LCR-meter-like view for a single point reading.
While seemingly useful, I did not find the values to be highly accurate as the measurement range can be quite picky with regards to the current sensing resistor. A resistor that is too high or too low can introduce noise into the measurement, while errors in the resistance value will affect the computed result. In spite of the limited absolute accuracy, the frequency-dependent behaviour is perhaps much more valuable and that is displayed well, although the number of points per decade may necessitate multiple scans to narrow in on a cross-over point.
Tracer
The Tracer module performs I-V curve sweeps of semiconductors including diodes, BJTs and MOSFETs and can produce family-of-curves. This is another great addition as it emulates the capability of a curve-tracer using the oscilloscope inputs and wavegen outputs. The configuration required for the inputs and outputs is illustrated by a small schematic diagram and requires up to two sensing resistors of the specified values to be supplied by the user.
In my tests, I found the curve sweeps to be possible at a relatively nice speed although the results did exhibit some jitter and noise. The biggest limitation is the voltages and currents available from the wavegen outputs, which means that it is not possible to sweep higher than a few milliamps of current and up to 5V amplitude. As a result, its utility is a little limited, but this is still enough to make good measurements of MOSFET threshold voltage and low-current gain.
Protocol
While the Logic module visualises the decoded data on a time basis, there is also the Protocol module which offers the ability to sniff and send/receive data alone without the time visualisation. The data can be presented in various different formats. This module features support for UART, SPI, I2C, CAN, CEC and AVR, however, my experience seems to suggest that at higher rates, there may be issues with data loss and decides can become discontinuous.
Unlike many other digital-capable tools, the ADP3450 can transmit and act as master because it is an I/O rather than just an input. This is particularly useful especially if testing an I2C peripheral directly, as the scripting feature also allows users to write a Javascript program that can directly read data from connected sensors without the need for an external microcontroller to act as the bus host.
The AVR feature is probably not that often used, but it seems the ADP3450 can function as an AVR programmer which could be useful in case of recovering or reprogramming such a microcontroller. It is a bit of a surprise to see, but seems to build on my impression that WaveForms has been built to do useful things with the hardware where possible.
Script
The script module allows for some automation over the WaveForms UI to be automated to extend the WaveForms software. The programming language is Javascript-based, with the documentation provided in the Help tab. As I am not too familiar with Javascript and prefer to automate the instrument through Python, I did not make use of this feature, but it is nice to see that it is possible to automate the instrument for measurements with the WaveForms software out-of-the-box, requiring no further software or set-up.
Conclusion
The Digilent WaveForms software offers modules including Scope, Wavegen, Supplies, Voltmeter, Logger, Logic, Patterns, StaticIO, Spectrum, Network, Impedance, Traver, Protocol and Script. Each of these modules open in their own tab or window with multiple instruments allowed to run concurrently with the ability to freely resize to the screen and invoke multiple sub-window views. All of this is a rather positive design choice, as it makes for efficient and highly flexible use of screen real-estate. It can, however, be cluttered as a result of the flexibility with options are hidden behind text menus and smaller inset icons which are less intuitive but I think they have done a reasonable job of balancing this. Performance sometimes suffers and I also have had a number of application crashes where the program would just “disappear” and sometimes the instrument will complain that it is “in use” and will need to be restarted to regain access.
When it comes to the modules and the ADP3450, the results are quite a mixed bag. The Scope module for example is highly configurable and offers plenty of features, but the ADP3450 itself proves to be a limiting factor as its 32,768 sample buffer and relatively long blind-time make for a limited zoom capability. The limited sample rate also affects clarity for higher-frequency signals, while oversampling for repetitive signals can take quite a bit of time and computational resources. The Record Mode which offers larger record lengths proved unstable for me with sample loss errors. The module does not offer digital decoding from analog channels, while increasing the number of sample history buffers seems to be a computer-side options, thus cannot get around the blind-time issue. This is probably a limitation of the USB 2.0 and Ethernet interfaces as well, as the throughput only ranges from 40 to 53MB/s which is not sufficient for timely transfer of the samples.
The same sample buffer and blind-time limitations also affect the Logic module, which is otherwise well-implemented with SPI, I2C, UART, UART, USART (PS/2), CAN, I2S, 1Wire, HDMI-CEC and Manchester support out of the box. The Logic module works well, assuming you can capture the event of interest in the first place.
The Wavegen module is well implemented as well, with excellent choices of functions, sweeps, modulated signals, custom lists or playback of audio files. This reduces the need to create custom lists of values, however, the 32,768 sample capability and ~15MHz bandwidth do not measure-up to standalone instruments. The Pattern module is also especially well implemented with many pattern options of creating clocks, pulses, constants, random noise, counters and ROM logic functions compared with the pattern generator in my RTM3004.
Perhaps the biggest stars are the Network, Impedance and Tracer modules. All three show clever integration of the inbuilt instruments to achieve measurements which either are added-cost options on other equipment or require the user to program their own solutions. The Network module provides a bode plot/frequency response analysis feature which works well although may suffer from the wavegen’s limitations. The Impedance module provides the capability of an LCR meter and impedance analyser but requires user-provided sense resistors. Absolute accuracy is not always guaranteed as the sense resistor value can be critical, but frequency-dependent component behaviour can be measured which provides very valuable insights. The Tracer module allows for I-V curves to be measured on diodes, BJTs and MOSFETs using up to two user-provided sense resistors to emulate the behaviour of a curve tracer and also provides useful information on low-level behaviour of semiconductors. However, because of the limitations of the wavegen, the current levels and voltages are quite limited. While these instruments definitely don’t reach the capabilities of standalone instruments, I felt the utility they provided to be sufficient for basic needs and their inclusion is quite innovative.
The Protocol module focuses on data-only aspects of UART, SPI, I2C, CAN, CEC and AVR communications. It offers decoding and receive/transmit functions for most of the supported protocols, however, it seems that data losses can still occur. The module does have a surprise as it has an integrated scripting feature for I2C for use with sensors allowing the ADP3450 to act as a master and log data from a sensor. The AVR tab also provides AVR programming capabilities which seems to illustrate that the WaveForms software is about packing in tools that have utility. The Script module allows for further extensibility and automation of the WaveForms UI which is particularly valuable as it offers the ability for users to automate without installing anything further, based on the Javascript language.
The Spectrum module operates very similar to the FFT in the Scope with a few more friendly options around units and FFT bins. Unfortunately, as it is based on the oscilloscope inputs, it is only capable of about 50MHz thus is not a replacement for a dedicated spectrum analyser. It is still useful for lower-frequency work. The Static I/O module duplicates some functionality which can be achieved through the Logic module, but presents it in a more interactive and intuitive way in the form of buttons, sliders, virtual LEDs and 7-segment displays. This is great for educational purposes for reducing the amount of parts needed for certain lab exercises. The Logger module allows for measurements from the Scope to be recorded over time like a chart recorder and feels like a simple extension of the Scope capabilities.
The Supplies module was a bit of a let-down as the ADP3450 doesn’t have a dedicated power supply peripheral, thus only a single digital I/O voltage can be set from 1.2V to 3.3V sourcing up to 300mA and also affecting the digital input threshold voltage. The Voltmeter module also seemed a bit superfluous as the ADP3450 does not have a dedicated voltmeter, thus it is equivalent to using Scope with configured measurements.
As a result, I feel that the “pro” moniker perhaps may be a bit misleading. Compared to previous iterations of the Analog Discovery or other low-end starter instruments “of last resort”, the ADP3450 definitely is a notable step-up. However, compared to the mid-range entry-level standalone instruments or a similar equivalent from PicoScope, some of the ADP3450’s limitations become clear. While there are a few areas where the WaveForms and ADP3450 shine, the basic features of the ADP3450 are still relatively limited in part due to limited buffer memory, sample rate, analog bandwidth, connectivity bandwidth and hardware peripherals. As a result, I feel the ADP3450 will probably suit educational and relatively undemanding hobby users much more than it will suit professionals.
---
This post is a part of the Digilent Analog Discovery Pro ADP3450 USB/Ethernet Mixed Signal Oscilloscope RoadTest Review.