Major Software Updates! #54
drandyhaas
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
With the Haasoscope Pro basically working fine, I've spent the past month expanding the software functionality, a LOT. There's also been a couple firmware functionality additions.
This is now a pretty full-fledged oscilloscope program! I've moved to a github release structure, and the latest release for your OS can be found here.
(As of today, this is release 31.07-beta3.)
I made a YouTube video demonstrating the main features below.
First of all, I added lots of new power checking and data integrity features, to make sure the hardware is in a good state before showing waveforms.
(Dave Jones at EEVBlog really went to town pointing out the need for these!)
Now, if you plug in the unit wrong, like via a low-power USB port on your old computer, it won't freak out.
It will gracefully report that it doesn't have enough power, and then tell you to fix the issue and restart.
The software checks various functionality for sanity upon startup. Can we read back the chip ID's from the ADC, amplifiers, etc.? Can we lock the PLL and FPGA clocks? Can we calibrate the PLL and get a clean data stream from the ADC with no errors? Can the USB provide enough current to the board without the voltage dropping too much?
And if things go wrong while the board is running, like you remove the external power, or make the USB cable flakey somehow, it will detect those errors and deal gracefully.
The PLL is attempted to be reset on bad clock/strobe detection from the ADC to FPGA. Or, data checksum errors will throw an error and prevent further data taking.
Plus, if any of these checks fail, the Update firmware menu item will be disabled, so you won't risk bricking your board!
There's been so many features added, I can't go into detail on all of them here, but here are the highlights.
Some people (well, one actually) had an issue where the DPI settings for different displays would confuse Qt and the GUI would look weird. Now, high DPI monitor settings are supported.
The voltage scale did not correctly account for 50 Ohm input impedance, which is basically 1/2 that of 1M Ohm impedance, given that we start with 50 Ohm termination on the board. Now it's right.
A low pass filter option is available now, so you can apply 20 MHz (or 1, 5, 10, 100 MHz, whatever) to your signal. This is done in software, but it's amazingly fast. (Just ~1 line of scipy code!)
An new axis on the right shows the voltage scale for the currently selected channel.
You can now drag the vertical trigger time position line when zoomed in, and the position is synced with the horizontal time slider.
There's now a "persist" freature, where up to the past 16 waveforms are drawn to the screen, with a transparency that makes them "fade out" over time, which is adjustable.
There's also an option to draw the average of those persisting waveforms, or just the average and not the other waveforms, which is then very stable and noise-free.
An extra trigger stabilizer that runs on upsampled (sin x / x interpolated) data has been added.
This makes the waveforms ultra stable even after postprocessing has been applied and has shifted their times around a bit.
Not a feature per se, but a major update: the code has been totally refactored into many subclasses.
This has been the key to being able to rapdily add to the software!
There's now an XY plot window, where you can select any two channels (even Math channels, discussed below) to plot vs. one another.
For oversampling with two boards, there's now an edge-based autocalibration, which also averages over multiple events (100 by default) for great accuracy on the timing corrections, and automatic DC offset and amplitude corrections for oversampling on the slave board.
In fact, if the menu option "Auto oversample alignment and interleave" is checked (which it is by default), all you have to do to oversample and interleave the samples for two Haasoscope Pro's is press the "Oversampling" checkbox.
All calibrations are automatically performed, and the samples are interleaved, giving you one magical channel with twice the sample rate!
There's now a measurement table for Mean, RMS, Risetime, etc., with units, and rolling Avg and RMS columns, per channel. Plus you can click on a measurement to bring up a little measurements histogram window, to see how the last 100 measurements were distributed.
Two-channel mode is now per-board, meaning you can have one board be in two-channel mode (at 1.6 GS/s per channel), and another in single-channel mode (at 3.2 GS/s), all working together seamlessly.
Time scale/div is now displayed, finally!
There's a new Rise/Fall Time measurement algorithm, based on edge detection. The previous algorithm, which remains as an option, performs a fit to a rising edge shape with 3 pieces - a bottom, a slope, and a top. But it requires a solid bottom and top area in order to fit the slope correctly. This fails for fast signals that are constantly changing, like a 1 GHz sine wave. The new algorithm only fits the edge, which is first found by an algorithm that looks for places where the signal crosses the trigger threshold near the trigger time. With either algorithm, the edge or the original piecewise fit, the resulting fit results can be shown on the signal so you have confidence in what the fit represents. The edge method is now the default, but you can switch in the Measurements menu.
There's a new Settings Management System that lets you save and then load all the settings and view options currently set on the GUI. It's in the File menu, of course. So once you have your waveforms being displayed and measured the way you want, you can save the settings and get back to that same state at a later time, even after restarting the program or on a different computer or Haasoscope Pro.
There are now Math Channels, which are virtual waveforms calculated from operations on either one or two data channels. For instance, Ch 0 - Ch 1, for a differential measurement. You can also use virtual math channels themselves as inputs to other math channels, to build up more complicated operations, and even define custom math operations using any numPy expression! Reference waveforms from channels that have been taken can also be used as inputs. This is all done in the new window from View... Math channels. They can also be used for measurements - just select the math channel in the math channels window, click the "Use for measurements" checkbox, and then add the measurement via the Measurements menu. And they can be plotted in the XY view window, or used for FFT display too!
Math operations for low, high, band, notch, and time shift filters have been added, with adjustable parameters for filter type, order, cutoff frequencies, etc.
A new Cursor System has been added, letting you show and measure positions and delta positions on the screen manually, with a new Cursors menu. As you drag the cursor lines, they show the time and voltage info on the plot (both in divisions and in voltage for the currently selected channel). The time info can also be switched from absolute to relative to the trigger time. And dragging cursors horizontally can be made to snap to the currently selected channel's waveform vertically, if enabled in the cursors menu. The current trigger threshold is also shown in a separate display on the bottom of the plot, both in divisions and in absolute voltage for the currently selected channel, if enabled in the view menu.
With firmware v30+ comes new trigger delay and holdoff functionality, adjustable per-board via the GUI. This let's you fine-tune when the trigger fires, to only trigger on the start of a data packet, for instance. And you can use the trigger delay to only start aquiring data long after the trigger conditions are met, when your signal of interest is present.
Peak detection has been added (View... Peak detect), which will draw the Max and Min outlines of your signal (in a dotted line).
There's a hardware thread per-board, for better parallelization with multi-board setups.
Channels can be given custom names, which then show up on the plot as a legend. Super useful for keeping track of what color is what when you have lots of channels.
In firmware v31 and above, a PWM control has been added for the fan, with temperature-based speeds. This will let your Haasoscope Pro be significantly quieter! Fan speeds automatically adjust at 30°C, 40°C, and 50°C thresholds.
A time skew per (real, not math) channel adjustment has been added, letting the user compensate in time for probe delay variations.
During firmware update/verify, there's now progress bars in the GUI!
A pulse trigger stabilizer option has been added that let's you trigger on a dynamic threshold halfway between the min and max of a pulse height, for added accuracy for signals with varying amplitudes.
You can now add "dummy scopes" which simulate actual scope data by sending data over TCP sockets, instead of USB. These allow for testing of new wafveforms and GUI features, etc.
Line width now defaults to 2, for better visibility, default line colors are improved, and you can create custom colors for lines.
A history window let's you "replay" any of the last 100 events to the screen, save/load the events to/from file, etc.!
All these additions are now in the "main" branch in github, as well as the latest releases. I hope you'll try them out soon, and I look forward to your continuing feedback. For bugs, create an issue in github, or for more general questions or discussions, start a thread here.
Beta Was this translation helpful? Give feedback.
All reactions