I have to compute the some operations (say sum and subtraction) between 2 signals. I have data in PDM domain: x1_pdm(t)=[0101011....]; and x2_pdm(t)=[0101011....]; What I do now is: convert x1_pdm and x2_pdm in PCM domain (low pass filter and decimation factor M=64) and that compute the sum and difference (or any other operation). Is it possible to perform this sum and sub in PDM domani with bitwise operation ? and then compute one pdm to pcm conversion... thank you mattia
Yes, this is sort of possible. While PDM signals are full of high-frequency noise, at lower frequencies the "density" domain is limited to signals representing values from -1.0 thru +1.0. This makes it difficult to implement true addition/subtraction since 1+1 exceeds the range of possible outputs, however if the output signal is scaled back into the allowable range, so averages like 1/2(A+B) and 1/2(A-B) can be calculated by multiplexing the two bitstreams into a single output stream (at twice the bitrate).
The best explanation of this I've seen was in a series of five articles titled "Signal Processing in the Density Domain" published in 2011 by Dave Van Ess in Electronic Design magazine. The web copies of these articles exist but the equations and figures from the original versions seem corrupted by the web's evolution over time. I'll include this link to the finale, Part V which wraps up how addition/subtraction and multiplication work.
While not easy, the missing figures can be retrieved from the internet wayback machine.
x1_pdm(t)=[0101011....]; and x2_pdm(t)=[0101011....];
? Are the bits to be interpreted as a binary integer that tells us how wide the PDM pulse is? $\endgroup$ – Dilip Sarwate Sep 2 '14 at 13:22