Transmit spectrum with phase noise

The earlier posts on phase noise discussed about phase noise in oscillators, conversion of phase noise profile to jitter and the impact of phase noise on the error vector magnitude (evm). This post discuss the impact of phase noise on the spectrum of the transmit waveform.  A simple random QPSK modulated symbols, oversampled and passed through a root raised cosine filtering is used for the simulation.

System Model

Consider a simple system model having both phase noise and thermal noise as show below.

Figure: System model with phase and thermal noise

The received symbol is, , where is the phase distortion in radians,  is the transmit symbol and  is the contribution due to thermal noise The phase is Gaussian distributed with zero mean and variance  radians^2 having a probability density function as, . From the post on phase noise on the error vector magnitude (evm), we know that the

Es/N0 = 40dB

Phase Noise (deg, rms) EVM, dB
0 -40.00
1 -33.93
2 -28.80
3 -25.46
4 -23.03
5 -21.13


Table : Resultant EVM with phase noise and thermal noise

Further, from the post on phase noise in oscillators, it is also known that the phase noise will cause skirts in the spectrum of the carrier.

Figure : Spectrum on the transmit waveform with random QPSK symbols, root raised cosine filtering (oversampling by 4), Es/N0 = 40dB and different RMS phase noise. ObservationsAs can be seen from the above plot, the phase noise elevates the out-of band emissions in the transmit spectrum (from -40dB in the no phase noise case to -21.13dB for the 5 degree rms phase) So it is important to have a lower phase noise to meet the spectral mask specification in addition to minimize the impact on error vector magnitude.

Matlab/Octave code

Attached script computes the transmit spectrum of a QPSK modulated symbol versus Es/N0 for different values of rms phase noise.

% Script for simulating the transmit spectrum of a QPSK 
% modulated symbol affected by phase noise and thermal noise
% ----------------------------------------------------------

clear;close all;
N = 10^5; % number of symbols
os = 4; % oversampling factor

Es_N0_dB = 40; 
phi_rms_deg_vec = [0:1:5];

% root raised cosine filter
t_by_Ts = [-4:1/os:4];
beta = 0.5;
ht = (sin(pi*t_by_Ts*(1-beta)) + 4*beta*t_by_Ts.*cos(pi*t_by_Ts*(1+beta)))./(pi*t_by_Ts.*(1-(4*beta*t_by_Ts).^2));
ht((length(t_by_Ts)-1)/2+1) = 1 -beta + 4*beta/pi;
ht([-os/(4*beta) os/(4*beta)]+(length(t_by_Ts)-1)/2+1) = beta/sqrt(2)*((1+2/pi)*sin(pi/(4*beta))+(1-2/pi)*cos(pi/(4*beta)));
ht = ht/sqrt(os);

for ii = 1:length(Es_N0_dB)
	for jj = 1:length(phi_rms_deg_vec)

	   % Transmitter
	   ip_re = rand(1,N)>0.5; % generating 0,1 with equal probability
	   ip_im = rand(1,N)>0.5; % generating 0,1 with equal probability
	   s = 1/sqrt(2)*(2*ip_re-1 + j*(2*ip_im-1)); % QPSK modulation 

	   % Pulse shaping 
	   s_os = [s ; zeros(os-1,length(s))];
	   s_os = s_os(:).';	
	   s_os = conv(ht,s_os);
	   s_os = s_os(1:os*N);	

	   % Thermal and Phase Noise addition
	   n = 1/sqrt(2)*[randn(1,N*os) + j*randn(1,N*os)]; % thermal noise 
	   phi = phi_rms_deg_vec(jj)*(pi/180)*randn(1,N*os)*sqrt(os); % phase noise
	   y = s_os.*exp(j*phi) + 10^(-Es_N0_dB(ii)/20)*n; 

	   % computing the transmit spectrum
	   [Pxx1(jj,:) W2 ] = pwelch(y,[],[],1024,'twosided');

	   % matched filtering
	   y_mf_out = conv(y,fliplr(ht));
	   y_mf_out = y_mf_out(length(ht):os:end);

	   % error vector 
	   error_vec = (y_mf_out-s);	
	   evm(ii,jj)  = error_vec*error_vec';	
	   theory_evm(ii,jj) =  10^(-Es_N0_dB(ii)/10) + 2 - 2*exp(-(phi_rms_deg_vec(jj)*pi/180).^2/2);


xlabel('frequency, Hz'); ylabel('amplitude, dB');
legend('0 deg rms','1 deg rms', '2 deg rms', '3 deg rms', '4 deg rms', '5 deg rms');
title('spectrum Es/N0 = 40dB, root raised cosine filtering and different rms phase noise');
axis([-0.5 0.5 -50 5]); grid on;

Leave a Reply

Your email address will not be published. Required fields are marked *