Another spectrum analyzer? Nope.
This one, in contrary to others, boasts
- Novel method of synchronization (quite robust, works with noisy and non-ideal signal souces, not bound to "single sine" function, doesn't need external trigger source (better than industry leading solutions). Sees signals 20dB under the noise floor within seconds, and works with drifting sources too (countrary to long FFTs). - NICE!
- Have i mentioned "synchro-"... ? Yes, available in both time and frequency domain (real vector averaging that actually work!).
- Extremely long FFTs to look straight thru the noise floor (16M samples anyone?)
- Phase Noise measurements
- Industry-leading visualizations (heat, phosphor)
- Touch and feel of a hardware analyzer (big clear controls you can use with touchscreen). Hence the possibility to run on windows tablet (needs highly optimized code to crunch all those numbers on my side on a weak Atom CPU - i've tested it on X5-8350 and it runs ok. Faster than win10 task manager :) )
- Markers that make sense (auto, manual, with variable integration bandwidth!)
- Advanced measurement processes and techniques
- Real world signal generator, incorporating not just your typical noise and sine functions, but parametrical distortion and phase noise!
Get SA01 Spectrum Analyzer
Update 8 (09.08.2019):
- Screenshots! With all the essential data to understand how the measurement was made (averaging types, FFT length, Fs et cetera cetera), Sweet! :)
- IMD measurements, up to 3 carriers and 5th order products
- Accurate HD measurements: power and peak ratios, as well as separate THD for noise-only and spurs-only!
- Accurate RMS power level measurement of the incoming signal prior to FFT
- Extended accuracy of harmonics close to noise floor (yes, no more struggling, 6dB signal above noise floor is actually has the same level as noise floor). Well, you could just crank one of the sync-averaging modes, or go for 2M+ FFTs... But hey, you could use all of these together! :)
By the way, "reddish" flavoured spikes are auto-detected "spurs", whilst the green trace is "noise".
Update 7: (27.07.2019):
- Window function compensations for signal and noise
- Noise floor separation from measured data, leading to
-- Noise de-embedding of measured data, much better precision of measurements close to noise floor.
-- Separate compensation paths for signals and noise (noise should be compensated for ENBW). Switching between windowing functions doesn't change signal level and
-- Additional component for THD calculations - now you can see carrier, harmonics, spurs and flat noise separately, thus take HD + Noise and ignore spurs. Or measure the spurs alone as if they are aliased signal. Or whatever.
- Carrier-relative measurement of harmonic's phase
. Works in presence of scalloping errors, which is daamn nice thing (i'm unaware of any product being able to measure this).
- Noise generator now has Gaussian distribution.
Update 6: (09.07.2019):
Woohoo, the box of magic arrived!
In the box:
CYUSB3KIT - USB 3.0 interface
LTC2217 - 16BIT 105MSPS 100SFDR 81SNR ADC
LTC2207 - 16BIT 105MSPS 100SFDR 78SNR ADC with LTC6404-4 frontend, not bad
LTC2378-18 - 18BIT 1MSPS 124THD 102SNR ADC, with frontend (a bit low-spec for declared ADC's 124dB THD)
LTC6954-3 - clock buffer/fanout with programmable divider 1/N, N=1..64
LMK61PD0A2 - neat little programmable oscillator (fixed frequencies :( ) - quite low phase noise, in the ballpark of crysteks
Raspberry Pi 3 - don't ask me why, it's a secret :)
Update 5: (30.06.2019):
Weirdly, it works faster and eats less CPU. Web UI! (in nearly 60 FPS, Analyzer>WebSocket>Canvas, niiiiice)
and new window functions:
Update 4 (23.06.2019):
- Finally, dropped the WPF's bitmap image rendering as it caused too much CPU load (blank static image, rendered at 60fps in absolutely new empty project caused 10-20% CPU usage alone/ No matter which "kind" of image i've tried, and i've tried WritableBitmap, WICBitmap, InteropBitmap and less performant ones too. WPF is not intended for such things as media rendering.). So, i wrapped the "Image" and "D3D11Image" together, and am rendering the bitmap into DX11 texture and then pass it DX11>DX10>DX9 thru interops. Horrible, bulky code. Zero CPU usage.
- Dropped the TextBlock for overlay text, again, another 8% of CPU saved - and i'm talking about i7 4790k CPU! Now rendering it directly into bitmap.
- Overhaul of buffering and data path. So far i've got 8M FFT at 11FPS, which translates to almost 100MHz sampling rate. With 50% of CPU load :)
- Hence, if i am able to do 100MSPS at software side, why wouldn't i use a more appropriate hardware at sampling side? Yep, finally the USB 3.0 is very accessible with Cypress solutions, and data rate of 200-400MByte/s is achievable... It's a matter of laziness to connect it to some fast high-resolution ADC and call it a day. So much possibilities! :) Here i come/
- Ah, i haven't mentioned, it runs on Atom x5-8300, 65k FFT, smoothly.
Update 3 (16.06.2019):
- V0 of signal synthesis thru inverse-FFT - a TON of possibilities - coherent sampling, sweeps, pseudorandom noise sequences, simultaneous full spectra measurements including THD, IMD, response, noise power bandwidth and noise floor. In one single pass of FFT. Amazing! (not yet, i've got a sine wave working, but it's a start!)
- Numpad! - with a touchy slider! (remember these on iRiver/Creative mp3 players?)
Update 2 (14.06.2019):
- Overall UI cleanups and rearrangements
- Now with cool markers that overlap less
- New averaging method, makes it possible to have normalized spectra to RBW, enjoy the MAX() noise-digging property, AND be able to measure non-stable signals too!
New layout and markers:
Update 1 (12.06.2019):