<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Well yes I was actually doing frequencies like 1004Hz (a telecomms test freq) at 8MHz sampling, but as you say the secret with PDM is to stay well away from the peak positive and peak negative values. However a little bit of high frequency noise injection
(from a look up table) added to the digital sinewave helped as this also gets filtered out.</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Tom Wiltshire <tom@electricdruid.net><br>
<b>Sent:</b> 20 March 2026 10:37<br>
<b>To:</b> Mike Bryant <mbryant@futurehorizons.com><br>
<b>Cc:</b> brianw <brianw@audiobanshee.com>; synth-diy@synth-diy.org <synth-diy@synth-diy.org><br>
<b>Subject:</b> Re: [sdiy] Linear response VCOs?</font>
<div> </div>
</div>
<div class="" style="word-wrap:break-word; line-break:after-white-space">There's also differences in *where* the errors are worst between PWM and PDM.
<div class=""><br class="">
</div>
<div class="">Generally, you worry most about the fundamental and lowest harmonics of the pulse output frequency, since they're the hardest to filter. For PWM, you get the worst fundamental and 3rd harmonic at the midpoint value, when the output is a 50/50
square wave. You get the worst 2nd harmonic at the 25% and 75% values, since that's where that harmonic peaks for pulse waves. This is all fairly "central" and very likely to be values you're using all the time. In short, if your PWM output is at 100KHz, then
100KHz is what you'll get, and your filtering had better be able to deal with that.</div>
<div class=""><br class="">
</div>
<div class="">For PDM, the central values are the best-case, rather than the worst. With PDM, the worst-case comes as you get to extreme values, so <5% or >95%. This happens because there's so few pulses going out that the effective output rate drops. Imagine
we're using a 2MHz PDM output to create a 10-bit DAC. If we output our midpoint value of 512, we get a lovely squarewave at 1MHz - one period on, one period off. If we output a value of 1, we get one period on followed by 1023 periods off - a very narrow pulse
wave at 2MHz/1024= 1953Hz. That's terrible! Of course, as you approach these extremes, the amount of fundamental and lower harmonics in such a narrow pulse drops off markedly, but still - you probably weren't thinking of a 2KHz output when you designed your
2MHz PDM DAC.</div>
<div class="">My view is that the secret with PDM is to discard the extremes and use the good bit in the middle!</div>
<div class=""><br class="">
</div>
<div class="">Tom</div>
<div class=""><br class="">
<div><br class="">
<blockquote type="cite" class="">
<div class="">On 20 Mar 2026, at 09:30, Mike Bryant <<a href="mailto:mbryant@futurehorizons.com" class="">mbryant@futurehorizons.com</a>> wrote:</div>
<br class="x_Apple-interchange-newline">
<div class="">
<div class="x_elementToProof" style="font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none; font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt">
This is why you use PDM, not PWM. The pulses are at much higher frequency and easier to filter to the correct DC level with less noise.</div>
<div class="" style="font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none; font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt">
<br class="">
</div>
<hr class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none; display:inline-block; width:722.25px">
<span class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none; float:none; display:inline!important"></span>
<div id="x_divRplyFwdMsg" class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none">
<div class="" style="direction:ltr; font-family:Calibri,sans-serif; font-size:11pt">
<b class="">From:</b> Synth-diy <<a href="mailto:synth-diy-bounces@synth-diy.org" class="">synth-diy-bounces@synth-diy.org</a>> on behalf of brianw <<a href="mailto:brianw@audiobanshee.com" class="">brianw@audiobanshee.com</a>><br class="">
<b class="">Sent:</b> 20 March 2026 08:22<br class="">
<b class="">To:</b> <a href="mailto:synth-diy@synth-diy.org" class="">synth-diy@synth-diy.org</a><span class="x_Apple-converted-space"> </span><<a href="mailto:synth-diy@synth-diy.org" class="">synth-diy@synth-diy.org</a>><br class="">
<b class="">Subject:</b> Re: [sdiy] Linear response VCOs?</div>
<div class="" style="direction:ltr"> </div>
</div>
<div class="" style="font-family:Helvetica; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none; font-size:11pt">
The challenge with PWM is that changing a rail-to-rail square wave into a steady DC value requires a lot of filtering. That filter must remove the sharp rise and fall of the raw PWM output, and thus the DC output value cannot sharply rise or fall either. The
problem gets worse if a single channel needs to feed multiple unrelated CV values through a mux+S&H. The slew rate is horrible.<br class="">
<br class="">
Brian<br class="">
<br class="">
<br class="">
</div>
<span class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none; float:none; display:inline!important">________________________________________________________</span><br class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none">
<span class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none; float:none; display:inline!important">This
is the Synth-diy mailing list</span><br class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none">
<span class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none; float:none; display:inline!important">Submit
email to:<span class="x_Apple-converted-space"> </span></span><a href="mailto:Synth-diy@synth-diy.org" class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; orphans:auto; text-align:start; text-indent:0px; text-transform:none; white-space:normal; widows:auto; word-spacing:0px">Synth-diy@synth-diy.org</a><br class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none">
<span class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none; float:none; display:inline!important">View
archive at:<span class="x_Apple-converted-space"> </span></span><a href="https://synth-diy.org/pipermail/synth-diy/" class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; orphans:auto; text-align:start; text-indent:0px; text-transform:none; white-space:normal; widows:auto; word-spacing:0px">https://synth-diy.org/pipermail/synth-diy/</a><br class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none">
<span class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none; float:none; display:inline!important">Check
your settings at:<span class="x_Apple-converted-space"> </span></span><a href="https://synth-diy.org/mailman/listinfo/synth-diy" class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; orphans:auto; text-align:start; text-indent:0px; text-transform:none; white-space:normal; widows:auto; word-spacing:0px">https://synth-diy.org/mailman/listinfo/synth-diy</a><br class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none">
<span class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none; float:none; display:inline!important">Selling
or trading? Use<span class="x_Apple-converted-space"> </span></span><a href="mailto:marketplace@synth-diy.org" class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; orphans:auto; text-align:start; text-indent:0px; text-transform:none; white-space:normal; widows:auto; word-spacing:0px">marketplace@synth-diy.org</a></div>
</blockquote>
</div>
<br class="">
</div>
</div>
</body>
</html>