Not a member?

# GSM (GMSK) power spectrum equation

Language: Matlab

Processor: Not Relevant

Submitted by Markus Nentwig on Sep 18 2011

# GSM (GMSK) power spectrum equation

A simple, empirical model for the power spectrum shape of a GMSK-modulated GSM signal, generated according to 3GPP TS 45.004 section 2 on a signal stream without slot structure.

The picture shows the model equation, compared against a simulated result with a link-level implementation of the modulation procedure from TS 45.004.

One possible use case is as a "matched filter" for power measurements. For example, apply the calculated frequency response as weighting factor to a measured / simulated spectrum and integrate between the first nulls.

The equation can be also convenient to create illustrations, for example.

The constant term should be adjusted, depending on the particular application.

Spectral emission masks can be found in 3GPP TS 45.005.

% ************************************************************
% Spectrum model for GSM signal
% Markus Nentwig, 2011
% based on 3GPP TS 45.004 section 2 "Modulation format for GMSK",
% assuming no additional filtering and an infinite-length
% symbol stream (no slot structure)
% ************************************************************

% ************************************************************
% Parameters
% The "baseline" serves as a gentle reminder that the model
% is only valid near the center frequency.
% the particular transmitter used.
% If not available, assume that spectral emission mask requirements
% are met.
% ************************************************************
BW = 285e3;
BW2 = 186e3;
baseline_dB = -76;
% baseline_dB = -999 % disable the constant term

% ************************************************************
% empirical GSM (GMSK narrow-bandwidth pulse) model equation
% ************************************************************
f = (-500e3:1e3:500e3)+1e-3;
gaussPart = exp(-(2*f/BW) .^2);
sincPart = sin(pi*f/BW2) ./ (pi*f/BW2);
flatPart = 10^(baseline_dB/20);
H_dB = 20*log10(abs(gaussPart .* sincPart) + flatPart);

% ************************************************************
% plot the spectrum
% ************************************************************
figure(); grid on; hold on;
h = plot(f/1e6, H_dB, 'b'); set(h, 'linewidth', 2);

% ************************************************************
% plot 'a' GSM spectral emission mask
% note, this is only "an" example
% See 3GPP TS 45.005 section 4.2.1
%   "Spectrum due to the modulation and wide band noise"
% section 4.2.1.1
%   "General requirements for all types of Base stations and MS"
% note the warning regarding measuring the nominal signal level!
% ************************************************************
maskX_MHz = [0, 100e3, 200e3, 250e3, 400e3, 600e3]/1e6;
maskY_dB = [0.5, 0.5, -30, -33, -60, -60];

xlabel('f/MHz');
ylabel('PSD/dB');
title('GSM spectrum');

Rate this code snippet:
0

posted by Markus Nentwig
Markus received his Dipl. Ing. degree in electrical engineering / communications in 1999. Work interests include RF transceiver system design, implementation, modeling and verification. He works as senior architect for Renesas Mobile Europe in Finland.