I want to measure amplitude of a sine wave input precisely with a limited resolution ADC.

As an example suppose that I have $1\textrm{ MHz}$ pure sine wave input to the $320\textrm{ Msps}$ $10$-bit ADC. I beleived there is many redundancy in data and with some signal processing I could get more Precision than $10$-bit.

Is there any way that I can do this without any change in circuit, like adding noise or other hardware change?

  • $\begingroup$ What is your target precision of the measurement? Will that sine wave have a fixed frequency? Will you know that frequency? What's the allowed duration of observation? What's the inherent noise in the sine wave signal? What's the analog input SNR therefore? $\endgroup$ – Fat32 Jun 28 '17 at 13:20
  • $\begingroup$ @Fat32 Frequency is know but system may suffer from a little phase noise. SNR is 20dB or more but as "duration of observation" can be long enogh (about 20us but if requires it can extended) white noise should not be a concern. $\endgroup$ – pazel1374 Jun 29 '17 at 6:40
  • $\begingroup$ You still don't answer the primary question. What's your target precision? Have you implemented any of the methods Marcus have mentioned? have you considered the ADC limit Dan mentioned about? Is your required precision below or above that? $\endgroup$ – Fat32 Jun 29 '17 at 11:15
  • $\begingroup$ @Fat32 Target precision is at least 16 bit, I will implement all mentintioned methods and post the result but not in the near future. $\endgroup$ – pazel1374 Jun 29 '17 at 12:20
  • $\begingroup$ Alright good. Straightforwardly you may reach 16 bits resolution by using M=256 x oversampling. Note that your sine wave has an extremely narrow bandwidth, and by using bandpass sampling or other methods suitable for sampling of periodic signals, you can reduce the actual sampling rate quite below what's required for 256X oversampling of 1 Mhz baseband signal bandwidth. $\endgroup$ – Fat32 Jun 29 '17 at 12:38

A sine wave has infinitesimally little bandwidth. By rotating, filtering appropriately and decimating, you can reduce the sample rate very much.

Each of these filtering operations is typically a summing operation, in which you "average" out noise (which isn't your main concern), but also get a more precise estimate for the amplitude.

Decimation in DSP is very commonly done. You'd probably want to do that anyway – 320 MS/s is really no fun to deal with, and you don't need that bandwidth.

Of course, you can also correlate with a synthesized sine, and measure the correlation coefficient to get the power/amplitude.

Other options are things like proper spectral estimators – there's a lot to choose from, including Welch's method, or Pisarenko-based approaches. Especially if your signal is noisy, these might be interesting, but it really depends a lot on what exactly you're measuring and how you model your noise.

  • $\begingroup$ Thanks for your answer, correlate with a synthesized sine sounds good. Noise isn't a concern as I can measure sine wave over and over and average on that. I should insprect the other method you mentioned. BTW If it's ok with you I wait for other answers for a while. $\endgroup$ – pazel1374 Jun 27 '17 at 22:07
  • $\begingroup$ In the end I'm wondering how many bits these methods can improve in my configuration $\endgroup$ – pazel1374 Jun 29 '17 at 6:51

To add to Marcus' good answer, the decimation Marcus mentions WILL increase the number of bits, down to the Spurious-Free Dynamic Range (SFDR) of your ADC. Also if you can modify your sampling rate so that it is incommensurate with your signal of interest: 320 MHz is an integer multiple of 1 MHz, so you will ...to the extent your input signal is coherent with your sampling clock ... only land on the same 320 samples in one cycle of the sine wave. This pattern repetition will lead to spurs (in this case at harmonics of 1 MHz) and cause quantization in time (if you were concerned with delay precision). By choosing a sampling clock that is incommensurate, the samples will roll over the sinewave, and since your input signal and sampling clock will be decorrelated the harmonic spurs will be significantly reduced.

For more details on how your precision will be increased by oversampling in this case with a traditional ADC, see What are advantages of having higher sampling rate of a signal?

  • $\begingroup$ The sine wave frequency can be change at will. so using a 1.33MHz sine wave should do the trick. Thanks in advance $\endgroup$ – pazel1374 Jun 29 '17 at 12:26
  • $\begingroup$ If you actually go through and do the spectral comparison, please do post the results as will be interesting how much of a difference it actually makes given you high ratio of sampling rate to signal. $\endgroup$ – Dan Boschen Jun 29 '17 at 14:48

It can be done by the least square fit of the signal to the sine wave

Signal(A, Phi, W, t) = A * sin(2 * PI * W * t + Phi)

You have three parameters to fit here:

A - signal amplitude
W - signal frequency
Phi - signal phase

If you know frequency already, there are just two parameters to be fitted.

Calculating the root-mean-square deviation you can get evaluation of the precision of the amplitude calculation


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.