So let me layout my question and the thought process on solving it.

Say, we have some system, and we want to see how deterministic the system is. By that I mean, I mean if I put some signal (real valued) of a fix frequency 100 times, how constantantly I get the same output(I am interested in phase).

Now lets say, I put 1 MHz tone (real) 100 times in my system, and i gather the data(real valued) at the system output, I want to measure/quantify how deterministic/repeatable my data is. Assume no noise. The only concern in my entire system is the ADC sampler which has some random process on it, causing cycle slips. So you see, I would have some phase mismatch between data. Assume the data is a FMCW radar. For chirp to chirp this sampling mismatch happens, as the sampler is reset every chirp. This would not cause any influence in range fft (since that is independent of small phase change) ... but the doppler fft would have reduced SNR.

So i want to quantify the problem coming out of the sampler cycle slips. One idea would be to take the Doppler fft and quantify the reduction of SNR, however i want my precision in ADC sample rate (say 1ns) . I don't see how i could set a threshold on the FFT plot , to say, with SNR reduction of 30 dB means-->1 cycle slip had occurred.

The other way is to take those real valued 100 signals... do the Hilbert transform, get the phase, convert to time(we know the frequency), and see how whats the varition like, and set the limits to +/- ts(adc sampling time).

See the code :

% Randomly add phase error +/- 1ns(=1 adc cycle slip, we dont know if this occurs in system, 
% this is what we want to find out)
 phi_error_rad=(t_error*2*pi*fin*round(-1 + 2*rand(1,1))); 

for i=1:100
   sig(:,i)=cos(2*pi*fin*t + phi_error_rad);
   inst_phase(:,i) = unwrap(angle(h));%inst phase
   inst_freq(:,i) = diff(unwrap(angle(h)))/(2*pi)*fs; %inst frequency


As you can see in the figure the phase is linear, and as expected its between +/- 1 ns.

enter image description here

So my question would be, is this sufficient to say, well the phase(time) over 100 iterations remains within +/-1 ns, my system is within this limits. ?

What else could be done to make it robust ? any other ideas ?
This is just a model ofcourse, in real data, we have to find out if cycle slips are occuring... is this method robust for that ? any other suggestions. ?


  • $\begingroup$ 1 - Your ADC will add noise. Rouhgly there's 2 kind of noise. "Analog noise" which is roughly white and "quantization noise". At the moment, you can simply consider quantization noise to be white noise too. 2 - Your ADC should have a low-jitter clean clock. 3 - Your ADC is probably not synchronized to your generator so this will create a "random initial phase". This initial phase should be a uniform distribution between 0 and 2*pi $\endgroup$
    – Ben
    Nov 12 '21 at 16:43
  • $\begingroup$ Hi Ben, thanks for the reply.. .dont worry about the noise sources.... the 3rd point is exactly what we want to verify ... we have a sync mechanism, and we want to check if there are some slips there $\endgroup$
    – BandW
    Nov 12 '21 at 16:52
  • $\begingroup$ If your sync mechanism only for the frequency or both phase and frequency? If only frequency, the the initial phase should be random but should be the same for all acquisitions. $\endgroup$
    – Ben
    Nov 12 '21 at 17:10
  • $\begingroup$ @Ben my sync mechanism ensures that ADC clock and system clock (both are at same rate but ADC has a much cleaner one) are locked to the same phase for all acquisitions. $\endgroup$
    – BandW
    Nov 15 '21 at 8:08

Your Answer

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

Browse other questions tagged or ask your own question.