ES9038Q2M Board

Would it be possible to enable sync mode (128_fs register) on the 9038 chip without disturbing operations of an existing onboard MCU?
Do the registers work like that? you change them once and value is saved in the DAC chip?

This is regards to Topping D50 which has a sophisticated MCU onboard that controls volume, inputs, filters through a display. The SDA and SCL pins to DAC chips have termination resistors so onboard MCU can be disconnected temporarily without much trouble.
 
Sync mode requires setting some dac chip registers and having the right clock fed into MCLK input pin on the dac chip. Normally two clocks are connected and only one is enabled at a time.

Also, the dac clocks have to be buffered and fed out to the USB board to clock it. The USB board has an output signal telling you which of the two clocks to enable. The USB board needs to be supplied with the clock frequencies it needs, so either the dac chip needs to run at those same frequencies or maybe a frequency divider will need to be used so one of them, the dac chip or the USB board, can operate at at half or one-quarter the speed of the other.

In addition, and this is a big one, the clock and and data signals need to be really clean and with fast, square edges or the dac chip will fail to enter synchronous mode. Sometimes, reclocking (relatching) of signals with a fast D-flip flop may be needed to clean up and align the signals. The master clock in that case will need to be at least twice the maximum data clock speed.

In other words, its a lot of work to make synchronous mode work if the dac board was not designed for it.
 
Last edited:
The I2S interface I would use has 22.579 and 24.576 Mhz clocks and provides an MCLK output which would go to DAC clock input.
What exactly is MCLK from the I2S interface, Is it just a direct output from the clocks? I was assuming it was a division of the clock frequency that gives 128fs depending on the sample rate i.e divided by 4 for 128fs at 44.1khz.

seems like it isnt, so DAC would need frequency divider depending on sample rate?
 
Last edited:
laserscrape,
Basically, what you describe is what we do with AK4499. That is to say, we get MCLK from the USB board, which we can do because the particular USB board has very good clocks and we put the USB board very close to the dac I2S and MCLK input pins. It is JLSounds I2SoverUSB. Also, it can output MCLK at 22/24MHz and or at 45/49MHz, as it happens to have a built-in selectable divider. Most USB boards don't have that.

On your question about USB board clock division, USB boards do NOT divide MCLK based on audio sample rate.

Compared to A4499, things are a bit different with Sabre. For example, the clock frequency for a given audio sample rate is higher than for AKM dacs. In synchronous mode it is twice the bit clock frequency (and 32-bit data word size is required). That means if we want to play DSD512 (which is clocked at 22MHz) then we need to clock the dac at 45MHz or an even multiple of that.

On your question about USB board clock division, USB boards do NOT divide MCLK based on audio sample rate.

If you want to do that in the synchronous case, you can use Clock_Gear.

Or, you could just use even multiples of the specified clock frequency (they happen to work too, in addition to those specified).

Moreover, Sabre may be more picky about the quality of I2S and MCLK waveforms if you want to use synchronous mode. For that reason some designs may reclock if found necessary.
 
Last edited:
I have only seen I2S interface with 22/24Mhz clocks supporting up to DSD256, that isnt a limitation of XMOS ?

So there wouldn't be any problems just connecting good quality MCLK output from the interface to XI input, only for 128_fs mode the clock_gear value would need to be set depending on rate.
Though this all sounds too familiar now, I recall having tried this before with the Topping D50 but It refused to work with anything but a 100MHz clock input, display showed an error message and DAC would not play, think it was more to do with the MCU detecting a problem with the DAC than there actually being one.
 
Last edited:
I don't think its an XMOS limitation. I believe some have 45/49MHz clocks, maybe diyinhk USB boards do.

The thing is when you say, "just connect a good quality MCLK," that is in theory correct, but may be harder to get to work in practice than you expect. It needs fast, square edges and very low noise. Same for all the I2S signals.

