The Journey of DIY No-Feedback Class D Amplifier (1) Subtitle: The Motivation and Story Behind It

As for the simple graph, I will take the bottom part of the image as an example, in case the amplitude on the speaker is similar to the bottom of the simple graph image while dsd_in = 111, and if the next 3bit dsd_in is for example 101, it becomes 111, so it compensates the amplitude error for next 3 bits, so the second bit instead of a digital 0 is now a digital 1, to fix that amplitude error, does this make sense?

let's call it error masking, and hope that the error bit is at the same place is constant and repeats on all subsequent samples. Reproducibility of the error bit location is one of the important conditions otherwise this do not have sense : ) Maybe if we take 1bit instead of 3bit it have sense? The sample time must be accurately timed due to the time difference between the digital 1|0 input and the post filter + load, so that digital output produce digital 1 or digital 0 at the right time.
 
Last edited:
The fact is that dsd64 is at fixed frequency = 2822400Hz at 44.1k x 64 = 354ns between each bit, I think that is quite enough time for some mcu, fpga, cpld...etc to catch fb digital value and determine the error so that they make a correction on the next bit? That's my rough idea about fb.
 
I'm also unsure about how good dsd material I have tried, for example it might be that dsd track which I have tried is an variant of the PCM2DSD and maybe is not an true dsd material, I am unsure how good is that dsd material. Also Multitone analyser, I am unsure how good is their pcm2dsd conversion from 1k sine wave to dsd64 or to dsd128 while I tried Multitone thd measurements on DDPD. Thats all the things which I have to discover. : )

In my rough opinion, ddpd really sounds very good in the lower and middle spectrum, very full and accurate, great dynamics and great localization of instruments, the only fact is that there is noise in the high-tone spectrum, but it is still very pleasant to listen to, I can freely to claim that I personally did not have the opportunity to hear a fuller sound, literally at first note the hair on my arms stood up.

I can recommend anyone who hasn't tried it to try this amp -> https://www.diyaudio.com/community/threads/direct-digital-power-dac-ddpd.395974/, and I'd love to hear what others think about how they like the sound! it is very important for me to hear opinions before continuing with the development.

The next step is definitelly to reclock dsd_in, to make clean simetric 50:50 HI:LO square wave, and if possible to give an option for controling symetry based on dc offset, many thanks for idea!
 
Last edited:
review -> https://www.stereophile.com/integratedamps/253/index.html
That explains me one fact about why I like ddpd sound, probably that noise which I have measured in multitone is not that important as how inportant is transient response?

To be honest, I didn't expected a bad ddpd measurement result until I did it, it was a little disappointing! : ) But it didn't change my opinion of the huge sound I had the chance to hear before the measurement. I am telling you this completely honestly without any marketing persuasion! This is completely for free if anybody want to try https://www.diyaudio.com/community/threads/direct-digital-power-dac-ddpd.395974/
 
Last edited:
I don’t believe that "DDPD" is inherently better than any other Class D. On the contrary, Class D amplifiers can take advantage of feedback technology to mitigate nonlinear effects caused by dead time, imbalance between the two half-bridges, the LC filter, and more.

Meanwhile, the digital DSD signal operates at a fixed bit rate, which limits its resolution despite the application of noise-shaping techniques. In contrast, analog PWM/PDM decoders do not face this limitation.
 
hope this small, cute board will give me a big, sweet Suprise!!!

1733888492564.png

1733888511015.png

1733888542278.png

1733888580916.png
 
The board was brought up today. The good news is that the circuit begins to oscillate upon power-up, and the pulse signal quality is excellent, with no ringing at either the rising or falling edge. There's only a slight overshoot, which I believe may be due to my oscilloscope's input response.

The bad news is that the oscillation frequency starts at 230kHz and increases to 368kHz with changing some caps and resistors, which is still significantly lower than designed. The static power consumption decreases from 8W to 5.5W as the frequency increases, likely because the lower frequency causes the inductors to saturate.

I will continue debugging with the following steps:
  1. Check the bootstrap capacitor for the high-side driver. I added a large 22µF capacitor there, which may need to be reduced to 0.47µF.
  2. Verify the propagation delay of the LMG1210. The datasheet states it's typically 11ns but may vary up to 21ns, which could be problematic.
  3. Consider disabling the LMG1210 temporarily after the device is powered up, until the rest of the circuit stabilizes.
  4. To prevent board damage, I added a 10-ohm series resistor to the power supply, which may impact the oscillation frequency.
Any suggestions or comments are greatly appreciated and welcome.
 
Don't remember the exact block diagram of this circuit. That said, if the input comparator where feedback returns is hysteretic at all then that could have some effect. Otherwise, wouldn't it all have to be related to propagation delay around the loop (or maybe possible hysteresis elsewhere in the loop)?
 
  • Thank You
Reactions: flmhhh
Yes, I change the hysteretic resistor, the frequency increases from ~200k to ~300k. the sigma-delta modulation circuit is reuse what used in my first headphone amplifier project. the problem should be introduced by the new driver and GaN Mosfet.

the same problem was found when I debug the headphone amp, it is because of value abuse of some resistor and capacitors. I will double check the circuit design tomorrow.
 
The resistor connecting the comparator output to the LMG1210 PWM input was accidently set to 1kΩ. This resistor was originally intended to prevent signal reflection. Assuming the input capacitance is in the range of a few pF (not specified in the datasheet), it may introduce an additional delay of several nanoseconds, potentially exceeding 10 ns.

that is bad, I will change it back to 10Ω or even 0 tomorrow, to see what will happen.
 
  • Like
Reactions: Markw4
Good news! Problem solved! The amplifier can now run up to 4.2 MHz. The figures below show the frequencies at 3.2 MHz and 2.0 MHz. --the dead time is set as 8ns.

Based on my experience with headphone amplifiers, 2.0 MHz is sufficient. Its performance lies between DSD64 and DSD128 (with the highest bandwidth of DSD64 being 1.4 MHz = 2.8M/2).

However, the static power consumption is about 15W at 4.2 MHz and reduces to ~7.5W at 2.0 MHz. Due to the absence of a heat sink, the performance hasn't been fully tested yet. A quick test shows the DC offset is approximately 2.4mV.

Here are two methods to enable the amplifier to operate at higher frequencies:

  1. Change the feedback resistor from 160kΩ to 100kΩ.
  2. Disable the driver temporarily until the rest of the circuit stabilizes (using a feedback resistor of 160kΩ).
will use a simple heatsink temporarily for further test before the aluminum case is ready.

As Mark Twain said: "History doesn't repeat itself, but it rhymes."

1734016913216.png

1734016941049.png

1734016971487.png
 
  • Like
Reactions: TNT
The original feedback resistor is designed with 160k 0.1%, now change to 100k 1%. the DC offset should be less then 0.5mV when choose 100k 0.1% resistor.

BTW, ~12W at 3.2MHz.

I plan to set the operating frequency to 3.2MHz, resulting in a static power consumption of approximately 12W. Thanks to the high efficiency of the Class D amplifier, the additional power consumption should not increase significantly as the output power rises.

Achieving high performance comes at the cost of the 12W static power consumption. 🙂 🙂
 
tune the operating frequency down to 1.8MHz, and with a small heat sink, I can perform a longer time test right now.

with input short together, it runs at 1.8MHz. overshoot is 6V.

1734027652491.png


the rising edge takes 10.7ns.
1734027760341.png


The overshoot lasts for 19.4 ns and damps very quickly, with almost no subsequent ringing observed.
1734027885952.png