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
MATLAB GMSK simulation
Started by ●February 8, 2007