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
- 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 :(
Should I note something for case BT < 0.3?