• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

Measurements: "ESS Hump" revisited (Khadas Tone Board V1.3)

KSTR

Major Contributor
Joined
Sep 6, 2018
Messages
2,690
Likes
6,013
Location
Berlin, Germany
Part 1 : Introduction

By now, we all know what the infamous "ESS Hump" looks like in the typical IMD vs. Level plot, as shown for example in Amir's original review of the WesionTEK Khadas Tone Board DAC (KTB). But it does also show up in simple THD+N vs. Level plots.

The DAC chip used is a ES9038Q2M.

index.php



I now have a KTB on loan from forum member in order to find out more about that Hump (and maybe even fix it).

Test Setup:
  • PC is connected to an RME ADI-2 Pro which serves as the SPDIF source for the KTB and records the Distortion Spectra and Residual Waveform (what's left when the fundamental signal is notched out. The RME is operated fully isolated (USB and supply).
  • KTB output goes to Audio Precision SYS-2322. KTB is supplied by a 5V cell-phone charger connected to the USB-C input of the board.
  • The AP does the Signal Autoranging and the Fundamental Notch Filter as well as the make-up gain after the notch filter, the output of which then goes back to an ADC channel for capture/analysis.
  • The AP also supplies an auto-ranging Signal Monitor signal to the other ADC channel, used for monitoring.
  • REW is used to analyse the distortion spectra and the RMS noise floor.
  • A helper tool for time-domain block-averaging and Adobe Audition is used to display the distortion residual waveform in raw and averaged (high resolution) representations.
  • Test Frequency is 240Hz, an integer fraction of the 192kHz system sample rate (needed for the block-averaging. The fundamental has a period of exactly 400 Samples), and is is not conflicting with AC Mains frequencies.
  • REW uses a 1Meg-point FFT with 8 averages to display the distortion spectra.
Notes: The measured phenomena do neither depend on sample rate nor on test frequency. SPDIF vs. USB signal feed also make no difference.


1642705748578.png
 
OP
KSTR

KSTR

Major Contributor
Joined
Sep 6, 2018
Messages
2,690
Likes
6,013
Location
Berlin, Germany
Part 2 : 1kHz Distortion Spectra vs. Level

For a reference, this is the 0dBFS spectrum as measured by Amir:
1642707187032.png

Besides some prominent H2 and H3 and some lesser H4 and H5, we see a lot of "gras" above 6kHz which already is suspicious... a DAC shall not have such spurious frequencies when playing a 1kHz sine. We get back to this later...


See now the series of distortion spectra, stepping the generator level from -40dBFS to 0dBFS in 5dB steps, for an examination of how the distortion develops.

Some notes about the graphs:
  • Units actually dBc (dB below fundamental) always, not dBV (a REW quirk).
  • The horizontal cursor lines which is the RMS noise floor level (22Hz...22kHz bandwidth). This means a single sine touching the line would have the same RMS level. Once distortions components are more than ~10dB below the line they start to be buried in the noise.
  • The THD and THD+N (90kHz bandwidth) values can be read from the box inserts. Comparing the THD vs. the cursor RMS value tells us whether noise is dominating or distortion is dominating the total THD+N value. When the THD is stronger than the noise we have the hump.
-40dBFS:
FD -40dBFS.gif

Only some H3, below the RMS noise floor. Nothing special (other DACs do better) but basically OK.

-35dBFS:
FD -35dBFS.gif

H3 is now above noise floor, and higher odd-order components develop. That's the level where the hump starts to emerge.

-30dBFS:
FD -30dBFS.gif

H3 and H5 above noise floor, and more higher odd-order components start to appear, up to 13th.

-25dBFS:
FD -25dBFS.gif

Not something starts to happe, the weight on the harmonics present shifts to upper frequencies, with the 7th now being largest and together with the 9th above the noise floor.

-20dBFS:
FD -20dBFS.gif

... even more upper odd-order harmonics... all hovering around the noise floor and their sum sticking out signficantly, by 10dB (the Hump size).

-15dBFS:
FD -15dBFS.gif

The picture continues as before. The spray of harmonics is definitely not nice.

-10dBFS:
FD -10dBFS.gif

Even more harmonics at strong levels, more than 30 in total by now.

-5dBFS:
FD -05dBFS.gif

The spray extends even further but all components are a bit lower vs RMS noise, hump starts to decrease (6dB here).

0dBFS:
FD -00dBFS.gif

Finally, 2nd and 3rd are dominating,THD+N decreasing a bit vs the noise floor. But look at that forest of harmonics up to 40kHz (and compare to Amir's plot shown above, matching is quite good -- also for THD+N level).

Summary:
  • The KTB exhibits the ESS hump in the classic THD+N vs. Level metric as well as it does in the IMD plot, they both will look the same, basically (others have found that, too).
  • With rising levels, more and more higher harmonics are produced, all of which are of odd-order.
 

Pdxwayne

Major Contributor
Joined
Sep 15, 2020
Messages
3,219
Likes
1,172
Part 2 : 1kHz Distortion Spectra vs. Level

For a reference, this is the 0dBFS spectrum as measured by Amir:
View attachment 180556
Besides some prominent H2 and H3 and some lesser H4 and H5, we see a lot of "gras" above 6kHz which already is suspicious... a DAC shall not have such spurious frequencies when playing a 1kHz sine. We get back to this later...


See now the series of distortion spectra, stepping the generator level from -40dBFS to 0dBFS in 5dB steps, for an examination of how the distortion develops.

Some notes about the graphs:
  • Units actually dBc (dB below fundamental) always, not dBV (a REW quirk).
  • The horizontal cursor lines which is the RMS noise floor level (22Hz...22kHz bandwidth). This means a single sine touching the line would have the same RMS level. Once distortions components are more than ~10dB below the line they start to be buried in the noise.
  • The THD and THD+N (90kHz bandwidth) values can be read from the box inserts. Comparing the THD vs. the cursor RMS value tells us whether noise is dominating or distortion is dominating the total THD+N value. When the THD is stronger than the noise we have the hump.
-40dBFS:
View attachment 180557
Only some H3, below the RMS noise floor. Nothing special (other DACs do better) but basically OK.

-35dBFS:
View attachment 180559
H3 is now above noise floor, and higher odd-order components develop. That's the level where the hump starts to emerge.

-30dBFS:
View attachment 180560
H3 and H5 above noise floor, and more higher odd-order components start to appear, up to 13th.

-25dBFS:
View attachment 180561
Not something starts to happe, the weight on the harmonics present shifts to upper frequencies, with the 7th now being largest and together with the 9th above the noise floor.

-20dBFS:
View attachment 180562
... even more upper odd-order harmonics... all hovering around the noise floor and their sum sticking out signficantly, by 10dB (the Hump size).

-15dBFS:
View attachment 180563
The picture continues as before. The spray of harmonics is definitely not nice.

-10dBFS:
View attachment 180564
Even more harmonics at strong levels, more than 30 in total by now.

-5dBFS:
View attachment 180565
The spray extends even further but all components are a bit lower vs RMS noise, hump starts to decrease (6dB here).

0dBFS:
View attachment 180567
Finally, 2nd and 3rd are dominating,THD+N decreasing a bit vs the noise floor. But look at that forest of harmonics up to 40kHz (and compare to Amir's plot shown above, matching is quite good -- also for THD+N level).

Summary:
  • The KTB exhibits the ESS hump in the classic THD+N vs. Level metric as well as it does in the IMD plot, they both will look the same, basically (others have found that, too).
  • With rising levels, more and more higher harmonics are produced, all of which are of odd-order.
Any of these audible?

Thanks!
 
OP
KSTR

KSTR

Major Contributor
Joined
Sep 6, 2018
Messages
2,690
Likes
6,013
Location
Berlin, Germany
Part 3 : 1kHz Distortion Residual Waveform vs. Level

While spectra tell us something about the level of harmonics but they do not tell what the difference to the true signal actually looks like in the time domain, the actual waveform. This is covered in the following series of plots.

In the top pane of the plots, we see (a section of) the raw residual. Anything else that static noise is an unwanted signal but with lots of noise it is hard to identify that unwanted signal.

Therefore, I've used so-called Time-Domain Block-Averaging (Synchronuous Averaging). This removes all the static random circuit noise which is not correlated to the signal, that is, everthing that is neither the fundamental nor any of the possible harmonics. Block count was 15,000 which yields at least 40dB of noise reduction which makes the residual visible in all its beauty.
This is the waveform in the bottom pane. Overlaid, for reference is the fundamental.

Again, red cursor lines mark the equivalent level of the zero-signal noise floor. A sine that has 1.41x the peak level has the same RMS energy.

-40dBFS:
TD -40dBFS.png

We can see the 3rd harmonic pretty cleary and that's about it, basically. Quite a bit below the noise floor, as seen in the corresponding spectrum. In the raw waveform it is rather hard to spot the H3 pattern and the effective noise reduction the bottom plot is very apparent.


-35dBFS:
TD -35dBFS.png

Now we have a slightly deformed H3 (comes from the H5 contribution) and we are a bit above the noise floor. Nothing special otherwise, a resonable residual.

-30dBFS:
TD -30dBFS.png

Similar to -35dB but higher levels and higher H5 content yet still basically an OK shape.


-25dBFS:
TD -25dBFS.png

OK, now we start to see a strange wiggling higher frequency pattern with some low frequency hot spots, and we are significantly above the noise. The pattern is even visible in the raw waveform, so we are right on the hump here.


-20dBFS:
TD -20dBFS.png

The above pattern continues... now the high-frequency content is higher in frequency. Quite weird, actually. Never saw this before.


-15dBFS:
TD -15dBFS.png

Same basic picture, with the HF content even higher in frequency. Looking at this residual is not exactly intuitive that this corresponds to the shown -15dBFS spectrum. It looks almost like the residual pattern corresponds to the slope of the fundamental, the steeper the slope the higher the frequency (note that the frequency is highest at the fundamental's zero crossings and the zero crossing of the residual oscillations also coincides with that zero corssing).


-10dBFS:
TD -10dBFS.png

The weird frequency modulation pattern manifests itself more and more but a new effect starts to appear: At the peaks of the fundamental the residual starts to "fold over", creating additional distortion.


-5dBFS:
TD -05dBFS.png

The story continues, now we really have alot of HF content and quite some break at the peaks. Also we start to see the simple H2/H3 curvature.


0dBFS:
TD -00dBFS.png

And finally, at fullscale we see that the residual is basically an underlying frequency sweep, up (to 40kHz!) and down, interrupted by those strange fold-over break (which always have the same size even for different levels as shown before, going from sample 180 to 220 and from 580 to 620, roughly). This is really puzzling.

Bottom line:
  • With the Khadas tone Board V1.3 in its stock state, there really is a nasty and unique distortion characteristic strongly depending on level like I've never seen before. The pattern of these "sweeps" is really unique.
  • Most of this happens at or above the analog noise floor at all signal levels from -40dBFS up so there a chances this could be audible (the infamous "ESS glare"?), it's a kind of rather drastic form of signal-dependant noise modulation, especially at lower signal levels where masking is accordingly less effective. With music signal this distortion characteristic produces quite a hell of IMD components.
 
OP
KSTR

KSTR

Major Contributor
Joined
Sep 6, 2018
Messages
2,690
Likes
6,013
Location
Berlin, Germany
Could be perhaps some ASRC artefacts?
Well, I don't know (for now). The ESS always does ASRC in the mode probably used here (both on SPDIF and I2S, as with USB I saw no change)?
I'm not conviced an ASRC would introduce such a strange but systematic error pattern (and regardless of input sample rate).
 

phofman

Senior Member
Joined
Apr 13, 2021
Messages
489
Likes
319
IMO ASRC has the potential of a periodic patter because of the fractional ratio of input and output frequencies which may slightly change periodically too, the DPLL tuning in, ...
 
OP
KSTR

KSTR

Major Contributor
Joined
Sep 6, 2018
Messages
2,690
Likes
6,013
Location
Berlin, Germany
IMO ASRC has the potential of a periodic patter because of the fractional ratio of input and output frequencies which may slightly change periodically too, the DPLL tuning in, ...
Well, the only way to find out would be a compare to an implementation of that chip with ASRC disabled (it's enabled by default).
1642713636901.png

1642713708617.png
 

mansr

Major Contributor
Joined
Oct 5, 2018
Messages
4,685
Likes
10,700
Location
Hampshire
Could be perhaps some ASRC artefacts?
That was my thought as well. The ASRC is also something that sets ESS apart from most (all?) other high performance DAC chips. If the ASRC is to blame, perhaps nudging the input sample rate slightly would change pattern.

I suppose it could also be a quirk of their DWA implementation.
 

chris719

Senior Member
Joined
Mar 22, 2019
Messages
373
Likes
423
I used to have an old ESS ASRC evaluation board that Dustin F. gave me many years ago. I used it but never measured anything out of it. Sounded fine. This is the ASRC in never-sold IC form outside of the DAC. If I find it, I could do some tests.
 

chris719

Senior Member
Joined
Mar 22, 2019
Messages
373
Likes
423
Well, I don't know (for now). The ESS always does ASRC in the mode probably used here (both on SPDIF and I2S, as with USB I saw no change)?
I'm not conviced an ASRC would introduce such a strange but systematic error pattern (and regardless of input sample rate).

I believe MC mentioned he saw this hump in the ADC output as well. If it's indeed the same phenomenon it's unlikely to be the ASRC since the ADC doesn't appear to use one.
 

BoredErica

Addicted to Fun and Learning
Joined
Jan 15, 2019
Messages
629
Likes
899
Location
USA
The tone board seems to have a strong case of the issue looking at IMD graph you posted. What about something like Motu Ultralite mk5 where the hump exists but is much smaller?
index.php
I am assuming smaller hump = less problems.
 
OP
KSTR

KSTR

Major Contributor
Joined
Sep 6, 2018
Messages
2,690
Likes
6,013
Location
Berlin, Germany
The tone board seems to have a strong case of the issue looking at IMD graph you posted. What about something like Motu Ultralite mk5 where the hump exists but is much smaller?
index.php
I am assuming smaller hump = less problems.
No, the hump is only microscopically different here. I'm pretty sure the spectra and the residual patterns will be exactly the same compared to what I saw here.
 
OP
KSTR

KSTR

Major Contributor
Joined
Sep 6, 2018
Messages
2,690
Likes
6,013
Location
Berlin, Germany
Part 4 : Spectra and Distortion Residual Waveform vs. Sample Rate and Frequency


a) 240Hz @ -10dBFS, 192kHz vs. 192.2kHz
FD -10dBFS(240Hz@192k vs 240Hz@192.2k).gif

No change other than insignificantly above 15kHz (probably noise-related).

Time domain, 192kHz:
TD -10dBFS(240Hz@192k).gif


192.2kHz:
TD -10dBFS(240Hz@192.2k).gif

Minutely the same.


b) 240Hz vs. 311Hz @192kHz:
FD -10dBFS(192k, 240Hz vs 311Hz).gif

The harmonic level pattern is exactly the same to a fraction of a dB, just shifted along the frequency axis.

Time domain 240Hz:
TD -10dBFS(240Hz@192k).gif


Time Domain 320Hz (used to make the averaging work):
TD -10dBFS(320Hz@192k).gif

Again an exact copy of the residual, no depenency on test frequency.


c) 240Hz @ 192kHz vs 110.25Hz @ 88.2kHz (same period length in sample counts):
FD -10dBFS(240Hz@192k vs 110.25Hz@88.2k).gif

Again, minutely the same pattern merely shifted along the frequency axis.

Time Domain 240Hz @ 192kHz:
TD -10dBFS(240Hz@192k).gif


Time Domain 110.25Hz @ 88.2kHz:
TD -10dBFS(110.25Hz@88.2k).gif

Not unexpectly, we get the exact same waveform again.

-------------

IMO ASRC has the potential of a periodic patter because of the fractional ratio of input and output frequencies which may slightly change periodically too, the DPLL tuning in, ...
That was my thought as well. The ASRC is also something that sets ESS apart from most (all?) other high performance DAC chips. If the ASRC is to blame, perhaps nudging the input sample rate slightly would change pattern.

I suppose it could also be a quirk of their DWA implementation.
I believe MC mentioned he saw this hump in the ADC output as well. If it's indeed the same phenomenon it's unlikely to be the ASRC since the ADC doesn't appear to use one.
From what I saw my take would be the characteristics do neither depend on signal frequency nor on sample rate, only on signal level. The ASRC seems to be out of the picture.

DWA birdies... hhm, I'm not convinced, at least from what I know the DWA artifacts of the AKM's (4490 and 4493) look like. Strongly frequency-dependant and very low in level (buried in the noise), quite different to what we see here. But of course I can't exlude DWA effects as the root cause.

------------

Another hint that it is likely not the DWA or the ASRC:
Residual Waveform Pattern vs Digital DC offset. Using 240Hz @ 192kHz -15dBFS, zero DC vs. -30dB (3%) positive DC:

No DC:
FD -15dBFS.gif

TD -15dBFS.png


With 3% DC offset (positive):
FD -15dBFS(with DC@-30dBFS).gif

TD -15dBFS(with DC@-30dBFS).png


As we can see, the (tiny!!) DC offset introduces even harmonics but the characterstic high-frequeny "sweep" pattern is exactly the same (sans its center zero-crossing now shifted a small amount to the left vs the fundamental zero crossing).

The difference in the even vs odd order composition is only a function of the wafeform kinks at the fundamental's peaks. Those kinks are now asymmetric, creating the even orders.
 
OP
KSTR

KSTR

Major Contributor
Joined
Sep 6, 2018
Messages
2,690
Likes
6,013
Location
Berlin, Germany
To inspect ASRC drift/jitter, I switched to a high test frequency (24kHz) and used rectangular window:
ASRC-Jitter.gif


Normally, in a loopback setup (which we have here) the bottom skirt is narrow or even not visible at all. Here we have a peak hold (darker) and the momentary spectrum, the latter constantly changing skirt size from zero to considerable amounts. The change of shape is typical for a slight frequency mismatch when using a rectangular FFT window. Therefore this is strong indication of ASRC operation, the output rate changing with the main oscillator drift (100MHz in this case).
The moment I tap the oscillator (Quartz chrystals react to force on them) or cool it with cooling spray (they react to temperature also), the skirt "explodes" literally, indicating a rather strong momentary master clock frequency change.
 
OP
KSTR

KSTR

Major Contributor
Joined
Sep 6, 2018
Messages
2,690
Likes
6,013
Location
Berlin, Germany
Part 5 : I/V-Converter (DC bias)

It has been suggested by user @syn08 that changing the DC bias voltage (and with this the idle current drawn from the chip output) at the I/V's summing node has good effect, he could reduce the THD-hump with a specific voltage of 0.68V, albeit this was for the 9038Pro.

I've tried several bias points, ranging from 0.256V to 1.115V.

Alas, only very little effect in this circuit here, for example for -20dBFS (but verfied to have no effect at other levels as well):
FD -20dBFS vs IV DC bias.gif

The harmonics (3rd and odd-order above) basically did not change more than 0.5dB.

So, something else must be dominating here...

--------------------------

Well, at least I got some more insight about the chip's innards, plotting the idle current drawn from the chip vs the output node voltage:
Iq vs Vq.gif

This allows us to calculate the source resistance of the current source, which comes out as 774 ohms (exactly matching datasheet spec).
Actually, this "current source" is a voltage source biased at Vcc/2 (1.65V, extrapolated intersect with Iq=0) with a 774 ohms series resistor as the equivalent electrical model.

With 1.115V bias, this standing DC current is only 0.7mA but from the I/V circuit on the board the AC current swing is 1.85mApeak (1.3mArms), otherwise the 1V output could not be reached with a 806ohms I/V resistor.
From this follows the current output is actually bipolar, sourcing and sinking. If it were sourcing only with a bias offset (as with many other current-ouput DAC chips which have like 1mA bias +-0.75mA swing), we would have clipping as the current could not go below zero
Now a +-1.85mA swing with 744ohms gives +-1.38V swing for the internal voltage source, that is, swing absolute values go from 0.27V to 3.03V. Fits perfectly to the 3.3V supply.

As noted, this DAC is more like voltage output centered at Vcc/2 with an intgrated 744 ohms breakout resistor. In the datasheet ESS state accordingly
1642756449903.png


As for the datasheet, the formula for the DC offset current is wrong:
1642756615033.png

Correct formula: Offset current (in mA) = 1000 * (AVcc/2-Vg) / Rdac


The I/V circuit on the board looks like this:
IV-circuit.gif

The factory bias voltage is 0.82V by the way and we can see why. With 0.82V we get some Iq of ~1mA, and the 806 ohms resistor was selected to bring the I/V stage output voltage close to zero (to avoid output clipping, the OpAmps are supplied with +-5V rails). Common-mode voltage also is low, said 0.82V, so the OpAmps have a resonable operating point.
 

Attachments

  • 1642756421005.png
    1642756421005.png
    6 KB · Views: 146

staticV3

Master Contributor
Joined
Aug 29, 2019
Messages
7,540
Likes
12,011
@KSTR have you seen this thread already?

In it, the designer behind Soncoz DACs describes how he fixed the hump.
 

Herbert

Addicted to Fun and Learning
Joined
Nov 26, 2018
Messages
527
Likes
435
I donated the board for KSTRs measurements. As far as I understand, the fix gives better measurements in the intermodulation distortion vs. level, but the noise is still there. But I might talk rubbish here.
 
OP
KSTR

KSTR

Major Contributor
Joined
Sep 6, 2018
Messages
2,690
Likes
6,013
Location
Berlin, Germany
@KSTR have you seen this thread already?

In it, the designer behind Soncoz DACs describes how he fixed the hump.
Yes... but it is a symptom fix (and gives only slightly better results), not addressing the root cause... which probably cannot be fixed. It does not change the output signal of the DAC chip, only the OpAmp stage is changed and this never has any major impact (unless you run into clipping etc).

For a number of reasons his exact method cannot be applied here but I might try what's actually possible on this board. I'm not overly optimistic but we will see if that helps (significantly).

A smoother IMD+N orTHD+N vs Level plot does not mean there is significant less distortion of the presented kind. It may just mean the distortion is more constant in absolute levels, similiar to general circuit noise. And that more constant (=humpless) distortion base-line might be higher than the noise level. The guy didn't even check the spectra, let alone the residual. Looking at the IMD+N or THD+N vs Level plot is not sufficient.
BTW, the easiest way to drown the hump visually is to make a noisier output circuit. Then we'll have a lower SINAD but no apparent hump anymore (distortion hidden in the noise).
 
Top Bottom