White noise playing back DSD through ES9038Q2M DAC

Hello everyone! I'm here because I thought I'd be able to achieve something awesome by buying a couple of things from China and plugging them together, and that didn't turn out quite as planned. 🙄

I have a Pioneer DVD player that outputs DSD over its HDMI output, so I wanted to get an HDMI-to-I2S audio extraction board, connect that to a nice DAC, and get amazing audio quality on the cheap. Unfortunately, when the DVD player outputs DSD audio, the DAC introduces a bunch of white noise that gets at least as loud as the music it's supposed to be playing. Sometimes playback will start with no noise at all, but it will gradually increase.

I've tried two variations of ES9038Q2M DAC board: this one and this other one. I've also tried two different HDMI audio extraction boards: this one and this one. All combinations exhibit the same behaviour.

I tried introducing an I2S isolation board but that didn't help, maybe because there are design considerations I need to take into account but didn't. I also tried series resistors and pull-down resistors on each of the channels, but that didn't help either. I attached a cheap logic analyzer to the HDMI board output, and I can see (as well as the 24MHz sampling frequency of the logic analyzer will allow) that the ones and zeroes are where they should be when they should be. My lame multimeter shows that the voltage on the signal pins is around 3.3V, which is within the 5V that the datasheet says the ES9038Q2M can tolerate. My cheap digital scope shows what looks to my eye like random noise on the analogue output when the problem occurs. I've tried powering it from a couple of 12V wall-warts that came from external hard drives, and also from the ATX power supply from a PC - that made no difference to the outcome.

I think I've reached the limit of what I can achieve without further guidance - I've scoured the internet trying to find similar issues but I didn't get anywhere. Does anyone have any ideas for what I can investigate next or what I should revisit and how? Is there something I'm missing or something I can try?
 
It’s definitely possible, as the sound comes through. Sometimes it even starts off perfect then the noise slowly increases. The DVD player will also pass DSD through to a home cinema amplifier with no issues. There’s something not right somewhere between the HDMI board and the DAC board, that’s for sure.

If it didn’t work at all, you’d have a point - but it does kind-of work, so it should be possible to get it completely working.
 
Amazing audio quality is unlikely from those cheap dac boards linked to in the first post. Its not so much the dac chip that makes for great sound as it is the supporting circuitry around the dac chip. For minimal cost Chinese boards everything is done with the cheapest possible components and circuitry. Only the dac chip is of potential worth.

Regarding HDMI extraction, the low cost extractors usually only seem to output 48kHz PCM audio if the content is protected for hi-res playback. Don't know if the extractors could handle unprotected DSD properly. If they output over SPDIF or TOSLINK they would presumably have to be running DoP protocol for DSD. By looking at some of the dac chip internal I2C registers it might be possible to figure out what's going on from the dac chip perspective.
 
If it's extremely temperature-dependent, it could be some timing issue.

It certainly feels like it's a timing issue, although I don't know what I should do to test the temperature-dependent element of that. The DAC locks on to the signal no problem, so would the timing issue be a case of it occasionally reading the previous or next bit of the stream? I'm surprised that it results in that much noise across the spectrum given my understanding of how DSD works. Then again, maybe the timing affects the DAC in some mysterious way?

Don't know if the extractors could handle unprotected DSD properly. If they output over SPDIF or TOSLINK they would presumably have to be running DoP protocol for DSD.

The HDMI extraction boards claim to support DSD and they do - but only over I2S.

Overall my current best guess is that something isn't quite right on the DAC side of things, as disconnecting and reconnecting either the bit clock or the ground wire will result in a different level or kind of noise - or sometimes the noise going away completely for a few seconds before slowly coming back.
 
At least one of the I2S extraction boards linked in the original post has only one I2S data line, that means only DoP can be supported. The ESS DAC requires explicit register config to enable DoP detection (disabled by default). While the DAC board seems to have a microprocessor to configure the DAC over I2C, it may not be enabling that register. IMO the DoP played as PCM will sound like a strong noise.
 
Both I2S boards have five I2S pins: SDATA (which becomes DSDR), BCLK (which becomes DSDCLK), LRCK (which becomes DSDL), MCLK (not connected on the DAC side), and ground. One DAC board has a TFT screen connected, which shows that the input is indeed 2.8MHz DSD - when it receives a DoP input it shows DoP on the screen. So I know that the problem is only with raw DSD input over the I2S pins - everything else works fine.
 
Thanks for correction, I overlooked the dual LRCLK/DSDL role.

How does the DAC board detect DSD is incoming, instead of PCM/I2S?

IMO a multichannel digital scope with single run would could show the problem. Sampling all three data lines at single run and looking at the timing.
 
It’s definitely possible, as the sound comes through. Sometimes it even starts off perfect then the noise slowly increases. The DVD player will also pass DSD through to a home cinema amplifier with no issues. There’s something not right somewhere between the HDMI board and the DAC board, that’s for sure.

