<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <div class="moz-cite-prefix">On 05.11.2022 14:59, Mike Bryant wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CWLP265MB3682B7C0AB754294C77449ABDB3A9@CWLP265MB3682.GBRP265.PROD.OUTLOOK.COM">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <style type="text/css" style="display:none;">P {margin-top:0;margin-bottom:0;}</style>
      <div style="font-family: Calibri, Arial, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof
        ContentPasted0">
        > Mind to share with us, which ones actually do?</div>
      <div style="font-family: Calibri, Arial, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof
        ContentPasted0">
        <br>
      </div>
      <div style="font-family: Calibri, Arial, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof
        ContentPasted0">
        Sorry I wasn't being clear.  I was doing it in software which
        really needs the RBIT instruction to do it quickly. 
        <br>
      </div>
      <div style="font-family: Calibri, Arial, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof
        ContentPasted0">
        But not all ARM MCUs have this instruction.  <br>
      </div>
      <div style="font-family: Calibri, Arial, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof
        ContentPasted0">
        A single counter, output RBITed, then a line of compare
        instructions driving GPIOs.<br>
      </div>
    </blockquote>
    <p><br>
    </p>
    <p>Ah, ok. Technically almost all MCU can do this in software,
      question is only how fast.</p>
    <p><br>
    </p>
    <blockquote type="cite"
cite="mid:CWLP265MB3682B7C0AB754294C77449ABDB3A9@CWLP265MB3682.GBRP265.PROD.OUTLOOK.COM">
      <div style="font-family: Calibri, Arial, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof
        ContentPasted0">
      </div>
      <div style="font-family: Calibri, Arial, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof
        ContentPasted0">
        <br>
      </div>
      <div style="font-family: Calibri, Arial, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
        However for a hardware only approach, have a look at Cypress
        PSoCs.   You can use the UDMs or the pseudo-random mode of the
        TCPWM blocks which isn't quite the same but similar result.</div>
    </blockquote>
    <br>
    <p>I know that the ESP32 has a PDM, only as a mode in the I2S
      peripheral.  And a similar to PDM functioning SDM (Sigma Delta),
      but its 8 bit.  I haven't checked if this is done HW or SW. <br>
    </p>
    <p><br>
    </p>
    <blockquote type="cite"
cite="mid:CWLP265MB3682B7C0AB754294C77449ABDB3A9@CWLP265MB3682.GBRP265.PROD.OUTLOOK.COM">
      <div style="font-family: Calibri, Arial, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
        <br>
      </div>
      Or use a cheap FPGA on the side of a MCU<br>
    </blockquote>
    <p><br>
    </p>
    <p>I've done this using an FPGA, I think it was just with an
      overflowing counter.</p>
    <p><br>
    </p>
    <p>One caveat with PDM at higher frequencies is that you need fast
      and symmetric rise and fall times on the digital drivers. A little
      turn-on or turn-off delay (and any imbalance) distorts your
      signal. <br>
    </p>
    <p><br>
    </p>
    <p>Cheers,</p>
    <p> René<br>
    </p>
    <br>
    <pre class="moz-signature" cols="72">--
<a class="moz-txt-link-abbreviated" href="mailto:synth@schmitzbits.de">synth@schmitzbits.de</a>
<a class="moz-txt-link-freetext" href="http://schmitzbits.de">http://schmitzbits.de</a></pre>
  </body>
</html>