www.pudn.com > demodula.rar > recuperaPortadora.m
function [sonda, memoria, parametros] = recuperaPortadora(bandaFI, memoria, ...
fs, primera, H, H_dc, parametros)
%------------------------------------------------------------------------
%| [sonda, memoria, parametros,] = recuperaPortadora(bandaFI, memoria, ...
%| fs, primera, H_fi, H_dc, parametros)
%------------------------------------------------------------------------
%| Función que extrae una muestra de la portadora de la bandaFI.
%|
%| Está diseñada para operar sobre una muestra y devolver
%| las condiciones finales. Se debe llamar dentro de un bucle.
%|
%|
%| NO REALIZA VALIDACIÓN DE LOS PARÁMETROS DE ENTRADA
%|
%| Entradas:
%| 1.- BANDA_FI = vector fila con la señal a la frecuencia intermedia.
%| 2.- MEMORIA = matriz 8x max(Orden) con las condiciones iniciales de
%| todos los dispositivos empleados en la
%| recuperación de portadora:
%| Fila 1: [ C.I. Comparador de Fases ]
%| Fila 2: [ C.I. Filtro Lead Lag Activo ]
%| Fila 3: [ C.I. VCO ]
%| Fila 4: [ Salida VCO Rectificada ]
%| Fila 5: [ C.I. Divisor ]
%| Fila 6: [ C.I. Filtro DC ]
%| Fila 7: [ C.I. Filtro FI (rec. Portadora) ]
%|
%| 3.- FS = frecuencia de muestreo
%| 4.- PRIMERA = indica si es la primera iteración del bucle.
%| 5.- H = vector fila con todos los coeficientes del filtro
%| a la salida del divisor de frecuencia.
%| 6.- H_DC = vector fila con los coeficientes del filtro DC
%| Se emplea para eliminar el valor medio de la señal
%| de entrada.
%| 7.- PARAMETROS = matriz que contiene todos lo parámetros
%| del receptor:
%| PLL : [ Kv , Wn , Psi, 0 ]
%| FILTRO-LAZO : [ TAU1, TAU2, 0 , 0 ]
%| CTES. FILTRO-LAZO DIGITAL: [ b0 , b1 , 1 , b1 ];
%|
%| La matriz de parámetros está ideada para que el PLL conforme un bloque,
%| del que el usuario solo debe conocer los parámetros típicos del lazo del
%| PLL (1º fila)
%| El resto de parámetros los calcularán funciones particulares, de
%| esta forma es muy simple reemplazar el Lead-Lag empleado por otro
%| filtro del lazo cualquiera o usar una transformación Invariante al Impulso
%| en lugar de una Bilineal.
%|
%| Salidas:
%| 1.- CARRIER = muestra de salida de la portadora.
%| 2.- MEMORIA = matriz 8x34 con las cond. finales.
%| 3.- PARAMETROS = parámetros del demodulador BPSK
%-------------------------------------------------------------------------
%| Autor: Cesar Delgado
%| Fecha: 19-Abril-2.004
%-------------------------------------------------------------------------
% 1.- Parámetros del lazo e inicializaciones
%--------------------------------------------
% >>>> 1.1.- Ubicaciones en memoria
cDIV = 5; % Cond. iniciales del divisor
cFILTRO_DC = 6; % Cond. iniciales del filtro DC
cFILTRO_FI = 7; % Cond. iniciales del filtro FI
% >>>> 1.2.- Ptos. de Observacion en sonda
pCARRIER = 1; pLINEA = 2; pDECISOR = 3;
pOUT_PLL = 4; pERROR_PLL = 5; pDESFASE_PLL = 6;
pFASE_ESTIMADA = 7; pREF_PLL = 8; pIN_DIVISOR = 9;
pOUT_DIVISOR = 10;
if (primera),
sonda(pCARRIER)=5;
end;
% 2.- Iteración de recuperación de portadora
%--------------------------------------------
%%%%%%%% 2.1.- Elevamos al cuadrado la entrada
sigCuad = (bandaFI^2);
%%%%%%%% 2.2.- Filtramos la componente continua
[sonda(pREF_PLL), aux] = filter(H_dc,1,sigCuad,memoria(cFILTRO_DC,1:length(H_dc)-1));
memoria(cFILTRO_DC,1:length(aux)) = aux';
%%%%%%%% 2.3.- Nos enganchamos a señal 2*fi
[sonda(pOUT_PLL:pFASE_ESTIMADA), memoria(1:cDIV-1,1:3), parametros] = ...
pll (sonda(pREF_PLL), memoria(1:cDIV-1,1:3), fs, primera, parametros);
%%%%%%%%% 2.4.- Rectificamos Salida del PLL a niveles TTL
sonda(pIN_DIVISOR) = (sonda(pOUT_PLL)>0)*5;
%%%%%%%%% 2.5.- Dividimos por 2 la salida, para recuperar portadora
[sonda(pOUT_DIVISOR), memoria(cDIV,1:2)] = divisor(sonda(pIN_DIVISOR), memoria(cDIV,1:2), primera);
%%%%%%%%%% 2.6.- Filtramos 1º armónico de la señal cuadrada
[sonda(pCARRIER), aux] = filter (H,1, sonda(pOUT_DIVISOR), memoria(cFILTRO_FI,1:length(H)-1));
memoria(cFILTRO_FI,1:length(aux)) = aux';