Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Message

Re: [lpc2000] Re: 44Khz 16-bit audio

2005-01-20 by Paul Stoffregen

For audio, a signal to noise plus distortion spec is common.  That's 
what 6 dB per bit (with an ideal converter) is all about.  Human hearing 
is complex, and most ears aren't very sensitive to many types of 
distortion.  Harmonic distortion, for example, really isn't noticable 
(to most people) at 0.1%, which is only -40 dB.  But noise at -40 dB is 
quite noticable and very annoying, especially if it is tonal (eg, 1 kHz 
sine wave).

All DACs output a signal that is a ratio of some reference.  Most 
likely, the single largest factor that will impact the perceived sound 
quality from the internal DAC is the quality of its reference.  If the 
reference voltage varies, and those changes have any spectral energy in 
the audio range, the output will probably seem to have "wierd sounds".

Even though the DAC's best theoretical perfornance is 60 dB S/N+D, as 
long as it's monotonic and the reference is good, most of that will 
likely be less noticable distortion , rather than annoying noise.  A 
quick check is to simply output a DC signal (just write the same value 
to the DAC over and over), and measure the noise... or run that "signal" 
into an amplifier and listen to it in a quiet room or via headphones.  
The "hiss" associated analog cassette tapes is about -50 to 60 dB, for 
the sake of comparison.


There are techniques to increase resolution using oversampling.  
Oversampling generally assumes there is noise, and by collecting more 
samples than necessary, you can low pass filter (or average together) 
many samples to get one more accurate from many lower accuracy ones.

In the context of using the 10 bit DAC, you could (in theory) output 
twice times as many samples per second as necessary.  You'd attempt to 
output 11 bits by driving the DAC first with all but the lower bit, and 
then increment it during the second sample if the least significant bit 
is a 1.  Of course, you'll need an analog low pass filter.  Don't forget 
to use low-noise analog parts to avoid adding noise, and capacitors with 
highly linear voltage/charge (capacitance) to avoid adding distortion 
(eg, NPO ceramic or certain poly films).

In practice, this probably won't necessarily work well, because the 
linearity of the DAC output steps isn't perfect.  This is often called 
differential nonlinearity


Sigma-delta converters use an analog trick to "shape" their 
noise+distortion, and they run very fast so there's lots of unnecessary 
spectrum for all that noise and distortion to get filtered away.   It's 
easist and most practical with just 1 bit, because a 1 bit converter has 
only two possible output voltages.... which always fits a perfect 
straight (linear) line.  So it's easy to scale up to very high speed 
(oversampling ratio) without the problem where consecutive conversions 
don't add together as expected.  Together with the noise shaping, the 
massive noise+distortion of using just 1 bit is easy to filter away.  
The important thing about sigma-delta is the noise shaping, which (on 
average) the errors to be concentrated in the higher frequencies... so 
the filtering improves the resolution much more than simply filtering 
oversampled evenly distributed white noise.


If you really need near CD audio quality, your best approach is to use a 
quality DAC chip.  Saddly, these all take high speed serial bitstreams, 
and Philips doesn't seem to have any LPC chips that are designed to 
output the common formats (eg, I2S).  These DACs use phase locked loops 
or other techniques that require a steady clocked bitstream.  It would 
be quite difficult to emulate such a thing from the SPI port, for example.

There is another vendor with ARM7 chips now sampling that does include a 
peripheral that outputs these types of bitstreams, and they also provide 
a DMA-like engine so you can set up a block transfer (avoid burning lots 
of CPU with 44100 interrutps/sec) and a second pending block transfer 
(avoid needing worst case interrupt latency of 22.6 us).  Sorry Philips...

It's possible to build a similar thing in logic using an FPGA... accept 
data into a fifo via the external bus and stream it out to the DAC as 
the clock requires, and interrupt the processor at a low watermark.  But 
that's a lot harder and more expensive than it's probably worth.


Paul





>
>
> > Some of the early CD players worked on this principal. They had a high
> > freq 14 bit D/A. The advantage of this is the improved phase 
> response of
> > the system. Jo public couldn't understand how a 14 bit D/A was 
> giving 16
> > bit performance so I think they stopped doing it.
>
> No, I believe the idea transformed to the extreme with MASH 1 bit
> converters. Sample fast enough and you only need 1 bit (a single high
> speed comparator). Isn't this what sigma-delta codecs use ?
>
> -- 
> Cheers,
> Bruce

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.