PRÁCTICAS TRANSMISIÓN DIGITAL Alejandro Casal Da Silva 47362793-C
Tarea 4. Sincronización gruesa de frecuencia. Una vez que hemos hecho el paso a frecuencia, lo siguiente que debemos llevar a cabo es una sintonización gruesa, es decir, detectar un posible desplazamiento de la señal en frecuencia en un número entero de portadoras. Recordemos que la sintonización fina ya la hemos llevado a cabo antes de calcular la FFT. Para detectar el desplazamiento frecuencial, disponemos en la señal de tres portadoras piloto que están realzadas en potencia (para el modo B, la 16, la 48 y la 64). Sin embargo, en las FFT individuales de cada trama esto no se percibe, lo que debemos hacer es promediar todas las FFT, y en la señal resultante sí distinguiremos los picos. Esto se debe a que en cada FFT, las portadoras que no son las pilotos toman valores altos y otros bajos, con lo cual al promediar quedarán en un valor medio, mientras que las portadoras piloto tienen un valor alto en todas las FFTs, de forma que en el promedio quedarán claramente realzadas. El promediado de FFTs lo haremos basándonos en el método de Welch, promediando el módulo de las FFTs al cuadrado, ya que las portadoras están realzadas en potencia, y la forma de relacionar la FFT con la potencia es con el módulo al cuadrado. Una vez realizado el promedio, construiremos tres vectores auxiliares, cada una con las portadoras cercanas a las piloto teóricas, y hallaremos el máximo de cada vector. Al restar el máximo de cada vector con el valor de la portadora piloto teórica, deberíamos obtener el mismo valor en los tres casos, y ese será el desplazamiento frecuencial que buscamos. El código que realiza esto es el siguiente: % PROMEDIADO DE LAS FFT Q_suma=zeros(1,Nu); % Inicializamos señal auxiliar for r=1:length(Q) % En la señal auxiliar vamos for s=1:Nu % introduciendo la suma del Q_suma(s)=Q_suma(s)+(abs(Q(r,s)))^2; % valor absoluto de las end; % FFT al cuadrado. end; Qm=Q_suma/length(Q); % Dividimos entre el número de FFTs. plot([1:Nu],10*log10(Qm)),title('Promediado del módulo de las FFTs al cuadrado'); pause; % OBTENCIÓN DE LOS MÁXIMOS Qm_1=Qm(1:40); Qm_2=Qm(41:60); Qm_3=Qm(61:150); [max1,p_m1]=max(Qm_1);
% % % %
Construimos tres señales a partir de la señal promedio, cogiéndo las portadoras cercanas a de referencia teóricas. Posición del primer pico.
[max2,p_m2]=max(Qm_2); p_m2=p_m2+40; [max3,p_m3]=max(Qm_3); p_m3=p_m3+60;
% Posición del segundo pico. % Posición del tercer pico.
% OBTENCIÓN DEL DESPLAZAMIENTO FRECUENCIAL d1=p_m1-16; d2=p_m2-48; d3=p_m3-64; if ((d1==d2)&&(d2==d3)) desp_frec=d1; end; % CORRECCIÓN DEL DESPLAZAMIENTO Q_aux=zeros(1,Nu); Q_suma=zeros(1,Nu); % Señales auxiliares for r=1:length(Q) Q_aux(1:Nu-desp_frec)=Q(r,desp_frec+1:Nu);% Principio de la señal Q_aux(Nu-desp_frec+1:Nu)=Q(r,1:desp_frec);% Final de la señal Q(r,1:Nu)=Q_aux; % Corrección de la FFT for s=1:Nu Q_suma(s)=Q_suma(s)+(abs(Q(r,s)))^2; % Promediado end; end; Qm=Q_suma/length(Q); % Dividimos entre el número de FFTs. plot([1:Nu],10*log10(Qm)),title('Promediado corregido');
Para la señal ‘drm-6095.if.wav’ obtenemos los siguientes resultados (señal promedio, posiciones de los picos, desplazamiento frecuencial y promediado corregido): Promediado del módulo de las FFTs al cuadrado 10
5
0
-5
-10
-15
-20
0
50
100
150
200
250
300
p_m1 = 18, p_m2 = 50, p_m3 = 66, desp_frec = 2 Promediado corregido 10
5
0
-5
-10
-15
-20
0
50
100
150
200
250
300
Para la señal ‘drm-15435.if.wav’ los resultados son: Promediado del módulo de las FFTs al cuadrado 10
5
0
-5
-10
-15
-20
0
50
100
150
200
250
300
p_m1 = 21, p_m2 = 53, p_m3 = 69, desp_frec = 5 Promediado corregido 10
5
0
-5
-10
-15
-20
0
50
100
150
200
250
300