My previous questions
- gmsk: suppression of higher-frequency spectral components
- Gaussian filter: The best parameters for an implementation
I study gmsk modulation last 2 month and tested my simulation with only BT = 0.5 or 0.3 GSM standard.
Matab code og GMSK modulation I use
function [y, bt, phi, I, Q, ht] = gmsk_mod(a,M,BT)
Tb= 2;
Ts = Tb/M;
Fs = 1/Ts;
a=a(:);
ct = kron(a,ones(M,1));%
% Gaussian filter
k=4;
B = BT/Tb;
t=-k*Tb:Tb/M:k*Tb;
h = sqrt(2*pi*B^2/(log(2)))*exp(-t.^2*2*pi^2*B^2/(log(2)));
ht=h/sum(h);
% Modulator
bt = conv(ht,ct,'full');
bt = bt/max(abs(bt));
phi = filter(1,[1,-1],bt*Ts);
phi = phi *0.5*pi/Tb;
I = cos(phi);
Q = sin(phi);
% base band signal
y = I - 1i*Q;
% Spectrum
spectrum = 10*log(abs(fftshift(fft(y))) / length(y));
precision = Fs/length(y);
f = linspace(-Fs/2+precision/2, Fs/2-precision/2, length(y));
figure
plot(f,spectrum)
title( [ 'GMSK Spectrum , M = ', num2str(M),', ', 'BT = ', num2str(BT),', ', 'k = ', num2str(k)]);
xlabel(' Frequency')
ylabel(' Spectrum, [dB]')
end
My questions:
- Under Question 1, Mr Müller wrote me "you did not reach it ( - 65 ...-70dB suppresion) for a BT=0.5 Gaussian filter, at all. You reached it for a sinc-filter with slightly Gaussian window. As you said yourself, your first filter is not Gaussian at all after truncation. You broke it. "
Does it mean I have a limit for truncation?
Signal after convolution with the truncated Gaussian filter will look like abs(sinc)
: signal is oversampled to rectungle pulse, right ?
- Under the question 2, User "Anna Koroleva "wrote the following comment:
Hi guys! If I want to "improve" sidelobs, for example I want to reach -70dB in case BT = 0.25, what do I need to do? I dont see any difference in the implementation gmsk modulation if BT = 0.5 or BT = 0.25. But I see you reach -70dB with BT =0.5, but it is not possible for BT = 0.25. I am note sure if we need to increase the truncated length of the gaussian filter.
For GMSK BT =0.25 I use Gaussian filter with truncated length k = 4
and oversampling ratio M = 4
I test it with precoded NRZ signal:
N = 1000;
% input data
a = randi([0,1],N,1);
% nrz
ak = 2*a-1;
% precoded data
ak_1 = zeros(size(ak));
ak_1(1) = 1;
for i = 1: length(ak)-1
ak_1(i+1) = ak(i);
end
for i = 1 : length(ak)
akp = (-1)^i .* ak.*ak_1;
end
M = 4;
BT025 = 0.25;
[y_025, bt_025, phi_025, I_025, Q_025, ht_025]= gmsk_mod(akp,M,BT025);
The spectrum of baseband signal which is output of the GMSK modulator
As you can see, -65 ... -70dB suppression of higher-frequency spectral components is not achieved at BT=0.25.
Have I mistaken in my simulation? Now I am totally confused :(
or
Should I note something for case BT < 0.3?