• Welcome to ASR. 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!

E1DA Cosmos ADCiso Review

Rate this ADC:

  • 1. Poor (headless panther)

    Votes: 4 2.4%
  • 2. Not terrible (postman panther)

    Votes: 1 0.6%
  • 3. Fine (happy panther)

    Votes: 16 9.7%
  • 4. Great (golfing panther)

    Votes: 144 87.3%

  • Total voters
    165
The problem with this calibration is that it must be done at exactly the level equal to DUT output level which will be entering the measuring circuit (the one being calibrated). That means it requires a finely-tuned attenuator with extremely low distortion. That's what the 10-turn pots operated by geared step motors do in https://www.diyaudio.com/community/...ion-for-measurement-setup.328871/post-6505281 (the second pot is for separating DAC and ADC distortions from the combined loopback distortion)


20210126_183700-jpg.915498


Of course measuring with such method takes a bit more time because it takes three steps - pre-measuring DUT output level, calibrating/measuring the ADC distortions at that level, re-measuring the DUT with the ADC compensated. That adapter + control software does all the steps automatically, but still takes a bit more time than measuring directly.
The interpolator cell on my screenshot is a LUT where we can form the profile of the H3 versus level. The same thing successfully utilizing ESS chips 9822, 9039, 9038 etc. Cosmso ADC attenuator has tiny distortions, just 1/10 of 9823's H3 at -125db. Actually, we can try to add one more LUT for the H3(or Hn) phase vs level, but based on what I'm seeing on my bench, it's probably redundant efforts.
 
Cosmso ADC attenuator has tiny distortions
You will see how different the distortions will be for levels so far away. In my case the interpolation between calibrated points was mainly to allow minor changes of the DUT output level without having to calibrate - the pre-calibrated levels were close to each other, and still the distortions would change notably between them (I used linear amplitude/phase interpolation).

IMO the rough compensation just by changing the gain of the transfer function (either by direct polynomial calculation (like in ESS DACs), or by the interpolation table (like in ESS ADCs)) is more practical, than hunting phases of the distortions to try to subtract them in the compensation. IMO the phase-adjusting compensation can potentially introduce larger errors if not calibrated precisely for the specific level-induced distortions. The 90 deg-multiple phase of the polynomial seems like a good average/estimate to me. But you will see how it fares in your use case. There is a nice paper showing efficient fast and precise phase/amplitude estimation of harmonics from short series of samples https://www.researchgate.net/profil...stimation-based-on-Hilbert-transformation.pdf

The Hilbert transformation is a clever tool, google shows it has attracted attention for these purposes in recent years quite a lot.

I had to ask Copilot to analyze your snippet and explain it to me, along with possible continuation of your code. It really took me time to get the basics :-) BTW Copilot suggests to avoid the second (-180 deg) Hilbert and use simply '-1 * samples' instead.
 
BTW Copilot suggests to avoid the second (-180 deg) Hilbert and use simply '-1 * samples' instead.
For those wondering: From wikipwdia
"When the Hilbert transform is applied twice in succession to a function u, the result is

H⁡(H⁡(u))(t)=−u(t)"

Kind of intuitive as a Hilbert transform shift phase 90 degrees. So 2 * 90 degrees = 180 degrees = -1
 
An crude way of lowering 2nd or 3rd if a sine is using the sin2x=(1−cos2x)/2.
Then use a delay after the corrrection b*sample^2 or c*sample^3.
Simple to implement. It works to a extent but the higher order corrections will introduce lower order harmonics
 
Nice, however, from practical point of view, it makes no sense. In fact, those attempts for “distortion reduction” only support those nonsensical SINAD wars, that have absolutely no benefit in sound improvement. Inaudible, totally.
When you want to measure a single sine it has practical importance. In multitone, nope
You could also lower a single sine 10% 2 harmonic to 0.1%. But who listen to a measurement signal ;)
 
When you want to measure a single sine it has practical importance. In multitone, nope
Actually the multitone benefits from the distortion compensation similarly to the single tone - simple static polynomial https://www.diyaudio.com/community/...ion-for-measurement-setup.328871/post-6536105 , detailed phase/amplitude compensation of both tones https://www.diyaudio.com/community/...ion-for-measurement-setup.328871/post-5905534