If it didn’t work at all, you’d have a point - but it does kind-of work, so it should be possible to get it completely working.
I know what you mean, but I thought maybe the output signal from the DVD player is scrambled and it should be properly managed by receiver, in order to un-scramble it, so the home-cinema does it right, but no the HDMI coneversion board.
Using the HDMI-to-I2S in the second link you shared, but connecting home-cinema receiver to the HDMI output port, instead of I2S output to the DAC board, does it work?
 
Overall my current best guess is that something isn't quite right on the DAC side of things, as disconnecting and reconnecting either the bit clock or the ground wire will result in a different level or kind of noise - or sometimes the noise going away completely for a few seconds before slowly coming back.

Hmmm... Do you have a clear pic showing the interconnection wiring between the two boards? Sometimes a problem can be caused there.
 
It certainly feels like it's a timing issue, although I don't know what I should do to test the temperature-dependent element of that. The DAC locks on to the signal no problem, so would the timing issue be a case of it occasionally reading the previous or next bit of the stream?

Yes, and the first flip-flop can also occasionally get metastable, stay at a logic level of 1/2 for a while and then at random go high or low. You could check if heating the PCB with a hair dryer has any effect, good or bad or both.
 
Thank you all for the replies and ideas! I'm honestly bowled over by the level of engagement, it's fantastic.

You could check if heating the PCB with a hair dryer has any effect, good or bad or both.

This was a great tip. Heating the DAC board with a hair dryer (aimed at the region of the DAC chip and crystal) had a chaotic effect, at first the white noise completely disappeared, then after a while it would cause it to come back, and after a while the DAC would even start losing the lock. At that point, resting my finger on the top of the crystal would have a similar effect to the hairdryer - it might increase or reduce the noise.

In the attachments is also a close-up photo of the crystal and surrounding components, because I'm guessing that an extra dose of cheapness was invested in that area.

Do you have a clear pic showing the interconnection wiring between the two boards? Sometimes a problem can be caused there.

I took a picture and attached it. All the connections are secure enough, even though I have unplugged and reconnected them a few times by now. 😉 You can also see that I tried wrapping DCLK and ground around each other, which makes precious little difference.

How does the DAC board detect DSD is incoming, instead of PCM/I2S?

Magic! :wiz: If I had to detect whether the incoming data was DSD or PCM, I'd look at the LRCK channel and see if it's behaving like a frame clock or not. The ES9038 seems to be remarkably clever and autodetects a lot of things so it probably does something much smarter than that.

IMO a multichannel digital scope with single run would could show the problem. Sampling all three data lines at single run and looking at the timing.

I attached a screenshot of what my logic analyzer captured, as well as a zip containing the full trace from Pulseview. Bear in mind my logic analyzer can only sample at 24MHz (what do you expect for six dollars?), and 2.8224 into 24 doesn't go exactly. DCLK completes two oscillations (down-up-down-up) in 17 samples - 0.708 microseconds, which gives roughly 2.824MHz. I think that looks pretty close. The two data channels line up precisely with DCLK.


One more thing that occurred to me is that the logic analyzer only shows on/off states, it doesn't show the waveform. Since my cheap digital oscilloscope doesn't do high enough frequencies, I put a CD on and connected the scope to the PCM frame clock, results attached - you can see that even at 44.1kHz the output is far from perfect. I'm wondering if that means that I should now go out and buy a proper oscilloscope. 😀
 

Attachments

  • IMG_8530.jpg
    IMG_8530.jpg
    998.8 KB · Views: 200
  • IMG_8531.jpg
    IMG_8531.jpg
    655 KB · Views: 171
  • IMG_8529.jpg
    IMG_8529.jpg
    803.3 KB · Views: 126
  • dsdtrace.png
    dsdtrace.png
    72.8 KB · Views: 152
  • dsdtrace.sr.zip
    dsdtrace.sr.zip
    90.3 KB · Views: 59
An I2S receiver is supposed to clock in the data and the word clock at the rising bit clock edges, raw DSD interfaces usually do the same. Your logic analyser plot shows that there should be plenty of set-up and hold time then. Maybe I was barking up the wrong tree then.
 
Given how the behaviour changes when the board is heated up, and the fact that touching the crystal affects the noise, I think you were on to something with timing - maybe later in the process than you were thinking of, but still.

I’m thinking along two lines: either some electrical signal (either the input or something on the DAC board) is affecting the performance of the oscillator or lock circuit, or the crystal or the small SMD components around it just aren’t up to spec. Does that sound reasonable? I’m not sure how I’d go about investigating that, but still…
 
It certainly could, the soldering often isn't great on such boards, and the behaviour with temperature does point to this as one possible cause. I'm not sure how I could check if the joints are good - and I'm guessing that the equipment I have at the moment (a regular soldering iron or a not-very-precise heat gun) wouldn't cut it when it comes to attempting a fix. These SMD components are a real pain for amateurs!
 
If I understood your first post correctly you have two ES9038Q2M dacs that behave the same. So I doubt this is a cold soldering issue. Regarding the heat ES9038Q2M runs quite hot already if 100MHz clock is used. Blowing air or heating the board will probably have some impact even if everything is in order.

I would look elsewhere for the issue. Are your dac boards working fine with PCM input (I2S or SPDIF)?