Hello all,
I am an EE university student and want to simulate the physical layer of a
GSM communications system in MATLAB. I have studied several papers and
resources on the web,but I think that I am missing something. Below, I
will try to illustrate my approach, which tries to follow the quadrature
baseband method presented in
http://www.emc.york.ac.uk/reports/linkpcp/appD.pdf, pages 6-11. Could you
please read through and point out any errors that you spot ?
1. My function processes 148 bits. In the GSM 05.04 document, it states
that the Dirac pulses (output of the differential encoder) excite a linear
filter with a rect repsonse. The way I do this is replace each of the 148
dirac pulses (1 or -1) with a train of 10 similar values (e.g. [1 1 1 1 1
1 1 1 1 1]) corresponding to a period T = 3.69*10^-6. This would
correspond to sampling the "continuous" square wave at 10x the frequency.
The result is a (1x1480) matrix called "wave".
2.Next step is to filter "wave" with a Gaussian filter. I do this using
the following functions:
T = 3.69*10^-6;
B = 0.3/T;
sigma = sqrt(log(2))/(2*pi*B);
time_index = -T:(T/10):T;
%the 10 has to do with sampling the "continuous" square wave at 10x the
frequency
H = (1/sigma)*(1/sqrt(2*pi))*exp((-time.^2)./(2*sigma^2));
b = conv(H,wave)
b = b(1:1480);
This part is probabaly wrong, but I cant figure out how to do it properly.
Is it correct to keep only the first 1480 values of the resulting
convoluted signal ?
3. Next step is integration of the resulting waveform. This is done using
the cumtrapz (cumulative trapezoidal numerical integration) function:
time_index2 = 0:(T/10):((148*T)-(T/10)) ;
c = cumtrapz(time_index2,b);
%the 10 has to do with sampling the "continuous" square wave at 10x the
frequency
Is this what I am supposed to be doing ?
4.Next step is I/Q decomposition:
I = cos(c);
Q = sin(c);
5.Final step is the FM modulation:
f_c = 900*10^6;
m = (I.*sin(2*pi*f_c*time_index2)) + (Q.*cos(2*pi*f_c*time_index2));
Another question that I have is: since the modulating frequency is very
high (900MHz), does that mean that I need at least 1800Msamples++ per
second in order to accurately plot the result ?
Please help me by explaining how you would go about implementing this. Is
what I am doing completely wrong ?
Thank you in advance for your time, I really appreciate it !
John