I have time series data from a 100 MS/s ADC, and I would like to calculate the RMS noise and the voltage spectral density (VSD), and see consistency between the two.
I'm using a 16-bit ADC, and the data is in bits, so data point can be any integer in [-32768, 32767]. The noise of the ADC channel is 3.6 LSB.
I calculate the VSD by taking the discrete Fourier transform (I use Fourier in Mathematica). I drop the data at frequencies above the Nyquist frequency (50 MHz), and take the magnitude of each term (because I don't care about the phase for this measurement).
I normalize the data FFT by calculating the FFT of a 1 MHz sine wave with 1 LSB RMS amplitude: SQRT(2)SIN(2 PI 10^6 t), then I use the height of that peak (which ends up equal to 127.867) as a normalization factor. So if f is the FFT magnitude of the data the normalize FFT is f/127.867.
I thought this normalization would take care of any factors of 2 or PI from the Mathematica Fourier function, but the VSD does not make sense. The VSD is flat, white noise; I don't sample at low enough rate to see the 1/f noise at low frequency. The noise level is 0.03 LSB. This is about 60 times larger than I expect the real VSD noise level to be, based on the 3.6 LSB RMS noise value since:
(RMS noise) ~= VSD noise level * SQRT(f1-f0) = 0.03*SQRT(50x10^6) = 218 LSB.
I feel like I'm missing something fundamental here, but I'm not quite sure what's going wrong. Any feedback on what I do here, and how to get closer to a consistent VSD?