# Optimizing dynamic range for acquisition of noisy signal

Is there a good rule of thumb for setting the gain of a noisy signal before digitization? Say I have a 16-bit ADC with a ±1V range; to what level should I amplify the noise floor of my signal relative to the resolution of the ADC.

This ADC has nominal resolution of 31μV and my hypothetical small signal lives in 100nVrms noise within the sampling bandwidth. How much amplification should I apply before the ADC so that I can increase my SNR through oversampling.

• Well, I would say you should use all the linear range of the ADC, and try to filter out as much noise as possible, so amplify your signal so that it is around 1Vpp in amplitude. Commented Jun 5, 2017 at 18:17
• You'd try to use as much of the ADC range as possible. But: you usually would try to avoid running into clipping as much as possible, so you'd also avoid that signal + noise > max_ADC. Hence, this depends on your mathematical noise model and, even more so, on what you actually need to observe – in some applications, clipping is more tolerable than bad resolution in low-amplitude situations, in others, it's the opposite. Commented Jun 5, 2017 at 18:17
• How much noise does the 16 bit sampling inherently produce (irrespective of gain) and how much gain do you need so that this noise is swamped by the noise in the signal. I would say that if your gain was set so that the sampling noise hardly contributed anything to the overall noise then that would be enough. Commented Jun 5, 2017 at 18:40
• It depends on your frequency of interest, sampling rate and how Gaussian the noise is. If your noise has 1/f noise and the mean is moving around then you might not benefit from oversampling. You would have to give details of the system Commented Jun 5, 2017 at 18:45
• The signal is heterodyned so 1/f noise should be minimal. The source sensor has intrinsic Gaussian noise but is dominated by 60Hz and harmonics. I am struggling to meet the demands of a high resolution sensor and also the widest possible dynamic range to avoid clipping.
– Mike
Commented Jun 5, 2017 at 19:58

Your signal has a dynamic range (max to noise level). Your ADC has a dynamic range (full scale to noise level).

Let's say your ADC has a larger dynamic range than your signal. Congratulations, you have a choice of gains to use. The maximum usable gain is the ratio of the max and full scale, use any more and it will overload your ADC. The minimum useful gain is the ratio of your noise levels. Using less gain will further degrade the noise level on your signal. Pick a gain somewhere in that range and rejoice. You may want to think whether there's any way you can improve your signal noise at source.

Let's say your signal has a larger dynamic range than your ADC. The range of gains suggested above has just vanished to nothing. The only thing you can do is set the gain at the ratio of the max signal levels, as an overloaded ADC is a non-working ADC. You have to suffer the fact that the ADC limits your noise, and you may want to think about getting a better one, or averaging readings to improve the noise.

Unless - the signal isn't at its maximum all the time, but only sometimes. Then you may be able to use switched gain to improve things. Set the gain to the ratio of the present signal maximum and your ADC full scale. If it overloads, turn the gain down. If the reading is persistently below some threshhold, say half scale, then turn the gain up to improve the noise. If you can tolerate the downtime of the occasional overload, then this works. There are variations on this, for instance use two ADCs with different gains. Choose the largest signal that isn't overloaded.

• I agree that the signal noise floor should be kept above the ADC noise. I have struggled though to understand how much dynamic range I need in the signal itself. Say that I only care to acknowledge the presence (and timing) of a short pulse signal above the 3σ level. I only need a few steps of the ADC to trigger on this event and with low gain I can also tolerate large spikes. On the other hand, if the gain is high, large spikes will just clip but still be useful event markers.
– Mike
Commented Jun 6, 2017 at 17:36

How much amplification should I apply before the ADC so that I can increase my SNR through oversampling.

At least enough to read the noise (including internal noise in the ADC). If the total noise is 100nV then you need to amplify it to 31uV. Then you have a 1 bit sample that can be 'oversampled' to extract a signal which is below the resolution of the ADC.

This will provide the greatest dynamic range. If you don't need this much this range then amplify the signal until the largest signal + noise is slightly below 1V. Avoid clipping because this will lose information and distort the signal during noise peaks.

Some years back I implemented magnetic beacon positioning receiver, using 600,000X (116dB gain) in the 80Khz to 150KHz region. With considerable use of "local battery" power to the various gain modules, there was no instability of oscillation. The maxgain output, using 6volt lantern battery was about 1volt RMS "random" noise, with some obvious clipping. Was that a problem? Dunno. For various reasons, the project was put on hold. However...........

The gain was switchable in 6dB steps, from 20X to 600,000X: used 1x/2x/4x/8x upfront module followed by 8x/8x and 64x. Purpose was to keep the ADC loaded between -12dB and -6dB, to always allow for noise spiking so the downstream FFT filtering would get linear version (refrigerator motor noise, etc) of whatever Hfield interferences perturbed the loop antenna.