PCM to PDM conversion

Hi guys,

my is to develop a converter processor, that  transforms a sound signal from PCM (I²C) to pulse density modulatoion (PDM) type.  What kind of DSP or processors can you recommend for this application? I just found several applications (e.g. ADAU7002) that transform PDM to PCM (e.g. for conversion of digital microphones), but not the other way round.

Thanks in advance.

Lukas

  • Hello Lucas,

    You will not find a DSP that can do this. The data needs to be oversampled to a higher rate, OK, so a DSP could do this, but then the leading and falling edges of the data signal need to be modulated with two channels of data. This is not an easy thing to do with a DSP. I think you will need to use an FPGA to synthesize the gates to do this. Setting up the code to do this is not my specialty so I cannot help you with that part. Perhaps there is some tutorial or explanation on this topic on the web somewhere.

    Now that all said, we do have the ADAU1772 which will take in serial data and it can be routed to a stereo PDM output. The pins on this part is limited so to use the PDM output you need to use the CLKOUT and PDMOUT pins. These are multiplexed with other functions and one of them is the ADC digital outputs. So when using the PDM output you will not be able to send the ADC data out of the serial port. You can still use the ADC data internally in the part but you would not be able to send it out for processing. So have a look. I think you will find it is interesting. It is one of the few parts we have that can do PDM output. It may be the only one, I would have to look further into older parts to look for others.

    Dave T

  • Hi Dave,

    thanks a lot for your suggestion. I will not need the ADC data out, just the PDM out, so I guess it would be fine.

    So if I connect a PCM signal via S/PDIF to the ADAU1772, can I do the signal processing with sigma studios in the DSP core and send it as a PDM signal to the PDM output?

    Lukas

  • Hello Lukas,

    So the I2S output (PCM) of a SPDIF receiver can be read in using the serial port of this part. This part will not read an SPDIF signal directly.

    Then you can process this signal but this DSP is VERY limited. It is basically a filter engine so you can do some filtering, volume and mute controls and some basic limiting, summing but not much more. But, it will get you the PDM output you are looking for. The other cool thing about this part is that the serial port goes through a sample rate converter. So it will just follow whatever rate you feed into it when it is a slave. As a master you are limited to the register settings for sample rates. So run it as a slave off of the SPDIF and it will reclock and follow the sample rate of the SPDIF. Very handy! It can run off of its own crystal for master clock or you can feed it master clock from some other source. They do not need to be synchronous since there are the ASRCs.

    The part also has headphone outputs and you can use them at the same time as the core has four outputs so two can go to the PDM modulator and the other two to headphones. There are also provisions for external GPIO functions like mute and volume control. But pins are limited so you have to study the pin usage to see if it can be done.

     

    Dave T

  • Hi Dave,

    thanks for your hints, I bought the ADAU1772 and tested it. Basically it sounds great, also the PDM output seems to work. Do I have a possibilty to vary the pulse width with this device? Is it also possible to change the PDM output voltage?

    Thanks.

    Lukas

  • Hello Lukas,

    You will not be able to vary the pulse width of the PDM output with the exception of the actual PDM modulation.

    When you ask about the output voltage, I presume you are talking about the level of the digital PDM signal and not the signal encoded into the PDM stream correct?

    The output voltage is derived from the IOVDD pin. This applies to all digital pins on the part. So you can run the part with an IOVDD from 1.71V up to 3.63V.

    Dave T