|Product Performed to Expectations:||9|
|Specifications were sufficient to design with:||9|
|Demo Software was of good quality:||7|
|Product was easy to use:||7|
|Support materials were available:||8|
|The price to performance ratio was good:||10|
|TotalScore:||50 / 60|
This RoadTest is comprised of two parts. In the first part, I'll be doing a basic overview of the Analog Discovery 2 and the included Waveforms software. In the second part, I'll attempt to use the Analog Discovery 2 in conjunction with LabView Home to create an audio analyzer application.
Because there are two products in this RoadTest, the reported score is the unweighted average of the two component scores. Here are the scores for the individual components:
|Metric||Digilent Analog Discovery 2||National Instruments LabVIEW Home 2014||Composite Score|
|1. Product performed to expectations||10/10||8/10||9/10|
|2. Specifications were sufficient to design with||8/10||10/10||9/10|
|3. Demo software was of good quality||10/10||4/10||7/10|
|4. Product was easy to use||10/10||4/10||7/10|
|5. Support materials were available||10/10||6/10||8/10|
|6. The price to performance ratio was good|
Analog Discovery 2 Explanations
M2: Points deducted due to unclear documentation regarding hardware buffer sizes.
M1, M6: Points deducted because logic analyzer and oscilloscope cannot be displayed at the same time. An MSO is dramatically less useful if the analog and digital traces cannot be viewed simultaneously. UPDATE: Analog and protocol traces can be triggered and displayed simultaneously in the "oscilloscope" pane if the software is properly configured
Lab View Home Explanations
M1: Points deducted due to difficulty debugging VIs (cryptic error messages), lack of OSX support, incredibly difficult software install, and extended period of unusability
M3: Points deducted due to uneven quality of example projects, lack of OSX support, and incredibly difficult software install
M4: Points deducted due to incredibly difficult software install process and steep learning curve
M5: Points deducted due to missing "Modular Code" LabVIEW Basics video and difficulty finding help on NI website when built-in context help was insufficient
The Analog Discovery 2 arrived packaged inside a plastic project box large enough to hold the unit and all of its accessories. The box is also large enough to contain a full-size prototyping breadboard in addition to the kit contents, which is a nice touch given the target audience.
The Waveforms software was relatively easy to download and install, though the process did require submitting an email address. All the various functions of the instrument are accessed through the "Welcome" page of the Waveforms software. Each instrument opens in its own tab, and you can run multiple instruments simultaneously, as long as they are not using the same hardware resources. The instruments are pretty full-featured; most of the more advanced features are in menus or hidden from view in the default configuration. Again, this seems like a reasonable choice. While my original intent was to spend only a little time with Waveforms before moving on to LabView, the level of functionality and depth of available options in the first few tools I looked at piqued my curiosity, and I ended up exploring a lot more than I originally intended. I didn't read any of the documentation before getting started; a few of the buttons and functions were a bit hard to find at first, but once I understood the recurring UI design concepts, I found the software intuitive and easy to work with. Here are some screenshots of the Waveforms software in action.
The DVM, which reads within less than 1% of my HP 34401A:
The waveform generator, configured for differential output:
The oscilloscope, connected to the signal generator:
The FFT function of the oscilloscope:
The logic analyzer, with protocol decode/triggering:
The spectrum analyzer, showing the overall system noise floor across the audio band (including generator output noise and analog input noise - an impressive worst-case 23 uVrms at 20 Hz):
The network analyzer, measuring a surprisingly crummy passive 800 Hz LPF. You can also see the reference trace (Channel 1) showing the system resolution bandwidth with the included flywires:
Based on the behavior of the LPF in the previous figure, it seems that the capacitor may be self-resonating and beginning to go inductive somewhere around 100 kHz or so. I used the impedance analyzer to measure the 1 uF capacitor used in the LPF. Unsurprisingly, the capacitance value began to fall off above 1 kHz, and is down to 0.6 uF at 100 kHz. I took one broad-band measurement and two narrower measurements using three different reference resistor values:
The Waveforms software seems like powerful and flexible package. Many of the included instruments have utility for audio measurement use as-is; it will be a challenge to build a better tool in LabView!
My adventure with LabVIEW could hardly have started worse. First, there was no OSX version of LabVIEW Home 2014 available (LabVIEW 2018 apparently is available for OSX), so I was forced to install in a Parallels Win10 virtual machine. I also had to install the Windows version of Waveforms in order to get the libraries needed for LabVIEW to communicate with the Analog Discovery 2 hardware. While the Windows install of Waveforms required a restart (unlike the OSX version), it was relatively painless. The LabVIEW install was a whole different story; it required a number of separate components and numerous restarts. The whole process took about half a day to complete. Unfortunately, the LabVIEW software initially did not communicate reliably with the Analog Discovery 2 hardware. Using two of the built-in example VIs, I spent about a week and a half trying in vain to get the system to work consistently and reliably. At the end of May, an update patch was released that cleared up all the communication issues.
An audio analyzer instrument is fundamentally two main parts: a signal generator and a signal analyzer. I decided to start by building a simple signal generator. I watched all the available LabVIEW Basics video tutorials, and found that they contained most of the information I needed to get started (frustratingly, the video on making modular code is missing from the website.) It took a few tries to get everything working properly, but I was eventually able to build a simple signal generator.
After some more tinkering, I've managed to make a much better signal generator; it allows parameters to be adjusted on the fly while the generator is running, and I added an important option for audio analysis: random (uncorrelated) white noise.
Unfortunately, the noise generator VI doesn't seem to work properly; I get a cryptic and unhelpful error ("NI System Configuration: (Hex 0x80004005) Miscellaneous operation failure.") from the arbitrary waveform configuration block. Tracing the execution through the noise VI using Highlight Execution just shows the same error occurring at the final summation step. I've searched the NI website and the Internet generally to no avail. I figured I'd start working on the analyzer portion of the instrument, so I made another VI based on the improved generator.
Perhaps unsurprisingly, my new instrument also does not work properly. Whichever section I start second (generator or analyzer) will give the same error from the initialization block: "NI System Configuration: (Hex 0x80004005) Miscellaneous operation failure. Function call timeout occurred." At this point I've exhausted all the help available from the built-in context menus and searching the NI website. My next step will be to open one of the example projects and examine it for clues on how to use the hardware effectively.
After examining several of the examples and doing some more research, I've been able to get the basic time-domain generator/analyzer instrument running, though there are still some issues. The acquisition length does not seem to be working properly, though I can't tell if it's a setting or display issue, and I've switched to Gaussian distribution white noise because I haven't been able to get the uniform white noise VI to work. The repeat time is also incredibly slow, somewhere around fourteen seconds between triggers.
In the interest of trying to build something interesting by the end of the RoadTest period, I've decided to move on to adding the necessary frequency-domain processing for dual-channel FFT measurements, and then try to fix the remaining issues afterwards. The basic principle behind a dual-channel FFT measurement is that the transfer function of a system can be accurately estimated by dividing the frequency-domain output response by the frequency-domain input response. The size of the FFTs is very important, because the FFT 'bins' are linearly spaced, which means that the low-frequency resolution of the FFT depends heavily on the size. In order to get resolution of about 1 Hz across an input sampled at 48 kHz, at least 24,000 bins are needed. Because FFT computations are much less processor-intensive if the size is chosen as a power of 2, the nearest power-of-two value is selected; in this example: 32,768 bins (which is often shortened to simply '32k' in audio measurement world.)
The choice of FFT sizes neatly constrains the settings of the instrument; once a sampling rate is selected, the FFT size is implied by the desired resolution, and in turn the length of the test stimulus (in the case of pseudorandom patterns like MLS) is implied by the FFT size.
After digging deep into the footnotes of the Analog Discovery 2 data sheet, I discovered that the acquisition length issue was related to hardware buffer limitations. The issues with the noise VI were also related to the limitations of the hardware buffers. Addressing these issues has allowed me to make a very simple, relatively low-res (4k) dual-channel FFT analyzer. There's a lot of noise in the transfer function estimate, which may be due to the way averaging is handled in the current implementation (in each individual FFT, not in the dual-channel estimates.)
The analyzer currently uses an internal reference (from the noise generator.) I plan to add an option to use one of the oscilloscope channels as the reference to see if that changes the noise in the estimate at all before tackling the (much more difficult) issue of the averaging. Ultimately I'd like to construct the phase part of the TF estimate and work backwards to generate the system impulse response in time domain, but I think I need a much cleaner TF estimate for that approach to return useable data.
I went and read some old technical documents I had on dual-channel FFT analysis, and decided to try a different approach using autocorrelation and cross-correlation of the channels to generate the frequency estimate. I've made some progress, but it's not functioning properly at the moment. I suspect that the built-in VIs I'm using to calculate autocorrelation and cross-correlation may be the culprit, so my plan is to build the algorithms I want and see if anything changes.
Unfortunately, the RoadTest period has ended, but I will continue to update my progress on the project in this blog: Analog Discovery 2 LabVIEW Audio Analyzer
The Analog Discovery 2 is a capable multifunction instrument that achieves its expansive feature set by sacrificing performance in each individual feature. Input bandwidth is limited, hardware buffer sizes are limited, input sensitivity is limited, etc. With all that being said, it's a fantastic instrument, and a great value for the money. I finished engineering school a year and a half ago, and I would have really benefitted from having a device like the AD2 to experiment with while in school. It costs less than most of my textbooks did, and has a lot more to teach the user. I am very happy to add this tool to my workbench. One thing I found to be a little perplexing is the cost/accessories situation: currently, on the Digilent web store, both the AD2 and the AD2 Pro Bundle (which includes the BNC breakout board, two oscilloscope probes, and six test clips) are listed at the same sale price. Given that state of affairs, it's unclear why anyone would choose the option with fewer accessories.
LabVIEW 2014 Home is a powerful software package with a brutal installation process and a steep learning curve that is hamstrung by its lack of multi-OS support. Much of the learning curve difficulty in my case came from the minor programming paradigm differences. Variables are used rarely, as they require their own VI; instead, repeated status queries are made. There's no overarching framework for order of execution, scoping, state machine functionality, etc.; instead, the error cluster inputs and outputs of various VIs are used to control order of execution. There are no 'if' statements, only 'case' statements. The concept of using functions for repeated tasks is clearly intended to be implemented using VIs, but the LabVIEW Basics video on how to do this (including making the necessary I/O) is missing, and I haven't yet had the time to run down the answer by searching. The demo projects provided for the AD2 were of uneven quality and poorly documented; this limited their usefulness as a learning resource. The 'help' sections on the NI website only go back to LabVIEW 2015, which basically means you're stuck with the built-in context help and web searching. This has the effect of making it seem as though NI doesn't actually care about the LabVIEW Home product or user base, and has only grudgingly released the program to continue to generate revenue from and old code base. This is not a great way to get users excited about the newer (and more expensive) product offerings.
Analog Discovery 2:
LabVIEW Home 2014: