1
$\begingroup$

We are using a 16-bit DAC for a waveform generation between to $500\textrm{ MHz}$ with the sampling frequency of $1200\textrm{ MHz}$. The specification for the waveform generation is $10\textrm{ Hz}$ frequency resolution throughout the band $>60\textrm{ dB}$ SFDR. The spectral performance of the DAC is fine (more than $65\textrm{ dB}$ SFDR) for the frequencies which is satisfying the condition:

$$\frac{F_s}{F}=k \quad\big\vert\quad k\in \mathbb Z$$

The frequencies which is not satisfying the above condition yields some spurious which is not meeting my SFDR specification. Since the samples of every cycle will not be same, it's creating an envelope over the waveform, due to a phase values repeating itself periodically over a number of cycle. This envelope causing a spurious.

If we generate a frequency of $200.01\textrm{ MHz}$ in MATLAB with $F_s = 1.2\textrm{ GHz }$, we can clearly notice the envelope with periodic time period of $16.65\textrm{ $\mu$s}$ ($60\textrm{ kHz}$). The figure below is the MATLAB time-domain plot for $200.01\textrm{ MHz}$.

Time Domain Plot for 200.01MHz with 1.2GHz Fs

With my DAC, I'm getting a spurious at $\pm 60\textrm{ kHz}$ and $\pm 30\textrm{ kHz}$ apart from my generated frequency($F$).

The image below is the DAC output spectrum for $200.01\textrm{ MHz}$ captured with spectrum analyzer.

DAC Output with Spectrum Analyzer

Is the spurious observed is due to the envelope?

MATLAB Simulation Code;

Fs = 1200e6;    %Sampling Frequency                                          
T = 1/Fs;       % Clock Period                                               
N = 2^18;       % No. of samples                                             
t = (0:N-1)*T;  % Linear time interval                                       
F = 200.01e6;   % Required Frequency                                         
phase = 2*pi*F*t; % Consecutive Phase values in rad                          
sig = sin(phase); % Time Domain Signal                                       
figure;                                                                      
plot(t, sig), xlabel('Time in Sec'), ylabel('Amp'), title('Time Domain Plot for 200.01MHz');                                                             
wrap_phase = mod(phase, 2*pi);                                               
figure;                                                                      
plot(t,wrap_phase), xlabel('Time in Sec'), ylabel('Phase in rad'),           title('Phase values for 200.01MHz');      

Suggestions are greatly appreciated.

Loganathan N

$\endgroup$
  • $\begingroup$ For detailed analysis on this issue kindly look at the below link dsprelated.com/thread/1614/spurious-when-fs-f-is-not-an-integer $\endgroup$ – Loganathan N Jan 27 '17 at 4:42
  • $\begingroup$ Cab you provide your MATLAB simulation code? $\endgroup$ – MimSaad Jan 27 '17 at 7:25
  • $\begingroup$ @MimSaad, Fs = 1200e6; %Sampling Frequency T = 1/Fs; % Clock Period N = 2^18; % No. of samples t = (0:N-1)*T; % Linear time interval F = 200.01e6; % Required Frequency phase = 2*piFt; % Consecutive Phase values in rad sig = sin(phase); % Time Domain Signal figure; plot(t, sig), xlabel('Time in Sec'), ylabel('Amp'), title('Time Domain Plot for 200.01MHz'); wrap_phase = mod(phase, 2*pi); figure; plot(t,wrap_phase), xlabel('Time in Sec'), ylabel('Phase in rad'), title('Phase values for 200.01MHz'); $\endgroup$ – Loganathan N Jan 27 '17 at 8:03
  • 1
    $\begingroup$ it would be better to put it in body of your question so that others can see it. $\endgroup$ – MimSaad Jan 27 '17 at 8:26
1
$\begingroup$

As people who responded in DSPrelated to your question, I believe the fluctuation which are seen are MATLAB plot artifacts not a real envelope. Since you doubt if Fourier analysis could help us to see the spurious signal, I perform a more elaborate spectrum sensing method (MUSIC) to identify if there is other frequency contents in the signal through the code below:

s = 1200*10^6;%Sampling Frequency
T = 1/Fs; % Clock Period 
N = 2^12; % No. of samples
t = (0:N-1)*T; % Linear time interval 
F = 200.01*10^6; % Required Frequency
phase = 2*pi*F*t; % Consecutive Phase values in rad 
sig = sin(phase); % Time Domain Signal 
%% SPECTRUM ESTIMATION
X=corrmtx(sig,200,'mod');    % MUSIC SPECTRUM ESTIMATION
[W,P] = rootmusic(X,4);
f=Fs*W./(2*pi); %Frequencies 
unique(abs(f)) %Show Frequencies
P              %Power of those frequencies

if you check out the P for each frequency component, you'll see only the main frequency (here 200.01MHz) has non-zero value.

$\endgroup$
  • $\begingroup$ How can we confirm with MATLAB Spectrum plot? If you're taking FFT for the generated signal, the FFT Fucntion e^(-j*2*PiKn/N) will also generate same envelope kind of thing for 200.01MHz. So the Generated frequency will exactly correlates with FFT function. Hence we'll not get the spurious. $\endgroup$ – Loganathan N Jan 27 '17 at 9:28
  • $\begingroup$ The envelope is there in the time domain. That I've checked with oscilloscope.. $\endgroup$ – Loganathan N Jan 27 '17 at 9:34
  • $\begingroup$ I doubt if your argument is wrong, however MUSIC spectrum estimation is not based on FFT, and it does not show anything. $\endgroup$ – MimSaad Jan 27 '17 at 9:56

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.