Also, IIUC, you do NOT have to use Clock_gear for 128fs unless you want to. If you want to use the exact specified clock frequency and not an even multiple, then use clock_gear.

If you your clock and other signals aren't perfect enough, then you won't get lock in 128_fs mode and setting DPLL = 0 will cause the dac to mute.

You will absolutely need to take control of the dac chip registers over I2C bus, there is no way its just going to work auto-magically. If you did that before, then why would it matter if the original MCU didn't like it? Nothing it could do about it, or am I missing something?
 
Last edited:
I don't think its an XMOS limitation. I believe some have 45/49MHz clocks, maybe diyinhk USB boards do.

The thing is when you say, "just connect a good quality MCLK," that is in theory correct, but may be harder to get to work in practice than you expect. It needs fast, square edges and very low noise. Same for all the I2S signals.

Also, IIUC, you do NOT have to use Clock_gear for 128fs unless you want to. If you want to use the exact specified clock frequency and not an even multiple, then use clock_gear.

If you your clock and other signals aren't perfect, then you won't get lock in 128_fs mode and setting DPLL = 0 will cause the dac to mute.

You will absolutely need to take control of the dac chip registers over I2C bus, there is no way its just going to work auto-magically. If you did that before, then why would it matter if the original MCU didn't like it? Nothing it could do about it, or am I missing something?
they do, what I mean is getting a DSD512 output with 22Mhz clock, which as you say would work with AKM4499... I guess it means the DAC will work at those clock freqs but the interface still needs 45/49Mhz clocks to operate.

The datasheet implies you need 128 fs for every sample rate in 128 fs mode,
but for simple sync mode it can be multiple.


Im not sure what you mean in the last paragraph.
Before I simply changed the frequency of the DAC clk in async mode, the original MCU was still controlling the DAC.
I did not see anything in the datasheet that says the DAC needs to programmed for different clk frequency in async or sync mode, as long as frequency is within requirements for each mode, or even anything to set the DAC to sync or async mode.


Setting registers like 128_fs and such obviously requires taking external control of the DAC.
 
I know what the DS says about that, also have some other info.

With 22MHz MCLK, you would be limited to DSD256 (11MHz data clock) in synchronous mode (which I think is in agreement what you said, just making sure). If it won't lock for some reason, you may still be able to play DSD128 in asynchronous mode (might be helpful to try for troubleshooting).

That you don't see a clear explanation in the data sheet for running synchronous mode doesn't mean its automatic, its not. The lack of info is more a reflection of insufficient applications documentation, IMHO. The manufacturer expects you to call them and ask about how to do it if you want to run synchronous. They encourage people to use all the great features of the chip, including async mode :)
For one thing, you have to set DPLL = 0 to turn off ASRC. There are a few other things too, IIRC. PM if you need to discuss in more detail.
 
Last edited:
Ok, well that is a good thing I suppose because it means what I hoped to achieve may still be possible.
I.e connect an external MCU temporarily, change registers to run sync/128_fs mode, reconnect old MCU without these changes getting reverted or the changes disturbing its functions.

My D50 got broken a few months but considered how cheap they goes for used im considering replacing and modding one instead of trying to build AK4499 DAC which has so much possibility to go wrong. I think it even make more sense to buy used D50 than the 9038 board from this thread, though the DIY aspect is most of the fun.
 
The old MCU will likely reset things the way it is programmed to do. You can see what it does now by hooking up a cheap $10 logic analyzer to I2C bus and play a variety of sample rates and some DSD. Chances are you will see it addressing registers you would need to modify.

If you can get synchronous mode working, what do you need the old MCU for? Running the display? Its easy enough for you to adjust volume with Arduino or other MCU that you program.

Regarding AK4499, it doesn't have the Sabre dac sound that some people find hard to listen to for very long. If the implementation is done well it can sound marvelous, completely in another league from a modded D-50. However, best to start out with an evaluation board, not a home brew board.
 