You could also lower a single sine 10% 2 harmonic to 0.1%. But who listen to a measurement signal
Or digital static/polynomial compensation of speaker acoustic distortion - provided the distortion is known/measured, of course.
 
The static polynomial has no samples history - just a simple polynomial applied to each sample: sin^2(x) -> -cos(2x) (i.e. -90deg), sin^3(x) -> -sin(3x) (-180deg),etc.

I do not want to pollute this thread with offtopic, we could move to another thread.
 
right, double HT is redundant, I just started from 0..90dg and felt it wasn't enough, and added one more HT :facepalm: One HT + 0/180dg mix should be enough for all cases.
Actually, the correct phase degree is possible to get when real and imag outputs are used(0 and 90dg). In my example, I used imag only, and for sure it will produce some phase lag at high frequencies due to the HT cell delay. I tried to see the real output of this HT cell but it brings some noise, however, for the THD compensation with 1/10E-6 portion it is fine. AD DSP's HT is seems IIR-based(just dual APF), one because it virtually spends no resources.
 
phofman, I do all that I can not to give up new ESS ADCs, however, even H2 and H3 p.a.compensted 9823/9843 give me THD results worse than bare 9822. 3db less noise is a serious advantage but not so critical as H3 lower for 12db. Maybe my samples are so bad, and later I'll buy 9823 with H3 -138db, I don't know. So I started thinking about 9822x2 version to keep THD good and get the same S/N as 9823. Anyway, I have to keep my eyes open because the Cosmos ADCiso stock is running out soon.
 
AD DSP's HT is seems IIR-based(just dual APF), one because it virtually spends no resources.
In stead of HT, can you use a all pass 2. order biquad IIR filter?
1/1 biquads in other channel should take care of sample delays of unfiltered signal
 
What did you use to test the 9823? Was it the ESS EVB or a modified Cosmos ADC?
If the latter, did you use the same ADC driver as you use on the 9822 version?
 
As I said and shown here https://www.audiosciencereview.com/.../e1da-cosmos-adciso-review.54020/post-2415475
it was 9823 placed into Cosmos ADCiso PCBA + modifications. I tried the original Cosmos ADCiso front end(with distortion measurement directly at the chip input pins, all harmonics are << -150db) and the recommended ESS frontend with the same result: -.5dbfs 1kHz H3 -124-125db. Also, I tried 9823 in HW mode with the same result again.
2025-08-28_11-10-48.jpg
 
Just to put my answers into context.
The DSP part of the ESS chips can do IIR and short FIR. The FIR is normally used for a sharp anti aliasing filter.
So IIR or FIR can also be used for changing transfer function or more complex signal manipulation.
This is typically a case where a correcting signal is added to a original signal. https://en.m.wikipedia.org/wiki/Feed_forward_(control)
There is a requirement on the signal. It must be stationary or cyclic. That is one frequency. (This case) Or multiple frequencies (phofman)

So music is out of scope,

In IVX solution
The correcting signal is the original signal doubled or trippled in frequency + a phase addition (HT)
The HT gives a constant 90 degrees phase addition
My suggestion is to use a variable phase addition. Here a 2order allpass filter can be used since it is only one frequency that shall be corrected.
The all pass filter has a pass band that can be constructed such that at the frequency of the correction signal, the phase change is the same as the phase change of the harmonic.
That is between 0 and 180 degrees. Maybe a 180 degree change has to be added.

There might also be a possibility to implement correction in FIR
 
I don't want to mess with the THD compensation on an external DSP, hence, it is up to ESS to implement the compensation on the onboard DSP or not. I know the quality of ESS datasheets, and I don't want to spend 2 years to find out how to program their DSP.
A fresh example: I'm trying the "parallel mode" described in the ES9822.pdf.
2025-10-07_22-55-56.jpg

When I tied 2 SDATA outputs, I found that the peak voltage dropped from 3.3V to 1.5V(my USB bridge can't read that reliably), hence, that "high impedance" isn't a high-Z state at all. To me, it's not a big deal, I'll simply add LVC MUX SC-88-6, but if I gonna ask ESS support, for sure I'll lose 1-2 months, and the result will remain uncertain. Implementing THD compensation in that doc's style may take even over 2 years.
 
Back
Top Bottom