PCM vs PWM for low distortion sinewaves

Jan 30, 2008 6 Replies

I'm attempting to generate low distortion sinusoids (in the 200Hz - 3KHz range). There will be a fixed number of amplitude changes for each period regardless of the frequency being generated.



If we keep the number of pulse width or amplitude changes per period the same (let's say 32 per period), and the resolution the same (16 bit DAC or



16 bit pulse width resolution), and the final filtering is the same (2 pole) and constant (i.e., not tracking) -- do you think that I can get lower distortion using 16 bit PCM or 16 bit PWM?

Thanks for your thoughts.



Bob


If the sample rate is the exact multiple of the frequency of the sinewave, then all of the distortion will be concentrated at the harmonics of the sinewave. This is not good.

So, you have the 2nd order LPF with Fc at ~3kHz, hence the THD is going to be as bad as 20% or so at 200 Hz at the best.

The PCM will generate less artifacts then PWM. For the PWM, you will have to predistort the sinewave, and it will be a lot of trash above Nyquist.

Vladimir Vassilevsky DSP and Mixed Signal Design Consultant

formatting link

Vladimir,

Thanks for your help. You raise some good points -- especially regarding the distortion at low frequencies.

The most important factor is frequency accuracy. I need to be within 0.3%.

What I can do is to increase the samples per period as the frequency goes down.

Another alternative is to have a tracking filter (a switched capacitor filter comes-to-mind). This will result in higher power, however, and this thing will be battery operated.

Regards, Bob

John,

I've played with a form of delta-sigma before (this so-called "adaptive delta modulation"). At that time, it required an asic.

The thing I'm working on is a little battery operated unit and (currently) uses a small micro controller running at 16MHz (max). The micro has some very convenient stuff for doing PWM. I'll have to see whether or not I can do delta-sigma in software because I fear that adding an external part would result in too much power consumption.

Thanks, Bob

Good points here. I suspect the original poster is going to do a simple table look-up, hence the sample rate being a multiple of the sine wave to keep the look-up table smaller. If a coordic was used, the sample rate could be a non-multiple of the sine wave.

3KHz

period

sinewave,

the

(2

to

have

the

If frequency accuracy is boss, I'd be inclined to generate the sines using direct DDS via 8 bit adds, a lookup table and ADC. harmonic distortion will be the same at 200Hz as 3kHz. Clock noise should run at the 100's of kHz, hence trivial filtering.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required