• 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!

Using Cross Corelation to lower influence of ADC for DAC measurements

Not sure if that's really required, since cross alignment is, first, used to identify time/phase differences between signal, isn't it ?

You may just change the ADC scale.
I'm using 10V as a target for Scaler, personnaly.

OK i do same as you to compare measure
 
I don't undestand very well , what is CC (cross correlation??)
If CC = cross correlation
I compare the cross correlation with channels with E1DA ADC in stereo mode , because je measure the same
signal on each channel , and it give a direct noise reduction vs stereo channel
Yes, CC is to mean Cross-Correlation.

What I would like to see is a comparison of:
  • Cosmos ADC in Mono Summing Mode (needs to be set up with the Firmware Tool or Volume Slider), and is provided on the L channel's output only. Using, say 32 magnitude-only spectrum averages to smooth out the noise floor
  • Cosmos ADC in Stereo Mode, using your CC method. Again with 30 averages (I'm not clear about what averaging is exactly applied here and at which stage, before or after the CC process)

Even more ideal would be synthetic test signals with known properties, no real ADC involved.
Like one common root test signal with a full-scale sine + pink or white noise floor at -110dBFS rms. That's our DUT.
Then add two uncorrelated (different) pink/white noises at -100dBFS rms on copies of the root signal, emulating the ADC noise. We may add some tonal spuriea or different level of harmonics here as well.
Simple Mono Summing would not be able to expose the DUT's noise floor. The question now is if CC would be able to expose it, right?
 
Hello Holmz

The limit of cross correlation is precisely
the correlation of noise in the ADC.

The E1DA uses a single device for the 2 ADCs.

The thermal noise could be correlated on the chip ????.

Having 2 ADCs would overcome this problem (if it exists).

I went down to -20db by correlating the 2 noises of the ADC.

I can guarantee the noise reduction of this value of 20dB.

Bye

I could see 3 dB.

But what exactly are the signals you are using?
Just the same as the input?

In any real scenario, if we are doing something more than testing a straight wire… then we either have an amp, speaker, or preamp, in the chain to add in some noise.
Maybe a wire would be stressing the noise floor, but most of the real scenarios, we be many dB higher than the DAC noisefloor.
If one ran the DAC at a higher sample rate, then one can pick up 3dB for each doubling of the sample rate. (Maybe 6dB in power?)
 
Yes, CC is to mean Cross-Correlation.

What I would like to see is a comparison of:
  • Cosmos ADC in Mono Summing Mode (needs to be set up with the Firmware Tool or Volume Slider), and is provided on the L channel's output only. Using, say 32 magnitude-only spectrum averages to smooth out the noise floor
  • Cosmos ADC in Stereo Mode, using your CC method. Again with 30 averages (I'm not clear about what averaging is exactly applied here and at which stage, before or after the CC process)

Even more ideal would be synthetic test signals with known properties, no real ADC involved.
Like one common root test signal with a full-scale sine + pink or white noise floor at -110dBFS rms. That's our DUT.
Then add two uncorrelated (different) pink/white noises at -100dBFS rms on copies of the root signal, emulating the ADC noise. We may add some tonal spuriea or different level of harmonics here as well.
Simple Mono Summing would not be able to expose the DUT's noise floor. The question now is if CC would be able to expose it, right?
I started with signals that I created.
I have everything I need to answer you
I'm trying to do this ASAP
 
Even more ideal would be synthetic test signals with known properties, no real ADC involved.
That would the definite proof for comparing the methods.

Assuming there's no error in the magnitude calculation, a quick check could be to measure the ADC noise with open inputs (depending on range, there's just the feedback resistors and the current noise of the OPA1612a; all of them are uncorrelated) in mono-mode vs. Cross-correlation in stereo-mode for an identical number of averages.

- Mono-mode should give 3dB improvement compared to single channel independent of the number of averages
- Cross-correlation should give 5*log10(n) improvement and thus 7.5dB at 32 averages. This would mean 4.5dB more than mono-mode.

In order to get the E1DA ADC(iso) into mono-mode you have to set the volume slider to >50% (<50% is stereo-mode), as Kstr already mentioned.

@KSTR: you are on Linux too. Does this work the same way?

Edit: I think Ivan switches the input series resistors (not the feedback resistors), so the noise with open inputs should not depend on the range.
I will double check.
 
Last edited:
In order to get the E1DA ADC(iso) into mono-mode you have to set the volume slider to >50% (<50% is stereo-mode), as Kstr already mentioned.
@KSTR: you are on Linux too. Does this work the same way?
Yes. Actually, my ADC has three modes: mono, stereo with RIAA EQ , stereo.
Note that "alsamixer" shows two sliders: https://www.audiosciencereview.com/...osmos-adciso-review.54020/page-5#post-1961218.
It always good to double-check the mode with a known test signal. Notably Windows seems to "forget" the settings (reverting to stereo mode) when the stream is stopped and restarted.
 
That would the definite proof for comparing the methods.

Assuming there's no error in the magnitude calculation, a quick check could be to measure the ADC noise with open inputs (depending on range, there's just the feedback resistors and the current noise of the OPA1612a; all of them are uncorrelated) in mono-mode vs. Cross-correlation in stereo-mode for an identical number of averages.

