Informe Tarea N°1 Neil
-
Upload
johnjairoarangoquintero -
Category
Documents
-
view
8 -
download
0
description
Transcript of Informe Tarea N°1 Neil
-
INFORME TAREA N1
SISTEMAS DE COMUNICACIONES PTICAS
POR:
JOHN JAIRO ARANGO QUINTERO
ID 000015263
PRESENTADO A:
NEIL GUERRERO
MAESTRA EN INGENIERA DE TELECOMUNICACIONES
UNIVERSIDAD PONTIFICIA BOLIVARIANA
MEDELLN
SEPTIEMBRE 24 DE 2010
-
ANLISIS DEL CDIGO EN MATLAB DE LA SIMULACIN N2 En las lneas 8 a 15 se realiza la definicin de variables.
8. Fs = 40e9; % sampling frequency
9. Fb = 1e9; % Bit rate
10. Fc = 5e9; % Carrier frequency
11. Fc1 = 10e9; % Carrier frequency
12. Fc2 = 15e9; % Carrier frequency
13. N_of_sym = 20000;
14. phase_Base = 0;%46*pi/180;
15. Noise_level = 8;
En las lneas 18 a 22 se lleva cabo la generacin de 3 mensajes aleatorios. 18. M = 8; % Alphabet size
19. x = randint(N_of_sym,1,M); %First PRBS
20. x1 = randint(N_of_sym,1,M); %Second PRBS
21. x2 = randint(N_of_sym,1,M); %Third PRBS
22. Nsamp = Fs/Fb;
En las lneas 26 a 29 se realiza la modulacin 8PSK. 26. %y=modulate(modem.qammod(M),x);
27. y = modulate(modem.pskmod(M),x);
28. y1 = modulate(modem.pskmod(M),x1);
29. y2 = modulate(modem.pskmod(M),x2);
En las lneas 33 a 35 se genera el pulso rectangular con sobre muestreo. 33. ypulse = rectpulse(y,Nsamp);
34. ypulse1 = rectpulse(y1,Nsamp);
35. ypulse2 = rectpulse(y2,Nsamp);
En las lneas 39 a 46 se implementa un filtro Gaussiano. Tambien se puede observar el diagrama de ojo de la seal transmitida 39. BT = .4; % 3-dB bandwidth-symbol time
40. OF = Nsamp/2; % Oversampling factor (i.e., number of samples
per symbol)
41. NT = 1; % 2 symbol periods to the filters peak.
42. h = gaussfir(BT,NT,OF);
43. %hfvt = fvtool(h,'impulse');
44. y_up = upsample(y,Nsamp);
45. ypulse_g = filter(h,1,y_up);
46. eyediagram(ypulse_g(1:2000),Nsamp*2); title('Transmission');
-
Diagrama de ojo creado en la lnea 46
En las lneas 50 a 52 se introduce ruido AWGN en el pulso Gaussiano. Tambin se puede apreciar el diagrama de ojo de la seal con ruido 50. ynoisy = awgn(ypulse,Noise_level,'measured');
51. ynoisy_g = awgn(ypulse_g,Noise_level,'measured');
52. eyediagram(ynoisy_g(1:2000),Nsamp*2); title('Noisy Signal');
Diagrama de ojo creado en la lnea 52
-0.5 0 0.5-0.1
-0.05
0
0.05
0.1
Time
Am
plit
ude
Eye Diagram for In-Phase Signal
-0.5 0 0.5-0.1
-0.05
0
0.05
0.1
Time
Am
plit
ude
Transmission
-0.5 0 0.5-0.1
-0.05
0
0.05
0.1
Time
Am
plit
ude
Eye Diagram for In-Phase Signal
-0.5 0 0.5-0.1
-0.05
0
0.05
0.1
Time
Am
plit
ude
Noisy Signal
-
En las lneas 56 a 60 se le implementa a la seal un filtro de acoplamiento en el receptor. Se puede apreciar tambin el diagrama de ojo de la seal en el receptor. 56. ypulse_rec_g = filter(h,1,ynoisy_g); 57. ypulse_rec_g = ypulse_rec_g(Nsamp/2+1:end-Nsamp/2); 58. eyediagram(ypulse_rec_g(1:2000),Nsamp*2); title('Receiver'); 59. % figure, stem(real(ynoisy_g(1:1000))); hold on; 60. % stem(real(ypulse_rec_g(1:1000)),'r'); hold off;
Diagrama de Ojo creado en la lnea 58
En las lneas 65 a 69 se hace muestreo en el receptor con el fin de sacar la constelacin de la seal en el receptor. 65. ydownsamp = intdump(ynoisy,Nsamp);
66. ydownsamp_g = intdump(ynoisy_g,Nsamp);
67. ydownsamp_rec_g = intdump(ypulse_rec_g,Nsamp);
68. scatterplot(ydownsamp); title('Constellation Diagram
Rectangular Pulse');
69. scatterplot(ydownsamp_rec_g,1,0,'r.'); title('Constellation
Diagram Rise Cosine Pulse with filter');
-0.5 0 0.5-0.05
0
0.05
Time
Am
plit
ude
Eye Diagram for In-Phase Signal
-0.5 0 0.5-0.05
0
0.05
Time
Am
plit
ude
Receiver
-
Diagrama de constelacin creado en la lnea 68
Diagrama de constelacin creado en la lnea 69
En las lneas 73 a 75 se hace la modulacin de la seal 8PSK con ruido. 73. z=demodulate(modem.pskdemod(M),ydownsamp);
74. z1=demodulate(modem.pskdemod(M),ydownsamp_rec_g);
75. z2=demodulate(modem.pskdemod(M),ydownsamp_g);
En las lneas 79 a 96 se calcula y se muestra en pantalla la rata de error de smbolo. 79. [num_rec,rt_rec]= symerr(x,z);
80. rt_rec = -1*log10(rt_rec);
81. [num_g_w,rt_g_w]= symerr(x(1:end-1),z1);
82. rt_g_w = -1*log10(rt_g_w);
83. [num_g_wo,rt_g_wo]= symerr(x,z2);
84. rt_g_wo = -1*log10(rt_g_wo);
87.disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')
88. disp(['Error Rate Rectangular: ' num2str(rt_rec)])
89. disp(['Error Rate Gaussian with Filter: ' num2str(rt_g_w)])
90. disp(['Error Rate Gaussian withot Filter: ' num2str(rt_g_wo)])
-1 -0.5 0 0.5 1
-1
-0.5
0
0.5
1
Quadra
ture
In-Phase
Constellation Diagram Rectangular Pulse
-0.03 -0.02 -0.01 0 0.01 0.02 0.03
-0.03
-0.02
-0.01
0
0.01
0.02
0.03
Quadra
ture
In-Phase
Constellation Diagram Rise Cosine Pulse with filter
-
91.disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Error Rate Rectangular: Inf Error Rate Gaussian with Filter: Inf Error Rate Gaussian withot Filter: Inf %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Visualizacin en pantalla del error
En las lneas 96 a 135 se hace la modulacin IQ a las tres seales generadas. 96. %1. Primera RF
97. F = Fc/Fs;
98. t_c = 0:1:length(real(ypulse))-1;
99. In_phase = cos(2*pi*F.*t_c + phase_Base);
100. Quadrature = sin(2*pi*F.*t_c + phase_Base);
101. In_phase_np = cos(2*pi*F.*t_c);
102. Quadrature_np = sin(2*pi*F.*t_c);
103. % figure, plot(In_phase(1:100)); hold on;
104. % plot(real(ypulse(1:100)),'r');
105. IP_c = real(ypulse)'.*In_phase;
106. Q_c = imag(ypulse)'.*Quadrature;
107. RF_signal = IP_c + Q_c;
108. %figure, stem(RF_signal(1:100));
110. %1. Segunda RF
111. F1 = Fc1/Fs;
112. t_c = 0:1:length(real(ypulse))-1;
113. In_phase1 = cos(2*pi*F1.*t_c + phase_Base);
114. Quadrature1 = sin(2*pi*F1.*t_c + phase_Base);
115. In_phase1_np = cos(2*pi*F1.*t_c);
116. Quadrature1_np = sin(2*pi*F1.*t_c);
117. % figure, plot(In_phase1(1:100)); hold on;
118. % plot(real(ypulse(1:100)),'r');
110. IP_c1 = real(ypulse1)'.*In_phase1;
120. Q_c1 = imag(ypulse1)'.*Quadrature1;
121. RF_signal1 = IP_c1 + Q_c1;
122. %figure, stem(RF_signal(1:100));
124. %1. Tercera RF
125. F2 = Fc2/Fs;
126. t_c = 0:1:length(real(ypulse))-1;
127. In_phase2 = cos(2*pi*F2.*t_c + phase_Base);
128. Quadrature2 = sin(2*pi*F2.*t_c + phase_Base);
129. In_phase2_np = cos(2*pi*F2.*t_c);
130. Quadrature2_np = sin(2*pi*F2.*t_c);
131. % figure, plot(In_phase2(1:100)); hold on;
132. % plot(real(ypulse(1:100)),'r');
133. IP_c2 = real(ypulse2)'.*In_phase2;
-
134. Q_c2 = imag(ypulse2)'.*Quadrature2;
135. RF_signal2 = IP_c2 + Q_c2;
136. %figure, stem(RF_signal(1:100));
En las lneas 140 a 150 se saca el espectro de las tres seales generadas. 140. Fd=1;
141. Ei_u = RF_signal + RF_signal1 + RF_signal2; %% RF SIGNAL
142. Npoints_1 = length(RF_signal);
143. Ei_F = fftshift(fft(Ei_u));
144. Ei_Fa = abs(Ei_F)./length(Ei_F);
145. Frek_1 = ((-(Npoints_1)/2:((Npoints_1/2)-1))).*Fs/Npoints_1;
146. figure
147. plot(Frek_1/1e6,20*log10(Ei_Fa),'r');
148. xlabel('Frequency [MHz]')
149. ylabel('Power [dB]')
150. title('Power spectrum of RF received signal')
Espectro de potencia de la seal de RF en el receptor creado en la lnea 147
En la lnea 154 se introduce ruido AWGN a la seal generada en las lneas 140 a 150. 154. Ei_u = awgn(Ei_u,Noise_level,'measured');
En las lneas 159 a 161 se implementa en el receptor el oscilador local para poder hacer la demodulacin IQ. 159. %1 Local Oscillator 160. E_demod_BB = Ei_u.*In_phase_np; 161. E_demod_BB2 = Ei_u.*Quadrature_np;
En las lneas 163 a 169 se implementa un filtro pasa bajo para quitarle ruido a la seal. 163. %2 Low pass filter
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
x 104
-300
-250
-200
-150
-100
-50
0
Frequency [MHz]
Pow
er
[dB
]
Power spectrum of RF received signal
-
164. Wp = (Fb + 100e6)/(Fs/2); Ws = (Fb + 250e6)/(Fs/2); 165. Rp = 3; Rs = 35; 166. [n,Ws] = cheb2ord(Wp,Ws,Rp,Rs); 167. [bRec,aRec] = cheby2(n,Rs,Ws); 168. % figure, freqz(bRec,aRec,2048,Fs); 169. % title('Pasa bajos');
En las lneas 171 a 175 se implementa otro filtro para separar las seales generadas. 171. %3 Filtering 172. EBB1 = filter(bRec,aRec,E_demod_BB); 173. EBB2 = filter(bRec,aRec,E_demod_BB2); 174. EBB1 = EBB1 - mean(EBB1); 175. EBB2 = EBB2 - mean(EBB2);
En las lneas 177 a 188 se observa el espectro despus de hacer la modulacin IQ. 177. %4 Power Spectrum 178. Fd=1; 179. Ei_u = EBB1; 180. Npoints_1 = length(RF_signal); 181. Ei_F = fftshift(fft(Ei_u)); 182. Ei_Fa = abs(Ei_F)./length(Ei_F); 183. Frek_1 = ((-(Npoints_1)/2:((Npoints_1/2)-1))).*Fs/Npoints_1; 184. figure 185. plot(Frek_1/1e6,20*log10(Ei_Fa),'r'); 186. xlabel('Frequency [MHz]') 187. ylabel('Power [dB]') 188. title('Power spectrum of RF received signal after quadrature
demodulator').
Espectro de potencia de la seal de RF en el receptor luego de la demodulacin en cuadratura, creado en la lnea 185
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
x 104
-350
-300
-250
-200
-150
-100
-50
0
Frequency [MHz]
Pow
er
[dB
]
Power spectrum of RF received signal after quadrature demodulator
-
En las lneas 190 a 192 se ajusta el retardo de la seal demodulada. 190. %5 Adjusting the delay 191. EBB1 = EBB1(n+floor(n/2):end); 192. EBB2 = EBB2(n+floor(n/2):end);
En las lneas 194 a 198 se lleva a cabo el sobre muestreo. 194. %6 Downsampling 195. EBB1_downsamp = intdump(EBB1(1:5000*Nsamp),Nsamp); 196. EBB2_downsamp = intdump(EBB2(1:5000*Nsamp),Nsamp); 197. RF_signal_recovered = EBB1_downsamp + i.*EBB2_downsamp; 198. scatterplot(RF_signal_recovered); title('Constellation after
demodulation');
Diagrama de constelacin luego de la demodulacin, creado en la lnea 198
En las lneas 201 a 223 se realiza la demodulacin de cada una de las subportadoras empleando el formato PSK. 201. %%%% Demodulation first RF subcarrier 202. %RF_signal_received_dem =
demodulate(modem.pskdemod(M),RF_signal_recovered); 203. RF_signal_received_dem =
demodulate(modem.pskdemod(M),RF_signal_recovered); 204. xm = x(1:length(RF_signal_received_dem))'; 205. %Bits_rec = n_MSK_signal_regeneration(x); 206. [num_RF_received,rt_RF_received]= symerr(xm,RF_signal_received_dem); 207. %[num_RF_received_Bits,rt_RF_received_Bits]= symerr(Bits,Bits_rec); 208. rt_RF_received = -1*log10(rt_RF_received); 209. %rt_RF_received_Bits = -1*log10(rt_RF_received_Bits); 211. %%%% Demodulation second RF subcarrier 212. %RF_signal_received_dem =
demodulate(modem.pskdemod(M),RF_signal_recovered); 213. RF_signal_received_dem =
demodulate(modem.pskdemod(M),RF_signal_recovered); 214. xm1 = x1(1:length(RF_signal_received_dem))';
-0.6 -0.4 -0.2 0 0.2 0.4 0.6
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
Quadra
ture
In-Phase
Constellation after demodulation
-
215. [num_RF_received1,rt_RF_received1]=
symerr(xm1,RF_signal_received_dem); 216. rt_RF_received1 = -1*log10(rt_RF_received1); 218. %%%% Demodulation third RF subcarrier 219. %RF_signal_received_dem =
demodulate(modem.pskdemod(M),RF_signal_recovered); 220. RF_signal_received_dem =
demodulate(modem.pskdemod(M),RF_signal_recovered); 221. xm2 = x2(1:length(RF_signal_received_dem))'; 222. [num_RF_received2,rt_RF_received2]=
symerr(xm2,RF_signal_received_dem); 223. rt_RF_received2 = -1*log10(rt_RF_received2); 224. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
225.
226. disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')
227. disp(['Error Rate first RF detected without phase recovery: '
num2str(rt_RF_received)])
228. disp(['Error Rate second RF detected without phase recovery: '
num2str(rt_RF_received1)])
229. disp(['Error Rate third RF detected without phase recovery: '
num2str(rt_RF_received2)])
230. disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Error Rate first RF detected without phase recovery: 2.4437 Error Rate second RF detected without phase recovery: 0.053057 Error Rate third RF detected without phase recovery: 0.057793 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Visualizacin en pantalla del error