Last edited:
Keeping existing MCU would be for the sake of convenience and neatness, it could stay in its nice compact aluminium enclosure and keep the nice display and controls it has.

There is still another option for a DAC to try, the DSC1.
not expensive or complicated and could be a better choice for getting the most out PC based PCM to DSD conversion, even if measurements dont reflect it.
 
You may unlock the ES9038Q2M capabilities with PBA

such a board for an upgrade is better

I bought this AC powered ES9038Q2M board as well for the sake of having less electrolytic caps in the signal path. It has a dual power supply, and a better 3.3V handling than the other two ES9038Q2M boards I bought before. The sound was really bad. I needed to do something with that. I started with the output opamp, which was plugged into an 8-pin dip socket. I was able to get some improvement with NJR8920. The harshness was gone, but the highs were still cloudy. Then I pulled an OPA2604AP from one of the Academy Audio volume control boards, that I have, and got a much better sound altogether.
I went to the Academy Audio website and found their new PBA opamp replacement boards. They are essentially SOIC8 to DIP8 adapters with some extra circuitry on the bottom to force the opamps into a pure Class A mode. They offer a bare board model, where you can solder any dual opamp of your choice, and also two models with decent opamps installed - OPA1652 and OPA2604. I got all three last week, and tried them on that ES9038Q2M board. The one with the OPA1652 was dead quiet and smooth. The one with the OPA2604 further improved the sound adding more clarity on the highs, but there was unexpected dryness. I decided to leave it in running for a few days for a burn-in. My G-d, three days later the sound got soooo fluid, clear and easy, I could not believe it! It sounds probably better than my ready made DAC that runs on ES9038PRO and AD797s on the output. Will order more PBAs to try them on other audio boards. I am curious what will the burn-in do to the cheaper OPA1652 PBA unit.
 
New to this thread

johncurtis, Hi and welcome to the thread. May I ask if you have been following the ES9038Q2M dac modding journey for long, or just arrived here?

Hi Markw4! I am relatively new to this thread. I played with an earlier models of the Sabre chips, albeit with little success. Playing with ES9038Q2M for the last two month, and read everything I can find on the Web. I thought my success story may be helpful to other members.
 
Playing with ES9038Q2M for the last two month, and read everything I can find on the Web.

Perhaps you happened to find the schematics in post #3003 of this thread for our recommended AVCC power supply and a proper 3-opamp output stage? If not, you might find them interesting.

They are similar to what ESS recommends in the document on their website's downloads page: http://www.esstech.com/files/4514/4095/4306/Application_Note_Component_Selection_and_PCB_Layout.pdf
...If you haven't read that document yet, it is well worth some study.

With a 3-opamp output stage and everything else done properly, ES9038Q2M can reach a -120dBFS distortion level. With a one opamp output stage like you have now it has to operate in voltage mode which increases distortion to closer to -70dBFS. That's a huge difference, of course.

EDIT: Sorry I don't have better news for you than the above. If you had only dropped by and asked about what you were thinking of doing a couple of months ago we would have been happy to help. We still would be of course, but don't know if you have any interest in making further progress. If you are happy with the dac you have that's all that really matters :)
 
Last edited:
Member
Joined 2009
Paid Member
Yes, I posted some measurements here: ES9038Q2M Board

And yes, the THD was -74.5 dB at full scale, when using the original output circuit (voltage mode).

I would actually like to see performance measurements after modifications have been done. There is a lot of talk about what sounds best, but as this can be subjective, I would like to see objective measurements.
 
Sorry, Jens. My ES9038Q2M setup has been increasingly cannibalized to supply parts for use with AK4499. Given the difference in sound quality I can't see any reason for ever going back to a Sabre dac.

However, Allo continues to work with ES9038Q2M and they announced they were able to reduce distortion on their latest one to as low as -127dBFS, as measured on an AP they have. They have made a few changes since then to improve subjective sound quality which has slightly worsened measured distortion.