- Mono-mode should give 3dB improvement compared to single channel independent of the number of averages
- Cross-correlation should give 5*log10(n) improvement and thus 7.5dB at 32 averages. This would mean 4.5dB more than mono-mode.

In order to get the E1DA ADC(iso) into mono-mode you have to set the volume slider to >50% (<50% is stereo-mode), as Kstr already mentioned.
@KSTR: you are on Linux too. Does this work the same way?
I have something that's not bad either
look at the png
 

Attachments

  • crossCorrelE1DAcosmosADC_Noise.jpg
    crossCorrelE1DAcosmosADC_Noise.jpg
    285.4 KB · Views: 59
That's perfectly the 15dB compared to single channel that we should expect from 1000 averages and cross-correlation.

This measurement was with ADCiso in stereo-mode with inputs left open?
 
I do not want to speak for pkane, but I wonder if he could add a cross correlation option in Multitone if it were requested?

@pkane

Without reading most of this thread, I think it would be fairly easy, since the calculation is nearly identical to coherent averaging, except for the "multiply by the complex complement part" :) I'd be curious to find out how stable this calculation is in the presence of a large amount of noise or with DUT signal and distortions that might vary in phase between the two channels.
 
Last edited:
Yes, CC is to mean Cross-Correlation.

What I would like to see is a comparison of:
  • Cosmos ADC in Mono Summing Mode (needs to be set up with the Firmware Tool or Volume Slider), and is provided on the L channel's output only. Using, say 32 magnitude-only spectrum averages to smooth out the noise floor
  • Cosmos ADC in Stereo Mode, using your CC method. Again with 30 averages (I'm not clear about what averaging is exactly applied here and at which stage, before or after the CC process)

Even more ideal would be synthetic test signals with known properties, no real ADC involved.
Like one common root test signal with a full-scale sine + pink or white noise floor at -110dBFS rms. That's our DUT.
Then add two uncorrelated (different) pink/white noises at -100dBFS rms on copies of the root signal, emulating the ADC noise. We may add some tonal spuriea or different level of harmonics here as well.
Simple Mono Summing would not be able to expose the DUT's noise floor. The question now is if CC would be able to expose it, right?
You can see the result bellow
 

Attachments

  • signalCheck.txt
    1.8 KB · Views: 41
  • correl5.png
    correl5.png
    52.5 KB · Views: 58
  • correl10.png
    correl10.png
    52.8 KB · Views: 53
  • correl100.png
    correl100.png
    47.5 KB · Views: 57
  • correl1000.png
    correl1000.png
    41.2 KB · Views: 53
Without reading most of this thread, I think it would be fairly easy, since the calculation is nearly identical to coherent averaging, except for the "multiply by the complex complement part" :) I'd be curious to find out how stable this calculation is in the presence of a large amount of noise or with DUT signal and distortions that might vary in phase between the two channels.
What is a simulation i can do .
 
That's perfectly the 15dB compared to single channel that we should expect from 1000 averages and cross-correlation.

