Hi Ryan,
So truncate is actually kind of hard to decide on. In general, I've had
mixed results with regard to using round-to-even, versus "truncate, but
use one extra bit". I think that the round choice is more important on
a coherent application, but this is still guesswork.
Saturate is much easier. Anytime you saturate, your snr is basically
ruined. It's like clipping your ADC. In DSP land, it's like adding a
huge delta function at each saturate/wrap point (bigger delta for a
wrap). Do it once in a thousand times and your SNR is instantly down to
~30 dB. That being said, the rule of thumb is "never, EVER clip any
part of your signal chain". So its reasonable to use wrap... since once
you saturate, it's so bad (and obvious) that using saturate isn't even
important anymore.
With bit growth, I used to go for an analytical solution -- or even just
a strong rule-of-thumb. I have a few of the latter nowadays, but I
pretty much just do robust SNR analysis against expected values, reduce
until I'm just marginal and then add back 2-3 bits to be safe.
Saturation and quantization noise for noise-like signals are
intimately related. As you comment above when you clip you
add a delta function, which is the same as wideband noise.
So long as that wideband noise does not exceed the quantization
noise you're doing ok.
http://www.ovro.caltech.edu/~dwh/carma_board/digitizer_tests.pdf
http://www.ovro.caltech.edu/~dwh/wbsddc/correlator_efficiency.pdf
In these documents you will see noise power ratio (NPR) plots.
How does this factor into anything we care about? Well, the
"correlator efficiency" of say a 2-bit correlator, or 2-bit
correlator with deleted inner products is ~87%. This efficiency
comes about not due to the loss-in SNR due to heavy quantization,
but due to the non-linearity in the correlation estimate caused
by the heavy quantization.
Anyway, a certain level of saturation is fine. It occurs when you
sample the input signal, and it should also be happening when you
requantize (saturate and round) signals within the DSP processing
pipeline.
Check out this tutorial for a discussion of rounding techniques
and why only convergent (bankers) rounding should really be used
http://www.ovro.caltech.edu/~dwh/correlator/pdf/ESC-104Paper_Hawkins.pdf
Eg., check out the comparisons of all the MATLAB rounding methods
in Figure 13 on page 26.
Wrapping should never be allowed in a DSP chain. Truncation adds a
bias (keeping more bits just decreases the bias) so should not be
used in applications where you care about the DC offset, eg.
complex-valued baseband processing. Re-quantization stages should
saturate and convergent round. If you're saturating "too hard",
then that is an error in the power-detection and scaling logic
preceding the re-quantization stage.
I don't mean to start a DSP flame war, I just thought you might
like to hear an alternate opinion :)
Cheers,
Dave