This measurement was with ADCiso in stereo-mode with inputs left open?
yes inputs open
 
Great job!
Thanks again for bringing this method into discussions here at ASR.

This method crossed my way just a few weeks ago - one of the experimental physicists group had implemented this in order to reduce noise and eliminate interference pickup in the experiment (they even intentionally chose to route the wiring different for the inputs of the 2-channel amplifier in order to pick up different interference).

I was just able to admit that this is a charming idea, but I was completely lost when it came to the improvement this might have compared to a simple average of the 2 channels.

The process I'm undergoing is called learning. ;-)

To make it clear, I do not at all want to round up this very nice discussion!
 
Without reading most of this thread, I think it would be fairly easy, since the calculation is nearly identical to coherent averaging, except for the "multiply by the complex complement part" :) I'd be curious to find out how stable this calculation is in the presence of a large amount of noise or with DUT signal and distortions that might vary in phase between the two channels.
As far as I can see multiplying with complex conjugate is identical to a standard multiplication with one of the blocks time-inverted before FFT. Multiply in frequency domain is convolution in the time-domain, so when the two blocks are the same, convolving a signal with its time-inverse gives zero phase.
This should be stable and should work with any signal, whereas coherent avergaging requires to measure and then align the phases of the fundamental from block to block, right?
 
Last edited:
Some quick comments, bearing in mind it is long since I have worked on something like this:

1. Thermal noise between two (or more) channels is not correlated on-chip since circuit paths are different. Some other noise, like clock and power supply noise, may be correlated to at least some degree.

2. When assessing noise the inputs should be shorted to reduce the chance of external noise being coupled to the device and corrupting the results.

3. ADCs are typically measured at -1 dBFS input to provide a bit of margin for signal noise and variations and hopefully prevent any clipping.

4. When I was using cross-correlation to align two signals in the time domain, I had to do an additional step to properly align (index) the two signals (vectors). Since this work is in the frequency domain, it is not clear (meaning I do not know) that step is needed.

5. If the noise of the two signals is significantly different in amplitude or spectral content, cross-correlation will not work as well (I realize this is probably self-evident).

As an aside, for those following but wondering about the 5 dB reduction instead of the usual 3 dB sort of number for suppressing uncorrelated noise by averaging, the assumption made is 10x measurements and not 2x averaging. 10*log10(sqrt(10)) = 5 dB -- it is the square root of 10 because uncorrelated noise is "averaged" as the square root and not linearly. The same is true for simple averaging of voltage noise: 20*log10(sqrt(2)) = 3 dB.

Interesting discussion!
 
2. When assessing noise the inputs should be shorted to reduce the chance of external noise being coupled to the device and corrupting the results.
In general I fully agree. In this case (and for the E1DA ADC in particular) this is a very well defined condition to generate noise that does not depend on source resistance, etc.
 
2. When assessing noise the inputs should be shorted to reduce the chance of external noise being coupled to the device and corrupting the results.
Fun fact: When trying to short the inputs (+) and (-) to GND externally with a XLR shorting plug the noise does effectively not change but I now get some mains spuriae as the pickup loop area of the shorts cannot be made infinitely small. Open inputs is really as good as it gets for the Cosmos ADC as noise is dominated by the FDA/ADC chips' noise.
 
Fun fact: When trying to short the inputs (+) and (-) to GND externally with a XLR shorting plug the noise does effectively not change but I now get some mains spuriae as the pickup loop area of the shorts cannot be made infinitely small. Open inputs is really as good as it gets for the Cosmos ADC as noise is dominated by the FDA/ADC chips' noise.
Interesting. Differential spurs, or common-mode (or both)?

For a differential input, I would short (+) input to (-) input rather than to ground. Of course, there may be an internal ground connection anyway for biasing. Another scheme, that may or may not help, would be to use a shielding cap that closes off the open input without shorting it to common ground. I have not done that with XLR inputs, always just shorted (+) to (-) using a custom plug (wire/solder bridged the pins in the connector), but for RCA it is essentially a metal shorting cap with the center pin removed (clipped).
 
Back
Top Bottom